[
  {
    "path": ".dockerignore",
    "content": "build\n.git\n"
  },
  {
    "path": ".github/workflows/docker-publish.yml",
    "content": "name: Docker\n\n# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n# separate terms of service, privacy policy, and support\n# documentation.\n\non:\n  push:\n    branches: [ \"dev\" ]\n    tags:\n      - 'v*.*.*'\n\nenv:\n  # Use docker.io for Docker Hub if empty\n  REGISTRY: ghcr.io\n  # github.repository as <account>/<repo>\n  IMAGE_NAME: ${{ github.repository }}\n\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n      # This is used to complete the identity challenge\n      # with sigstore/fulcio when running outside of PRs.\n      id-token: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n\n      # Install the cosign tool except on PR\n      # https://github.com/sigstore/cosign-installer\n      - name: Install cosign\n        if: github.event_name != 'pull_request'\n        uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 #v3.5.0\n        with:\n          cosign-release: 'v2.2.4'\n\n      # Set up BuildKit Docker container builder to be able to build\n      # multi-platform images and export cache\n      # https://github.com/docker/setup-buildx-action\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0\n\n      # Login against a Docker registry except on PR\n      # https://github.com/docker/login-action\n      - name: Log into registry ${{ env.REGISTRY }}\n        if: github.event_name != 'pull_request'\n        uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata\n        id: meta\n        uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0\n        with:\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n          tags: |\n            # branch event\n            type=ref,event=branch\n            # tag event\n            type=ref,event=tag\n            # full length commit sha\n            type=sha,format=long\n\n      # Build and push Docker image with Buildx (don't push on PR)\n      # https://github.com/docker/build-push-action\n      - name: Build and push Docker image\n        id: build-and-push\n        uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0\n        with:\n          context: .\n          push: ${{ github.event_name != 'pull_request' }}\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n\n      # Sign the resulting Docker image digest except on PRs.\n      # This will only write to the public Rekor transparency log when the Docker\n      # repository is public to avoid leaking data.  If you would like to publish\n      # transparency data even for private images, pass --force to cosign below.\n      # https://github.com/sigstore/cosign\n      - name: Sign the published Docker image\n        if: ${{ github.event_name != 'pull_request' }}\n        env:\n          # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable\n          TAGS: ${{ steps.meta.outputs.tags }}\n          DIGEST: ${{ steps.build-and-push.outputs.digest }}\n        # This step uses the identity token to provision an ephemeral certificate\n        # against the sigstore community Fulcio instance.\n        run: echo \"${TAGS}\" | xargs -I {} cosign sign --yes {}@${DIGEST}\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "# This workflow is useful if you want to automate the process of:\n#\n# a) Creating a new prelease when you push a new tag with a \"v\" prefix (version).\n#\n#    This type of prerelease is meant to be used for production: alpha, beta, rc, etc. types of releases.\n#    After the prerelease is created, you need to make your changes on the release page at the relevant\n#    Github page and publish your release.\n#\n# b) Creating/updating the \"latest\" prerelease when you push to your default branch.\n#\n#    This type of prelease is useful to make your bleeding-edge binaries available to advanced users.\n#\n# The workflow will not run if there is no tag pushed with a \"v\" prefix and no change pushed to your \n# default branch.\non:\n  push:\n    tags:\n      - 'v*.*.*'\n\njobs:\n  might_release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          submodules: true\n\n      - name: Prepare Release Variables\n        id: vars\n        uses: ignite/cli/actions/release/vars@main\n\n      - name: Issue Release Assets\n        uses: ignite/cli/actions/cli@main\n        if: ${{ steps.vars.outputs.should_release == 'true' }}\n        env:\n          GOFLAGS: \"-buildvcs=false\"\n        with:\n          args: chain build --release --release.prefix ${{ steps.vars.outputs.tarball_prefix }} -t linux:amd64 -t darwin:amd64 -t darwin:arm64\n\n      - name: Delete the \"latest\" Release\n        uses: dev-drprasad/delete-tag-and-release@v0.2.1\n        if: ${{ steps.vars.outputs.is_release_type_latest == 'true' }}\n        with:\n          tag_name: ${{ steps.vars.outputs.tag_name }}\n          delete_release: true\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Publish the Release\n        uses: softprops/action-gh-release@v1\n        if: ${{ steps.vars.outputs.should_release == 'true' }}\n        with:\n          tag_name: ${{ steps.vars.outputs.tag_name }}\n          files: release/*\n          prerelease: true\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "# Test workflow runs tests and coverage on all pushes and pull requests.\non:\n  push:\n    branches: [ \"**\" ]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          submodules: true\n\n      - name: Setup Go\n        uses: actions/setup-go@v5\n        with:\n          go-version-file: 'go.mod'\n          check-latest: true\n          cache: false\n\n      - name: Run Tests and Generate Coverage\n        run: |\n          go test -coverpkg=all ./... -coverprofile=coverage.txt\n\n      - name: Upload Coverage to Codecov\n        uses: codecov/codecov-action@v5\n        with:\n          token: ${{ secrets.CODECOV_TOKEN }}\n          files: coverage.txt\n          fail_ci_if_error: true\n          verbose: true"
  },
  {
    "path": ".gitignore",
    "content": "vue/node_modules\nvue/dist\nrelease/\n.idea/\n.vscode/\n.DS_Store\n*.dot\n*.log\nbuild\ncover.out\n.env\n.testnets"
  },
  {
    "path": ".ko.yaml",
    "content": "defaultBaseImage: debian:bullseye-slim\ndefaultPlatforms:\n  - linux/arm64\n  - linux/amd64\n\nbuilds:\n  - main: ./cmd/sourcehubd\n    ldflags:\n      - -s -w\n      - -buildid=\n    env:\n      - CGO_ENABLED=0\n    flas:\n      - -trimpath\n    mod_timestamp: \"{{ .CommitTimestamp }}\"\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM golang:1.25.5 AS builder\n\nWORKDIR /app\n\n# Cache deps\nCOPY go.* /app/\nRUN go mod download\n\n# Build\nCOPY . /app\nRUN --mount=type=cache,target=/root/.cache go build -o /app/build/sourcehubd ./cmd/sourcehubd\n\n# Deployment entrypoint\nFROM debian:bookworm-slim\n\nCOPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh\nCOPY docker/faucet-key.json /etc/sourcehub/faucet-key.json\nCOPY --from=builder /app/build/sourcehubd /usr/local/bin/sourcehubd\n# Copy the default config files to override the container with\nCOPY docker/configs/*.toml /etc/sourcehub/ \n\nRUN useradd --create-home --home-dir /home/node node && mkdir /sourcehub && chown node:node /sourcehub && ln -s /sourcehub /home/node/.sourcehub && chown node:node -R /home/node && chmod -R 555 /etc/sourcehub\n\n# MONIKER sets the node moniker\nENV MONIKER=\"node\"\n# CHAIN_ID sets the id for the chain which will be initialized\nENV CHAIN_ID=\"sourcehub-dev\"\n\n# GENESIS_PATH is an optional variable which if set must point to a genesis file mounted in the container.\n# The file is copied to the configuration directory during the first container initialization\n# If empty, the entrypoint will generate a new genesis\nENV GENESIS_PATH=\"\"\n\n# MNEMONIC_PATH is an optional varible which, if set, must point to a file containing a \n# cosmos key mnemonic. The mnemonic will be used to restore the node operator / validator key.\n# If empty, the entrypoint will generate a new key\nENV MNEMONIC_PATH=\"\"\n\n# CONSENSUS_KEY_PATH is an optional variable which, if set, must point to a file containg\n# a comebft consesus key for the validator.\n# If empty, the entrypoint will generate a new key\nENV CONSENSUS_KEY_PATH=\"\"\n\n# COMET_NODE_KEY_PATH is an optional variable which, if set, must point to a file containg\n# a comebft p2p node key.\n# If empty, the entrypoint will generate a new key\nENV COMET_NODE_KEY_PATH=\"\"\n\n# COMET_CONFIG_PATH is an optional variable which, if set, will overwrite\n# the default cofig.toml with the provided file.\nENV COMET_CONFIG_PATH=\"\"\n\n# APP_CONFIG_PATH is an optional variable which, if set, will overwrite\n# the default app.toml with the provided file.\nENV APP_CONFIG_PATH=\"\"\n\nENV STANDALONE=\"\"\n\n# Comet P2P Port\nEXPOSE 26656\n\n# Comet RPC Port\nEXPOSE 26657\n\n# SourceHub GRPC Port\nEXPOSE 9090\n\n# SourceHub HTTP API Port\nEXPOSE 1317\n\nUSER node\nVOLUME [\"/sourcehub\"]\nENTRYPOINT [\"entrypoint.sh\"]\nCMD [\"sourcehubd\", \"start\"]\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2022 Democratized Data (D2) Foundation.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "Makefile",
    "content": "IGNITE_RUN = docker run --rm -ti --volume $(PWD):/apps ignitehq/cli:latest\nUID := $(shell id --user)\nGID := $(shell id --group)\nBIN = build/sourcehubd\nDEMO_BIN = build/token-protocol-demo\n\n.PHONY: build\nbuild:\n\tGOOS=linux GOARCH=amd64 go build -o ${BIN} ./cmd/sourcehubd\n\n.PHONY: build-mac\nbuild-mac:\n\tGOOS=darwin GOARCH=arm64 go build -o ${BIN} ./cmd/sourcehubd\n\n.PHONY: install\ninstall:\n\tgo install ./cmd/sourcehubd\n\n.PHONY: proto\nproto:\n\tignite generate proto-go\n\n.PHONY: test\ntest:\n\tgo test ./...\n\n.PHONY: test\\:all\ntest\\:all: test_env_generator\n\tscripts/run-test-matrix\n\n.PHONY: simulate\nsimulate:\n\tignite chain simulate\n\n.PHONY: fmt\nfmt:\n\tgofmt -w .\n\tbuf format --write\n\n.PHONY: run\nrun: build\n\t${BIN} start\n\n.PHONY: docs\ndocs:\n\tpkgsite -http 0.0.0.0:8080\n\n.PHONY: test_env_generator\ntest_env_generator:\n\tgo build -o build/test_env_generator cmd/test_env_generator/main.go\n\n.PHONY: docker\ndocker:\n\tdocker image build -t ghcr.io/sourcenetwork/sourcehub:dev ."
  },
  {
    "path": "api/osmosis/epochs/module/v1beta1/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage modulev1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_Module_1_list)(nil)\n\ntype _Module_1_list struct {\n\tlist *[]string\n}\n\nfunc (x *_Module_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Module_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_Module_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Module_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Module_1_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message Module at list field HooksOrder as it is not of Message kind\"))\n}\n\nfunc (x *_Module_1_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Module_1_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_Module_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_Module             protoreflect.MessageDescriptor\n\tfd_Module_hooks_order protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_module_v1beta1_module_proto_init()\n\tmd_Module = File_osmosis_epochs_module_v1beta1_module_proto.Messages().ByName(\"Module\")\n\tfd_Module_hooks_order = md_Module.Fields().ByName(\"hooks_order\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_module_v1beta1_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.HooksOrder) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Module_1_list{list: &x.HooksOrder})\n\t\tif !f(fd_Module_hooks_order, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\treturn len(x.HooksOrder) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\tx.HooksOrder = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\tif len(x.HooksOrder) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Module_1_list{})\n\t\t}\n\t\tlistValue := &_Module_1_list{list: &x.HooksOrder}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Module_1_list)\n\t\tx.HooksOrder = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\tif x.HooksOrder == nil {\n\t\t\tx.HooksOrder = []string{}\n\t\t}\n\t\tvalue := &_Module_1_list{list: &x.HooksOrder}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.module.v1beta1.Module.hooks_order\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_Module_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.module.v1beta1.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.HooksOrder) > 0 {\n\t\t\tfor _, s := range x.HooksOrder {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.HooksOrder) > 0 {\n\t\t\tfor iNdEx := len(x.HooksOrder) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.HooksOrder[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.HooksOrder[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.HooksOrder[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field HooksOrder\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.HooksOrder = append(x.HooksOrder, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: osmosis/epochs/module/v1beta1/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object for the module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// hooks_order specifies the order of epochs hooks and should be a list\n\t// of module names which provide a epochs hooks instance. If no order is\n\t// provided, then hooks will be applied in alphabetical order of module names.\n\tHooksOrder []string `protobuf:\"bytes,1,rep,name=hooks_order,json=hooksOrder,proto3\" json:\"hooks_order,omitempty\"`\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_module_v1beta1_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_module_v1beta1_module_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Module) GetHooksOrder() []string {\n\tif x != nil {\n\t\treturn x.HooksOrder\n\t}\n\treturn nil\n}\n\nvar File_osmosis_epochs_module_v1beta1_module_proto protoreflect.FileDescriptor\n\nvar file_osmosis_epochs_module_v1beta1_module_proto_rawDesc = []byte{\n\t0x0a, 0x2a, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x6d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5e, 0x0a,\n\t0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x6f, 0x6b, 0x73,\n\t0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f,\n\t0x6f, 0x6b, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x33, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2d,\n\t0x0a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0x85, 0x02,\n\t0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x3c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f,\n\t0x63, 0x68, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x3b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0xa2, 0x02, 0x03, 0x4f, 0x45, 0x4d, 0xaa, 0x02, 0x1d, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73,\n\t0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1d, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73,\n\t0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x29, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73,\n\t0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x20, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x3a, 0x3a, 0x45, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_osmosis_epochs_module_v1beta1_module_proto_rawDescOnce sync.Once\n\tfile_osmosis_epochs_module_v1beta1_module_proto_rawDescData = file_osmosis_epochs_module_v1beta1_module_proto_rawDesc\n)\n\nfunc file_osmosis_epochs_module_v1beta1_module_proto_rawDescGZIP() []byte {\n\tfile_osmosis_epochs_module_v1beta1_module_proto_rawDescOnce.Do(func() {\n\t\tfile_osmosis_epochs_module_v1beta1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_osmosis_epochs_module_v1beta1_module_proto_rawDescData)\n\t})\n\treturn file_osmosis_epochs_module_v1beta1_module_proto_rawDescData\n}\n\nvar file_osmosis_epochs_module_v1beta1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_osmosis_epochs_module_v1beta1_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: osmosis.epochs.module.v1beta1.Module\n}\nvar file_osmosis_epochs_module_v1beta1_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_osmosis_epochs_module_v1beta1_module_proto_init() }\nfunc file_osmosis_epochs_module_v1beta1_module_proto_init() {\n\tif File_osmosis_epochs_module_v1beta1_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_osmosis_epochs_module_v1beta1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_osmosis_epochs_module_v1beta1_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_osmosis_epochs_module_v1beta1_module_proto_goTypes,\n\t\tDependencyIndexes: file_osmosis_epochs_module_v1beta1_module_proto_depIdxs,\n\t\tMessageInfos:      file_osmosis_epochs_module_v1beta1_module_proto_msgTypes,\n\t}.Build()\n\tFile_osmosis_epochs_module_v1beta1_module_proto = out.File\n\tfile_osmosis_epochs_module_v1beta1_module_proto_rawDesc = nil\n\tfile_osmosis_epochs_module_v1beta1_module_proto_goTypes = nil\n\tfile_osmosis_epochs_module_v1beta1_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/osmosis/epochs/v1beta1/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage epochsv1beta1\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_EpochInfo                            protoreflect.MessageDescriptor\n\tfd_EpochInfo_identifier                 protoreflect.FieldDescriptor\n\tfd_EpochInfo_start_time                 protoreflect.FieldDescriptor\n\tfd_EpochInfo_duration                   protoreflect.FieldDescriptor\n\tfd_EpochInfo_current_epoch              protoreflect.FieldDescriptor\n\tfd_EpochInfo_current_epoch_start_time   protoreflect.FieldDescriptor\n\tfd_EpochInfo_epoch_counting_started     protoreflect.FieldDescriptor\n\tfd_EpochInfo_current_epoch_start_height protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_genesis_proto_init()\n\tmd_EpochInfo = File_osmosis_epochs_v1beta1_genesis_proto.Messages().ByName(\"EpochInfo\")\n\tfd_EpochInfo_identifier = md_EpochInfo.Fields().ByName(\"identifier\")\n\tfd_EpochInfo_start_time = md_EpochInfo.Fields().ByName(\"start_time\")\n\tfd_EpochInfo_duration = md_EpochInfo.Fields().ByName(\"duration\")\n\tfd_EpochInfo_current_epoch = md_EpochInfo.Fields().ByName(\"current_epoch\")\n\tfd_EpochInfo_current_epoch_start_time = md_EpochInfo.Fields().ByName(\"current_epoch_start_time\")\n\tfd_EpochInfo_epoch_counting_started = md_EpochInfo.Fields().ByName(\"epoch_counting_started\")\n\tfd_EpochInfo_current_epoch_start_height = md_EpochInfo.Fields().ByName(\"current_epoch_start_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EpochInfo)(nil)\n\ntype fastReflection_EpochInfo EpochInfo\n\nfunc (x *EpochInfo) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EpochInfo)(x)\n}\n\nfunc (x *EpochInfo) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EpochInfo_messageType fastReflection_EpochInfo_messageType\nvar _ protoreflect.MessageType = fastReflection_EpochInfo_messageType{}\n\ntype fastReflection_EpochInfo_messageType struct{}\n\nfunc (x fastReflection_EpochInfo_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EpochInfo)(nil)\n}\nfunc (x fastReflection_EpochInfo_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EpochInfo)\n}\nfunc (x fastReflection_EpochInfo_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EpochInfo\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EpochInfo) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EpochInfo\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EpochInfo) Type() protoreflect.MessageType {\n\treturn _fastReflection_EpochInfo_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EpochInfo) New() protoreflect.Message {\n\treturn new(fastReflection_EpochInfo)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EpochInfo) Interface() protoreflect.ProtoMessage {\n\treturn (*EpochInfo)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EpochInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Identifier != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Identifier)\n\t\tif !f(fd_EpochInfo_identifier, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.StartTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.StartTime.ProtoReflect())\n\t\tif !f(fd_EpochInfo_start_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Duration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Duration.ProtoReflect())\n\t\tif !f(fd_EpochInfo_duration, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CurrentEpoch != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CurrentEpoch)\n\t\tif !f(fd_EpochInfo_current_epoch, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CurrentEpochStartTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CurrentEpochStartTime.ProtoReflect())\n\t\tif !f(fd_EpochInfo_current_epoch_start_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.EpochCountingStarted != false {\n\t\tvalue := protoreflect.ValueOfBool(x.EpochCountingStarted)\n\t\tif !f(fd_EpochInfo_epoch_counting_started, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CurrentEpochStartHeight != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CurrentEpochStartHeight)\n\t\tif !f(fd_EpochInfo_current_epoch_start_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EpochInfo) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\treturn x.Identifier != \"\"\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\treturn x.StartTime != nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\treturn x.Duration != nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\treturn x.CurrentEpoch != int64(0)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\treturn x.CurrentEpochStartTime != nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\treturn x.EpochCountingStarted != false\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\treturn x.CurrentEpochStartHeight != int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EpochInfo) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\tx.Identifier = \"\"\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\tx.StartTime = nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\tx.Duration = nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\tx.CurrentEpoch = int64(0)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\tx.CurrentEpochStartTime = nil\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\tx.EpochCountingStarted = false\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\tx.CurrentEpochStartHeight = int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EpochInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\tvalue := x.Identifier\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\tvalue := x.StartTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\tvalue := x.Duration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\tvalue := x.CurrentEpoch\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\tvalue := x.CurrentEpochStartTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\tvalue := x.EpochCountingStarted\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\tvalue := x.CurrentEpochStartHeight\n\t\treturn protoreflect.ValueOfInt64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EpochInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\tx.Identifier = value.Interface().(string)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\tx.StartTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\tx.Duration = value.Message().Interface().(*durationpb.Duration)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\tx.CurrentEpoch = value.Int()\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\tx.CurrentEpochStartTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\tx.EpochCountingStarted = value.Bool()\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\tx.CurrentEpochStartHeight = value.Int()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EpochInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\tif x.StartTime == nil {\n\t\t\tx.StartTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.StartTime.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\tif x.Duration == nil {\n\t\t\tx.Duration = new(durationpb.Duration)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Duration.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\tif x.CurrentEpochStartTime == nil {\n\t\t\tx.CurrentEpochStartTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CurrentEpochStartTime.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\tpanic(fmt.Errorf(\"field identifier of message osmosis.epochs.v1beta1.EpochInfo is not mutable\"))\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\tpanic(fmt.Errorf(\"field current_epoch of message osmosis.epochs.v1beta1.EpochInfo is not mutable\"))\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\tpanic(fmt.Errorf(\"field epoch_counting_started of message osmosis.epochs.v1beta1.EpochInfo is not mutable\"))\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\tpanic(fmt.Errorf(\"field current_epoch_start_height of message osmosis.epochs.v1beta1.EpochInfo is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EpochInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.identifier\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.start_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.duration\":\n\t\tm := new(durationpb.Duration)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.epoch_counting_started\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_height\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.EpochInfo\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.EpochInfo does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EpochInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.EpochInfo\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EpochInfo) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EpochInfo) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EpochInfo) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EpochInfo) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EpochInfo)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Identifier)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.StartTime != nil {\n\t\t\tl = options.Size(x.StartTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Duration != nil {\n\t\t\tl = options.Size(x.Duration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CurrentEpoch != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CurrentEpoch))\n\t\t}\n\t\tif x.CurrentEpochStartTime != nil {\n\t\t\tl = options.Size(x.CurrentEpochStartTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.EpochCountingStarted {\n\t\t\tn += 2\n\t\t}\n\t\tif x.CurrentEpochStartHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CurrentEpochStartHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EpochInfo)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CurrentEpochStartHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpochStartHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x40\n\t\t}\n\t\tif x.EpochCountingStarted {\n\t\t\ti--\n\t\t\tif x.EpochCountingStarted {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x30\n\t\t}\n\t\tif x.CurrentEpochStartTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CurrentEpochStartTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.CurrentEpoch != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpoch))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.Duration != nil {\n\t\t\tencoded, err := options.Marshal(x.Duration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.StartTime != nil {\n\t\t\tencoded, err := options.Marshal(x.StartTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Identifier) > 0 {\n\t\t\ti -= len(x.Identifier)\n\t\t\tcopy(dAtA[i:], x.Identifier)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EpochInfo)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EpochInfo: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EpochInfo: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Identifier\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Identifier = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field StartTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.StartTime == nil {\n\t\t\t\t\tx.StartTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Duration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Duration == nil {\n\t\t\t\t\tx.Duration = &durationpb.Duration{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Duration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpoch\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CurrentEpoch = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CurrentEpoch |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpochStartTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CurrentEpochStartTime == nil {\n\t\t\t\t\tx.CurrentEpochStartTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CurrentEpochStartTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field EpochCountingStarted\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.EpochCountingStarted = bool(v != 0)\n\t\t\tcase 8:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpochStartHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CurrentEpochStartHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CurrentEpochStartHeight |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_GenesisState_1_list)(nil)\n\ntype _GenesisState_1_list struct {\n\tlist *[]*EpochInfo\n}\n\nfunc (x *_GenesisState_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*EpochInfo)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*EpochInfo)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_1_list) AppendMutable() protoreflect.Value {\n\tv := new(EpochInfo)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_1_list) NewElement() protoreflect.Value {\n\tv := new(EpochInfo)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_GenesisState        protoreflect.MessageDescriptor\n\tfd_GenesisState_epochs protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_genesis_proto_init()\n\tmd_GenesisState = File_osmosis_epochs_v1beta1_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_epochs = md_GenesisState.Fields().ByName(\"epochs\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_genesis_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Epochs) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_1_list{list: &x.Epochs})\n\t\tif !f(fd_GenesisState_epochs, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\treturn len(x.Epochs) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\tx.Epochs = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\tif len(x.Epochs) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_1_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_1_list{list: &x.Epochs}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_1_list)\n\t\tx.Epochs = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\tif x.Epochs == nil {\n\t\t\tx.Epochs = []*EpochInfo{}\n\t\t}\n\t\tvalue := &_GenesisState_1_list{list: &x.Epochs}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.GenesisState.epochs\":\n\t\tlist := []*EpochInfo{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Epochs) > 0 {\n\t\t\tfor _, e := range x.Epochs {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Epochs) > 0 {\n\t\t\tfor iNdEx := len(x.Epochs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Epochs[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Epochs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Epochs = append(x.Epochs, &EpochInfo{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Epochs[len(x.Epochs)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: osmosis/epochs/v1beta1/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// EpochInfo is a struct that describes the data going into\n// a timer defined by the x/epochs module.\ntype EpochInfo struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// identifier is a unique reference to this particular timer.\n\tIdentifier string `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n\t// start_time is the time at which the timer first ever ticks.\n\t// If start_time is in the future, the epoch will not begin until the start\n\t// time.\n\tStartTime *timestamppb.Timestamp `protobuf:\"bytes,2,opt,name=start_time,json=startTime,proto3\" json:\"start_time,omitempty\"`\n\t// duration is the time in between epoch ticks.\n\t// In order for intended behavior to be met, duration should\n\t// be greater than the chains expected block time.\n\t// Duration must be non-zero.\n\tDuration *durationpb.Duration `protobuf:\"bytes,3,opt,name=duration,proto3\" json:\"duration,omitempty\"`\n\t// current_epoch is the current epoch number, or in other words,\n\t// how many times has the timer 'ticked'.\n\t// The first tick (current_epoch=1) is defined as\n\t// the first block whose blocktime is greater than the EpochInfo start_time.\n\tCurrentEpoch int64 `protobuf:\"varint,4,opt,name=current_epoch,json=currentEpoch,proto3\" json:\"current_epoch,omitempty\"`\n\t// current_epoch_start_time describes the start time of the current timer\n\t// interval. The interval is (current_epoch_start_time,\n\t// current_epoch_start_time + duration] When the timer ticks, this is set to\n\t// current_epoch_start_time = last_epoch_start_time + duration only one timer\n\t// tick for a given identifier can occur per block.\n\t//\n\t// NOTE! The current_epoch_start_time may diverge significantly from the\n\t// wall-clock time the epoch began at. Wall-clock time of epoch start may be\n\t// >> current_epoch_start_time. Suppose current_epoch_start_time = 10,\n\t// duration = 5. Suppose the chain goes offline at t=14, and comes back online\n\t// at t=30, and produces blocks at every successive time. (t=31, 32, etc.)\n\t// * The t=30 block will start the epoch for (10, 15]\n\t// * The t=31 block will start the epoch for (15, 20]\n\t// * The t=32 block will start the epoch for (20, 25]\n\t// * The t=33 block will start the epoch for (25, 30]\n\t// * The t=34 block will start the epoch for (30, 35]\n\t// * The **t=36** block will start the epoch for (35, 40]\n\tCurrentEpochStartTime *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=current_epoch_start_time,json=currentEpochStartTime,proto3\" json:\"current_epoch_start_time,omitempty\"`\n\t// epoch_counting_started is a boolean, that indicates whether this\n\t// epoch timer has began yet.\n\tEpochCountingStarted bool `protobuf:\"varint,6,opt,name=epoch_counting_started,json=epochCountingStarted,proto3\" json:\"epoch_counting_started,omitempty\"`\n\t// current_epoch_start_height is the block height at which the current epoch\n\t// started. (The block height at which the timer last ticked)\n\tCurrentEpochStartHeight int64 `protobuf:\"varint,8,opt,name=current_epoch_start_height,json=currentEpochStartHeight,proto3\" json:\"current_epoch_start_height,omitempty\"`\n}\n\nfunc (x *EpochInfo) Reset() {\n\t*x = EpochInfo{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EpochInfo) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EpochInfo) ProtoMessage() {}\n\n// Deprecated: Use EpochInfo.ProtoReflect.Descriptor instead.\nfunc (*EpochInfo) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EpochInfo) GetIdentifier() string {\n\tif x != nil {\n\t\treturn x.Identifier\n\t}\n\treturn \"\"\n}\n\nfunc (x *EpochInfo) GetStartTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.StartTime\n\t}\n\treturn nil\n}\n\nfunc (x *EpochInfo) GetDuration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Duration\n\t}\n\treturn nil\n}\n\nfunc (x *EpochInfo) GetCurrentEpoch() int64 {\n\tif x != nil {\n\t\treturn x.CurrentEpoch\n\t}\n\treturn 0\n}\n\nfunc (x *EpochInfo) GetCurrentEpochStartTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CurrentEpochStartTime\n\t}\n\treturn nil\n}\n\nfunc (x *EpochInfo) GetEpochCountingStarted() bool {\n\tif x != nil {\n\t\treturn x.EpochCountingStarted\n\t}\n\treturn false\n}\n\nfunc (x *EpochInfo) GetCurrentEpochStartHeight() int64 {\n\tif x != nil {\n\t\treturn x.CurrentEpochStartHeight\n\t}\n\treturn 0\n}\n\n// GenesisState defines the epochs module's genesis state.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEpochs []*EpochInfo `protobuf:\"bytes,1,rep,name=epochs,proto3\" json:\"epochs,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_genesis_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_genesis_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *GenesisState) GetEpochs() []*EpochInfo {\n\tif x != nil {\n\t\treturn x.Epochs\n\t}\n\treturn nil\n}\n\nvar File_osmosis_epochs_v1beta1_genesis_proto protoreflect.FileDescriptor\n\nvar file_osmosis_epochs_v1beta1_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x24, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e,\n\t0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x04, 0x0a, 0x09, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49,\n\t0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,\n\t0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,\n\t0x69, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x11, 0x79, 0x61, 0x6d,\n\t0x6c, 0x3a, 0x22, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, 0xdf,\n\t0x1f, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x68, 0x0a,\n\t0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00,\n\t0xea, 0xde, 0x1f, 0x12, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x6f, 0x6d, 0x69,\n\t0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xf2, 0xde, 0x1f, 0x0f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22,\n\t0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x08, 0x64,\n\t0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65,\n\t0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,\n\t0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x80, 0x01, 0x0a,\n\t0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73,\n\t0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x2b, 0xc8, 0xde, 0x1f,\n\t0x00, 0xf2, 0xde, 0x1f, 0x1f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x63, 0x75, 0x72, 0x72, 0x65,\n\t0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,\n\t0x69, 0x6d, 0x65, 0x22, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,\n\t0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,\n\t0x34, 0x0a, 0x16, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e,\n\t0x67, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,\n\t0x14, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74,\n\t0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,\n\t0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x65, 0x69,\n\t0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65,\n\t0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67,\n\t0x68, 0x74, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x4f, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65,\n\t0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x65, 0x70, 0x6f, 0x63,\n\t0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x04, 0xc8, 0xde, 0x1f,\n\t0x00, 0x52, 0x06, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0xdb, 0x01, 0x0a, 0x1a, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69,\n\t0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x3b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2,\n\t0x02, 0x03, 0x4f, 0x45, 0x58, 0xaa, 0x02, 0x16, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e,\n\t0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02,\n\t0x16, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c,\n\t0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69,\n\t0x73, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x4f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x3a, 0x3a, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x3a, 0x3a,\n\t0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_osmosis_epochs_v1beta1_genesis_proto_rawDescOnce sync.Once\n\tfile_osmosis_epochs_v1beta1_genesis_proto_rawDescData = file_osmosis_epochs_v1beta1_genesis_proto_rawDesc\n)\n\nfunc file_osmosis_epochs_v1beta1_genesis_proto_rawDescGZIP() []byte {\n\tfile_osmosis_epochs_v1beta1_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_osmosis_epochs_v1beta1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_osmosis_epochs_v1beta1_genesis_proto_rawDescData)\n\t})\n\treturn file_osmosis_epochs_v1beta1_genesis_proto_rawDescData\n}\n\nvar file_osmosis_epochs_v1beta1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_osmosis_epochs_v1beta1_genesis_proto_goTypes = []interface{}{\n\t(*EpochInfo)(nil),             // 0: osmosis.epochs.v1beta1.EpochInfo\n\t(*GenesisState)(nil),          // 1: osmosis.epochs.v1beta1.GenesisState\n\t(*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp\n\t(*durationpb.Duration)(nil),   // 3: google.protobuf.Duration\n}\nvar file_osmosis_epochs_v1beta1_genesis_proto_depIdxs = []int32{\n\t2, // 0: osmosis.epochs.v1beta1.EpochInfo.start_time:type_name -> google.protobuf.Timestamp\n\t3, // 1: osmosis.epochs.v1beta1.EpochInfo.duration:type_name -> google.protobuf.Duration\n\t2, // 2: osmosis.epochs.v1beta1.EpochInfo.current_epoch_start_time:type_name -> google.protobuf.Timestamp\n\t0, // 3: osmosis.epochs.v1beta1.GenesisState.epochs:type_name -> osmosis.epochs.v1beta1.EpochInfo\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_osmosis_epochs_v1beta1_genesis_proto_init() }\nfunc file_osmosis_epochs_v1beta1_genesis_proto_init() {\n\tif File_osmosis_epochs_v1beta1_genesis_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_osmosis_epochs_v1beta1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EpochInfo); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_osmosis_epochs_v1beta1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_osmosis_epochs_v1beta1_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_osmosis_epochs_v1beta1_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_osmosis_epochs_v1beta1_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_osmosis_epochs_v1beta1_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_osmosis_epochs_v1beta1_genesis_proto = out.File\n\tfile_osmosis_epochs_v1beta1_genesis_proto_rawDesc = nil\n\tfile_osmosis_epochs_v1beta1_genesis_proto_goTypes = nil\n\tfile_osmosis_epochs_v1beta1_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/osmosis/epochs/v1beta1/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage epochsv1beta1\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryEpochsInfoRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_query_proto_init()\n\tmd_QueryEpochsInfoRequest = File_osmosis_epochs_v1beta1_query_proto.Messages().ByName(\"QueryEpochsInfoRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryEpochsInfoRequest)(nil)\n\ntype fastReflection_QueryEpochsInfoRequest QueryEpochsInfoRequest\n\nfunc (x *QueryEpochsInfoRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryEpochsInfoRequest)(x)\n}\n\nfunc (x *QueryEpochsInfoRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryEpochsInfoRequest_messageType fastReflection_QueryEpochsInfoRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryEpochsInfoRequest_messageType{}\n\ntype fastReflection_QueryEpochsInfoRequest_messageType struct{}\n\nfunc (x fastReflection_QueryEpochsInfoRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryEpochsInfoRequest)(nil)\n}\nfunc (x fastReflection_QueryEpochsInfoRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryEpochsInfoRequest)\n}\nfunc (x fastReflection_QueryEpochsInfoRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryEpochsInfoRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryEpochsInfoRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryEpochsInfoRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryEpochsInfoRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryEpochsInfoRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryEpochsInfoRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryEpochsInfoRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryEpochsInfoRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.QueryEpochsInfoRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryEpochsInfoRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryEpochsInfoRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryEpochsInfoRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryEpochsInfoRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryEpochsInfoRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryEpochsInfoResponse_1_list)(nil)\n\ntype _QueryEpochsInfoResponse_1_list struct {\n\tlist *[]*EpochInfo\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*EpochInfo)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*EpochInfo)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(EpochInfo)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(EpochInfo)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryEpochsInfoResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryEpochsInfoResponse        protoreflect.MessageDescriptor\n\tfd_QueryEpochsInfoResponse_epochs protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_query_proto_init()\n\tmd_QueryEpochsInfoResponse = File_osmosis_epochs_v1beta1_query_proto.Messages().ByName(\"QueryEpochsInfoResponse\")\n\tfd_QueryEpochsInfoResponse_epochs = md_QueryEpochsInfoResponse.Fields().ByName(\"epochs\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryEpochsInfoResponse)(nil)\n\ntype fastReflection_QueryEpochsInfoResponse QueryEpochsInfoResponse\n\nfunc (x *QueryEpochsInfoResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryEpochsInfoResponse)(x)\n}\n\nfunc (x *QueryEpochsInfoResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryEpochsInfoResponse_messageType fastReflection_QueryEpochsInfoResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryEpochsInfoResponse_messageType{}\n\ntype fastReflection_QueryEpochsInfoResponse_messageType struct{}\n\nfunc (x fastReflection_QueryEpochsInfoResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryEpochsInfoResponse)(nil)\n}\nfunc (x fastReflection_QueryEpochsInfoResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryEpochsInfoResponse)\n}\nfunc (x fastReflection_QueryEpochsInfoResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryEpochsInfoResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryEpochsInfoResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryEpochsInfoResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryEpochsInfoResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryEpochsInfoResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryEpochsInfoResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Epochs) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{list: &x.Epochs})\n\t\tif !f(fd_QueryEpochsInfoResponse_epochs, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\treturn len(x.Epochs) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\tx.Epochs = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\tif len(x.Epochs) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryEpochsInfoResponse_1_list{list: &x.Epochs}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryEpochsInfoResponse_1_list)\n\t\tx.Epochs = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\tif x.Epochs == nil {\n\t\t\tx.Epochs = []*EpochInfo{}\n\t\t}\n\t\tvalue := &_QueryEpochsInfoResponse_1_list{list: &x.Epochs}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryEpochsInfoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs\":\n\t\tlist := []*EpochInfo{}\n\t\treturn protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryEpochsInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryEpochsInfoResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.QueryEpochsInfoResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryEpochsInfoResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryEpochsInfoResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryEpochsInfoResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryEpochsInfoResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Epochs) > 0 {\n\t\t\tfor _, e := range x.Epochs {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Epochs) > 0 {\n\t\t\tfor iNdEx := len(x.Epochs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Epochs[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryEpochsInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryEpochsInfoResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryEpochsInfoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Epochs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Epochs = append(x.Epochs, &EpochInfo{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Epochs[len(x.Epochs)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryCurrentEpochRequest            protoreflect.MessageDescriptor\n\tfd_QueryCurrentEpochRequest_identifier protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_query_proto_init()\n\tmd_QueryCurrentEpochRequest = File_osmosis_epochs_v1beta1_query_proto.Messages().ByName(\"QueryCurrentEpochRequest\")\n\tfd_QueryCurrentEpochRequest_identifier = md_QueryCurrentEpochRequest.Fields().ByName(\"identifier\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryCurrentEpochRequest)(nil)\n\ntype fastReflection_QueryCurrentEpochRequest QueryCurrentEpochRequest\n\nfunc (x *QueryCurrentEpochRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryCurrentEpochRequest)(x)\n}\n\nfunc (x *QueryCurrentEpochRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryCurrentEpochRequest_messageType fastReflection_QueryCurrentEpochRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryCurrentEpochRequest_messageType{}\n\ntype fastReflection_QueryCurrentEpochRequest_messageType struct{}\n\nfunc (x fastReflection_QueryCurrentEpochRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryCurrentEpochRequest)(nil)\n}\nfunc (x fastReflection_QueryCurrentEpochRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryCurrentEpochRequest)\n}\nfunc (x fastReflection_QueryCurrentEpochRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryCurrentEpochRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryCurrentEpochRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryCurrentEpochRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryCurrentEpochRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryCurrentEpochRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryCurrentEpochRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Identifier != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Identifier)\n\t\tif !f(fd_QueryCurrentEpochRequest_identifier, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\treturn x.Identifier != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\tx.Identifier = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\tvalue := x.Identifier\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\tx.Identifier = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\tpanic(fmt.Errorf(\"field identifier of message osmosis.epochs.v1beta1.QueryCurrentEpochRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryCurrentEpochRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest.identifier\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryCurrentEpochRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.QueryCurrentEpochRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryCurrentEpochRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryCurrentEpochRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryCurrentEpochRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Identifier)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Identifier) > 0 {\n\t\t\ti -= len(x.Identifier)\n\t\t\tcopy(dAtA[i:], x.Identifier)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryCurrentEpochRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryCurrentEpochRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Identifier\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Identifier = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryCurrentEpochResponse               protoreflect.MessageDescriptor\n\tfd_QueryCurrentEpochResponse_current_epoch protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_osmosis_epochs_v1beta1_query_proto_init()\n\tmd_QueryCurrentEpochResponse = File_osmosis_epochs_v1beta1_query_proto.Messages().ByName(\"QueryCurrentEpochResponse\")\n\tfd_QueryCurrentEpochResponse_current_epoch = md_QueryCurrentEpochResponse.Fields().ByName(\"current_epoch\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryCurrentEpochResponse)(nil)\n\ntype fastReflection_QueryCurrentEpochResponse QueryCurrentEpochResponse\n\nfunc (x *QueryCurrentEpochResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryCurrentEpochResponse)(x)\n}\n\nfunc (x *QueryCurrentEpochResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryCurrentEpochResponse_messageType fastReflection_QueryCurrentEpochResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryCurrentEpochResponse_messageType{}\n\ntype fastReflection_QueryCurrentEpochResponse_messageType struct{}\n\nfunc (x fastReflection_QueryCurrentEpochResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryCurrentEpochResponse)(nil)\n}\nfunc (x fastReflection_QueryCurrentEpochResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryCurrentEpochResponse)\n}\nfunc (x fastReflection_QueryCurrentEpochResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryCurrentEpochResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryCurrentEpochResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryCurrentEpochResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryCurrentEpochResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryCurrentEpochResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryCurrentEpochResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CurrentEpoch != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CurrentEpoch)\n\t\tif !f(fd_QueryCurrentEpochResponse_current_epoch, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\treturn x.CurrentEpoch != int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\tx.CurrentEpoch = int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\tvalue := x.CurrentEpoch\n\t\treturn protoreflect.ValueOfInt64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\tx.CurrentEpoch = value.Int()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\tpanic(fmt.Errorf(\"field current_epoch of message osmosis.epochs.v1beta1.QueryCurrentEpochResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryCurrentEpochResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse.current_epoch\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message osmosis.epochs.v1beta1.QueryCurrentEpochResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryCurrentEpochResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in osmosis.epochs.v1beta1.QueryCurrentEpochResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryCurrentEpochResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryCurrentEpochResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryCurrentEpochResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryCurrentEpochResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.CurrentEpoch != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CurrentEpoch))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CurrentEpoch != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpoch))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryCurrentEpochResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryCurrentEpochResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryCurrentEpochResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpoch\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CurrentEpoch = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CurrentEpoch |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: osmosis/epochs/v1beta1/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype QueryEpochsInfoRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryEpochsInfoRequest) Reset() {\n\t*x = QueryEpochsInfoRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryEpochsInfoRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryEpochsInfoRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryEpochsInfoRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryEpochsInfoRequest) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_query_proto_rawDescGZIP(), []int{0}\n}\n\ntype QueryEpochsInfoResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEpochs []*EpochInfo `protobuf:\"bytes,1,rep,name=epochs,proto3\" json:\"epochs,omitempty\"`\n}\n\nfunc (x *QueryEpochsInfoResponse) Reset() {\n\t*x = QueryEpochsInfoResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryEpochsInfoResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryEpochsInfoResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryEpochsInfoResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryEpochsInfoResponse) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryEpochsInfoResponse) GetEpochs() []*EpochInfo {\n\tif x != nil {\n\t\treturn x.Epochs\n\t}\n\treturn nil\n}\n\ntype QueryCurrentEpochRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tIdentifier string `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n}\n\nfunc (x *QueryCurrentEpochRequest) Reset() {\n\t*x = QueryCurrentEpochRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryCurrentEpochRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryCurrentEpochRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryCurrentEpochRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryCurrentEpochRequest) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_query_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *QueryCurrentEpochRequest) GetIdentifier() string {\n\tif x != nil {\n\t\treturn x.Identifier\n\t}\n\treturn \"\"\n}\n\ntype QueryCurrentEpochResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCurrentEpoch int64 `protobuf:\"varint,1,opt,name=current_epoch,json=currentEpoch,proto3\" json:\"current_epoch,omitempty\"`\n}\n\nfunc (x *QueryCurrentEpochResponse) Reset() {\n\t*x = QueryCurrentEpochResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_osmosis_epochs_v1beta1_query_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryCurrentEpochResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryCurrentEpochResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryCurrentEpochResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryCurrentEpochResponse) Descriptor() ([]byte, []int) {\n\treturn file_osmosis_epochs_v1beta1_query_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *QueryCurrentEpochResponse) GetCurrentEpoch() int64 {\n\tif x != nil {\n\t\treturn x.CurrentEpoch\n\t}\n\treturn 0\n}\n\nvar File_osmosis_epochs_v1beta1_query_proto protoreflect.FileDescriptor\n\nvar file_osmosis_epochs_v1beta1_query_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x14, 0x67, 0x6f,\n\t0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61,\n\t0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x24, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x18, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45,\n\t0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x22, 0x5a, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49,\n\t0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x65,\n\t0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x04,\n\t0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x22, 0x3a, 0x0a, 0x18,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63,\n\t0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e,\n\t0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64,\n\t0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x40, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,\n\t0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x75,\n\t0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x32, 0xc4, 0x02, 0x0a, 0x05, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x0a, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e,\n\t0x66, 0x6f, 0x73, 0x12, 0x2e, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12, 0xa2, 0x01, 0x0a,\n\t0x0c, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x30, 0x2e,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72,\n\t0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x31, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75,\n\t0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63,\n\t0x68, 0x42, 0xd9, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69,\n\t0x73, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,\n\t0x2f, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x45, 0x58, 0xaa, 0x02, 0x16, 0x4f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x69, 0x73, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x56, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x5c, 0x45,\n\t0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22,\n\t0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x56,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x18, 0x4f, 0x73, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x3a, 0x3a, 0x45, 0x70,\n\t0x6f, 0x63, 0x68, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_osmosis_epochs_v1beta1_query_proto_rawDescOnce sync.Once\n\tfile_osmosis_epochs_v1beta1_query_proto_rawDescData = file_osmosis_epochs_v1beta1_query_proto_rawDesc\n)\n\nfunc file_osmosis_epochs_v1beta1_query_proto_rawDescGZIP() []byte {\n\tfile_osmosis_epochs_v1beta1_query_proto_rawDescOnce.Do(func() {\n\t\tfile_osmosis_epochs_v1beta1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_osmosis_epochs_v1beta1_query_proto_rawDescData)\n\t})\n\treturn file_osmosis_epochs_v1beta1_query_proto_rawDescData\n}\n\nvar file_osmosis_epochs_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_osmosis_epochs_v1beta1_query_proto_goTypes = []interface{}{\n\t(*QueryEpochsInfoRequest)(nil),    // 0: osmosis.epochs.v1beta1.QueryEpochsInfoRequest\n\t(*QueryEpochsInfoResponse)(nil),   // 1: osmosis.epochs.v1beta1.QueryEpochsInfoResponse\n\t(*QueryCurrentEpochRequest)(nil),  // 2: osmosis.epochs.v1beta1.QueryCurrentEpochRequest\n\t(*QueryCurrentEpochResponse)(nil), // 3: osmosis.epochs.v1beta1.QueryCurrentEpochResponse\n\t(*EpochInfo)(nil),                 // 4: osmosis.epochs.v1beta1.EpochInfo\n}\nvar file_osmosis_epochs_v1beta1_query_proto_depIdxs = []int32{\n\t4, // 0: osmosis.epochs.v1beta1.QueryEpochsInfoResponse.epochs:type_name -> osmosis.epochs.v1beta1.EpochInfo\n\t0, // 1: osmosis.epochs.v1beta1.Query.EpochInfos:input_type -> osmosis.epochs.v1beta1.QueryEpochsInfoRequest\n\t2, // 2: osmosis.epochs.v1beta1.Query.CurrentEpoch:input_type -> osmosis.epochs.v1beta1.QueryCurrentEpochRequest\n\t1, // 3: osmosis.epochs.v1beta1.Query.EpochInfos:output_type -> osmosis.epochs.v1beta1.QueryEpochsInfoResponse\n\t3, // 4: osmosis.epochs.v1beta1.Query.CurrentEpoch:output_type -> osmosis.epochs.v1beta1.QueryCurrentEpochResponse\n\t3, // [3:5] is the sub-list for method output_type\n\t1, // [1:3] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_osmosis_epochs_v1beta1_query_proto_init() }\nfunc file_osmosis_epochs_v1beta1_query_proto_init() {\n\tif File_osmosis_epochs_v1beta1_query_proto != nil {\n\t\treturn\n\t}\n\tfile_osmosis_epochs_v1beta1_genesis_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_osmosis_epochs_v1beta1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryEpochsInfoRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_osmosis_epochs_v1beta1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryEpochsInfoResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_osmosis_epochs_v1beta1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryCurrentEpochRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_osmosis_epochs_v1beta1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryCurrentEpochResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_osmosis_epochs_v1beta1_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_osmosis_epochs_v1beta1_query_proto_goTypes,\n\t\tDependencyIndexes: file_osmosis_epochs_v1beta1_query_proto_depIdxs,\n\t\tMessageInfos:      file_osmosis_epochs_v1beta1_query_proto_msgTypes,\n\t}.Build()\n\tFile_osmosis_epochs_v1beta1_query_proto = out.File\n\tfile_osmosis_epochs_v1beta1_query_proto_rawDesc = nil\n\tfile_osmosis_epochs_v1beta1_query_proto_goTypes = nil\n\tfile_osmosis_epochs_v1beta1_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/osmosis/epochs/v1beta1/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: osmosis/epochs/v1beta1/query.proto\n\npackage epochsv1beta1\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_EpochInfos_FullMethodName   = \"/osmosis.epochs.v1beta1.Query/EpochInfos\"\n\tQuery_CurrentEpoch_FullMethodName = \"/osmosis.epochs.v1beta1.Query/CurrentEpoch\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// EpochInfos provide running epochInfos\n\tEpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error)\n\t// CurrentEpoch provide current epoch of specified identifier\n\tCurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) EpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryEpochsInfoResponse)\n\terr := c.cc.Invoke(ctx, Query_EpochInfos_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) CurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryCurrentEpochResponse)\n\terr := c.cc.Invoke(ctx, Query_CurrentEpoch_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// EpochInfos provide running epochInfos\n\tEpochInfos(context.Context, *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error)\n\t// CurrentEpoch provide current epoch of specified identifier\n\tCurrentEpoch(context.Context, *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) EpochInfos(context.Context, *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method EpochInfos not implemented\")\n}\nfunc (UnimplementedQueryServer) CurrentEpoch(context.Context, *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CurrentEpoch not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_EpochInfos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryEpochsInfoRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).EpochInfos(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_EpochInfos_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).EpochInfos(ctx, req.(*QueryEpochsInfoRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_CurrentEpoch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryCurrentEpochRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).CurrentEpoch(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_CurrentEpoch_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).CurrentEpoch(ctx, req.(*QueryCurrentEpochRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"osmosis.epochs.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"EpochInfos\",\n\t\t\tHandler:    _Query_EpochInfos_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CurrentEpoch\",\n\t\t\tHandler:    _Query_CurrentEpoch_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"osmosis/epochs/v1beta1/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/acp/access_decision.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_AccessDecision_5_list)(nil)\n\ntype _AccessDecision_5_list struct {\n\tlist *[]*types.Operation\n}\n\nfunc (x *_AccessDecision_5_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_AccessDecision_5_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*types.Operation)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_AccessDecision_5_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*types.Operation)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_AccessDecision_5_list) AppendMutable() protoreflect.Value {\n\tv := new(types.Operation)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_AccessDecision_5_list) NewElement() protoreflect.Value {\n\tv := new(types.Operation)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_AccessDecision                      protoreflect.MessageDescriptor\n\tfd_AccessDecision_id                   protoreflect.FieldDescriptor\n\tfd_AccessDecision_policy_id            protoreflect.FieldDescriptor\n\tfd_AccessDecision_creator              protoreflect.FieldDescriptor\n\tfd_AccessDecision_creator_acc_sequence protoreflect.FieldDescriptor\n\tfd_AccessDecision_operations           protoreflect.FieldDescriptor\n\tfd_AccessDecision_actor                protoreflect.FieldDescriptor\n\tfd_AccessDecision_params               protoreflect.FieldDescriptor\n\tfd_AccessDecision_creation_time        protoreflect.FieldDescriptor\n\tfd_AccessDecision_issued_height        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tmd_AccessDecision = File_sourcehub_acp_access_decision_proto.Messages().ByName(\"AccessDecision\")\n\tfd_AccessDecision_id = md_AccessDecision.Fields().ByName(\"id\")\n\tfd_AccessDecision_policy_id = md_AccessDecision.Fields().ByName(\"policy_id\")\n\tfd_AccessDecision_creator = md_AccessDecision.Fields().ByName(\"creator\")\n\tfd_AccessDecision_creator_acc_sequence = md_AccessDecision.Fields().ByName(\"creator_acc_sequence\")\n\tfd_AccessDecision_operations = md_AccessDecision.Fields().ByName(\"operations\")\n\tfd_AccessDecision_actor = md_AccessDecision.Fields().ByName(\"actor\")\n\tfd_AccessDecision_params = md_AccessDecision.Fields().ByName(\"params\")\n\tfd_AccessDecision_creation_time = md_AccessDecision.Fields().ByName(\"creation_time\")\n\tfd_AccessDecision_issued_height = md_AccessDecision.Fields().ByName(\"issued_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AccessDecision)(nil)\n\ntype fastReflection_AccessDecision AccessDecision\n\nfunc (x *AccessDecision) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AccessDecision)(x)\n}\n\nfunc (x *AccessDecision) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_access_decision_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AccessDecision_messageType fastReflection_AccessDecision_messageType\nvar _ protoreflect.MessageType = fastReflection_AccessDecision_messageType{}\n\ntype fastReflection_AccessDecision_messageType struct{}\n\nfunc (x fastReflection_AccessDecision_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AccessDecision)(nil)\n}\nfunc (x fastReflection_AccessDecision_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AccessDecision)\n}\nfunc (x fastReflection_AccessDecision_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessDecision\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AccessDecision) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessDecision\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AccessDecision) Type() protoreflect.MessageType {\n\treturn _fastReflection_AccessDecision_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AccessDecision) New() protoreflect.Message {\n\treturn new(fastReflection_AccessDecision)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AccessDecision) Interface() protoreflect.ProtoMessage {\n\treturn (*AccessDecision)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AccessDecision) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_AccessDecision_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_AccessDecision_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_AccessDecision_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatorAccSequence != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.CreatorAccSequence)\n\t\tif !f(fd_AccessDecision_creator_acc_sequence, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Operations) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_AccessDecision_5_list{list: &x.Operations})\n\t\tif !f(fd_AccessDecision_operations, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_AccessDecision_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_AccessDecision_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_AccessDecision_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuedHeight != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.IssuedHeight)\n\t\tif !f(fd_AccessDecision_issued_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AccessDecision) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\treturn x.CreatorAccSequence != uint64(0)\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\treturn len(x.Operations) != 0\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\treturn x.Params != nil\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\treturn x.IssuedHeight != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\tx.CreatorAccSequence = uint64(0)\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\tx.Operations = nil\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\tx.Params = nil\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\tx.IssuedHeight = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AccessDecision) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\tvalue := x.CreatorAccSequence\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\tif len(x.Operations) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_AccessDecision_5_list{})\n\t\t}\n\t\tlistValue := &_AccessDecision_5_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\tvalue := x.IssuedHeight\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\tx.CreatorAccSequence = value.Uint()\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_AccessDecision_5_list)\n\t\tx.Operations = *clv.list\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\tx.Params = value.Message().Interface().(*DecisionParams)\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*Timestamp)\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\tx.IssuedHeight = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\tif x.Operations == nil {\n\t\t\tx.Operations = []*types.Operation{}\n\t\t}\n\t\tvalue := &_AccessDecision_5_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(DecisionParams)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.AccessDecision is not mutable\"))\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.AccessDecision is not mutable\"))\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.AccessDecision is not mutable\"))\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\tpanic(fmt.Errorf(\"field creator_acc_sequence of message sourcehub.acp.AccessDecision is not mutable\"))\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcehub.acp.AccessDecision is not mutable\"))\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\tpanic(fmt.Errorf(\"field issued_height of message sourcehub.acp.AccessDecision is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AccessDecision) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessDecision.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessDecision.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessDecision.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessDecision.creator_acc_sequence\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.AccessDecision.operations\":\n\t\tlist := []*types.Operation{}\n\t\treturn protoreflect.ValueOfList(&_AccessDecision_5_list{list: &list})\n\tcase \"sourcehub.acp.AccessDecision.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessDecision.params\":\n\t\tm := new(DecisionParams)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.creation_time\":\n\t\tm := new(Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AccessDecision.issued_height\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AccessDecision) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.AccessDecision\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AccessDecision) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AccessDecision) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AccessDecision) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreatorAccSequence != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreatorAccSequence))\n\t\t}\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor _, e := range x.Operations {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.IssuedHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.IssuedHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x48\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor iNdEx := len(x.Operations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Operations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t}\n\t\t}\n\t\tif x.CreatorAccSequence != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreatorAccSequence))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessDecision: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessDecision: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatorAccSequence\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreatorAccSequence = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreatorAccSequence |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Operations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Operations = append(x.Operations, &types.Operation{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Operations[len(x.Operations)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &DecisionParams{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 9:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuedHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.IssuedHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.IssuedHeight |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DecisionParams                           protoreflect.MessageDescriptor\n\tfd_DecisionParams_decision_expiration_delta protoreflect.FieldDescriptor\n\tfd_DecisionParams_proof_expiration_delta    protoreflect.FieldDescriptor\n\tfd_DecisionParams_ticket_expiration_delta   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tmd_DecisionParams = File_sourcehub_acp_access_decision_proto.Messages().ByName(\"DecisionParams\")\n\tfd_DecisionParams_decision_expiration_delta = md_DecisionParams.Fields().ByName(\"decision_expiration_delta\")\n\tfd_DecisionParams_proof_expiration_delta = md_DecisionParams.Fields().ByName(\"proof_expiration_delta\")\n\tfd_DecisionParams_ticket_expiration_delta = md_DecisionParams.Fields().ByName(\"ticket_expiration_delta\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DecisionParams)(nil)\n\ntype fastReflection_DecisionParams DecisionParams\n\nfunc (x *DecisionParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DecisionParams)(x)\n}\n\nfunc (x *DecisionParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_access_decision_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DecisionParams_messageType fastReflection_DecisionParams_messageType\nvar _ protoreflect.MessageType = fastReflection_DecisionParams_messageType{}\n\ntype fastReflection_DecisionParams_messageType struct{}\n\nfunc (x fastReflection_DecisionParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DecisionParams)(nil)\n}\nfunc (x fastReflection_DecisionParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DecisionParams)\n}\nfunc (x fastReflection_DecisionParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DecisionParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DecisionParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DecisionParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DecisionParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_DecisionParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DecisionParams) New() protoreflect.Message {\n\treturn new(fastReflection_DecisionParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DecisionParams) Interface() protoreflect.ProtoMessage {\n\treturn (*DecisionParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DecisionParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DecisionExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.DecisionExpirationDelta)\n\t\tif !f(fd_DecisionParams_decision_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ProofExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.ProofExpirationDelta)\n\t\tif !f(fd_DecisionParams_proof_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TicketExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.TicketExpirationDelta)\n\t\tif !f(fd_DecisionParams_ticket_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DecisionParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\treturn x.DecisionExpirationDelta != uint64(0)\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\treturn x.ProofExpirationDelta != uint64(0)\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\treturn x.TicketExpirationDelta != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\tx.DecisionExpirationDelta = uint64(0)\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\tx.ProofExpirationDelta = uint64(0)\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\tx.TicketExpirationDelta = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DecisionParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\tvalue := x.DecisionExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\tvalue := x.ProofExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\tvalue := x.TicketExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\tx.DecisionExpirationDelta = value.Uint()\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\tx.ProofExpirationDelta = value.Uint()\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\tx.TicketExpirationDelta = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field decision_expiration_delta of message sourcehub.acp.DecisionParams is not mutable\"))\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field proof_expiration_delta of message sourcehub.acp.DecisionParams is not mutable\"))\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field ticket_expiration_delta of message sourcehub.acp.DecisionParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DecisionParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DecisionParams.decision_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.DecisionParams.proof_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.DecisionParams.ticket_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DecisionParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.DecisionParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DecisionParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DecisionParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DecisionParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.DecisionExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.DecisionExpirationDelta))\n\t\t}\n\t\tif x.ProofExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ProofExpirationDelta))\n\t\t}\n\t\tif x.TicketExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.TicketExpirationDelta))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.TicketExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.TicketExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif x.ProofExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ProofExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.DecisionExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.DecisionExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DecisionParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DecisionParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.DecisionExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.DecisionExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProofExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ProofExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ProofExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TicketExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.TicketExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.TicketExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/access_decision.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// AccessDecision models the result of evaluating a set of AccessRequests for an Actor\ntype AccessDecision struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId                 string             `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPolicyId           string             `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`                                  // used as part of id generation\n\tCreator            string             `protobuf:\"bytes,3,opt,name=creator,proto3\" json:\"creator,omitempty\"`                                                    // used as part of id generation\n\tCreatorAccSequence uint64             `protobuf:\"varint,4,opt,name=creator_acc_sequence,json=creatorAccSequence,proto3\" json:\"creator_acc_sequence,omitempty\"` // used as part of id generation\n\tOperations         []*types.Operation `protobuf:\"bytes,5,rep,name=operations,proto3\" json:\"operations,omitempty\"`                                              // used as part of id generation\n\tActor              string             `protobuf:\"bytes,6,opt,name=actor,proto3\" json:\"actor,omitempty\"`                                                        // used as part of id generation\n\tParams             *DecisionParams    `protobuf:\"bytes,7,opt,name=params,proto3\" json:\"params,omitempty\"`                                                      // used as part of id generation\n\tCreationTime       *Timestamp         `protobuf:\"bytes,8,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// issued_height stores the block height when the Decision was evaluated\n\tIssuedHeight uint64 `protobuf:\"varint,9,opt,name=issued_height,json=issuedHeight,proto3\" json:\"issued_height,omitempty\"`\n}\n\nfunc (x *AccessDecision) Reset() {\n\t*x = AccessDecision{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_access_decision_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AccessDecision) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AccessDecision) ProtoMessage() {}\n\n// Deprecated: Use AccessDecision.ProtoReflect.Descriptor instead.\nfunc (*AccessDecision) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_access_decision_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AccessDecision) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetCreatorAccSequence() uint64 {\n\tif x != nil {\n\t\treturn x.CreatorAccSequence\n\t}\n\treturn 0\n}\n\nfunc (x *AccessDecision) GetOperations() []*types.Operation {\n\tif x != nil {\n\t\treturn x.Operations\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetParams() *DecisionParams {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetCreationTime() *Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetIssuedHeight() uint64 {\n\tif x != nil {\n\t\treturn x.IssuedHeight\n\t}\n\treturn 0\n}\n\n// DecisionParams stores auxiliary information regarding the validity of a decision\ntype DecisionParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// number of blocks a Decision is valid for\n\tDecisionExpirationDelta uint64 `protobuf:\"varint,1,opt,name=decision_expiration_delta,json=decisionExpirationDelta,proto3\" json:\"decision_expiration_delta,omitempty\"`\n\t// number of blocks a DecisionProof is valid for\n\tProofExpirationDelta uint64 `protobuf:\"varint,2,opt,name=proof_expiration_delta,json=proofExpirationDelta,proto3\" json:\"proof_expiration_delta,omitempty\"`\n\t// number of blocks an AccessTicket is valid for\n\tTicketExpirationDelta uint64 `protobuf:\"varint,3,opt,name=ticket_expiration_delta,json=ticketExpirationDelta,proto3\" json:\"ticket_expiration_delta,omitempty\"`\n}\n\nfunc (x *DecisionParams) Reset() {\n\t*x = DecisionParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_access_decision_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DecisionParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DecisionParams) ProtoMessage() {}\n\n// Deprecated: Use DecisionParams.ProtoReflect.Descriptor instead.\nfunc (*DecisionParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_access_decision_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *DecisionParams) GetDecisionExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.DecisionExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *DecisionParams) GetProofExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.ProofExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *DecisionParams) GetTicketExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.TicketExpirationDelta\n\t}\n\treturn 0\n}\n\nvar File_sourcehub_acp_access_decision_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_access_decision_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,\n\t0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65,\n\t0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x24, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x02, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x65, 0x73,\n\t0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f,\n\t0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72,\n\t0x12, 0x30, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x5f,\n\t0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e,\n\t0x63, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x06, 0x70,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x44, 0x65, 0x63, 0x69,\n\t0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,\n\t0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,\n\t0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67,\n\t0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64,\n\t0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x69, 0x73,\n\t0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x65, 0x63,\n\t0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x64, 0x65,\n\t0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x65,\n\t0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x45, 0x78, 0x70, 0x69,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x74,\n\t0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x74, 0x69,\n\t0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,\n\t0x6c, 0x74, 0x61, 0x42, 0x9d, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x13, 0x41, 0x63, 0x63, 0x65, 0x73,\n\t0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70,\n\t0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a,\n\t0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_access_decision_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_access_decision_proto_rawDescData = file_sourcehub_acp_access_decision_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_access_decision_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_access_decision_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_access_decision_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_access_decision_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_access_decision_proto_rawDescData\n}\n\nvar file_sourcehub_acp_access_decision_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_acp_access_decision_proto_goTypes = []interface{}{\n\t(*AccessDecision)(nil),  // 0: sourcehub.acp.AccessDecision\n\t(*DecisionParams)(nil),  // 1: sourcehub.acp.DecisionParams\n\t(*types.Operation)(nil), // 2: sourcenetwork.acp_core.Operation\n\t(*Timestamp)(nil),       // 3: sourcehub.acp.Timestamp\n}\nvar file_sourcehub_acp_access_decision_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.acp.AccessDecision.operations:type_name -> sourcenetwork.acp_core.Operation\n\t1, // 1: sourcehub.acp.AccessDecision.params:type_name -> sourcehub.acp.DecisionParams\n\t3, // 2: sourcehub.acp.AccessDecision.creation_time:type_name -> sourcehub.acp.Timestamp\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_access_decision_proto_init() }\nfunc file_sourcehub_acp_access_decision_proto_init() {\n\tif File_sourcehub_acp_access_decision_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_time_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_access_decision_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AccessDecision); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_access_decision_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DecisionParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_access_decision_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_access_decision_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_access_decision_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_access_decision_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_access_decision_proto = out.File\n\tfile_sourcehub_acp_access_decision_proto_rawDesc = nil\n\tfile_sourcehub_acp_access_decision_proto_goTypes = nil\n\tfile_sourcehub_acp_access_decision_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/access_ticket.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_AccessTicket                     protoreflect.MessageDescriptor\n\tfd_AccessTicket_version_denominator protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision_id         protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision            protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision_proof      protoreflect.FieldDescriptor\n\tfd_AccessTicket_signature           protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_access_ticket_proto_init()\n\tmd_AccessTicket = File_sourcehub_acp_access_ticket_proto.Messages().ByName(\"AccessTicket\")\n\tfd_AccessTicket_version_denominator = md_AccessTicket.Fields().ByName(\"version_denominator\")\n\tfd_AccessTicket_decision_id = md_AccessTicket.Fields().ByName(\"decision_id\")\n\tfd_AccessTicket_decision = md_AccessTicket.Fields().ByName(\"decision\")\n\tfd_AccessTicket_decision_proof = md_AccessTicket.Fields().ByName(\"decision_proof\")\n\tfd_AccessTicket_signature = md_AccessTicket.Fields().ByName(\"signature\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AccessTicket)(nil)\n\ntype fastReflection_AccessTicket AccessTicket\n\nfunc (x *AccessTicket) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AccessTicket)(x)\n}\n\nfunc (x *AccessTicket) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_access_ticket_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AccessTicket_messageType fastReflection_AccessTicket_messageType\nvar _ protoreflect.MessageType = fastReflection_AccessTicket_messageType{}\n\ntype fastReflection_AccessTicket_messageType struct{}\n\nfunc (x fastReflection_AccessTicket_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AccessTicket)(nil)\n}\nfunc (x fastReflection_AccessTicket_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AccessTicket)\n}\nfunc (x fastReflection_AccessTicket_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessTicket\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AccessTicket) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessTicket\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AccessTicket) Type() protoreflect.MessageType {\n\treturn _fastReflection_AccessTicket_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AccessTicket) New() protoreflect.Message {\n\treturn new(fastReflection_AccessTicket)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AccessTicket) Interface() protoreflect.ProtoMessage {\n\treturn (*AccessTicket)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AccessTicket) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.VersionDenominator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.VersionDenominator)\n\t\tif !f(fd_AccessTicket_version_denominator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.DecisionId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DecisionId)\n\t\tif !f(fd_AccessTicket_decision_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Decision != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\t\tif !f(fd_AccessTicket_decision, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.DecisionProof) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.DecisionProof)\n\t\tif !f(fd_AccessTicket_decision_proof, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Signature) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Signature)\n\t\tif !f(fd_AccessTicket_signature, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AccessTicket) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\treturn x.VersionDenominator != \"\"\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\treturn x.DecisionId != \"\"\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\treturn x.Decision != nil\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\treturn len(x.DecisionProof) != 0\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\treturn len(x.Signature) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\tx.VersionDenominator = \"\"\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\tx.DecisionId = \"\"\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\tx.Decision = nil\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\tx.DecisionProof = nil\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\tx.Signature = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AccessTicket) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\tvalue := x.VersionDenominator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\tvalue := x.DecisionId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\tvalue := x.Decision\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\tvalue := x.DecisionProof\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\tvalue := x.Signature\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\tx.VersionDenominator = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\tx.DecisionId = value.Interface().(string)\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\tx.Decision = value.Message().Interface().(*AccessDecision)\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\tx.DecisionProof = value.Bytes()\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\tx.Signature = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\tif x.Decision == nil {\n\t\t\tx.Decision = new(AccessDecision)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\tpanic(fmt.Errorf(\"field version_denominator of message sourcehub.acp.AccessTicket is not mutable\"))\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\tpanic(fmt.Errorf(\"field decision_id of message sourcehub.acp.AccessTicket is not mutable\"))\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\tpanic(fmt.Errorf(\"field decision_proof of message sourcehub.acp.AccessTicket is not mutable\"))\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\tpanic(fmt.Errorf(\"field signature of message sourcehub.acp.AccessTicket is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AccessTicket) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AccessTicket.version_denominator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessTicket.decision_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AccessTicket.decision\":\n\t\tm := new(AccessDecision)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AccessTicket.decision_proof\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcehub.acp.AccessTicket.signature\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AccessTicket) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.AccessTicket\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AccessTicket) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AccessTicket) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AccessTicket) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.VersionDenominator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DecisionId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tl = options.Size(x.Decision)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DecisionProof)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Signature)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Signature) > 0 {\n\t\t\ti -= len(x.Signature)\n\t\t\tcopy(dAtA[i:], x.Signature)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Signature)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.DecisionProof) > 0 {\n\t\t\ti -= len(x.DecisionProof)\n\t\t\tcopy(dAtA[i:], x.DecisionProof)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DecisionProof)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tencoded, err := options.Marshal(x.Decision)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.DecisionId) > 0 {\n\t\t\ti -= len(x.DecisionId)\n\t\t\tcopy(dAtA[i:], x.DecisionId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DecisionId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.VersionDenominator) > 0 {\n\t\t\ti -= len(x.VersionDenominator)\n\t\t\tcopy(dAtA[i:], x.VersionDenominator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.VersionDenominator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessTicket: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessTicket: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field VersionDenominator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.VersionDenominator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DecisionId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Decision == nil {\n\t\t\t\t\tx.Decision = &AccessDecision{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Decision); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionProof\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DecisionProof = append(x.DecisionProof[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.DecisionProof == nil {\n\t\t\t\t\tx.DecisionProof = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Signature\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Signature = append(x.Signature[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Signature == nil {\n\t\t\t\t\tx.Signature = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/access_ticket.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Represents a Capability token containing an opaque proof and a set of Operations\n// the Actor is allowed to perform.\n// Tickets should be verified by a Reference Monitor before granting access to the requested operations.\ntype AccessTicket struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// identified the ticket version\n\tVersionDenominator string          `protobuf:\"bytes,1,opt,name=version_denominator,json=versionDenominator,proto3\" json:\"version_denominator,omitempty\"`\n\tDecisionId         string          `protobuf:\"bytes,2,opt,name=decision_id,json=decisionId,proto3\" json:\"decision_id,omitempty\"`\n\tDecision           *AccessDecision `protobuf:\"bytes,3,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n\t// proof of existance that the given decision exists in the chain\n\t// validation strategy is dependent on ticket version\n\tDecisionProof []byte `protobuf:\"bytes,4,opt,name=decision_proof,json=decisionProof,proto3\" json:\"decision_proof,omitempty\"`\n\t// signature of ticket which must match actor pkey in the access decision\n\tSignature []byte `protobuf:\"bytes,5,opt,name=signature,proto3\" json:\"signature,omitempty\"`\n}\n\nfunc (x *AccessTicket) Reset() {\n\t*x = AccessTicket{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_access_ticket_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AccessTicket) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AccessTicket) ProtoMessage() {}\n\n// Deprecated: Use AccessTicket.ProtoReflect.Descriptor instead.\nfunc (*AccessTicket) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_access_ticket_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AccessTicket) GetVersionDenominator() string {\n\tif x != nil {\n\t\treturn x.VersionDenominator\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessTicket) GetDecisionId() string {\n\tif x != nil {\n\t\treturn x.DecisionId\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessTicket) GetDecision() *AccessDecision {\n\tif x != nil {\n\t\treturn x.Decision\n\t}\n\treturn nil\n}\n\nfunc (x *AccessTicket) GetDecisionProof() []byte {\n\tif x != nil {\n\t\treturn x.DecisionProof\n\t}\n\treturn nil\n}\n\nfunc (x *AccessTicket) GetSignature() []byte {\n\tif x != nil {\n\t\treturn x.Signature\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_access_ticket_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_access_ticket_proto_rawDesc = []byte{\n\t0x0a, 0x21, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,\n\t0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,\n\t0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe0,\n\t0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12,\n\t0x2f, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d,\n\t0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x65,\n\t0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72,\n\t0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49,\n\t0x64, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69,\n\t0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e,\n\t0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72,\n\t0x6f, 0x6f, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,\n\t0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,\n\t0x65, 0x42, 0x9b, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x11, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,\n\t0x69, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53,\n\t0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41,\n\t0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41,\n\t0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41,\n\t0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62,\n\t0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_access_ticket_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_access_ticket_proto_rawDescData = file_sourcehub_acp_access_ticket_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_access_ticket_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_access_ticket_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_access_ticket_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_access_ticket_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_access_ticket_proto_rawDescData\n}\n\nvar file_sourcehub_acp_access_ticket_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_acp_access_ticket_proto_goTypes = []interface{}{\n\t(*AccessTicket)(nil),   // 0: sourcehub.acp.AccessTicket\n\t(*AccessDecision)(nil), // 1: sourcehub.acp.AccessDecision\n}\nvar file_sourcehub_acp_access_ticket_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.acp.AccessTicket.decision:type_name -> sourcehub.acp.AccessDecision\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_access_ticket_proto_init() }\nfunc file_sourcehub_acp_access_ticket_proto_init() {\n\tif File_sourcehub_acp_access_ticket_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_access_ticket_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AccessTicket); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_access_ticket_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_access_ticket_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_access_ticket_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_access_ticket_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_access_ticket_proto = out.File\n\tfile_sourcehub_acp_access_ticket_proto_rawDesc = nil\n\tfile_sourcehub_acp_access_ticket_proto_goTypes = nil\n\tfile_sourcehub_acp_access_ticket_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/commitment.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_RegistrationProof_2_list)(nil)\n\ntype _RegistrationProof_2_list struct {\n\tlist *[][]byte\n}\n\nfunc (x *_RegistrationProof_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_RegistrationProof_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfBytes((*x.list)[i])\n}\n\nfunc (x *_RegistrationProof_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Bytes()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_RegistrationProof_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Bytes()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_RegistrationProof_2_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message RegistrationProof at list field MerkleProof as it is not of Message kind\"))\n}\n\nfunc (x *_RegistrationProof_2_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_RegistrationProof_2_list) NewElement() protoreflect.Value {\n\tvar v []byte\n\treturn protoreflect.ValueOfBytes(v)\n}\n\nfunc (x *_RegistrationProof_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_RegistrationProof              protoreflect.MessageDescriptor\n\tfd_RegistrationProof_object       protoreflect.FieldDescriptor\n\tfd_RegistrationProof_merkle_proof protoreflect.FieldDescriptor\n\tfd_RegistrationProof_leaf_count   protoreflect.FieldDescriptor\n\tfd_RegistrationProof_leaf_index   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_commitment_proto_init()\n\tmd_RegistrationProof = File_sourcehub_acp_commitment_proto.Messages().ByName(\"RegistrationProof\")\n\tfd_RegistrationProof_object = md_RegistrationProof.Fields().ByName(\"object\")\n\tfd_RegistrationProof_merkle_proof = md_RegistrationProof.Fields().ByName(\"merkle_proof\")\n\tfd_RegistrationProof_leaf_count = md_RegistrationProof.Fields().ByName(\"leaf_count\")\n\tfd_RegistrationProof_leaf_index = md_RegistrationProof.Fields().ByName(\"leaf_index\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegistrationProof)(nil)\n\ntype fastReflection_RegistrationProof RegistrationProof\n\nfunc (x *RegistrationProof) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegistrationProof)(x)\n}\n\nfunc (x *RegistrationProof) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_commitment_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegistrationProof_messageType fastReflection_RegistrationProof_messageType\nvar _ protoreflect.MessageType = fastReflection_RegistrationProof_messageType{}\n\ntype fastReflection_RegistrationProof_messageType struct{}\n\nfunc (x fastReflection_RegistrationProof_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegistrationProof)(nil)\n}\nfunc (x fastReflection_RegistrationProof_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegistrationProof)\n}\nfunc (x fastReflection_RegistrationProof_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegistrationProof\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegistrationProof) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegistrationProof\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegistrationProof) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegistrationProof_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegistrationProof) New() protoreflect.Message {\n\treturn new(fastReflection_RegistrationProof)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegistrationProof) Interface() protoreflect.ProtoMessage {\n\treturn (*RegistrationProof)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegistrationProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_RegistrationProof_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.MerkleProof) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_RegistrationProof_2_list{list: &x.MerkleProof})\n\t\tif !f(fd_RegistrationProof_merkle_proof, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LeafCount != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.LeafCount)\n\t\tif !f(fd_RegistrationProof_leaf_count, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LeafIndex != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.LeafIndex)\n\t\tif !f(fd_RegistrationProof_leaf_index, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegistrationProof) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\treturn len(x.MerkleProof) != 0\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\treturn x.LeafCount != uint64(0)\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\treturn x.LeafIndex != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationProof) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\tx.Object = nil\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\tx.MerkleProof = nil\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\tx.LeafCount = uint64(0)\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\tx.LeafIndex = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegistrationProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\tif len(x.MerkleProof) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_RegistrationProof_2_list{})\n\t\t}\n\t\tlistValue := &_RegistrationProof_2_list{list: &x.MerkleProof}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\tvalue := x.LeafCount\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\tvalue := x.LeafIndex\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_RegistrationProof_2_list)\n\t\tx.MerkleProof = *clv.list\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\tx.LeafCount = value.Uint()\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\tx.LeafIndex = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\tif x.MerkleProof == nil {\n\t\t\tx.MerkleProof = [][]byte{}\n\t\t}\n\t\tvalue := &_RegistrationProof_2_list{list: &x.MerkleProof}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\tpanic(fmt.Errorf(\"field leaf_count of message sourcehub.acp.RegistrationProof is not mutable\"))\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\tpanic(fmt.Errorf(\"field leaf_index of message sourcehub.acp.RegistrationProof is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegistrationProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationProof.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationProof.merkle_proof\":\n\t\tlist := [][]byte{}\n\t\treturn protoreflect.ValueOfList(&_RegistrationProof_2_list{list: &list})\n\tcase \"sourcehub.acp.RegistrationProof.leaf_count\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.RegistrationProof.leaf_index\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationProof\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationProof does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegistrationProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RegistrationProof\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegistrationProof) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationProof) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegistrationProof) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegistrationProof) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegistrationProof)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.MerkleProof) > 0 {\n\t\t\tfor _, b := range x.MerkleProof {\n\t\t\t\tl = len(b)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.LeafCount != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.LeafCount))\n\t\t}\n\t\tif x.LeafIndex != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.LeafIndex))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegistrationProof)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.LeafIndex != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.LeafIndex))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.LeafCount != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.LeafCount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.MerkleProof) > 0 {\n\t\t\tfor iNdEx := len(x.MerkleProof) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.MerkleProof[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.MerkleProof[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.MerkleProof[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegistrationProof)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegistrationProof: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegistrationProof: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MerkleProof\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.MerkleProof = append(x.MerkleProof, make([]byte, postIndex-iNdEx))\n\t\t\t\tcopy(x.MerkleProof[len(x.MerkleProof)-1], dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LeafCount\", wireType)\n\t\t\t\t}\n\t\t\t\tx.LeafCount = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.LeafCount |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LeafIndex\", wireType)\n\t\t\t\t}\n\t\t\t\tx.LeafIndex = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.LeafIndex |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RegistrationsCommitment            protoreflect.MessageDescriptor\n\tfd_RegistrationsCommitment_id         protoreflect.FieldDescriptor\n\tfd_RegistrationsCommitment_policy_id  protoreflect.FieldDescriptor\n\tfd_RegistrationsCommitment_commitment protoreflect.FieldDescriptor\n\tfd_RegistrationsCommitment_expired    protoreflect.FieldDescriptor\n\tfd_RegistrationsCommitment_validity   protoreflect.FieldDescriptor\n\tfd_RegistrationsCommitment_metadata   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_commitment_proto_init()\n\tmd_RegistrationsCommitment = File_sourcehub_acp_commitment_proto.Messages().ByName(\"RegistrationsCommitment\")\n\tfd_RegistrationsCommitment_id = md_RegistrationsCommitment.Fields().ByName(\"id\")\n\tfd_RegistrationsCommitment_policy_id = md_RegistrationsCommitment.Fields().ByName(\"policy_id\")\n\tfd_RegistrationsCommitment_commitment = md_RegistrationsCommitment.Fields().ByName(\"commitment\")\n\tfd_RegistrationsCommitment_expired = md_RegistrationsCommitment.Fields().ByName(\"expired\")\n\tfd_RegistrationsCommitment_validity = md_RegistrationsCommitment.Fields().ByName(\"validity\")\n\tfd_RegistrationsCommitment_metadata = md_RegistrationsCommitment.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegistrationsCommitment)(nil)\n\ntype fastReflection_RegistrationsCommitment RegistrationsCommitment\n\nfunc (x *RegistrationsCommitment) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegistrationsCommitment)(x)\n}\n\nfunc (x *RegistrationsCommitment) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_commitment_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegistrationsCommitment_messageType fastReflection_RegistrationsCommitment_messageType\nvar _ protoreflect.MessageType = fastReflection_RegistrationsCommitment_messageType{}\n\ntype fastReflection_RegistrationsCommitment_messageType struct{}\n\nfunc (x fastReflection_RegistrationsCommitment_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegistrationsCommitment)(nil)\n}\nfunc (x fastReflection_RegistrationsCommitment_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegistrationsCommitment)\n}\nfunc (x fastReflection_RegistrationsCommitment_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegistrationsCommitment\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegistrationsCommitment) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegistrationsCommitment\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegistrationsCommitment) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegistrationsCommitment_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegistrationsCommitment) New() protoreflect.Message {\n\treturn new(fastReflection_RegistrationsCommitment)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegistrationsCommitment) Interface() protoreflect.ProtoMessage {\n\treturn (*RegistrationsCommitment)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegistrationsCommitment) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Id)\n\t\tif !f(fd_RegistrationsCommitment_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_RegistrationsCommitment_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Commitment) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Commitment)\n\t\tif !f(fd_RegistrationsCommitment_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expired != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Expired)\n\t\tif !f(fd_RegistrationsCommitment_expired, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Validity != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Validity.ProtoReflect())\n\t\tif !f(fd_RegistrationsCommitment_validity, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Metadata != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\t\tif !f(fd_RegistrationsCommitment_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegistrationsCommitment) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\treturn x.Id != uint64(0)\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\treturn len(x.Commitment) != 0\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\treturn x.Expired != false\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\treturn x.Validity != nil\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\treturn x.Metadata != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationsCommitment) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\tx.Id = uint64(0)\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\tx.Commitment = nil\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\tx.Expired = false\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\tx.Validity = nil\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegistrationsCommitment) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\tvalue := x.Commitment\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\tvalue := x.Expired\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\tvalue := x.Validity\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\tvalue := x.Metadata\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationsCommitment) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\tx.Id = value.Uint()\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\tx.Commitment = value.Bytes()\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\tx.Expired = value.Bool()\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\tx.Validity = value.Message().Interface().(*Duration)\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\tx.Metadata = value.Message().Interface().(*RecordMetadata)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationsCommitment) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\tif x.Validity == nil {\n\t\t\tx.Validity = new(Duration)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Validity.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = new(RecordMetadata)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.RegistrationsCommitment is not mutable\"))\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.RegistrationsCommitment is not mutable\"))\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\tpanic(fmt.Errorf(\"field commitment of message sourcehub.acp.RegistrationsCommitment is not mutable\"))\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\tpanic(fmt.Errorf(\"field expired of message sourcehub.acp.RegistrationsCommitment is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegistrationsCommitment) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegistrationsCommitment.id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.RegistrationsCommitment.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.RegistrationsCommitment.commitment\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcehub.acp.RegistrationsCommitment.expired\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.RegistrationsCommitment.validity\":\n\t\tm := new(Duration)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.RegistrationsCommitment.metadata\":\n\t\tm := new(RecordMetadata)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegistrationsCommitment\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegistrationsCommitment does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegistrationsCommitment) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RegistrationsCommitment\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegistrationsCommitment) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegistrationsCommitment) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegistrationsCommitment) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegistrationsCommitment) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegistrationsCommitment)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Id != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Id))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Commitment)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Expired {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Validity != nil {\n\t\t\tl = options.Size(x.Validity)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tl = options.Size(x.Metadata)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegistrationsCommitment)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tencoded, err := options.Marshal(x.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif x.Validity != nil {\n\t\t\tencoded, err := options.Marshal(x.Validity)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.Expired {\n\t\t\ti--\n\t\t\tif x.Expired {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif len(x.Commitment) > 0 {\n\t\t\ti -= len(x.Commitment)\n\t\t\tcopy(dAtA[i:], x.Commitment)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Commitment)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Id != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Id))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegistrationsCommitment)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegistrationsCommitment: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegistrationsCommitment: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Id = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Id |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Commitment = append(x.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Commitment == nil {\n\t\t\t\t\tx.Commitment = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expired\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Expired = bool(v != 0)\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Validity\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Validity == nil {\n\t\t\t\t\tx.Validity = &Duration{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Validity); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = &RecordMetadata{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/commitment.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// RegistrationProof models an opening proof for a RegistrationCommitment\ntype RegistrationProof struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\t// Hash of neighbors required to validate proof.\n\t//\n\t// Hashes must be ordered as a RFC6962 \"merkle audit path\"\n\t// https://www.rfc-editor.org/rfc/rfc6962#section-2.1.1\n\tMerkleProof [][]byte `protobuf:\"bytes,2,rep,name=merkle_proof,json=merkleProof,proto3\" json:\"merkle_proof,omitempty\"`\n\tLeafCount   uint64   `protobuf:\"varint,3,opt,name=leaf_count,json=leafCount,proto3\" json:\"leaf_count,omitempty\"`\n\tLeafIndex   uint64   `protobuf:\"varint,4,opt,name=leaf_index,json=leafIndex,proto3\" json:\"leaf_index,omitempty\"`\n}\n\nfunc (x *RegistrationProof) Reset() {\n\t*x = RegistrationProof{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_commitment_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegistrationProof) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegistrationProof) ProtoMessage() {}\n\n// Deprecated: Use RegistrationProof.ProtoReflect.Descriptor instead.\nfunc (*RegistrationProof) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_commitment_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RegistrationProof) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *RegistrationProof) GetMerkleProof() [][]byte {\n\tif x != nil {\n\t\treturn x.MerkleProof\n\t}\n\treturn nil\n}\n\nfunc (x *RegistrationProof) GetLeafCount() uint64 {\n\tif x != nil {\n\t\treturn x.LeafCount\n\t}\n\treturn 0\n}\n\nfunc (x *RegistrationProof) GetLeafIndex() uint64 {\n\tif x != nil {\n\t\treturn x.LeafIndex\n\t}\n\treturn 0\n}\n\n// RegistrationsCommitment models a batched cryptographic commitment\n// of a set of Object registrations issued by an Actor\ntype RegistrationsCommitment struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId       uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPolicyId string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\t// commitment is a merkle root of registrations\n\tCommitment []byte `protobuf:\"bytes,3,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n\tExpired    bool   `protobuf:\"varint,4,opt,name=expired,proto3\" json:\"expired,omitempty\"`\n\t// validity models the duration for which the commitment is valid for\n\tValidity *Duration       `protobuf:\"bytes,5,opt,name=validity,proto3\" json:\"validity,omitempty\"`\n\tMetadata *RecordMetadata `protobuf:\"bytes,6,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (x *RegistrationsCommitment) Reset() {\n\t*x = RegistrationsCommitment{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_commitment_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegistrationsCommitment) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegistrationsCommitment) ProtoMessage() {}\n\n// Deprecated: Use RegistrationsCommitment.ProtoReflect.Descriptor instead.\nfunc (*RegistrationsCommitment) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_commitment_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *RegistrationsCommitment) GetId() uint64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *RegistrationsCommitment) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *RegistrationsCommitment) GetCommitment() []byte {\n\tif x != nil {\n\t\treturn x.Commitment\n\t}\n\treturn nil\n}\n\nfunc (x *RegistrationsCommitment) GetExpired() bool {\n\tif x != nil {\n\t\treturn x.Expired\n\t}\n\treturn false\n}\n\nfunc (x *RegistrationsCommitment) GetValidity() *Duration {\n\tif x != nil {\n\t\treturn x.Validity\n\t}\n\treturn nil\n}\n\nfunc (x *RegistrationsCommitment) GetMetadata() *RecordMetadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_commitment_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_commitment_proto_rawDesc = []byte{\n\t0x0a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a,\n\t0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0xac, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21,\n\t0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02,\n\t0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x6f,\n\t0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74,\n\t0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x65, 0x61, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22,\n\t0xf0, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d,\n\t0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69,\n\t0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72,\n\t0x65, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76,\n\t0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,\n\t0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41,\n\t0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63,\n\t0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63,\n\t0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63,\n\t0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_commitment_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_commitment_proto_rawDescData = file_sourcehub_acp_commitment_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_commitment_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_commitment_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_commitment_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_commitment_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_commitment_proto_rawDescData\n}\n\nvar file_sourcehub_acp_commitment_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_acp_commitment_proto_goTypes = []interface{}{\n\t(*RegistrationProof)(nil),       // 0: sourcehub.acp.RegistrationProof\n\t(*RegistrationsCommitment)(nil), // 1: sourcehub.acp.RegistrationsCommitment\n\t(*types.Object)(nil),            // 2: sourcenetwork.acp_core.Object\n\t(*Duration)(nil),                // 3: sourcehub.acp.Duration\n\t(*RecordMetadata)(nil),          // 4: sourcehub.acp.RecordMetadata\n}\nvar file_sourcehub_acp_commitment_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.acp.RegistrationProof.object:type_name -> sourcenetwork.acp_core.Object\n\t3, // 1: sourcehub.acp.RegistrationsCommitment.validity:type_name -> sourcehub.acp.Duration\n\t4, // 2: sourcehub.acp.RegistrationsCommitment.metadata:type_name -> sourcehub.acp.RecordMetadata\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_commitment_proto_init() }\nfunc file_sourcehub_acp_commitment_proto_init() {\n\tif File_sourcehub_acp_commitment_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_record_proto_init()\n\tfile_sourcehub_acp_time_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_commitment_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegistrationProof); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_commitment_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegistrationsCommitment); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_commitment_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_commitment_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_commitment_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_commitment_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_commitment_proto = out.File\n\tfile_sourcehub_acp_commitment_proto_rawDesc = nil\n\tfile_sourcehub_acp_commitment_proto_goTypes = nil\n\tfile_sourcehub_acp_commitment_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_GenesisState        protoreflect.MessageDescriptor\n\tfd_GenesisState_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_genesis_proto_init()\n\tmd_GenesisState = File_sourcehub_acp_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_params = md_GenesisState.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_GenesisState_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.GenesisState.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// GenesisState defines the acp module's genesis state.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params defines all the parameters of the module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GenesisState) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_genesis_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d,\n\t0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x61, 0x63, 0x70, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x22, 0x48, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74,\n\t0x65, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x15, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x96, 0x01, 0x0a, 0x11,\n\t0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,\n\t0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a,\n\t0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_genesis_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_genesis_proto_rawDescData = file_sourcehub_acp_genesis_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_genesis_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_genesis_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_genesis_proto_rawDescData\n}\n\nvar file_sourcehub_acp_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_acp_genesis_proto_goTypes = []interface{}{\n\t(*GenesisState)(nil), // 0: sourcehub.acp.GenesisState\n\t(*Params)(nil),       // 1: sourcehub.acp.Params\n}\nvar file_sourcehub_acp_genesis_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.acp.GenesisState.params:type_name -> sourcehub.acp.Params\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_genesis_proto_init() }\nfunc file_sourcehub_acp_genesis_proto_init() {\n\tif File_sourcehub_acp_genesis_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_params_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_genesis_proto = out.File\n\tfile_sourcehub_acp_genesis_proto_rawDesc = nil\n\tfile_sourcehub_acp_genesis_proto_goTypes = nil\n\tfile_sourcehub_acp_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/module/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage module\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Module           protoreflect.MessageDescriptor\n\tfd_Module_authority protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_module_module_proto_init()\n\tmd_Module = File_sourcehub_acp_module_module_proto.Messages().ByName(\"Module\")\n\tfd_Module_authority = md_Module.Fields().ByName(\"authority\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_module_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_Module_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\treturn x.Authority != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\tx.Authority = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.acp.module.Module is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.module.Module.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.module.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/module/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object for the module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority defines the custom module authority. If not set, defaults to the governance module.\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_module_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_module_module_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Module) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_acp_module_module_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_module_module_proto_rawDesc = []byte{\n\t0x0a, 0x21, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x12, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x06, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,\n\t0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,\n\t0x69, 0x74, 0x79, 0x3a, 0x30, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2a, 0x0a, 0x28, 0x67, 0x69, 0x74,\n\t0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x78, 0x2f, 0x61, 0x63, 0x70, 0x42, 0xc0, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x6d, 0x6f, 0x64, 0x75,\n\t0x6c, 0x65, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,\n\t0x01, 0x5a, 0x25, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x4d, 0xaa, 0x02,\n\t0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0x2e, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0xca, 0x02, 0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xe2, 0x02, 0x20, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x4d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,\n\t0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70,\n\t0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_module_module_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_module_module_proto_rawDescData = file_sourcehub_acp_module_module_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_module_module_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_module_module_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_module_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_module_module_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_module_module_proto_rawDescData\n}\n\nvar file_sourcehub_acp_module_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_acp_module_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: sourcehub.acp.module.Module\n}\nvar file_sourcehub_acp_module_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_module_module_proto_init() }\nfunc file_sourcehub_acp_module_module_proto_init() {\n\tif File_sourcehub_acp_module_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_module_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_module_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_module_module_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_module_module_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_module_module_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_module_module_proto = out.File\n\tfile_sourcehub_acp_module_module_proto_rawDesc = nil\n\tfile_sourcehub_acp_module_module_proto_goTypes = nil\n\tfile_sourcehub_acp_module_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/params.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Params                                     protoreflect.MessageDescriptor\n\tfd_Params_policy_command_max_expiration_delta protoreflect.FieldDescriptor\n\tfd_Params_registrations_commitment_validity   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_params_proto_init()\n\tmd_Params = File_sourcehub_acp_params_proto.Messages().ByName(\"Params\")\n\tfd_Params_policy_command_max_expiration_delta = md_Params.Fields().ByName(\"policy_command_max_expiration_delta\")\n\tfd_Params_registrations_commitment_validity = md_Params.Fields().ByName(\"registrations_commitment_validity\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Params)(nil)\n\ntype fastReflection_Params Params\n\nfunc (x *Params) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Params)(x)\n}\n\nfunc (x *Params) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_params_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Params_messageType fastReflection_Params_messageType\nvar _ protoreflect.MessageType = fastReflection_Params_messageType{}\n\ntype fastReflection_Params_messageType struct{}\n\nfunc (x fastReflection_Params_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Params)(nil)\n}\nfunc (x fastReflection_Params_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\nfunc (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Params) Type() protoreflect.MessageType {\n\treturn _fastReflection_Params_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Params) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Params) Interface() protoreflect.ProtoMessage {\n\treturn (*Params)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyCommandMaxExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.PolicyCommandMaxExpirationDelta)\n\t\tif !f(fd_Params_policy_command_max_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RegistrationsCommitmentValidity != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.RegistrationsCommitmentValidity.ProtoReflect())\n\t\tif !f(fd_Params_registrations_commitment_validity, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\treturn x.PolicyCommandMaxExpirationDelta != uint64(0)\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\treturn x.RegistrationsCommitmentValidity != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\tx.PolicyCommandMaxExpirationDelta = uint64(0)\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\tx.RegistrationsCommitmentValidity = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\tvalue := x.PolicyCommandMaxExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\tvalue := x.RegistrationsCommitmentValidity\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\tx.PolicyCommandMaxExpirationDelta = value.Uint()\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\tx.RegistrationsCommitmentValidity = value.Message().Interface().(*Duration)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\tif x.RegistrationsCommitmentValidity == nil {\n\t\t\tx.RegistrationsCommitmentValidity = new(Duration)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.RegistrationsCommitmentValidity.ProtoReflect())\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field policy_command_max_expiration_delta of message sourcehub.acp.Params is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Params.policy_command_max_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.Params.registrations_commitment_validity\":\n\t\tm := new(Duration)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.Params\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Params) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Params) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Params) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.PolicyCommandMaxExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.PolicyCommandMaxExpirationDelta))\n\t\t}\n\t\tif x.RegistrationsCommitmentValidity != nil {\n\t\t\tl = options.Size(x.RegistrationsCommitmentValidity)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RegistrationsCommitmentValidity != nil {\n\t\t\tencoded, err := options.Marshal(x.RegistrationsCommitmentValidity)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.PolicyCommandMaxExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.PolicyCommandMaxExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyCommandMaxExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.PolicyCommandMaxExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.PolicyCommandMaxExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitmentValidity\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.RegistrationsCommitmentValidity == nil {\n\t\t\t\t\tx.RegistrationsCommitmentValidity = &Duration{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RegistrationsCommitmentValidity); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/params.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Params defines the parameters for the module.\ntype Params struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// policy_command_max_expiration_delta specifies a global thershold for how old a Command will be accepted for.\n\tPolicyCommandMaxExpirationDelta uint64 `protobuf:\"varint,1,opt,name=policy_command_max_expiration_delta,json=policyCommandMaxExpirationDelta,proto3\" json:\"policy_command_max_expiration_delta,omitempty\"`\n\t// registrations_commitment_validity specifies a duration for the lifetime of a commitment.\n\t// Performing a RevealRegistration against an expired commitment causes a protocol error.\n\tRegistrationsCommitmentValidity *Duration `protobuf:\"bytes,2,opt,name=registrations_commitment_validity,json=registrationsCommitmentValidity,proto3\" json:\"registrations_commitment_validity,omitempty\"`\n}\n\nfunc (x *Params) Reset() {\n\t*x = Params{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_params_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Params) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Params) ProtoMessage() {}\n\n// Deprecated: Use Params.ProtoReflect.Descriptor instead.\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_params_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Params) GetPolicyCommandMaxExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.PolicyCommandMaxExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetRegistrationsCommitmentValidity() *Duration {\n\tif x != nil {\n\t\treturn x.RegistrationsCommitmentValidity\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_params_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_params_proto_rawDesc = []byte{\n\t0x0a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d, 0x69,\n\t0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x61, 0x63, 0x70, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8,\n\t0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4c, 0x0a, 0x23, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f,\n\t0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f,\n\t0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x21, 0x72, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1f, 0x72, 0x65, 0x67,\n\t0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,\n\t0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x3a, 0x1b, 0x8a, 0xe7,\n\t0xb0, 0x2a, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x61,\n\t0x63, 0x70, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x95, 0x01, 0x0a, 0x11, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42,\n\t0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,\n\t0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02,\n\t0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,\n\t0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63,\n\t0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_params_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_params_proto_rawDescData = file_sourcehub_acp_params_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_params_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_params_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_params_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_params_proto_rawDescData\n}\n\nvar file_sourcehub_acp_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_acp_params_proto_goTypes = []interface{}{\n\t(*Params)(nil),   // 0: sourcehub.acp.Params\n\t(*Duration)(nil), // 1: sourcehub.acp.Duration\n}\nvar file_sourcehub_acp_params_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.acp.Params.registrations_commitment_validity:type_name -> sourcehub.acp.Duration\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_params_proto_init() }\nfunc file_sourcehub_acp_params_proto_init() {\n\tif File_sourcehub_acp_params_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_time_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Params); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_params_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_params_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_params_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_params_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_params_proto = out.File\n\tfile_sourcehub_acp_params_proto_rawDesc = nil\n\tfile_sourcehub_acp_params_proto_goTypes = nil\n\tfile_sourcehub_acp_params_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/policy_cmd.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_PolicyCmd                          protoreflect.MessageDescriptor\n\tfd_PolicyCmd_set_relationship_cmd     protoreflect.FieldDescriptor\n\tfd_PolicyCmd_delete_relationship_cmd  protoreflect.FieldDescriptor\n\tfd_PolicyCmd_register_object_cmd      protoreflect.FieldDescriptor\n\tfd_PolicyCmd_archive_object_cmd       protoreflect.FieldDescriptor\n\tfd_PolicyCmd_commit_registrations_cmd protoreflect.FieldDescriptor\n\tfd_PolicyCmd_reveal_registration_cmd  protoreflect.FieldDescriptor\n\tfd_PolicyCmd_flag_hijack_attempt_cmd  protoreflect.FieldDescriptor\n\tfd_PolicyCmd_unarchive_object_cmd     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_PolicyCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"PolicyCmd\")\n\tfd_PolicyCmd_set_relationship_cmd = md_PolicyCmd.Fields().ByName(\"set_relationship_cmd\")\n\tfd_PolicyCmd_delete_relationship_cmd = md_PolicyCmd.Fields().ByName(\"delete_relationship_cmd\")\n\tfd_PolicyCmd_register_object_cmd = md_PolicyCmd.Fields().ByName(\"register_object_cmd\")\n\tfd_PolicyCmd_archive_object_cmd = md_PolicyCmd.Fields().ByName(\"archive_object_cmd\")\n\tfd_PolicyCmd_commit_registrations_cmd = md_PolicyCmd.Fields().ByName(\"commit_registrations_cmd\")\n\tfd_PolicyCmd_reveal_registration_cmd = md_PolicyCmd.Fields().ByName(\"reveal_registration_cmd\")\n\tfd_PolicyCmd_flag_hijack_attempt_cmd = md_PolicyCmd.Fields().ByName(\"flag_hijack_attempt_cmd\")\n\tfd_PolicyCmd_unarchive_object_cmd = md_PolicyCmd.Fields().ByName(\"unarchive_object_cmd\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyCmd)(nil)\n\ntype fastReflection_PolicyCmd PolicyCmd\n\nfunc (x *PolicyCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyCmd)(x)\n}\n\nfunc (x *PolicyCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyCmd_messageType fastReflection_PolicyCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyCmd_messageType{}\n\ntype fastReflection_PolicyCmd_messageType struct{}\n\nfunc (x fastReflection_PolicyCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyCmd)(nil)\n}\nfunc (x fastReflection_PolicyCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyCmd)\n}\nfunc (x fastReflection_PolicyCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyCmd) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Cmd != nil {\n\t\tswitch o := x.Cmd.(type) {\n\t\tcase *PolicyCmd_SetRelationshipCmd:\n\t\t\tv := o.SetRelationshipCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_set_relationship_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_DeleteRelationshipCmd:\n\t\t\tv := o.DeleteRelationshipCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_delete_relationship_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_RegisterObjectCmd:\n\t\t\tv := o.RegisterObjectCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_register_object_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_ArchiveObjectCmd:\n\t\t\tv := o.ArchiveObjectCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_archive_object_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_CommitRegistrationsCmd:\n\t\t\tv := o.CommitRegistrationsCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_commit_registrations_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_RevealRegistrationCmd:\n\t\t\tv := o.RevealRegistrationCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_reveal_registration_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_FlagHijackAttemptCmd:\n\t\t\tv := o.FlagHijackAttemptCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_flag_hijack_attempt_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmd_UnarchiveObjectCmd:\n\t\t\tv := o.UnarchiveObjectCmd\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmd_unarchive_object_cmd, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_SetRelationshipCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_DeleteRelationshipCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_RegisterObjectCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_ArchiveObjectCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_CommitRegistrationsCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_RevealRegistrationCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_FlagHijackAttemptCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Cmd.(*PolicyCmd_UnarchiveObjectCmd); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tx.Cmd = nil\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tx.Cmd = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*SetRelationshipCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_SetRelationshipCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.SetRelationshipCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*SetRelationshipCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*DeleteRelationshipCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_DeleteRelationshipCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.DeleteRelationshipCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*DeleteRelationshipCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*RegisterObjectCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_RegisterObjectCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.RegisterObjectCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*RegisterObjectCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*ArchiveObjectCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_ArchiveObjectCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.ArchiveObjectCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*ArchiveObjectCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*CommitRegistrationsCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_CommitRegistrationsCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.CommitRegistrationsCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*CommitRegistrationsCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*RevealRegistrationCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_RevealRegistrationCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.RevealRegistrationCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*RevealRegistrationCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*FlagHijackAttemptCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_FlagHijackAttemptCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.FlagHijackAttemptCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*FlagHijackAttemptCmd)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*UnarchiveObjectCmd)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Cmd.(*PolicyCmd_UnarchiveObjectCmd); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.UnarchiveObjectCmd.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*UnarchiveObjectCmd)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tcv := value.Message().Interface().(*SetRelationshipCmd)\n\t\tx.Cmd = &PolicyCmd_SetRelationshipCmd{SetRelationshipCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tcv := value.Message().Interface().(*DeleteRelationshipCmd)\n\t\tx.Cmd = &PolicyCmd_DeleteRelationshipCmd{DeleteRelationshipCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tcv := value.Message().Interface().(*RegisterObjectCmd)\n\t\tx.Cmd = &PolicyCmd_RegisterObjectCmd{RegisterObjectCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tcv := value.Message().Interface().(*ArchiveObjectCmd)\n\t\tx.Cmd = &PolicyCmd_ArchiveObjectCmd{ArchiveObjectCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tcv := value.Message().Interface().(*CommitRegistrationsCmd)\n\t\tx.Cmd = &PolicyCmd_CommitRegistrationsCmd{CommitRegistrationsCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tcv := value.Message().Interface().(*RevealRegistrationCmd)\n\t\tx.Cmd = &PolicyCmd_RevealRegistrationCmd{RevealRegistrationCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tcv := value.Message().Interface().(*FlagHijackAttemptCmd)\n\t\tx.Cmd = &PolicyCmd_FlagHijackAttemptCmd{FlagHijackAttemptCmd: cv}\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tcv := value.Message().Interface().(*UnarchiveObjectCmd)\n\t\tx.Cmd = &PolicyCmd_UnarchiveObjectCmd{UnarchiveObjectCmd: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &SetRelationshipCmd{}\n\t\t\toneofValue := &PolicyCmd_SetRelationshipCmd{SetRelationshipCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_SetRelationshipCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.SetRelationshipCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &SetRelationshipCmd{}\n\t\t\toneofValue := &PolicyCmd_SetRelationshipCmd{SetRelationshipCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &DeleteRelationshipCmd{}\n\t\t\toneofValue := &PolicyCmd_DeleteRelationshipCmd{DeleteRelationshipCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_DeleteRelationshipCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.DeleteRelationshipCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &DeleteRelationshipCmd{}\n\t\t\toneofValue := &PolicyCmd_DeleteRelationshipCmd{DeleteRelationshipCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &RegisterObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_RegisterObjectCmd{RegisterObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_RegisterObjectCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.RegisterObjectCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &RegisterObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_RegisterObjectCmd{RegisterObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &ArchiveObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_ArchiveObjectCmd{ArchiveObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_ArchiveObjectCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.ArchiveObjectCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &ArchiveObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_ArchiveObjectCmd{ArchiveObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &CommitRegistrationsCmd{}\n\t\t\toneofValue := &PolicyCmd_CommitRegistrationsCmd{CommitRegistrationsCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_CommitRegistrationsCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.CommitRegistrationsCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &CommitRegistrationsCmd{}\n\t\t\toneofValue := &PolicyCmd_CommitRegistrationsCmd{CommitRegistrationsCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &RevealRegistrationCmd{}\n\t\t\toneofValue := &PolicyCmd_RevealRegistrationCmd{RevealRegistrationCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_RevealRegistrationCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.RevealRegistrationCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &RevealRegistrationCmd{}\n\t\t\toneofValue := &PolicyCmd_RevealRegistrationCmd{RevealRegistrationCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &FlagHijackAttemptCmd{}\n\t\t\toneofValue := &PolicyCmd_FlagHijackAttemptCmd{FlagHijackAttemptCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_FlagHijackAttemptCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.FlagHijackAttemptCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &FlagHijackAttemptCmd{}\n\t\t\toneofValue := &PolicyCmd_FlagHijackAttemptCmd{FlagHijackAttemptCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tvalue := &UnarchiveObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_UnarchiveObjectCmd{UnarchiveObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Cmd.(type) {\n\t\tcase *PolicyCmd_UnarchiveObjectCmd:\n\t\t\treturn protoreflect.ValueOfMessage(m.UnarchiveObjectCmd.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &UnarchiveObjectCmd{}\n\t\t\toneofValue := &PolicyCmd_UnarchiveObjectCmd{UnarchiveObjectCmd: value}\n\t\t\tx.Cmd = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.set_relationship_cmd\":\n\t\tvalue := &SetRelationshipCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.delete_relationship_cmd\":\n\t\tvalue := &DeleteRelationshipCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.register_object_cmd\":\n\t\tvalue := &RegisterObjectCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.archive_object_cmd\":\n\t\tvalue := &ArchiveObjectCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.commit_registrations_cmd\":\n\t\tvalue := &CommitRegistrationsCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.reveal_registration_cmd\":\n\t\tvalue := &RevealRegistrationCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd\":\n\t\tvalue := &FlagHijackAttemptCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmd.unarchive_object_cmd\":\n\t\tvalue := &UnarchiveObjectCmd{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcehub.acp.PolicyCmd.cmd\":\n\t\tif x.Cmd == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Cmd.(type) {\n\t\tcase *PolicyCmd_SetRelationshipCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"set_relationship_cmd\")\n\t\tcase *PolicyCmd_DeleteRelationshipCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"delete_relationship_cmd\")\n\t\tcase *PolicyCmd_RegisterObjectCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"register_object_cmd\")\n\t\tcase *PolicyCmd_ArchiveObjectCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"archive_object_cmd\")\n\t\tcase *PolicyCmd_CommitRegistrationsCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"commit_registrations_cmd\")\n\t\tcase *PolicyCmd_RevealRegistrationCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"reveal_registration_cmd\")\n\t\tcase *PolicyCmd_FlagHijackAttemptCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"flag_hijack_attempt_cmd\")\n\t\tcase *PolicyCmd_UnarchiveObjectCmd:\n\t\t\treturn x.Descriptor().Fields().ByName(\"unarchive_object_cmd\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.PolicyCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Cmd.(type) {\n\t\tcase *PolicyCmd_SetRelationshipCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.SetRelationshipCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_DeleteRelationshipCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.DeleteRelationshipCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_RegisterObjectCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.RegisterObjectCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_ArchiveObjectCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.ArchiveObjectCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_CommitRegistrationsCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.CommitRegistrationsCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_RevealRegistrationCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.RevealRegistrationCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_FlagHijackAttemptCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.FlagHijackAttemptCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmd_UnarchiveObjectCmd:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.UnarchiveObjectCmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Cmd.(type) {\n\t\tcase *PolicyCmd_SetRelationshipCmd:\n\t\t\tencoded, err := options.Marshal(x.SetRelationshipCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *PolicyCmd_DeleteRelationshipCmd:\n\t\t\tencoded, err := options.Marshal(x.DeleteRelationshipCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\tcase *PolicyCmd_RegisterObjectCmd:\n\t\t\tencoded, err := options.Marshal(x.RegisterObjectCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\tcase *PolicyCmd_ArchiveObjectCmd:\n\t\t\tencoded, err := options.Marshal(x.ArchiveObjectCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\tcase *PolicyCmd_CommitRegistrationsCmd:\n\t\t\tencoded, err := options.Marshal(x.CommitRegistrationsCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\tcase *PolicyCmd_RevealRegistrationCmd:\n\t\t\tencoded, err := options.Marshal(x.RevealRegistrationCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\tcase *PolicyCmd_FlagHijackAttemptCmd:\n\t\t\tencoded, err := options.Marshal(x.FlagHijackAttemptCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\tcase *PolicyCmd_UnarchiveObjectCmd:\n\t\t\tencoded, err := options.Marshal(x.UnarchiveObjectCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field SetRelationshipCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &SetRelationshipCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_SetRelationshipCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DeleteRelationshipCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &DeleteRelationshipCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_DeleteRelationshipCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegisterObjectCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &RegisterObjectCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_RegisterObjectCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ArchiveObjectCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &ArchiveObjectCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_ArchiveObjectCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CommitRegistrationsCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &CommitRegistrationsCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_CommitRegistrationsCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RevealRegistrationCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &RevealRegistrationCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_RevealRegistrationCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field FlagHijackAttemptCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &FlagHijackAttemptCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_FlagHijackAttemptCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnarchiveObjectCmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &UnarchiveObjectCmd{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Cmd = &PolicyCmd_UnarchiveObjectCmd{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SetRelationshipCmd              protoreflect.MessageDescriptor\n\tfd_SetRelationshipCmd_relationship protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_SetRelationshipCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"SetRelationshipCmd\")\n\tfd_SetRelationshipCmd_relationship = md_SetRelationshipCmd.Fields().ByName(\"relationship\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetRelationshipCmd)(nil)\n\ntype fastReflection_SetRelationshipCmd SetRelationshipCmd\n\nfunc (x *SetRelationshipCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipCmd)(x)\n}\n\nfunc (x *SetRelationshipCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetRelationshipCmd_messageType fastReflection_SetRelationshipCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_SetRelationshipCmd_messageType{}\n\ntype fastReflection_SetRelationshipCmd_messageType struct{}\n\nfunc (x fastReflection_SetRelationshipCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipCmd)(nil)\n}\nfunc (x fastReflection_SetRelationshipCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipCmd)\n}\nfunc (x fastReflection_SetRelationshipCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetRelationshipCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetRelationshipCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetRelationshipCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetRelationshipCmd) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetRelationshipCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*SetRelationshipCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetRelationshipCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_SetRelationshipCmd_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetRelationshipCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\treturn x.Relationship != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\tx.Relationship = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetRelationshipCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*types.Relationship)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(types.Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetRelationshipCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmd.relationship\":\n\t\tm := new(types.Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetRelationshipCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.SetRelationshipCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetRelationshipCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetRelationshipCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetRelationshipCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &types.Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeleteRelationshipCmd              protoreflect.MessageDescriptor\n\tfd_DeleteRelationshipCmd_relationship protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_DeleteRelationshipCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"DeleteRelationshipCmd\")\n\tfd_DeleteRelationshipCmd_relationship = md_DeleteRelationshipCmd.Fields().ByName(\"relationship\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeleteRelationshipCmd)(nil)\n\ntype fastReflection_DeleteRelationshipCmd DeleteRelationshipCmd\n\nfunc (x *DeleteRelationshipCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipCmd)(x)\n}\n\nfunc (x *DeleteRelationshipCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeleteRelationshipCmd_messageType fastReflection_DeleteRelationshipCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_DeleteRelationshipCmd_messageType{}\n\ntype fastReflection_DeleteRelationshipCmd_messageType struct{}\n\nfunc (x fastReflection_DeleteRelationshipCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipCmd)(nil)\n}\nfunc (x fastReflection_DeleteRelationshipCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipCmd)\n}\nfunc (x fastReflection_DeleteRelationshipCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeleteRelationshipCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeleteRelationshipCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeleteRelationshipCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeleteRelationshipCmd) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeleteRelationshipCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*DeleteRelationshipCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeleteRelationshipCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_DeleteRelationshipCmd_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeleteRelationshipCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\treturn x.Relationship != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\tx.Relationship = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeleteRelationshipCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*types.Relationship)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(types.Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeleteRelationshipCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmd.relationship\":\n\t\tm := new(types.Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeleteRelationshipCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.DeleteRelationshipCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeleteRelationshipCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeleteRelationshipCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeleteRelationshipCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &types.Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RegisterObjectCmd        protoreflect.MessageDescriptor\n\tfd_RegisterObjectCmd_object protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_RegisterObjectCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"RegisterObjectCmd\")\n\tfd_RegisterObjectCmd_object = md_RegisterObjectCmd.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegisterObjectCmd)(nil)\n\ntype fastReflection_RegisterObjectCmd RegisterObjectCmd\n\nfunc (x *RegisterObjectCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectCmd)(x)\n}\n\nfunc (x *RegisterObjectCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegisterObjectCmd_messageType fastReflection_RegisterObjectCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_RegisterObjectCmd_messageType{}\n\ntype fastReflection_RegisterObjectCmd_messageType struct{}\n\nfunc (x fastReflection_RegisterObjectCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectCmd)(nil)\n}\nfunc (x fastReflection_RegisterObjectCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectCmd)\n}\nfunc (x fastReflection_RegisterObjectCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegisterObjectCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegisterObjectCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegisterObjectCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegisterObjectCmd) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegisterObjectCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*RegisterObjectCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegisterObjectCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_RegisterObjectCmd_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegisterObjectCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegisterObjectCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegisterObjectCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmd.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegisterObjectCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RegisterObjectCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegisterObjectCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegisterObjectCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegisterObjectCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegisterObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_CommitRegistrationsCmd            protoreflect.MessageDescriptor\n\tfd_CommitRegistrationsCmd_commitment protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_CommitRegistrationsCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"CommitRegistrationsCmd\")\n\tfd_CommitRegistrationsCmd_commitment = md_CommitRegistrationsCmd.Fields().ByName(\"commitment\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_CommitRegistrationsCmd)(nil)\n\ntype fastReflection_CommitRegistrationsCmd CommitRegistrationsCmd\n\nfunc (x *CommitRegistrationsCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_CommitRegistrationsCmd)(x)\n}\n\nfunc (x *CommitRegistrationsCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_CommitRegistrationsCmd_messageType fastReflection_CommitRegistrationsCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_CommitRegistrationsCmd_messageType{}\n\ntype fastReflection_CommitRegistrationsCmd_messageType struct{}\n\nfunc (x fastReflection_CommitRegistrationsCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_CommitRegistrationsCmd)(nil)\n}\nfunc (x fastReflection_CommitRegistrationsCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_CommitRegistrationsCmd)\n}\nfunc (x fastReflection_CommitRegistrationsCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CommitRegistrationsCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_CommitRegistrationsCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CommitRegistrationsCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_CommitRegistrationsCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_CommitRegistrationsCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_CommitRegistrationsCmd) New() protoreflect.Message {\n\treturn new(fastReflection_CommitRegistrationsCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_CommitRegistrationsCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*CommitRegistrationsCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_CommitRegistrationsCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Commitment) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Commitment)\n\t\tif !f(fd_CommitRegistrationsCmd_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_CommitRegistrationsCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\treturn len(x.Commitment) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\tx.Commitment = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_CommitRegistrationsCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\tvalue := x.Commitment\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\tx.Commitment = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\tpanic(fmt.Errorf(\"field commitment of message sourcehub.acp.CommitRegistrationsCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_CommitRegistrationsCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmd.commitment\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_CommitRegistrationsCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.CommitRegistrationsCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_CommitRegistrationsCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_CommitRegistrationsCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_CommitRegistrationsCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Commitment)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Commitment) > 0 {\n\t\t\ti -= len(x.Commitment)\n\t\t\tcopy(dAtA[i:], x.Commitment)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Commitment)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CommitRegistrationsCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CommitRegistrationsCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Commitment = append(x.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Commitment == nil {\n\t\t\t\t\tx.Commitment = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_CommitRegistrationsCmdResult                          protoreflect.MessageDescriptor\n\tfd_CommitRegistrationsCmdResult_registrations_commitment protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_CommitRegistrationsCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"CommitRegistrationsCmdResult\")\n\tfd_CommitRegistrationsCmdResult_registrations_commitment = md_CommitRegistrationsCmdResult.Fields().ByName(\"registrations_commitment\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_CommitRegistrationsCmdResult)(nil)\n\ntype fastReflection_CommitRegistrationsCmdResult CommitRegistrationsCmdResult\n\nfunc (x *CommitRegistrationsCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_CommitRegistrationsCmdResult)(x)\n}\n\nfunc (x *CommitRegistrationsCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_CommitRegistrationsCmdResult_messageType fastReflection_CommitRegistrationsCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_CommitRegistrationsCmdResult_messageType{}\n\ntype fastReflection_CommitRegistrationsCmdResult_messageType struct{}\n\nfunc (x fastReflection_CommitRegistrationsCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_CommitRegistrationsCmdResult)(nil)\n}\nfunc (x fastReflection_CommitRegistrationsCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_CommitRegistrationsCmdResult)\n}\nfunc (x fastReflection_CommitRegistrationsCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CommitRegistrationsCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CommitRegistrationsCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_CommitRegistrationsCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_CommitRegistrationsCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*CommitRegistrationsCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RegistrationsCommitment != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.RegistrationsCommitment.ProtoReflect())\n\t\tif !f(fd_CommitRegistrationsCmdResult_registrations_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\treturn x.RegistrationsCommitment != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\tx.RegistrationsCommitment = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\tvalue := x.RegistrationsCommitment\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\tx.RegistrationsCommitment = value.Message().Interface().(*RegistrationsCommitment)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\tif x.RegistrationsCommitment == nil {\n\t\t\tx.RegistrationsCommitment = new(RegistrationsCommitment)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.RegistrationsCommitment.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment\":\n\t\tm := new(RegistrationsCommitment)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.CommitRegistrationsCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.CommitRegistrationsCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.CommitRegistrationsCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_CommitRegistrationsCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RegistrationsCommitment != nil {\n\t\t\tl = options.Size(x.RegistrationsCommitment)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RegistrationsCommitment != nil {\n\t\t\tencoded, err := options.Marshal(x.RegistrationsCommitment)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CommitRegistrationsCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CommitRegistrationsCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CommitRegistrationsCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.RegistrationsCommitment == nil {\n\t\t\t\t\tx.RegistrationsCommitment = &RegistrationsCommitment{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RegistrationsCommitment); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RevealRegistrationCmd                             protoreflect.MessageDescriptor\n\tfd_RevealRegistrationCmd_registrations_commitment_id protoreflect.FieldDescriptor\n\tfd_RevealRegistrationCmd_proof                       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_RevealRegistrationCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"RevealRegistrationCmd\")\n\tfd_RevealRegistrationCmd_registrations_commitment_id = md_RevealRegistrationCmd.Fields().ByName(\"registrations_commitment_id\")\n\tfd_RevealRegistrationCmd_proof = md_RevealRegistrationCmd.Fields().ByName(\"proof\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RevealRegistrationCmd)(nil)\n\ntype fastReflection_RevealRegistrationCmd RevealRegistrationCmd\n\nfunc (x *RevealRegistrationCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RevealRegistrationCmd)(x)\n}\n\nfunc (x *RevealRegistrationCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RevealRegistrationCmd_messageType fastReflection_RevealRegistrationCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_RevealRegistrationCmd_messageType{}\n\ntype fastReflection_RevealRegistrationCmd_messageType struct{}\n\nfunc (x fastReflection_RevealRegistrationCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RevealRegistrationCmd)(nil)\n}\nfunc (x fastReflection_RevealRegistrationCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RevealRegistrationCmd)\n}\nfunc (x fastReflection_RevealRegistrationCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RevealRegistrationCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RevealRegistrationCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RevealRegistrationCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RevealRegistrationCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_RevealRegistrationCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RevealRegistrationCmd) New() protoreflect.Message {\n\treturn new(fastReflection_RevealRegistrationCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RevealRegistrationCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*RevealRegistrationCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RevealRegistrationCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RegistrationsCommitmentId != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.RegistrationsCommitmentId)\n\t\tif !f(fd_RevealRegistrationCmd_registrations_commitment_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Proof != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Proof.ProtoReflect())\n\t\tif !f(fd_RevealRegistrationCmd_proof, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RevealRegistrationCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\treturn x.RegistrationsCommitmentId != uint64(0)\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\treturn x.Proof != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\tx.RegistrationsCommitmentId = uint64(0)\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\tx.Proof = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RevealRegistrationCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\tvalue := x.RegistrationsCommitmentId\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\tvalue := x.Proof\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\tx.RegistrationsCommitmentId = value.Uint()\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\tx.Proof = value.Message().Interface().(*RegistrationProof)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\tif x.Proof == nil {\n\t\t\tx.Proof = new(RegistrationProof)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Proof.ProtoReflect())\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\tpanic(fmt.Errorf(\"field registrations_commitment_id of message sourcehub.acp.RevealRegistrationCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RevealRegistrationCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmd.registrations_commitment_id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.RevealRegistrationCmd.proof\":\n\t\tm := new(RegistrationProof)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RevealRegistrationCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RevealRegistrationCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RevealRegistrationCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RevealRegistrationCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RevealRegistrationCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RegistrationsCommitmentId != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.RegistrationsCommitmentId))\n\t\t}\n\t\tif x.Proof != nil {\n\t\t\tl = options.Size(x.Proof)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Proof != nil {\n\t\t\tencoded, err := options.Marshal(x.Proof)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.RegistrationsCommitmentId != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.RegistrationsCommitmentId))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RevealRegistrationCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RevealRegistrationCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitmentId\", wireType)\n\t\t\t\t}\n\t\t\t\tx.RegistrationsCommitmentId = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.RegistrationsCommitmentId |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Proof\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Proof == nil {\n\t\t\t\t\tx.Proof = &RegistrationProof{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proof); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RevealRegistrationCmdResult        protoreflect.MessageDescriptor\n\tfd_RevealRegistrationCmdResult_record protoreflect.FieldDescriptor\n\tfd_RevealRegistrationCmdResult_event  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_RevealRegistrationCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"RevealRegistrationCmdResult\")\n\tfd_RevealRegistrationCmdResult_record = md_RevealRegistrationCmdResult.Fields().ByName(\"record\")\n\tfd_RevealRegistrationCmdResult_event = md_RevealRegistrationCmdResult.Fields().ByName(\"event\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RevealRegistrationCmdResult)(nil)\n\ntype fastReflection_RevealRegistrationCmdResult RevealRegistrationCmdResult\n\nfunc (x *RevealRegistrationCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RevealRegistrationCmdResult)(x)\n}\n\nfunc (x *RevealRegistrationCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RevealRegistrationCmdResult_messageType fastReflection_RevealRegistrationCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_RevealRegistrationCmdResult_messageType{}\n\ntype fastReflection_RevealRegistrationCmdResult_messageType struct{}\n\nfunc (x fastReflection_RevealRegistrationCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RevealRegistrationCmdResult)(nil)\n}\nfunc (x fastReflection_RevealRegistrationCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RevealRegistrationCmdResult)\n}\nfunc (x fastReflection_RevealRegistrationCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RevealRegistrationCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RevealRegistrationCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_RevealRegistrationCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RevealRegistrationCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_RevealRegistrationCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*RevealRegistrationCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_RevealRegistrationCmdResult_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Event != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Event.ProtoReflect())\n\t\tif !f(fd_RevealRegistrationCmdResult_event, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\treturn x.Record != nil\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\treturn x.Event != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\tx.Record = nil\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\tx.Event = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\tvalue := x.Event\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\tx.Event = value.Message().Interface().(*AmendmentEvent)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\tif x.Event == nil {\n\t\t\tx.Event = new(AmendmentEvent)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Event.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RevealRegistrationCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.RevealRegistrationCmdResult.event\":\n\t\tm := new(AmendmentEvent)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RevealRegistrationCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RevealRegistrationCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RevealRegistrationCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RevealRegistrationCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RevealRegistrationCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RevealRegistrationCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RevealRegistrationCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RevealRegistrationCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Event != nil {\n\t\t\tl = options.Size(x.Event)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Event != nil {\n\t\t\tencoded, err := options.Marshal(x.Event)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RevealRegistrationCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RevealRegistrationCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RevealRegistrationCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Event\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Event == nil {\n\t\t\t\t\tx.Event = &AmendmentEvent{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Event); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FlagHijackAttemptCmd          protoreflect.MessageDescriptor\n\tfd_FlagHijackAttemptCmd_event_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_FlagHijackAttemptCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"FlagHijackAttemptCmd\")\n\tfd_FlagHijackAttemptCmd_event_id = md_FlagHijackAttemptCmd.Fields().ByName(\"event_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FlagHijackAttemptCmd)(nil)\n\ntype fastReflection_FlagHijackAttemptCmd FlagHijackAttemptCmd\n\nfunc (x *FlagHijackAttemptCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FlagHijackAttemptCmd)(x)\n}\n\nfunc (x *FlagHijackAttemptCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FlagHijackAttemptCmd_messageType fastReflection_FlagHijackAttemptCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_FlagHijackAttemptCmd_messageType{}\n\ntype fastReflection_FlagHijackAttemptCmd_messageType struct{}\n\nfunc (x fastReflection_FlagHijackAttemptCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FlagHijackAttemptCmd)(nil)\n}\nfunc (x fastReflection_FlagHijackAttemptCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FlagHijackAttemptCmd)\n}\nfunc (x fastReflection_FlagHijackAttemptCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FlagHijackAttemptCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FlagHijackAttemptCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_FlagHijackAttemptCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FlagHijackAttemptCmd) New() protoreflect.Message {\n\treturn new(fastReflection_FlagHijackAttemptCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*FlagHijackAttemptCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.EventId != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.EventId)\n\t\tif !f(fd_FlagHijackAttemptCmd_event_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\treturn x.EventId != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\tx.EventId = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\tvalue := x.EventId\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\tx.EventId = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\tpanic(fmt.Errorf(\"field event_id of message sourcehub.acp.FlagHijackAttemptCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FlagHijackAttemptCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmd.event_id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FlagHijackAttemptCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.FlagHijackAttemptCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FlagHijackAttemptCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FlagHijackAttemptCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FlagHijackAttemptCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.EventId != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.EventId))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.EventId != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.EventId))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FlagHijackAttemptCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FlagHijackAttemptCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field EventId\", wireType)\n\t\t\t\t}\n\t\t\t\tx.EventId = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.EventId |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FlagHijackAttemptCmdResult       protoreflect.MessageDescriptor\n\tfd_FlagHijackAttemptCmdResult_event protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_FlagHijackAttemptCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"FlagHijackAttemptCmdResult\")\n\tfd_FlagHijackAttemptCmdResult_event = md_FlagHijackAttemptCmdResult.Fields().ByName(\"event\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FlagHijackAttemptCmdResult)(nil)\n\ntype fastReflection_FlagHijackAttemptCmdResult FlagHijackAttemptCmdResult\n\nfunc (x *FlagHijackAttemptCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FlagHijackAttemptCmdResult)(x)\n}\n\nfunc (x *FlagHijackAttemptCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FlagHijackAttemptCmdResult_messageType fastReflection_FlagHijackAttemptCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_FlagHijackAttemptCmdResult_messageType{}\n\ntype fastReflection_FlagHijackAttemptCmdResult_messageType struct{}\n\nfunc (x fastReflection_FlagHijackAttemptCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FlagHijackAttemptCmdResult)(nil)\n}\nfunc (x fastReflection_FlagHijackAttemptCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FlagHijackAttemptCmdResult)\n}\nfunc (x fastReflection_FlagHijackAttemptCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FlagHijackAttemptCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FlagHijackAttemptCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_FlagHijackAttemptCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_FlagHijackAttemptCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*FlagHijackAttemptCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Event != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Event.ProtoReflect())\n\t\tif !f(fd_FlagHijackAttemptCmdResult_event, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\treturn x.Event != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\tx.Event = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\tvalue := x.Event\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\tx.Event = value.Message().Interface().(*AmendmentEvent)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\tif x.Event == nil {\n\t\t\tx.Event = new(AmendmentEvent)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Event.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.FlagHijackAttemptCmdResult.event\":\n\t\tm := new(AmendmentEvent)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.FlagHijackAttemptCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.FlagHijackAttemptCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.FlagHijackAttemptCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FlagHijackAttemptCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Event != nil {\n\t\t\tl = options.Size(x.Event)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Event != nil {\n\t\t\tencoded, err := options.Marshal(x.Event)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FlagHijackAttemptCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FlagHijackAttemptCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FlagHijackAttemptCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Event\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Event == nil {\n\t\t\t\t\tx.Event = &AmendmentEvent{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Event); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnarchiveObjectCmd        protoreflect.MessageDescriptor\n\tfd_UnarchiveObjectCmd_object protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_UnarchiveObjectCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"UnarchiveObjectCmd\")\n\tfd_UnarchiveObjectCmd_object = md_UnarchiveObjectCmd.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnarchiveObjectCmd)(nil)\n\ntype fastReflection_UnarchiveObjectCmd UnarchiveObjectCmd\n\nfunc (x *UnarchiveObjectCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnarchiveObjectCmd)(x)\n}\n\nfunc (x *UnarchiveObjectCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnarchiveObjectCmd_messageType fastReflection_UnarchiveObjectCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_UnarchiveObjectCmd_messageType{}\n\ntype fastReflection_UnarchiveObjectCmd_messageType struct{}\n\nfunc (x fastReflection_UnarchiveObjectCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnarchiveObjectCmd)(nil)\n}\nfunc (x fastReflection_UnarchiveObjectCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnarchiveObjectCmd)\n}\nfunc (x fastReflection_UnarchiveObjectCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnarchiveObjectCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnarchiveObjectCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnarchiveObjectCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnarchiveObjectCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnarchiveObjectCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnarchiveObjectCmd) New() protoreflect.Message {\n\treturn new(fastReflection_UnarchiveObjectCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnarchiveObjectCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*UnarchiveObjectCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnarchiveObjectCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_UnarchiveObjectCmd_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnarchiveObjectCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnarchiveObjectCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnarchiveObjectCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmd.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnarchiveObjectCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.UnarchiveObjectCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnarchiveObjectCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnarchiveObjectCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnarchiveObjectCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnarchiveObjectCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnarchiveObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnarchiveObjectCmdResult                       protoreflect.MessageDescriptor\n\tfd_UnarchiveObjectCmdResult_record                protoreflect.FieldDescriptor\n\tfd_UnarchiveObjectCmdResult_relationship_modified protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_UnarchiveObjectCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"UnarchiveObjectCmdResult\")\n\tfd_UnarchiveObjectCmdResult_record = md_UnarchiveObjectCmdResult.Fields().ByName(\"record\")\n\tfd_UnarchiveObjectCmdResult_relationship_modified = md_UnarchiveObjectCmdResult.Fields().ByName(\"relationship_modified\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnarchiveObjectCmdResult)(nil)\n\ntype fastReflection_UnarchiveObjectCmdResult UnarchiveObjectCmdResult\n\nfunc (x *UnarchiveObjectCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnarchiveObjectCmdResult)(x)\n}\n\nfunc (x *UnarchiveObjectCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnarchiveObjectCmdResult_messageType fastReflection_UnarchiveObjectCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_UnarchiveObjectCmdResult_messageType{}\n\ntype fastReflection_UnarchiveObjectCmdResult_messageType struct{}\n\nfunc (x fastReflection_UnarchiveObjectCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnarchiveObjectCmdResult)(nil)\n}\nfunc (x fastReflection_UnarchiveObjectCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnarchiveObjectCmdResult)\n}\nfunc (x fastReflection_UnarchiveObjectCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnarchiveObjectCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnarchiveObjectCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnarchiveObjectCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_UnarchiveObjectCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*UnarchiveObjectCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_UnarchiveObjectCmdResult_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RelationshipModified != false {\n\t\tvalue := protoreflect.ValueOfBool(x.RelationshipModified)\n\t\tif !f(fd_UnarchiveObjectCmdResult_relationship_modified, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\treturn x.Record != nil\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\treturn x.RelationshipModified != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\tx.Record = nil\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\tx.RelationshipModified = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\tvalue := x.RelationshipModified\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\tx.RelationshipModified = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\tpanic(fmt.Errorf(\"field relationship_modified of message sourcehub.acp.UnarchiveObjectCmdResult is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.UnarchiveObjectCmdResult.relationship_modified\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.UnarchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.UnarchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.UnarchiveObjectCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnarchiveObjectCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.RelationshipModified {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RelationshipModified {\n\t\t\ti--\n\t\t\tif x.RelationshipModified {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnarchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnarchiveObjectCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnarchiveObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipModified\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.RelationshipModified = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ArchiveObjectCmd        protoreflect.MessageDescriptor\n\tfd_ArchiveObjectCmd_object protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_ArchiveObjectCmd = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"ArchiveObjectCmd\")\n\tfd_ArchiveObjectCmd_object = md_ArchiveObjectCmd.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ArchiveObjectCmd)(nil)\n\ntype fastReflection_ArchiveObjectCmd ArchiveObjectCmd\n\nfunc (x *ArchiveObjectCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ArchiveObjectCmd)(x)\n}\n\nfunc (x *ArchiveObjectCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ArchiveObjectCmd_messageType fastReflection_ArchiveObjectCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_ArchiveObjectCmd_messageType{}\n\ntype fastReflection_ArchiveObjectCmd_messageType struct{}\n\nfunc (x fastReflection_ArchiveObjectCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ArchiveObjectCmd)(nil)\n}\nfunc (x fastReflection_ArchiveObjectCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ArchiveObjectCmd)\n}\nfunc (x fastReflection_ArchiveObjectCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ArchiveObjectCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ArchiveObjectCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ArchiveObjectCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ArchiveObjectCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_ArchiveObjectCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ArchiveObjectCmd) New() protoreflect.Message {\n\treturn new(fastReflection_ArchiveObjectCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ArchiveObjectCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*ArchiveObjectCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ArchiveObjectCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_ArchiveObjectCmd_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ArchiveObjectCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ArchiveObjectCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ArchiveObjectCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmd.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ArchiveObjectCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.ArchiveObjectCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ArchiveObjectCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ArchiveObjectCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ArchiveObjectCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ArchiveObjectCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ArchiveObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SetRelationshipCmdResult                protoreflect.MessageDescriptor\n\tfd_SetRelationshipCmdResult_record_existed protoreflect.FieldDescriptor\n\tfd_SetRelationshipCmdResult_record         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_SetRelationshipCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"SetRelationshipCmdResult\")\n\tfd_SetRelationshipCmdResult_record_existed = md_SetRelationshipCmdResult.Fields().ByName(\"record_existed\")\n\tfd_SetRelationshipCmdResult_record = md_SetRelationshipCmdResult.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetRelationshipCmdResult)(nil)\n\ntype fastReflection_SetRelationshipCmdResult SetRelationshipCmdResult\n\nfunc (x *SetRelationshipCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipCmdResult)(x)\n}\n\nfunc (x *SetRelationshipCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetRelationshipCmdResult_messageType fastReflection_SetRelationshipCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_SetRelationshipCmdResult_messageType{}\n\ntype fastReflection_SetRelationshipCmdResult_messageType struct{}\n\nfunc (x fastReflection_SetRelationshipCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipCmdResult)(nil)\n}\nfunc (x fastReflection_SetRelationshipCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipCmdResult)\n}\nfunc (x fastReflection_SetRelationshipCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetRelationshipCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetRelationshipCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetRelationshipCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetRelationshipCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetRelationshipCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*SetRelationshipCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetRelationshipCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RecordExisted != false {\n\t\tvalue := protoreflect.ValueOfBool(x.RecordExisted)\n\t\tif !f(fd_SetRelationshipCmdResult_record_existed, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_SetRelationshipCmdResult_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetRelationshipCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\treturn x.RecordExisted != false\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\tx.RecordExisted = false\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetRelationshipCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\tvalue := x.RecordExisted\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\tx.RecordExisted = value.Bool()\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\tpanic(fmt.Errorf(\"field record_existed of message sourcehub.acp.SetRelationshipCmdResult is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetRelationshipCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record_existed\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.SetRelationshipCmdResult.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SetRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SetRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetRelationshipCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.SetRelationshipCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetRelationshipCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetRelationshipCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetRelationshipCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RecordExisted {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.RecordExisted {\n\t\t\ti--\n\t\t\tif x.RecordExisted {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RecordExisted\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.RecordExisted = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeleteRelationshipCmdResult              protoreflect.MessageDescriptor\n\tfd_DeleteRelationshipCmdResult_record_found protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_DeleteRelationshipCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"DeleteRelationshipCmdResult\")\n\tfd_DeleteRelationshipCmdResult_record_found = md_DeleteRelationshipCmdResult.Fields().ByName(\"record_found\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeleteRelationshipCmdResult)(nil)\n\ntype fastReflection_DeleteRelationshipCmdResult DeleteRelationshipCmdResult\n\nfunc (x *DeleteRelationshipCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipCmdResult)(x)\n}\n\nfunc (x *DeleteRelationshipCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeleteRelationshipCmdResult_messageType fastReflection_DeleteRelationshipCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_DeleteRelationshipCmdResult_messageType{}\n\ntype fastReflection_DeleteRelationshipCmdResult_messageType struct{}\n\nfunc (x fastReflection_DeleteRelationshipCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipCmdResult)(nil)\n}\nfunc (x fastReflection_DeleteRelationshipCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipCmdResult)\n}\nfunc (x fastReflection_DeleteRelationshipCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeleteRelationshipCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*DeleteRelationshipCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RecordFound != false {\n\t\tvalue := protoreflect.ValueOfBool(x.RecordFound)\n\t\tif !f(fd_DeleteRelationshipCmdResult_record_found, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\treturn x.RecordFound != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\tx.RecordFound = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\tvalue := x.RecordFound\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\tx.RecordFound = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\tpanic(fmt.Errorf(\"field record_found of message sourcehub.acp.DeleteRelationshipCmdResult is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.DeleteRelationshipCmdResult.record_found\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.DeleteRelationshipCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.DeleteRelationshipCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.DeleteRelationshipCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeleteRelationshipCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RecordFound {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RecordFound {\n\t\t\ti--\n\t\t\tif x.RecordFound {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RecordFound\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.RecordFound = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RegisterObjectCmdResult        protoreflect.MessageDescriptor\n\tfd_RegisterObjectCmdResult_record protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_RegisterObjectCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"RegisterObjectCmdResult\")\n\tfd_RegisterObjectCmdResult_record = md_RegisterObjectCmdResult.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegisterObjectCmdResult)(nil)\n\ntype fastReflection_RegisterObjectCmdResult RegisterObjectCmdResult\n\nfunc (x *RegisterObjectCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectCmdResult)(x)\n}\n\nfunc (x *RegisterObjectCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegisterObjectCmdResult_messageType fastReflection_RegisterObjectCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_RegisterObjectCmdResult_messageType{}\n\ntype fastReflection_RegisterObjectCmdResult_messageType struct{}\n\nfunc (x fastReflection_RegisterObjectCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectCmdResult)(nil)\n}\nfunc (x fastReflection_RegisterObjectCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectCmdResult)\n}\nfunc (x fastReflection_RegisterObjectCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegisterObjectCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegisterObjectCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegisterObjectCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegisterObjectCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegisterObjectCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*RegisterObjectCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegisterObjectCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_RegisterObjectCmdResult_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegisterObjectCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegisterObjectCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegisterObjectCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RegisterObjectCmdResult.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RegisterObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RegisterObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegisterObjectCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RegisterObjectCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegisterObjectCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegisterObjectCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegisterObjectCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegisterObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ArchiveObjectCmdResult                       protoreflect.MessageDescriptor\n\tfd_ArchiveObjectCmdResult_found                 protoreflect.FieldDescriptor\n\tfd_ArchiveObjectCmdResult_relationships_removed protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_ArchiveObjectCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"ArchiveObjectCmdResult\")\n\tfd_ArchiveObjectCmdResult_found = md_ArchiveObjectCmdResult.Fields().ByName(\"found\")\n\tfd_ArchiveObjectCmdResult_relationships_removed = md_ArchiveObjectCmdResult.Fields().ByName(\"relationships_removed\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ArchiveObjectCmdResult)(nil)\n\ntype fastReflection_ArchiveObjectCmdResult ArchiveObjectCmdResult\n\nfunc (x *ArchiveObjectCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ArchiveObjectCmdResult)(x)\n}\n\nfunc (x *ArchiveObjectCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ArchiveObjectCmdResult_messageType fastReflection_ArchiveObjectCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_ArchiveObjectCmdResult_messageType{}\n\ntype fastReflection_ArchiveObjectCmdResult_messageType struct{}\n\nfunc (x fastReflection_ArchiveObjectCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ArchiveObjectCmdResult)(nil)\n}\nfunc (x fastReflection_ArchiveObjectCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ArchiveObjectCmdResult)\n}\nfunc (x fastReflection_ArchiveObjectCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ArchiveObjectCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ArchiveObjectCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_ArchiveObjectCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ArchiveObjectCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_ArchiveObjectCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*ArchiveObjectCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Found != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Found)\n\t\tif !f(fd_ArchiveObjectCmdResult_found, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RelationshipsRemoved != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.RelationshipsRemoved)\n\t\tif !f(fd_ArchiveObjectCmdResult_relationships_removed, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\treturn x.Found != false\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\treturn x.RelationshipsRemoved != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\tx.Found = false\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\tx.RelationshipsRemoved = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\tvalue := x.Found\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\tvalue := x.RelationshipsRemoved\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\tx.Found = value.Bool()\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\tx.RelationshipsRemoved = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\tpanic(fmt.Errorf(\"field found of message sourcehub.acp.ArchiveObjectCmdResult is not mutable\"))\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\tpanic(fmt.Errorf(\"field relationships_removed of message sourcehub.acp.ArchiveObjectCmdResult is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ArchiveObjectCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.found\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.ArchiveObjectCmdResult.relationships_removed\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.ArchiveObjectCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.ArchiveObjectCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ArchiveObjectCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.ArchiveObjectCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ArchiveObjectCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ArchiveObjectCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ArchiveObjectCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ArchiveObjectCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Found {\n\t\t\tn += 2\n\t\t}\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.RelationshipsRemoved))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.RelationshipsRemoved))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.Found {\n\t\t\ti--\n\t\t\tif x.Found {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ArchiveObjectCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ArchiveObjectCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ArchiveObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Found\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Found = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipsRemoved\", wireType)\n\t\t\t\t}\n\t\t\t\tx.RelationshipsRemoved = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.RelationshipsRemoved |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_PolicyCmdResult                             protoreflect.MessageDescriptor\n\tfd_PolicyCmdResult_set_relationship_result     protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_delete_relationship_result  protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_register_object_result      protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_archive_object_result       protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_commit_registrations_result protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_reveal_registration_result  protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_flag_hijack_attempt_result  protoreflect.FieldDescriptor\n\tfd_PolicyCmdResult_unarchive_object_result     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tmd_PolicyCmdResult = File_sourcehub_acp_policy_cmd_proto.Messages().ByName(\"PolicyCmdResult\")\n\tfd_PolicyCmdResult_set_relationship_result = md_PolicyCmdResult.Fields().ByName(\"set_relationship_result\")\n\tfd_PolicyCmdResult_delete_relationship_result = md_PolicyCmdResult.Fields().ByName(\"delete_relationship_result\")\n\tfd_PolicyCmdResult_register_object_result = md_PolicyCmdResult.Fields().ByName(\"register_object_result\")\n\tfd_PolicyCmdResult_archive_object_result = md_PolicyCmdResult.Fields().ByName(\"archive_object_result\")\n\tfd_PolicyCmdResult_commit_registrations_result = md_PolicyCmdResult.Fields().ByName(\"commit_registrations_result\")\n\tfd_PolicyCmdResult_reveal_registration_result = md_PolicyCmdResult.Fields().ByName(\"reveal_registration_result\")\n\tfd_PolicyCmdResult_flag_hijack_attempt_result = md_PolicyCmdResult.Fields().ByName(\"flag_hijack_attempt_result\")\n\tfd_PolicyCmdResult_unarchive_object_result = md_PolicyCmdResult.Fields().ByName(\"unarchive_object_result\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyCmdResult)(nil)\n\ntype fastReflection_PolicyCmdResult PolicyCmdResult\n\nfunc (x *PolicyCmdResult) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyCmdResult)(x)\n}\n\nfunc (x *PolicyCmdResult) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyCmdResult_messageType fastReflection_PolicyCmdResult_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyCmdResult_messageType{}\n\ntype fastReflection_PolicyCmdResult_messageType struct{}\n\nfunc (x fastReflection_PolicyCmdResult_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyCmdResult)(nil)\n}\nfunc (x fastReflection_PolicyCmdResult_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyCmdResult)\n}\nfunc (x fastReflection_PolicyCmdResult_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyCmdResult\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyCmdResult) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyCmdResult\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyCmdResult) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyCmdResult_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyCmdResult) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyCmdResult)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyCmdResult) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyCmdResult)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyCmdResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Result != nil {\n\t\tswitch o := x.Result.(type) {\n\t\tcase *PolicyCmdResult_SetRelationshipResult:\n\t\t\tv := o.SetRelationshipResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_set_relationship_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_DeleteRelationshipResult:\n\t\t\tv := o.DeleteRelationshipResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_delete_relationship_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_RegisterObjectResult:\n\t\t\tv := o.RegisterObjectResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_register_object_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_ArchiveObjectResult:\n\t\t\tv := o.ArchiveObjectResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_archive_object_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_CommitRegistrationsResult:\n\t\t\tv := o.CommitRegistrationsResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_commit_registrations_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_RevealRegistrationResult:\n\t\t\tv := o.RevealRegistrationResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_reveal_registration_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_FlagHijackAttemptResult:\n\t\t\tv := o.FlagHijackAttemptResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_flag_hijack_attempt_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyCmdResult_UnarchiveObjectResult:\n\t\t\tv := o.UnarchiveObjectResult\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyCmdResult_unarchive_object_result, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyCmdResult) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_SetRelationshipResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_DeleteRelationshipResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_RegisterObjectResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_ArchiveObjectResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_CommitRegistrationsResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_RevealRegistrationResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_FlagHijackAttemptResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Result.(*PolicyCmdResult_UnarchiveObjectResult); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmdResult) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tx.Result = nil\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tx.Result = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyCmdResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*SetRelationshipCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_SetRelationshipResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.SetRelationshipResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*SetRelationshipCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*DeleteRelationshipCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_DeleteRelationshipResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.DeleteRelationshipResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*DeleteRelationshipCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*RegisterObjectCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_RegisterObjectResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.RegisterObjectResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*RegisterObjectCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*ArchiveObjectCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_ArchiveObjectResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.ArchiveObjectResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*ArchiveObjectCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*CommitRegistrationsCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_CommitRegistrationsResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.CommitRegistrationsResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*CommitRegistrationsCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*RevealRegistrationCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_RevealRegistrationResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.RevealRegistrationResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*RevealRegistrationCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*FlagHijackAttemptCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_FlagHijackAttemptResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.FlagHijackAttemptResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*FlagHijackAttemptCmdResult)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tif x.Result == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*UnarchiveObjectCmdResult)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Result.(*PolicyCmdResult_UnarchiveObjectResult); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.UnarchiveObjectResult.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*UnarchiveObjectCmdResult)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmdResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tcv := value.Message().Interface().(*SetRelationshipCmdResult)\n\t\tx.Result = &PolicyCmdResult_SetRelationshipResult{SetRelationshipResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tcv := value.Message().Interface().(*DeleteRelationshipCmdResult)\n\t\tx.Result = &PolicyCmdResult_DeleteRelationshipResult{DeleteRelationshipResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tcv := value.Message().Interface().(*RegisterObjectCmdResult)\n\t\tx.Result = &PolicyCmdResult_RegisterObjectResult{RegisterObjectResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tcv := value.Message().Interface().(*ArchiveObjectCmdResult)\n\t\tx.Result = &PolicyCmdResult_ArchiveObjectResult{ArchiveObjectResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tcv := value.Message().Interface().(*CommitRegistrationsCmdResult)\n\t\tx.Result = &PolicyCmdResult_CommitRegistrationsResult{CommitRegistrationsResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tcv := value.Message().Interface().(*RevealRegistrationCmdResult)\n\t\tx.Result = &PolicyCmdResult_RevealRegistrationResult{RevealRegistrationResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tcv := value.Message().Interface().(*FlagHijackAttemptCmdResult)\n\t\tx.Result = &PolicyCmdResult_FlagHijackAttemptResult{FlagHijackAttemptResult: cv}\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tcv := value.Message().Interface().(*UnarchiveObjectCmdResult)\n\t\tx.Result = &PolicyCmdResult_UnarchiveObjectResult{UnarchiveObjectResult: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmdResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &SetRelationshipCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_SetRelationshipResult{SetRelationshipResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_SetRelationshipResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.SetRelationshipResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &SetRelationshipCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_SetRelationshipResult{SetRelationshipResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &DeleteRelationshipCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_DeleteRelationshipResult{DeleteRelationshipResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_DeleteRelationshipResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.DeleteRelationshipResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &DeleteRelationshipCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_DeleteRelationshipResult{DeleteRelationshipResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &RegisterObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_RegisterObjectResult{RegisterObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_RegisterObjectResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.RegisterObjectResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &RegisterObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_RegisterObjectResult{RegisterObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &ArchiveObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_ArchiveObjectResult{ArchiveObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_ArchiveObjectResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.ArchiveObjectResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &ArchiveObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_ArchiveObjectResult{ArchiveObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &CommitRegistrationsCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_CommitRegistrationsResult{CommitRegistrationsResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_CommitRegistrationsResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.CommitRegistrationsResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &CommitRegistrationsCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_CommitRegistrationsResult{CommitRegistrationsResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &RevealRegistrationCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_RevealRegistrationResult{RevealRegistrationResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_RevealRegistrationResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.RevealRegistrationResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &RevealRegistrationCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_RevealRegistrationResult{RevealRegistrationResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &FlagHijackAttemptCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_FlagHijackAttemptResult{FlagHijackAttemptResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_FlagHijackAttemptResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.FlagHijackAttemptResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &FlagHijackAttemptCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_FlagHijackAttemptResult{FlagHijackAttemptResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tif x.Result == nil {\n\t\t\tvalue := &UnarchiveObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_UnarchiveObjectResult{UnarchiveObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Result.(type) {\n\t\tcase *PolicyCmdResult_UnarchiveObjectResult:\n\t\t\treturn protoreflect.ValueOfMessage(m.UnarchiveObjectResult.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &UnarchiveObjectCmdResult{}\n\t\t\toneofValue := &PolicyCmdResult_UnarchiveObjectResult{UnarchiveObjectResult: value}\n\t\t\tx.Result = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyCmdResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.set_relationship_result\":\n\t\tvalue := &SetRelationshipCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.delete_relationship_result\":\n\t\tvalue := &DeleteRelationshipCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.register_object_result\":\n\t\tvalue := &RegisterObjectCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.archive_object_result\":\n\t\tvalue := &ArchiveObjectCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.commit_registrations_result\":\n\t\tvalue := &CommitRegistrationsCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.reveal_registration_result\":\n\t\tvalue := &RevealRegistrationCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result\":\n\t\tvalue := &FlagHijackAttemptCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyCmdResult.unarchive_object_result\":\n\t\tvalue := &UnarchiveObjectCmdResult{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyCmdResult\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyCmdResult does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyCmdResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcehub.acp.PolicyCmdResult.result\":\n\t\tif x.Result == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Result.(type) {\n\t\tcase *PolicyCmdResult_SetRelationshipResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"set_relationship_result\")\n\t\tcase *PolicyCmdResult_DeleteRelationshipResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"delete_relationship_result\")\n\t\tcase *PolicyCmdResult_RegisterObjectResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"register_object_result\")\n\t\tcase *PolicyCmdResult_ArchiveObjectResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"archive_object_result\")\n\t\tcase *PolicyCmdResult_CommitRegistrationsResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"commit_registrations_result\")\n\t\tcase *PolicyCmdResult_RevealRegistrationResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"reveal_registration_result\")\n\t\tcase *PolicyCmdResult_FlagHijackAttemptResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"flag_hijack_attempt_result\")\n\t\tcase *PolicyCmdResult_UnarchiveObjectResult:\n\t\t\treturn x.Descriptor().Fields().ByName(\"unarchive_object_result\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.PolicyCmdResult\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyCmdResult) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyCmdResult) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyCmdResult) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyCmdResult) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Result.(type) {\n\t\tcase *PolicyCmdResult_SetRelationshipResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.SetRelationshipResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_DeleteRelationshipResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.DeleteRelationshipResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_RegisterObjectResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.RegisterObjectResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_ArchiveObjectResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.ArchiveObjectResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_CommitRegistrationsResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.CommitRegistrationsResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_RevealRegistrationResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.RevealRegistrationResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_FlagHijackAttemptResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.FlagHijackAttemptResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyCmdResult_UnarchiveObjectResult:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.UnarchiveObjectResult)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Result.(type) {\n\t\tcase *PolicyCmdResult_SetRelationshipResult:\n\t\t\tencoded, err := options.Marshal(x.SetRelationshipResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *PolicyCmdResult_DeleteRelationshipResult:\n\t\t\tencoded, err := options.Marshal(x.DeleteRelationshipResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\tcase *PolicyCmdResult_RegisterObjectResult:\n\t\t\tencoded, err := options.Marshal(x.RegisterObjectResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\tcase *PolicyCmdResult_ArchiveObjectResult:\n\t\t\tencoded, err := options.Marshal(x.ArchiveObjectResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\tcase *PolicyCmdResult_CommitRegistrationsResult:\n\t\t\tencoded, err := options.Marshal(x.CommitRegistrationsResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\tcase *PolicyCmdResult_RevealRegistrationResult:\n\t\t\tencoded, err := options.Marshal(x.RevealRegistrationResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\tcase *PolicyCmdResult_FlagHijackAttemptResult:\n\t\t\tencoded, err := options.Marshal(x.FlagHijackAttemptResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\tcase *PolicyCmdResult_UnarchiveObjectResult:\n\t\t\tencoded, err := options.Marshal(x.UnarchiveObjectResult)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyCmdResult)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyCmdResult: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field SetRelationshipResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &SetRelationshipCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_SetRelationshipResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DeleteRelationshipResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &DeleteRelationshipCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_DeleteRelationshipResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegisterObjectResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &RegisterObjectCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_RegisterObjectResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ArchiveObjectResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &ArchiveObjectCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_ArchiveObjectResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CommitRegistrationsResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &CommitRegistrationsCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_CommitRegistrationsResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RevealRegistrationResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &RevealRegistrationCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_RevealRegistrationResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field FlagHijackAttemptResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &FlagHijackAttemptCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_FlagHijackAttemptResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnarchiveObjectResult\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &UnarchiveObjectCmdResult{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Result = &PolicyCmdResult_UnarchiveObjectResult{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/policy_cmd.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// PolicyCmd models an operation to be performed against the context of a Policy\ntype PolicyCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Cmd:\n\t//\n\t//\t*PolicyCmd_SetRelationshipCmd\n\t//\t*PolicyCmd_DeleteRelationshipCmd\n\t//\t*PolicyCmd_RegisterObjectCmd\n\t//\t*PolicyCmd_ArchiveObjectCmd\n\t//\t*PolicyCmd_CommitRegistrationsCmd\n\t//\t*PolicyCmd_RevealRegistrationCmd\n\t//\t*PolicyCmd_FlagHijackAttemptCmd\n\t//\t*PolicyCmd_UnarchiveObjectCmd\n\tCmd isPolicyCmd_Cmd `protobuf_oneof:\"cmd\"`\n}\n\nfunc (x *PolicyCmd) Reset() {\n\t*x = PolicyCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyCmd) ProtoMessage() {}\n\n// Deprecated: Use PolicyCmd.ProtoReflect.Descriptor instead.\nfunc (*PolicyCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *PolicyCmd) GetCmd() isPolicyCmd_Cmd {\n\tif x != nil {\n\t\treturn x.Cmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetSetRelationshipCmd() *SetRelationshipCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_SetRelationshipCmd); ok {\n\t\treturn x.SetRelationshipCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetDeleteRelationshipCmd() *DeleteRelationshipCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_DeleteRelationshipCmd); ok {\n\t\treturn x.DeleteRelationshipCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetRegisterObjectCmd() *RegisterObjectCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_RegisterObjectCmd); ok {\n\t\treturn x.RegisterObjectCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetArchiveObjectCmd() *ArchiveObjectCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_ArchiveObjectCmd); ok {\n\t\treturn x.ArchiveObjectCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetCommitRegistrationsCmd() *CommitRegistrationsCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_CommitRegistrationsCmd); ok {\n\t\treturn x.CommitRegistrationsCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetRevealRegistrationCmd() *RevealRegistrationCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_RevealRegistrationCmd); ok {\n\t\treturn x.RevealRegistrationCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetFlagHijackAttemptCmd() *FlagHijackAttemptCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_FlagHijackAttemptCmd); ok {\n\t\treturn x.FlagHijackAttemptCmd\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmd) GetUnarchiveObjectCmd() *UnarchiveObjectCmd {\n\tif x, ok := x.GetCmd().(*PolicyCmd_UnarchiveObjectCmd); ok {\n\t\treturn x.UnarchiveObjectCmd\n\t}\n\treturn nil\n}\n\ntype isPolicyCmd_Cmd interface {\n\tisPolicyCmd_Cmd()\n}\n\ntype PolicyCmd_SetRelationshipCmd struct {\n\tSetRelationshipCmd *SetRelationshipCmd `protobuf:\"bytes,1,opt,name=set_relationship_cmd,json=setRelationshipCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_DeleteRelationshipCmd struct {\n\tDeleteRelationshipCmd *DeleteRelationshipCmd `protobuf:\"bytes,2,opt,name=delete_relationship_cmd,json=deleteRelationshipCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_RegisterObjectCmd struct {\n\tRegisterObjectCmd *RegisterObjectCmd `protobuf:\"bytes,3,opt,name=register_object_cmd,json=registerObjectCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_ArchiveObjectCmd struct {\n\tArchiveObjectCmd *ArchiveObjectCmd `protobuf:\"bytes,4,opt,name=archive_object_cmd,json=archiveObjectCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_CommitRegistrationsCmd struct {\n\tCommitRegistrationsCmd *CommitRegistrationsCmd `protobuf:\"bytes,5,opt,name=commit_registrations_cmd,json=commitRegistrationsCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_RevealRegistrationCmd struct {\n\tRevealRegistrationCmd *RevealRegistrationCmd `protobuf:\"bytes,6,opt,name=reveal_registration_cmd,json=revealRegistrationCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_FlagHijackAttemptCmd struct {\n\tFlagHijackAttemptCmd *FlagHijackAttemptCmd `protobuf:\"bytes,7,opt,name=flag_hijack_attempt_cmd,json=flagHijackAttemptCmd,proto3,oneof\"`\n}\n\ntype PolicyCmd_UnarchiveObjectCmd struct {\n\tUnarchiveObjectCmd *UnarchiveObjectCmd `protobuf:\"bytes,8,opt,name=unarchive_object_cmd,json=unarchiveObjectCmd,proto3,oneof\"`\n}\n\nfunc (*PolicyCmd_SetRelationshipCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_DeleteRelationshipCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_RegisterObjectCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_ArchiveObjectCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_CommitRegistrationsCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_RevealRegistrationCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_FlagHijackAttemptCmd) isPolicyCmd_Cmd() {}\n\nfunc (*PolicyCmd_UnarchiveObjectCmd) isPolicyCmd_Cmd() {}\n\n// SetRelationship creates or updates a Relationship within a Policy\n// A Relationship is a statement which ties together an object and a subjecto with a \"relation\",\n// which means the set of high level rules defined in the Policy will apply to these entities.\ntype SetRelationshipCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRelationship *types.Relationship `protobuf:\"bytes,1,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n}\n\nfunc (x *SetRelationshipCmd) Reset() {\n\t*x = SetRelationshipCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetRelationshipCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetRelationshipCmd) ProtoMessage() {}\n\n// Deprecated: Use SetRelationshipCmd.ProtoReflect.Descriptor instead.\nfunc (*SetRelationshipCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *SetRelationshipCmd) GetRelationship() *types.Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\n// DelereRelationship removes a Relationship from a Policy.\n// If the Relationship was not found in a Policy, this Cmd is a no-op.\ntype DeleteRelationshipCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRelationship *types.Relationship `protobuf:\"bytes,1,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n}\n\nfunc (x *DeleteRelationshipCmd) Reset() {\n\t*x = DeleteRelationshipCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeleteRelationshipCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeleteRelationshipCmd) ProtoMessage() {}\n\n// Deprecated: Use DeleteRelationshipCmd.ProtoReflect.Descriptor instead.\nfunc (*DeleteRelationshipCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *DeleteRelationshipCmd) GetRelationship() *types.Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\n// RegisterObject creates a special kind of Relationship within a Policy which ties\n// the msg's Actor as the owner of the msg's Object.\n// The Owner has complete control over the set of subjects that are related to their Object,\n// giving them autonomy to share the object and revoke acces to the object,\n// much like owners in a Discretionary Access Control model.\n//\n// Attempting to register a previously registered Object is an error,\n// Object IDs are therefore assumed to be unique within a Policy.\ntype RegisterObjectCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *RegisterObjectCmd) Reset() {\n\t*x = RegisterObjectCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegisterObjectCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegisterObjectCmd) ProtoMessage() {}\n\n// Deprecated: Use RegisterObjectCmd.ProtoReflect.Descriptor instead.\nfunc (*RegisterObjectCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *RegisterObjectCmd) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\n// CommitRegistrationsCmd creates a new batched commitment to a set of Object registrations\ntype CommitRegistrationsCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCommitment []byte `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n}\n\nfunc (x *CommitRegistrationsCmd) Reset() {\n\t*x = CommitRegistrationsCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CommitRegistrationsCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CommitRegistrationsCmd) ProtoMessage() {}\n\n// Deprecated: Use CommitRegistrationsCmd.ProtoReflect.Descriptor instead.\nfunc (*CommitRegistrationsCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *CommitRegistrationsCmd) GetCommitment() []byte {\n\tif x != nil {\n\t\treturn x.Commitment\n\t}\n\treturn nil\n}\n\ntype CommitRegistrationsCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRegistrationsCommitment *RegistrationsCommitment `protobuf:\"bytes,1,opt,name=registrations_commitment,json=registrationsCommitment,proto3\" json:\"registrations_commitment,omitempty\"`\n}\n\nfunc (x *CommitRegistrationsCmdResult) Reset() {\n\t*x = CommitRegistrationsCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CommitRegistrationsCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CommitRegistrationsCmdResult) ProtoMessage() {}\n\n// Deprecated: Use CommitRegistrationsCmdResult.ProtoReflect.Descriptor instead.\nfunc (*CommitRegistrationsCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *CommitRegistrationsCmdResult) GetRegistrationsCommitment() *RegistrationsCommitment {\n\tif x != nil {\n\t\treturn x.RegistrationsCommitment\n\t}\n\treturn nil\n}\n\ntype RevealRegistrationCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRegistrationsCommitmentId uint64             `protobuf:\"varint,1,opt,name=registrations_commitment_id,json=registrationsCommitmentId,proto3\" json:\"registrations_commitment_id,omitempty\"`\n\tProof                     *RegistrationProof `protobuf:\"bytes,2,opt,name=proof,proto3\" json:\"proof,omitempty\"`\n}\n\nfunc (x *RevealRegistrationCmd) Reset() {\n\t*x = RevealRegistrationCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RevealRegistrationCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RevealRegistrationCmd) ProtoMessage() {}\n\n// Deprecated: Use RevealRegistrationCmd.ProtoReflect.Descriptor instead.\nfunc (*RevealRegistrationCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *RevealRegistrationCmd) GetRegistrationsCommitmentId() uint64 {\n\tif x != nil {\n\t\treturn x.RegistrationsCommitmentId\n\t}\n\treturn 0\n}\n\nfunc (x *RevealRegistrationCmd) GetProof() *RegistrationProof {\n\tif x != nil {\n\t\treturn x.Proof\n\t}\n\treturn nil\n}\n\ntype RevealRegistrationCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecord *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n\tEvent  *AmendmentEvent     `protobuf:\"bytes,2,opt,name=event,proto3\" json:\"event,omitempty\"`\n}\n\nfunc (x *RevealRegistrationCmdResult) Reset() {\n\t*x = RevealRegistrationCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RevealRegistrationCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RevealRegistrationCmdResult) ProtoMessage() {}\n\n// Deprecated: Use RevealRegistrationCmdResult.ProtoReflect.Descriptor instead.\nfunc (*RevealRegistrationCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *RevealRegistrationCmdResult) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\nfunc (x *RevealRegistrationCmdResult) GetEvent() *AmendmentEvent {\n\tif x != nil {\n\t\treturn x.Event\n\t}\n\treturn nil\n}\n\ntype FlagHijackAttemptCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEventId uint64 `protobuf:\"varint,1,opt,name=event_id,json=eventId,proto3\" json:\"event_id,omitempty\"`\n}\n\nfunc (x *FlagHijackAttemptCmd) Reset() {\n\t*x = FlagHijackAttemptCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FlagHijackAttemptCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FlagHijackAttemptCmd) ProtoMessage() {}\n\n// Deprecated: Use FlagHijackAttemptCmd.ProtoReflect.Descriptor instead.\nfunc (*FlagHijackAttemptCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *FlagHijackAttemptCmd) GetEventId() uint64 {\n\tif x != nil {\n\t\treturn x.EventId\n\t}\n\treturn 0\n}\n\ntype FlagHijackAttemptCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEvent *AmendmentEvent `protobuf:\"bytes,1,opt,name=event,proto3\" json:\"event,omitempty\"`\n}\n\nfunc (x *FlagHijackAttemptCmdResult) Reset() {\n\t*x = FlagHijackAttemptCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FlagHijackAttemptCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FlagHijackAttemptCmdResult) ProtoMessage() {}\n\n// Deprecated: Use FlagHijackAttemptCmdResult.ProtoReflect.Descriptor instead.\nfunc (*FlagHijackAttemptCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *FlagHijackAttemptCmdResult) GetEvent() *AmendmentEvent {\n\tif x != nil {\n\t\treturn x.Event\n\t}\n\treturn nil\n}\n\ntype UnarchiveObjectCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *UnarchiveObjectCmd) Reset() {\n\t*x = UnarchiveObjectCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnarchiveObjectCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnarchiveObjectCmd) ProtoMessage() {}\n\n// Deprecated: Use UnarchiveObjectCmd.ProtoReflect.Descriptor instead.\nfunc (*UnarchiveObjectCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *UnarchiveObjectCmd) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\ntype UnarchiveObjectCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecord               *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n\tRelationshipModified bool                `protobuf:\"varint,2,opt,name=relationship_modified,json=relationshipModified,proto3\" json:\"relationship_modified,omitempty\"`\n}\n\nfunc (x *UnarchiveObjectCmdResult) Reset() {\n\t*x = UnarchiveObjectCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnarchiveObjectCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnarchiveObjectCmdResult) ProtoMessage() {}\n\n// Deprecated: Use UnarchiveObjectCmdResult.ProtoReflect.Descriptor instead.\nfunc (*UnarchiveObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *UnarchiveObjectCmdResult) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\nfunc (x *UnarchiveObjectCmdResult) GetRelationshipModified() bool {\n\tif x != nil {\n\t\treturn x.RelationshipModified\n\t}\n\treturn false\n}\n\n// ArchiveObject let's an Object's Owner effectively \"unshare\" their Object.\n// This method wipes all Relationships referencing the given Object.\n//\n// A caveat is that after removing the Relationships, a record of the original Object owner\n// is maintained to prevent an \"ownership hijack\" attack.\n//\n// Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n// Eve wants to access Foo but was not given permission to, they could \"hijack\" Bob's object by waiting for Bob to Archive Foo,\n// then submitting a RegisterObject Msg, effectively becoming Foo's new owner.\n// If Charlie has a copy of the object, Eve could convince Charlie to share his copy, granting Eve access to Foo.\n// The previous scenario where an unauthorized user is able to claim ownership to data previously unaccessible to them\n// is an \"ownership hijack\".\ntype ArchiveObjectCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *ArchiveObjectCmd) Reset() {\n\t*x = ArchiveObjectCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ArchiveObjectCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ArchiveObjectCmd) ProtoMessage() {}\n\n// Deprecated: Use ArchiveObjectCmd.ProtoReflect.Descriptor instead.\nfunc (*ArchiveObjectCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *ArchiveObjectCmd) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\n// SetRelationshipCmd sets a Relationship in a Policy\ntype SetRelationshipCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Indicates whether the given Relationship previously existed, ie the Tx was a no op\n\tRecordExisted bool                `protobuf:\"varint,1,opt,name=record_existed,json=recordExisted,proto3\" json:\"record_existed,omitempty\"`\n\tRecord        *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *SetRelationshipCmdResult) Reset() {\n\t*x = SetRelationshipCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetRelationshipCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetRelationshipCmdResult) ProtoMessage() {}\n\n// Deprecated: Use SetRelationshipCmdResult.ProtoReflect.Descriptor instead.\nfunc (*SetRelationshipCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *SetRelationshipCmdResult) GetRecordExisted() bool {\n\tif x != nil {\n\t\treturn x.RecordExisted\n\t}\n\treturn false\n}\n\nfunc (x *SetRelationshipCmdResult) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\n// DeleteRelationshipCmdResult removes a Relationship in a Policy\ntype DeleteRelationshipCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecordFound bool `protobuf:\"varint,1,opt,name=record_found,json=recordFound,proto3\" json:\"record_found,omitempty\"`\n}\n\nfunc (x *DeleteRelationshipCmdResult) Reset() {\n\t*x = DeleteRelationshipCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeleteRelationshipCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeleteRelationshipCmdResult) ProtoMessage() {}\n\n// Deprecated: Use DeleteRelationshipCmdResult.ProtoReflect.Descriptor instead.\nfunc (*DeleteRelationshipCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *DeleteRelationshipCmdResult) GetRecordFound() bool {\n\tif x != nil {\n\t\treturn x.RecordFound\n\t}\n\treturn false\n}\n\n// RegisterObjectCmdResult registers an Object in a Policy\ntype RegisterObjectCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecord *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *RegisterObjectCmdResult) Reset() {\n\t*x = RegisterObjectCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegisterObjectCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegisterObjectCmdResult) ProtoMessage() {}\n\n// Deprecated: Use RegisterObjectCmdResult.ProtoReflect.Descriptor instead.\nfunc (*RegisterObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *RegisterObjectCmdResult) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\n// ArchiveObjectCmdResult unregisters an Object in a Policy\ntype ArchiveObjectCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tFound                bool   `protobuf:\"varint,1,opt,name=found,proto3\" json:\"found,omitempty\"`\n\tRelationshipsRemoved uint64 `protobuf:\"varint,2,opt,name=relationships_removed,json=relationshipsRemoved,proto3\" json:\"relationships_removed,omitempty\"`\n}\n\nfunc (x *ArchiveObjectCmdResult) Reset() {\n\t*x = ArchiveObjectCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ArchiveObjectCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ArchiveObjectCmdResult) ProtoMessage() {}\n\n// Deprecated: Use ArchiveObjectCmdResult.ProtoReflect.Descriptor instead.\nfunc (*ArchiveObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *ArchiveObjectCmdResult) GetFound() bool {\n\tif x != nil {\n\t\treturn x.Found\n\t}\n\treturn false\n}\n\nfunc (x *ArchiveObjectCmdResult) GetRelationshipsRemoved() uint64 {\n\tif x != nil {\n\t\treturn x.RelationshipsRemoved\n\t}\n\treturn 0\n}\n\ntype PolicyCmdResult struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Result:\n\t//\n\t//\t*PolicyCmdResult_SetRelationshipResult\n\t//\t*PolicyCmdResult_DeleteRelationshipResult\n\t//\t*PolicyCmdResult_RegisterObjectResult\n\t//\t*PolicyCmdResult_ArchiveObjectResult\n\t//\t*PolicyCmdResult_CommitRegistrationsResult\n\t//\t*PolicyCmdResult_RevealRegistrationResult\n\t//\t*PolicyCmdResult_FlagHijackAttemptResult\n\t//\t*PolicyCmdResult_UnarchiveObjectResult\n\tResult isPolicyCmdResult_Result `protobuf_oneof:\"result\"`\n}\n\nfunc (x *PolicyCmdResult) Reset() {\n\t*x = PolicyCmdResult{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_policy_cmd_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyCmdResult) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyCmdResult) ProtoMessage() {}\n\n// Deprecated: Use PolicyCmdResult.ProtoReflect.Descriptor instead.\nfunc (*PolicyCmdResult) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *PolicyCmdResult) GetResult() isPolicyCmdResult_Result {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetSetRelationshipResult() *SetRelationshipCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_SetRelationshipResult); ok {\n\t\treturn x.SetRelationshipResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetDeleteRelationshipResult() *DeleteRelationshipCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_DeleteRelationshipResult); ok {\n\t\treturn x.DeleteRelationshipResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetRegisterObjectResult() *RegisterObjectCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_RegisterObjectResult); ok {\n\t\treturn x.RegisterObjectResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetArchiveObjectResult() *ArchiveObjectCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_ArchiveObjectResult); ok {\n\t\treturn x.ArchiveObjectResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetCommitRegistrationsResult() *CommitRegistrationsCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_CommitRegistrationsResult); ok {\n\t\treturn x.CommitRegistrationsResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetRevealRegistrationResult() *RevealRegistrationCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_RevealRegistrationResult); ok {\n\t\treturn x.RevealRegistrationResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetFlagHijackAttemptResult() *FlagHijackAttemptCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_FlagHijackAttemptResult); ok {\n\t\treturn x.FlagHijackAttemptResult\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyCmdResult) GetUnarchiveObjectResult() *UnarchiveObjectCmdResult {\n\tif x, ok := x.GetResult().(*PolicyCmdResult_UnarchiveObjectResult); ok {\n\t\treturn x.UnarchiveObjectResult\n\t}\n\treturn nil\n}\n\ntype isPolicyCmdResult_Result interface {\n\tisPolicyCmdResult_Result()\n}\n\ntype PolicyCmdResult_SetRelationshipResult struct {\n\tSetRelationshipResult *SetRelationshipCmdResult `protobuf:\"bytes,1,opt,name=set_relationship_result,json=setRelationshipResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_DeleteRelationshipResult struct {\n\tDeleteRelationshipResult *DeleteRelationshipCmdResult `protobuf:\"bytes,2,opt,name=delete_relationship_result,json=deleteRelationshipResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_RegisterObjectResult struct {\n\tRegisterObjectResult *RegisterObjectCmdResult `protobuf:\"bytes,3,opt,name=register_object_result,json=registerObjectResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_ArchiveObjectResult struct {\n\tArchiveObjectResult *ArchiveObjectCmdResult `protobuf:\"bytes,4,opt,name=archive_object_result,json=archiveObjectResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_CommitRegistrationsResult struct {\n\tCommitRegistrationsResult *CommitRegistrationsCmdResult `protobuf:\"bytes,5,opt,name=commit_registrations_result,json=commitRegistrationsResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_RevealRegistrationResult struct {\n\tRevealRegistrationResult *RevealRegistrationCmdResult `protobuf:\"bytes,6,opt,name=reveal_registration_result,json=revealRegistrationResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_FlagHijackAttemptResult struct {\n\tFlagHijackAttemptResult *FlagHijackAttemptCmdResult `protobuf:\"bytes,7,opt,name=flag_hijack_attempt_result,json=flagHijackAttemptResult,proto3,oneof\"`\n}\n\ntype PolicyCmdResult_UnarchiveObjectResult struct {\n\tUnarchiveObjectResult *UnarchiveObjectCmdResult `protobuf:\"bytes,8,opt,name=unarchive_object_result,json=unarchiveObjectResult,proto3,oneof\"`\n}\n\nfunc (*PolicyCmdResult_SetRelationshipResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_DeleteRelationshipResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_RegisterObjectResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_ArchiveObjectResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_CommitRegistrationsResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_RevealRegistrationResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_FlagHijackAttemptResult) isPolicyCmdResult_Result() {}\n\nfunc (*PolicyCmdResult_UnarchiveObjectResult) isPolicyCmdResult_Result() {}\n\nvar File_sourcehub_acp_policy_cmd_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_policy_cmd_proto_rawDesc = []byte{\n\t0x0a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6d, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a,\n\t0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe6, 0x05, 0x0a, 0x09, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12, 0x55, 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x72,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x63, 0x6d, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x52,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x12, 0x5e,\n\t0x0a, 0x17, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x12, 0x52,\n\t0x0a, 0x13, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52,\n\t0x11, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43,\n\t0x6d, 0x64, 0x12, 0x4f, 0x0a, 0x12, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41,\n\t0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x48,\n\t0x00, 0x52, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x43, 0x6d, 0x64, 0x12, 0x61, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6d, 0x64, 0x18,\n\t0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x16,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x43, 0x6d, 0x64, 0x12, 0x5e, 0x0a, 0x17, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c,\n\t0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6d,\n\t0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x52, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52,\n\t0x15, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x12, 0x5c, 0x0a, 0x17, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x68,\n\t0x69, 0x6a, 0x61, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6d,\n\t0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x48, 0x69, 0x6a, 0x61,\n\t0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x14,\n\t0x66, 0x6c, 0x61, 0x67, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70,\n\t0x74, 0x43, 0x6d, 0x64, 0x12, 0x55, 0x0a, 0x14, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76,\n\t0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x08, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x12, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69,\n\t0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x63,\n\t0x6d, 0x64, 0x22, 0x5e, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x68, 0x69, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x22, 0x61, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x72,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x22, 0x4b, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,\n\t0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x22, 0x38, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6d, 0x64, 0x12, 0x1e, 0x0a, 0x0a,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,\n\t0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x81, 0x01, 0x0a,\n\t0x1c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x61, 0x0a,\n\t0x18, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63,\n\t0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d,\n\t0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x22, 0x8f, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x72, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d,\n\t0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,\n\t0x19, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x72,\n\t0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x05, 0x70, 0x72, 0x6f,\n\t0x6f, 0x66, 0x22, 0x8d, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x67,\n\t0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75,\n\t0x6c, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x33, 0x0a,\n\t0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41, 0x6d, 0x65,\n\t0x6e, 0x64, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65,\n\t0x6e, 0x74, 0x22, 0x31, 0x0a, 0x14, 0x46, 0x6c, 0x61, 0x67, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b,\n\t0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6d, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76,\n\t0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x76,\n\t0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x1a, 0x46, 0x6c, 0x61, 0x67, 0x48, 0x69, 0x6a,\n\t0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73,\n\t0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e,\n\t0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0x0a, 0x12, 0x55, 0x6e, 0x61, 0x72,\n\t0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x12, 0x36,\n\t0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06,\n\t0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x18, 0x55, 0x6e, 0x61, 0x72, 0x63,\n\t0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73,\n\t0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70,\n\t0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x33,\n\t0x0a, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x6d,\n\t0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x4d, 0x6f, 0x64, 0x69, 0x66,\n\t0x69, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x10, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22,\n\t0x7c, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74,\n\t0x65, 0x64, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x40, 0x0a,\n\t0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c,\n\t0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x22,\n\t0x54, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65,\n\t0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x63, 0x0a, 0x16, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65,\n\t0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,\n\t0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,\n\t0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0xcf, 0x06, 0x0a, 0x0f, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x61,\n\t0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43,\n\t0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,\n\t0x74, 0x12, 0x6a, 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c,\n\t0x74, 0x48, 0x00, 0x52, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5e, 0x0a,\n\t0x16, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x52,\n\t0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,\n\t0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5b, 0x0a,\n\t0x15, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f,\n\t0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41, 0x72, 0x63,\n\t0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73,\n\t0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6d, 0x0a, 0x1b, 0x63, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x19,\n\t0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6a, 0x0a, 0x1a, 0x72, 0x65, 0x76,\n\t0x65, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65,\n\t0x76, 0x65, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x76,\n\t0x65, 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x68, 0x0a, 0x1a, 0x66, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x69,\n\t0x6a, 0x61, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x72, 0x65, 0x73,\n\t0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x48, 0x69,\n\t0x6a, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6d, 0x64, 0x52, 0x65,\n\t0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x17, 0x66, 0x6c, 0x61, 0x67, 0x48, 0x69, 0x6a, 0x61,\n\t0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,\n\t0x61, 0x0a, 0x17, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70,\n\t0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x15, 0x75, 0x6e, 0x61,\n\t0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x75,\n\t0x6c, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x98, 0x01, 0x0a,\n\t0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x42, 0x0e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e,\n\t0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,\n\t0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_policy_cmd_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_policy_cmd_proto_rawDescData = file_sourcehub_acp_policy_cmd_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_policy_cmd_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_policy_cmd_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_policy_cmd_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_policy_cmd_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_policy_cmd_proto_rawDescData\n}\n\nvar file_sourcehub_acp_policy_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 18)\nvar file_sourcehub_acp_policy_cmd_proto_goTypes = []interface{}{\n\t(*PolicyCmd)(nil),                    // 0: sourcehub.acp.PolicyCmd\n\t(*SetRelationshipCmd)(nil),           // 1: sourcehub.acp.SetRelationshipCmd\n\t(*DeleteRelationshipCmd)(nil),        // 2: sourcehub.acp.DeleteRelationshipCmd\n\t(*RegisterObjectCmd)(nil),            // 3: sourcehub.acp.RegisterObjectCmd\n\t(*CommitRegistrationsCmd)(nil),       // 4: sourcehub.acp.CommitRegistrationsCmd\n\t(*CommitRegistrationsCmdResult)(nil), // 5: sourcehub.acp.CommitRegistrationsCmdResult\n\t(*RevealRegistrationCmd)(nil),        // 6: sourcehub.acp.RevealRegistrationCmd\n\t(*RevealRegistrationCmdResult)(nil),  // 7: sourcehub.acp.RevealRegistrationCmdResult\n\t(*FlagHijackAttemptCmd)(nil),         // 8: sourcehub.acp.FlagHijackAttemptCmd\n\t(*FlagHijackAttemptCmdResult)(nil),   // 9: sourcehub.acp.FlagHijackAttemptCmdResult\n\t(*UnarchiveObjectCmd)(nil),           // 10: sourcehub.acp.UnarchiveObjectCmd\n\t(*UnarchiveObjectCmdResult)(nil),     // 11: sourcehub.acp.UnarchiveObjectCmdResult\n\t(*ArchiveObjectCmd)(nil),             // 12: sourcehub.acp.ArchiveObjectCmd\n\t(*SetRelationshipCmdResult)(nil),     // 13: sourcehub.acp.SetRelationshipCmdResult\n\t(*DeleteRelationshipCmdResult)(nil),  // 14: sourcehub.acp.DeleteRelationshipCmdResult\n\t(*RegisterObjectCmdResult)(nil),      // 15: sourcehub.acp.RegisterObjectCmdResult\n\t(*ArchiveObjectCmdResult)(nil),       // 16: sourcehub.acp.ArchiveObjectCmdResult\n\t(*PolicyCmdResult)(nil),              // 17: sourcehub.acp.PolicyCmdResult\n\t(*types.Relationship)(nil),           // 18: sourcenetwork.acp_core.Relationship\n\t(*types.Object)(nil),                 // 19: sourcenetwork.acp_core.Object\n\t(*RegistrationsCommitment)(nil),      // 20: sourcehub.acp.RegistrationsCommitment\n\t(*RegistrationProof)(nil),            // 21: sourcehub.acp.RegistrationProof\n\t(*RelationshipRecord)(nil),           // 22: sourcehub.acp.RelationshipRecord\n\t(*AmendmentEvent)(nil),               // 23: sourcehub.acp.AmendmentEvent\n}\nvar file_sourcehub_acp_policy_cmd_proto_depIdxs = []int32{\n\t1,  // 0: sourcehub.acp.PolicyCmd.set_relationship_cmd:type_name -> sourcehub.acp.SetRelationshipCmd\n\t2,  // 1: sourcehub.acp.PolicyCmd.delete_relationship_cmd:type_name -> sourcehub.acp.DeleteRelationshipCmd\n\t3,  // 2: sourcehub.acp.PolicyCmd.register_object_cmd:type_name -> sourcehub.acp.RegisterObjectCmd\n\t12, // 3: sourcehub.acp.PolicyCmd.archive_object_cmd:type_name -> sourcehub.acp.ArchiveObjectCmd\n\t4,  // 4: sourcehub.acp.PolicyCmd.commit_registrations_cmd:type_name -> sourcehub.acp.CommitRegistrationsCmd\n\t6,  // 5: sourcehub.acp.PolicyCmd.reveal_registration_cmd:type_name -> sourcehub.acp.RevealRegistrationCmd\n\t8,  // 6: sourcehub.acp.PolicyCmd.flag_hijack_attempt_cmd:type_name -> sourcehub.acp.FlagHijackAttemptCmd\n\t10, // 7: sourcehub.acp.PolicyCmd.unarchive_object_cmd:type_name -> sourcehub.acp.UnarchiveObjectCmd\n\t18, // 8: sourcehub.acp.SetRelationshipCmd.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t18, // 9: sourcehub.acp.DeleteRelationshipCmd.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t19, // 10: sourcehub.acp.RegisterObjectCmd.object:type_name -> sourcenetwork.acp_core.Object\n\t20, // 11: sourcehub.acp.CommitRegistrationsCmdResult.registrations_commitment:type_name -> sourcehub.acp.RegistrationsCommitment\n\t21, // 12: sourcehub.acp.RevealRegistrationCmd.proof:type_name -> sourcehub.acp.RegistrationProof\n\t22, // 13: sourcehub.acp.RevealRegistrationCmdResult.record:type_name -> sourcehub.acp.RelationshipRecord\n\t23, // 14: sourcehub.acp.RevealRegistrationCmdResult.event:type_name -> sourcehub.acp.AmendmentEvent\n\t23, // 15: sourcehub.acp.FlagHijackAttemptCmdResult.event:type_name -> sourcehub.acp.AmendmentEvent\n\t19, // 16: sourcehub.acp.UnarchiveObjectCmd.object:type_name -> sourcenetwork.acp_core.Object\n\t22, // 17: sourcehub.acp.UnarchiveObjectCmdResult.record:type_name -> sourcehub.acp.RelationshipRecord\n\t19, // 18: sourcehub.acp.ArchiveObjectCmd.object:type_name -> sourcenetwork.acp_core.Object\n\t22, // 19: sourcehub.acp.SetRelationshipCmdResult.record:type_name -> sourcehub.acp.RelationshipRecord\n\t22, // 20: sourcehub.acp.RegisterObjectCmdResult.record:type_name -> sourcehub.acp.RelationshipRecord\n\t13, // 21: sourcehub.acp.PolicyCmdResult.set_relationship_result:type_name -> sourcehub.acp.SetRelationshipCmdResult\n\t14, // 22: sourcehub.acp.PolicyCmdResult.delete_relationship_result:type_name -> sourcehub.acp.DeleteRelationshipCmdResult\n\t15, // 23: sourcehub.acp.PolicyCmdResult.register_object_result:type_name -> sourcehub.acp.RegisterObjectCmdResult\n\t16, // 24: sourcehub.acp.PolicyCmdResult.archive_object_result:type_name -> sourcehub.acp.ArchiveObjectCmdResult\n\t5,  // 25: sourcehub.acp.PolicyCmdResult.commit_registrations_result:type_name -> sourcehub.acp.CommitRegistrationsCmdResult\n\t7,  // 26: sourcehub.acp.PolicyCmdResult.reveal_registration_result:type_name -> sourcehub.acp.RevealRegistrationCmdResult\n\t9,  // 27: sourcehub.acp.PolicyCmdResult.flag_hijack_attempt_result:type_name -> sourcehub.acp.FlagHijackAttemptCmdResult\n\t11, // 28: sourcehub.acp.PolicyCmdResult.unarchive_object_result:type_name -> sourcehub.acp.UnarchiveObjectCmdResult\n\t29, // [29:29] is the sub-list for method output_type\n\t29, // [29:29] is the sub-list for method input_type\n\t29, // [29:29] is the sub-list for extension type_name\n\t29, // [29:29] is the sub-list for extension extendee\n\t0,  // [0:29] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_policy_cmd_proto_init() }\nfunc file_sourcehub_acp_policy_cmd_proto_init() {\n\tif File_sourcehub_acp_policy_cmd_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_commitment_proto_init()\n\tfile_sourcehub_acp_record_proto_init()\n\tfile_sourcehub_acp_registration_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetRelationshipCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeleteRelationshipCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegisterObjectCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CommitRegistrationsCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CommitRegistrationsCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RevealRegistrationCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RevealRegistrationCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FlagHijackAttemptCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FlagHijackAttemptCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnarchiveObjectCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnarchiveObjectCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ArchiveObjectCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetRelationshipCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeleteRelationshipCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegisterObjectCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ArchiveObjectCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyCmdResult); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*PolicyCmd_SetRelationshipCmd)(nil),\n\t\t(*PolicyCmd_DeleteRelationshipCmd)(nil),\n\t\t(*PolicyCmd_RegisterObjectCmd)(nil),\n\t\t(*PolicyCmd_ArchiveObjectCmd)(nil),\n\t\t(*PolicyCmd_CommitRegistrationsCmd)(nil),\n\t\t(*PolicyCmd_RevealRegistrationCmd)(nil),\n\t\t(*PolicyCmd_FlagHijackAttemptCmd)(nil),\n\t\t(*PolicyCmd_UnarchiveObjectCmd)(nil),\n\t}\n\tfile_sourcehub_acp_policy_cmd_proto_msgTypes[17].OneofWrappers = []interface{}{\n\t\t(*PolicyCmdResult_SetRelationshipResult)(nil),\n\t\t(*PolicyCmdResult_DeleteRelationshipResult)(nil),\n\t\t(*PolicyCmdResult_RegisterObjectResult)(nil),\n\t\t(*PolicyCmdResult_ArchiveObjectResult)(nil),\n\t\t(*PolicyCmdResult_CommitRegistrationsResult)(nil),\n\t\t(*PolicyCmdResult_RevealRegistrationResult)(nil),\n\t\t(*PolicyCmdResult_FlagHijackAttemptResult)(nil),\n\t\t(*PolicyCmdResult_UnarchiveObjectResult)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_policy_cmd_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   18,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_policy_cmd_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_policy_cmd_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_policy_cmd_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_policy_cmd_proto = out.File\n\tfile_sourcehub_acp_policy_cmd_proto_rawDesc = nil\n\tfile_sourcehub_acp_policy_cmd_proto_goTypes = nil\n\tfile_sourcehub_acp_policy_cmd_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/query/v1beta1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryParamsRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryParamsRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryParamsRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil)\n\ntype fastReflection_QueryParamsRequest QueryParamsRequest\n\nfunc (x *QueryParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(x)\n}\n\nfunc (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{}\n\ntype fastReflection_QueryParamsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(nil)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryParamsResponse        protoreflect.MessageDescriptor\n\tfd_QueryParamsResponse_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryParamsResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryParamsResponse\")\n\tfd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil)\n\ntype fastReflection_QueryParamsResponse QueryParamsResponse\n\nfunc (x *QueryParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(x)\n}\n\nfunc (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{}\n\ntype fastReflection_QueryParamsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(nil)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_QueryParamsResponse_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryParamsResponse.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPolicyRequest    protoreflect.MessageDescriptor\n\tfd_QueryPolicyRequest_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryPolicyRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryPolicyRequest\")\n\tfd_QueryPolicyRequest_id = md_QueryPolicyRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPolicyRequest)(nil)\n\ntype fastReflection_QueryPolicyRequest QueryPolicyRequest\n\nfunc (x *QueryPolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyRequest)(x)\n}\n\nfunc (x *QueryPolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPolicyRequest_messageType fastReflection_QueryPolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPolicyRequest_messageType{}\n\ntype fastReflection_QueryPolicyRequest_messageType struct{}\n\nfunc (x fastReflection_QueryPolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyRequest)(nil)\n}\nfunc (x fastReflection_QueryPolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyRequest)\n}\nfunc (x fastReflection_QueryPolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_QueryPolicyRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.QueryPolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyRequest.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryPolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPolicyResponse        protoreflect.MessageDescriptor\n\tfd_QueryPolicyResponse_record protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryPolicyResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryPolicyResponse\")\n\tfd_QueryPolicyResponse_record = md_QueryPolicyResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPolicyResponse)(nil)\n\ntype fastReflection_QueryPolicyResponse QueryPolicyResponse\n\nfunc (x *QueryPolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyResponse)(x)\n}\n\nfunc (x *QueryPolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPolicyResponse_messageType fastReflection_QueryPolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPolicyResponse_messageType{}\n\ntype fastReflection_QueryPolicyResponse_messageType struct{}\n\nfunc (x fastReflection_QueryPolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyResponse)(nil)\n}\nfunc (x fastReflection_QueryPolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyResponse)\n}\nfunc (x fastReflection_QueryPolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_QueryPolicyResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\tx.Record = value.Message().Interface().(*PolicyRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(PolicyRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyResponse.record\":\n\t\tm := new(PolicyRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryPolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &PolicyRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPolicyIdsRequest            protoreflect.MessageDescriptor\n\tfd_QueryPolicyIdsRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryPolicyIdsRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryPolicyIdsRequest\")\n\tfd_QueryPolicyIdsRequest_pagination = md_QueryPolicyIdsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPolicyIdsRequest)(nil)\n\ntype fastReflection_QueryPolicyIdsRequest QueryPolicyIdsRequest\n\nfunc (x *QueryPolicyIdsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyIdsRequest)(x)\n}\n\nfunc (x *QueryPolicyIdsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPolicyIdsRequest_messageType fastReflection_QueryPolicyIdsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPolicyIdsRequest_messageType{}\n\ntype fastReflection_QueryPolicyIdsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryPolicyIdsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyIdsRequest)(nil)\n}\nfunc (x fastReflection_QueryPolicyIdsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyIdsRequest)\n}\nfunc (x fastReflection_QueryPolicyIdsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyIdsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyIdsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPolicyIdsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPolicyIdsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyIdsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPolicyIdsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryPolicyIdsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPolicyIdsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPolicyIdsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryPolicyIdsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPolicyIdsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPolicyIdsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPolicyIdsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyIdsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyIdsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryPolicyIdsResponse_1_list)(nil)\n\ntype _QueryPolicyIdsResponse_1_list struct {\n\tlist *[]string\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message QueryPolicyIdsResponse at list field Ids as it is not of Message kind\"))\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_QueryPolicyIdsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryPolicyIdsResponse            protoreflect.MessageDescriptor\n\tfd_QueryPolicyIdsResponse_ids        protoreflect.FieldDescriptor\n\tfd_QueryPolicyIdsResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryPolicyIdsResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryPolicyIdsResponse\")\n\tfd_QueryPolicyIdsResponse_ids = md_QueryPolicyIdsResponse.Fields().ByName(\"ids\")\n\tfd_QueryPolicyIdsResponse_pagination = md_QueryPolicyIdsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPolicyIdsResponse)(nil)\n\ntype fastReflection_QueryPolicyIdsResponse QueryPolicyIdsResponse\n\nfunc (x *QueryPolicyIdsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyIdsResponse)(x)\n}\n\nfunc (x *QueryPolicyIdsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPolicyIdsResponse_messageType fastReflection_QueryPolicyIdsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPolicyIdsResponse_messageType{}\n\ntype fastReflection_QueryPolicyIdsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryPolicyIdsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPolicyIdsResponse)(nil)\n}\nfunc (x fastReflection_QueryPolicyIdsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyIdsResponse)\n}\nfunc (x fastReflection_QueryPolicyIdsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyIdsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPolicyIdsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPolicyIdsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPolicyIdsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPolicyIdsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPolicyIdsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Ids) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryPolicyIdsResponse_1_list{list: &x.Ids})\n\t\tif !f(fd_QueryPolicyIdsResponse_ids, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryPolicyIdsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\treturn len(x.Ids) != 0\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\tx.Ids = nil\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\tif len(x.Ids) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryPolicyIdsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryPolicyIdsResponse_1_list{list: &x.Ids}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryPolicyIdsResponse_1_list)\n\t\tx.Ids = *clv.list\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\tif x.Ids == nil {\n\t\t\tx.Ids = []string{}\n\t\t}\n\t\tvalue := &_QueryPolicyIdsResponse_1_list{list: &x.Ids}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPolicyIdsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.ids\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_QueryPolicyIdsResponse_1_list{list: &list})\n\tcase \"sourcehub.acp.QueryPolicyIdsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryPolicyIdsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryPolicyIdsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPolicyIdsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryPolicyIdsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPolicyIdsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPolicyIdsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPolicyIdsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPolicyIdsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Ids) > 0 {\n\t\t\tfor _, s := range x.Ids {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Ids) > 0 {\n\t\t\tfor iNdEx := len(x.Ids) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.Ids[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.Ids[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Ids[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPolicyIdsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyIdsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPolicyIdsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Ids\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Ids = append(x.Ids, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryFilterRelationshipsRequest           protoreflect.MessageDescriptor\n\tfd_QueryFilterRelationshipsRequest_policy_id protoreflect.FieldDescriptor\n\tfd_QueryFilterRelationshipsRequest_selector  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryFilterRelationshipsRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryFilterRelationshipsRequest\")\n\tfd_QueryFilterRelationshipsRequest_policy_id = md_QueryFilterRelationshipsRequest.Fields().ByName(\"policy_id\")\n\tfd_QueryFilterRelationshipsRequest_selector = md_QueryFilterRelationshipsRequest.Fields().ByName(\"selector\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryFilterRelationshipsRequest)(nil)\n\ntype fastReflection_QueryFilterRelationshipsRequest QueryFilterRelationshipsRequest\n\nfunc (x *QueryFilterRelationshipsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryFilterRelationshipsRequest)(x)\n}\n\nfunc (x *QueryFilterRelationshipsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryFilterRelationshipsRequest_messageType fastReflection_QueryFilterRelationshipsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryFilterRelationshipsRequest_messageType{}\n\ntype fastReflection_QueryFilterRelationshipsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryFilterRelationshipsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryFilterRelationshipsRequest)(nil)\n}\nfunc (x fastReflection_QueryFilterRelationshipsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryFilterRelationshipsRequest)\n}\nfunc (x fastReflection_QueryFilterRelationshipsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryFilterRelationshipsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryFilterRelationshipsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryFilterRelationshipsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryFilterRelationshipsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryFilterRelationshipsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryFilterRelationshipsRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Selector != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Selector.ProtoReflect())\n\t\tif !f(fd_QueryFilterRelationshipsRequest_selector, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\treturn x.Selector != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\tx.Selector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\tvalue := x.Selector\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\tx.Selector = value.Message().Interface().(*types.RelationshipSelector)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\tif x.Selector == nil {\n\t\t\tx.Selector = new(types.RelationshipSelector)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Selector.ProtoReflect())\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.QueryFilterRelationshipsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryFilterRelationshipsRequest.selector\":\n\t\tm := new(types.RelationshipSelector)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryFilterRelationshipsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryFilterRelationshipsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Selector != nil {\n\t\t\tl = options.Size(x.Selector)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Selector != nil {\n\t\t\tencoded, err := options.Marshal(x.Selector)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryFilterRelationshipsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryFilterRelationshipsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Selector\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Selector == nil {\n\t\t\t\t\tx.Selector = &types.RelationshipSelector{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Selector); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryFilterRelationshipsResponse_1_list)(nil)\n\ntype _QueryFilterRelationshipsResponse_1_list struct {\n\tlist *[]*RelationshipRecord\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RelationshipRecord)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RelationshipRecord)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(RelationshipRecord)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(RelationshipRecord)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryFilterRelationshipsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryFilterRelationshipsResponse         protoreflect.MessageDescriptor\n\tfd_QueryFilterRelationshipsResponse_records protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryFilterRelationshipsResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryFilterRelationshipsResponse\")\n\tfd_QueryFilterRelationshipsResponse_records = md_QueryFilterRelationshipsResponse.Fields().ByName(\"records\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryFilterRelationshipsResponse)(nil)\n\ntype fastReflection_QueryFilterRelationshipsResponse QueryFilterRelationshipsResponse\n\nfunc (x *QueryFilterRelationshipsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryFilterRelationshipsResponse)(x)\n}\n\nfunc (x *QueryFilterRelationshipsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryFilterRelationshipsResponse_messageType fastReflection_QueryFilterRelationshipsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryFilterRelationshipsResponse_messageType{}\n\ntype fastReflection_QueryFilterRelationshipsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryFilterRelationshipsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryFilterRelationshipsResponse)(nil)\n}\nfunc (x fastReflection_QueryFilterRelationshipsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryFilterRelationshipsResponse)\n}\nfunc (x fastReflection_QueryFilterRelationshipsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryFilterRelationshipsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryFilterRelationshipsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryFilterRelationshipsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryFilterRelationshipsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryFilterRelationshipsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Records) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryFilterRelationshipsResponse_1_list{list: &x.Records})\n\t\tif !f(fd_QueryFilterRelationshipsResponse_records, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\treturn len(x.Records) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\tx.Records = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\tif len(x.Records) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryFilterRelationshipsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryFilterRelationshipsResponse_1_list{list: &x.Records}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryFilterRelationshipsResponse_1_list)\n\t\tx.Records = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\tif x.Records == nil {\n\t\t\tx.Records = []*RelationshipRecord{}\n\t\t}\n\t\tvalue := &_QueryFilterRelationshipsResponse_1_list{list: &x.Records}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryFilterRelationshipsResponse.records\":\n\t\tlist := []*RelationshipRecord{}\n\t\treturn protoreflect.ValueOfList(&_QueryFilterRelationshipsResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryFilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryFilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryFilterRelationshipsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryFilterRelationshipsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Records) > 0 {\n\t\t\tfor _, e := range x.Records {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Records) > 0 {\n\t\t\tfor iNdEx := len(x.Records) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Records[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryFilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryFilterRelationshipsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryFilterRelationshipsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Records\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Records = append(x.Records, &RelationshipRecord{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Records[len(x.Records)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryVerifyAccessRequestRequest                protoreflect.MessageDescriptor\n\tfd_QueryVerifyAccessRequestRequest_policy_id      protoreflect.FieldDescriptor\n\tfd_QueryVerifyAccessRequestRequest_access_request protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryVerifyAccessRequestRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryVerifyAccessRequestRequest\")\n\tfd_QueryVerifyAccessRequestRequest_policy_id = md_QueryVerifyAccessRequestRequest.Fields().ByName(\"policy_id\")\n\tfd_QueryVerifyAccessRequestRequest_access_request = md_QueryVerifyAccessRequestRequest.Fields().ByName(\"access_request\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryVerifyAccessRequestRequest)(nil)\n\ntype fastReflection_QueryVerifyAccessRequestRequest QueryVerifyAccessRequestRequest\n\nfunc (x *QueryVerifyAccessRequestRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryVerifyAccessRequestRequest)(x)\n}\n\nfunc (x *QueryVerifyAccessRequestRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryVerifyAccessRequestRequest_messageType fastReflection_QueryVerifyAccessRequestRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryVerifyAccessRequestRequest_messageType{}\n\ntype fastReflection_QueryVerifyAccessRequestRequest_messageType struct{}\n\nfunc (x fastReflection_QueryVerifyAccessRequestRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryVerifyAccessRequestRequest)(nil)\n}\nfunc (x fastReflection_QueryVerifyAccessRequestRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryVerifyAccessRequestRequest)\n}\nfunc (x fastReflection_QueryVerifyAccessRequestRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryVerifyAccessRequestRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryVerifyAccessRequestRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryVerifyAccessRequestRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryVerifyAccessRequestRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryVerifyAccessRequestRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryVerifyAccessRequestRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AccessRequest != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\t\tif !f(fd_QueryVerifyAccessRequestRequest_access_request, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\treturn x.AccessRequest != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\tx.AccessRequest = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\tvalue := x.AccessRequest\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\tx.AccessRequest = value.Message().Interface().(*types.AccessRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\tif x.AccessRequest == nil {\n\t\t\tx.AccessRequest = new(types.AccessRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.QueryVerifyAccessRequestRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestRequest.access_request\":\n\t\tm := new(types.AccessRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryVerifyAccessRequestRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryVerifyAccessRequestRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tl = options.Size(x.AccessRequest)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tencoded, err := options.Marshal(x.AccessRequest)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryVerifyAccessRequestRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryVerifyAccessRequestRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AccessRequest\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AccessRequest == nil {\n\t\t\t\t\tx.AccessRequest = &types.AccessRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessRequest); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryVerifyAccessRequestResponse       protoreflect.MessageDescriptor\n\tfd_QueryVerifyAccessRequestResponse_valid protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryVerifyAccessRequestResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryVerifyAccessRequestResponse\")\n\tfd_QueryVerifyAccessRequestResponse_valid = md_QueryVerifyAccessRequestResponse.Fields().ByName(\"valid\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryVerifyAccessRequestResponse)(nil)\n\ntype fastReflection_QueryVerifyAccessRequestResponse QueryVerifyAccessRequestResponse\n\nfunc (x *QueryVerifyAccessRequestResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryVerifyAccessRequestResponse)(x)\n}\n\nfunc (x *QueryVerifyAccessRequestResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryVerifyAccessRequestResponse_messageType fastReflection_QueryVerifyAccessRequestResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryVerifyAccessRequestResponse_messageType{}\n\ntype fastReflection_QueryVerifyAccessRequestResponse_messageType struct{}\n\nfunc (x fastReflection_QueryVerifyAccessRequestResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryVerifyAccessRequestResponse)(nil)\n}\nfunc (x fastReflection_QueryVerifyAccessRequestResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryVerifyAccessRequestResponse)\n}\nfunc (x fastReflection_QueryVerifyAccessRequestResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryVerifyAccessRequestResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryVerifyAccessRequestResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryVerifyAccessRequestResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryVerifyAccessRequestResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryVerifyAccessRequestResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Valid != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Valid)\n\t\tif !f(fd_QueryVerifyAccessRequestResponse_valid, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\treturn x.Valid != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\tx.Valid = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\tvalue := x.Valid\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\tx.Valid = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\tpanic(fmt.Errorf(\"field valid of message sourcehub.acp.QueryVerifyAccessRequestResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryVerifyAccessRequestResponse.valid\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryVerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryVerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryVerifyAccessRequestResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryVerifyAccessRequestResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Valid {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Valid {\n\t\t\ti--\n\t\t\tif x.Valid {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryVerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryVerifyAccessRequestResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryVerifyAccessRequestResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Valid = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryValidatePolicyRequest              protoreflect.MessageDescriptor\n\tfd_QueryValidatePolicyRequest_policy       protoreflect.FieldDescriptor\n\tfd_QueryValidatePolicyRequest_marshal_type protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryValidatePolicyRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryValidatePolicyRequest\")\n\tfd_QueryValidatePolicyRequest_policy = md_QueryValidatePolicyRequest.Fields().ByName(\"policy\")\n\tfd_QueryValidatePolicyRequest_marshal_type = md_QueryValidatePolicyRequest.Fields().ByName(\"marshal_type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryValidatePolicyRequest)(nil)\n\ntype fastReflection_QueryValidatePolicyRequest QueryValidatePolicyRequest\n\nfunc (x *QueryValidatePolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryValidatePolicyRequest)(x)\n}\n\nfunc (x *QueryValidatePolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryValidatePolicyRequest_messageType fastReflection_QueryValidatePolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryValidatePolicyRequest_messageType{}\n\ntype fastReflection_QueryValidatePolicyRequest_messageType struct{}\n\nfunc (x fastReflection_QueryValidatePolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryValidatePolicyRequest)(nil)\n}\nfunc (x fastReflection_QueryValidatePolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryValidatePolicyRequest)\n}\nfunc (x fastReflection_QueryValidatePolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryValidatePolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryValidatePolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryValidatePolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryValidatePolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryValidatePolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryValidatePolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_QueryValidatePolicyRequest_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_QueryValidatePolicyRequest_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = (types.PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcehub.acp.QueryValidatePolicyRequest is not mutable\"))\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcehub.acp.QueryValidatePolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryValidatePolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryValidatePolicyRequest.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryValidatePolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryValidatePolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryValidatePolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryValidatePolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryValidatePolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryValidatePolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryValidatePolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryValidatePolicyResponse           protoreflect.MessageDescriptor\n\tfd_QueryValidatePolicyResponse_valid     protoreflect.FieldDescriptor\n\tfd_QueryValidatePolicyResponse_error_msg protoreflect.FieldDescriptor\n\tfd_QueryValidatePolicyResponse_policy    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryValidatePolicyResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryValidatePolicyResponse\")\n\tfd_QueryValidatePolicyResponse_valid = md_QueryValidatePolicyResponse.Fields().ByName(\"valid\")\n\tfd_QueryValidatePolicyResponse_error_msg = md_QueryValidatePolicyResponse.Fields().ByName(\"error_msg\")\n\tfd_QueryValidatePolicyResponse_policy = md_QueryValidatePolicyResponse.Fields().ByName(\"policy\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryValidatePolicyResponse)(nil)\n\ntype fastReflection_QueryValidatePolicyResponse QueryValidatePolicyResponse\n\nfunc (x *QueryValidatePolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryValidatePolicyResponse)(x)\n}\n\nfunc (x *QueryValidatePolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryValidatePolicyResponse_messageType fastReflection_QueryValidatePolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryValidatePolicyResponse_messageType{}\n\ntype fastReflection_QueryValidatePolicyResponse_messageType struct{}\n\nfunc (x fastReflection_QueryValidatePolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryValidatePolicyResponse)(nil)\n}\nfunc (x fastReflection_QueryValidatePolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryValidatePolicyResponse)\n}\nfunc (x fastReflection_QueryValidatePolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryValidatePolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryValidatePolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryValidatePolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryValidatePolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryValidatePolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryValidatePolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Valid != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Valid)\n\t\tif !f(fd_QueryValidatePolicyResponse_valid, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ErrorMsg != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ErrorMsg)\n\t\tif !f(fd_QueryValidatePolicyResponse_error_msg, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Policy != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\t\tif !f(fd_QueryValidatePolicyResponse_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\treturn x.Valid != false\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\treturn x.ErrorMsg != \"\"\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\treturn x.Policy != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\tx.Valid = false\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\tx.ErrorMsg = \"\"\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\tx.Policy = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\tvalue := x.Valid\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\tvalue := x.ErrorMsg\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\tx.Valid = value.Bool()\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\tx.ErrorMsg = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\tx.Policy = value.Message().Interface().(*types.Policy)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\tif x.Policy == nil {\n\t\t\tx.Policy = new(types.Policy)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\tpanic(fmt.Errorf(\"field valid of message sourcehub.acp.QueryValidatePolicyResponse is not mutable\"))\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\tpanic(fmt.Errorf(\"field error_msg of message sourcehub.acp.QueryValidatePolicyResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryValidatePolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.valid\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.error_msg\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryValidatePolicyResponse.policy\":\n\t\tm := new(types.Policy)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryValidatePolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryValidatePolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryValidatePolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryValidatePolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryValidatePolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryValidatePolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Valid {\n\t\t\tn += 2\n\t\t}\n\t\tl = len(x.ErrorMsg)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ErrorMsg) > 0 {\n\t\t\ti -= len(x.ErrorMsg)\n\t\t\tcopy(dAtA[i:], x.ErrorMsg)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ErrorMsg)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Valid {\n\t\t\ti--\n\t\t\tif x.Valid {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryValidatePolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryValidatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Valid = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ErrorMsg\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ErrorMsg = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Policy == nil {\n\t\t\t\t\tx.Policy = &types.Policy{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policy); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryAccessDecisionRequest    protoreflect.MessageDescriptor\n\tfd_QueryAccessDecisionRequest_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryAccessDecisionRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryAccessDecisionRequest\")\n\tfd_QueryAccessDecisionRequest_id = md_QueryAccessDecisionRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAccessDecisionRequest)(nil)\n\ntype fastReflection_QueryAccessDecisionRequest QueryAccessDecisionRequest\n\nfunc (x *QueryAccessDecisionRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAccessDecisionRequest)(x)\n}\n\nfunc (x *QueryAccessDecisionRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAccessDecisionRequest_messageType fastReflection_QueryAccessDecisionRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAccessDecisionRequest_messageType{}\n\ntype fastReflection_QueryAccessDecisionRequest_messageType struct{}\n\nfunc (x fastReflection_QueryAccessDecisionRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAccessDecisionRequest)(nil)\n}\nfunc (x fastReflection_QueryAccessDecisionRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAccessDecisionRequest)\n}\nfunc (x fastReflection_QueryAccessDecisionRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAccessDecisionRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAccessDecisionRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAccessDecisionRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAccessDecisionRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAccessDecisionRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAccessDecisionRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_QueryAccessDecisionRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.QueryAccessDecisionRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAccessDecisionRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionRequest.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAccessDecisionRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryAccessDecisionRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAccessDecisionRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAccessDecisionRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAccessDecisionRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAccessDecisionRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAccessDecisionRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryAccessDecisionResponse          protoreflect.MessageDescriptor\n\tfd_QueryAccessDecisionResponse_decision protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryAccessDecisionResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryAccessDecisionResponse\")\n\tfd_QueryAccessDecisionResponse_decision = md_QueryAccessDecisionResponse.Fields().ByName(\"decision\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAccessDecisionResponse)(nil)\n\ntype fastReflection_QueryAccessDecisionResponse QueryAccessDecisionResponse\n\nfunc (x *QueryAccessDecisionResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAccessDecisionResponse)(x)\n}\n\nfunc (x *QueryAccessDecisionResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAccessDecisionResponse_messageType fastReflection_QueryAccessDecisionResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAccessDecisionResponse_messageType{}\n\ntype fastReflection_QueryAccessDecisionResponse_messageType struct{}\n\nfunc (x fastReflection_QueryAccessDecisionResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAccessDecisionResponse)(nil)\n}\nfunc (x fastReflection_QueryAccessDecisionResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAccessDecisionResponse)\n}\nfunc (x fastReflection_QueryAccessDecisionResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAccessDecisionResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAccessDecisionResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAccessDecisionResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAccessDecisionResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAccessDecisionResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAccessDecisionResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Decision != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\t\tif !f(fd_QueryAccessDecisionResponse_decision, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\treturn x.Decision != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\tx.Decision = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\tvalue := x.Decision\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\tx.Decision = value.Message().Interface().(*AccessDecision)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\tif x.Decision == nil {\n\t\t\tx.Decision = new(AccessDecision)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAccessDecisionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryAccessDecisionResponse.decision\":\n\t\tm := new(AccessDecision)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryAccessDecisionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryAccessDecisionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAccessDecisionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryAccessDecisionResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAccessDecisionResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAccessDecisionResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAccessDecisionResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAccessDecisionResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Decision != nil {\n\t\t\tl = options.Size(x.Decision)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tencoded, err := options.Marshal(x.Decision)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAccessDecisionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAccessDecisionResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAccessDecisionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Decision == nil {\n\t\t\t\t\tx.Decision = &AccessDecision{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Decision); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryObjectOwnerRequest           protoreflect.MessageDescriptor\n\tfd_QueryObjectOwnerRequest_policy_id protoreflect.FieldDescriptor\n\tfd_QueryObjectOwnerRequest_object    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryObjectOwnerRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryObjectOwnerRequest\")\n\tfd_QueryObjectOwnerRequest_policy_id = md_QueryObjectOwnerRequest.Fields().ByName(\"policy_id\")\n\tfd_QueryObjectOwnerRequest_object = md_QueryObjectOwnerRequest.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryObjectOwnerRequest)(nil)\n\ntype fastReflection_QueryObjectOwnerRequest QueryObjectOwnerRequest\n\nfunc (x *QueryObjectOwnerRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryObjectOwnerRequest)(x)\n}\n\nfunc (x *QueryObjectOwnerRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryObjectOwnerRequest_messageType fastReflection_QueryObjectOwnerRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryObjectOwnerRequest_messageType{}\n\ntype fastReflection_QueryObjectOwnerRequest_messageType struct{}\n\nfunc (x fastReflection_QueryObjectOwnerRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryObjectOwnerRequest)(nil)\n}\nfunc (x fastReflection_QueryObjectOwnerRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryObjectOwnerRequest)\n}\nfunc (x fastReflection_QueryObjectOwnerRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryObjectOwnerRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryObjectOwnerRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryObjectOwnerRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryObjectOwnerRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryObjectOwnerRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryObjectOwnerRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryObjectOwnerRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_QueryObjectOwnerRequest_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.QueryObjectOwnerRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryObjectOwnerRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryObjectOwnerRequest.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryObjectOwnerRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryObjectOwnerRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryObjectOwnerRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryObjectOwnerRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryObjectOwnerRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryObjectOwnerRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryObjectOwnerRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryObjectOwnerResponse               protoreflect.MessageDescriptor\n\tfd_QueryObjectOwnerResponse_is_registered protoreflect.FieldDescriptor\n\tfd_QueryObjectOwnerResponse_record        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryObjectOwnerResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryObjectOwnerResponse\")\n\tfd_QueryObjectOwnerResponse_is_registered = md_QueryObjectOwnerResponse.Fields().ByName(\"is_registered\")\n\tfd_QueryObjectOwnerResponse_record = md_QueryObjectOwnerResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryObjectOwnerResponse)(nil)\n\ntype fastReflection_QueryObjectOwnerResponse QueryObjectOwnerResponse\n\nfunc (x *QueryObjectOwnerResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryObjectOwnerResponse)(x)\n}\n\nfunc (x *QueryObjectOwnerResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryObjectOwnerResponse_messageType fastReflection_QueryObjectOwnerResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryObjectOwnerResponse_messageType{}\n\ntype fastReflection_QueryObjectOwnerResponse_messageType struct{}\n\nfunc (x fastReflection_QueryObjectOwnerResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryObjectOwnerResponse)(nil)\n}\nfunc (x fastReflection_QueryObjectOwnerResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryObjectOwnerResponse)\n}\nfunc (x fastReflection_QueryObjectOwnerResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryObjectOwnerResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryObjectOwnerResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryObjectOwnerResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryObjectOwnerResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryObjectOwnerResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryObjectOwnerResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.IsRegistered != false {\n\t\tvalue := protoreflect.ValueOfBool(x.IsRegistered)\n\t\tif !f(fd_QueryObjectOwnerResponse_is_registered, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_QueryObjectOwnerResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\treturn x.IsRegistered != false\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\tx.IsRegistered = false\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\tvalue := x.IsRegistered\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\tx.IsRegistered = value.Bool()\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\tpanic(fmt.Errorf(\"field is_registered of message sourcehub.acp.QueryObjectOwnerResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryObjectOwnerResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.is_registered\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.QueryObjectOwnerResponse.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryObjectOwnerResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryObjectOwnerResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryObjectOwnerResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryObjectOwnerResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryObjectOwnerResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryObjectOwnerResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryObjectOwnerResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryObjectOwnerResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.IsRegistered {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.IsRegistered {\n\t\t\ti--\n\t\t\tif x.IsRegistered {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryObjectOwnerResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryObjectOwnerResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryObjectOwnerResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IsRegistered\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.IsRegistered = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryRegistrationsCommitmentRequest    protoreflect.MessageDescriptor\n\tfd_QueryRegistrationsCommitmentRequest_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryRegistrationsCommitmentRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryRegistrationsCommitmentRequest\")\n\tfd_QueryRegistrationsCommitmentRequest_id = md_QueryRegistrationsCommitmentRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryRegistrationsCommitmentRequest)(nil)\n\ntype fastReflection_QueryRegistrationsCommitmentRequest QueryRegistrationsCommitmentRequest\n\nfunc (x *QueryRegistrationsCommitmentRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentRequest)(x)\n}\n\nfunc (x *QueryRegistrationsCommitmentRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryRegistrationsCommitmentRequest_messageType fastReflection_QueryRegistrationsCommitmentRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryRegistrationsCommitmentRequest_messageType{}\n\ntype fastReflection_QueryRegistrationsCommitmentRequest_messageType struct{}\n\nfunc (x fastReflection_QueryRegistrationsCommitmentRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentRequest)(nil)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentRequest)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryRegistrationsCommitmentRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryRegistrationsCommitmentRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Id)\n\t\tif !f(fd_QueryRegistrationsCommitmentRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\treturn x.Id != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\tx.Id = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\tx.Id = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.QueryRegistrationsCommitmentRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentRequest.id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryRegistrationsCommitmentRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryRegistrationsCommitmentRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Id != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Id))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Id != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Id))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Id = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Id |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryRegistrationsCommitmentResponse                          protoreflect.MessageDescriptor\n\tfd_QueryRegistrationsCommitmentResponse_registrations_commitment protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryRegistrationsCommitmentResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryRegistrationsCommitmentResponse\")\n\tfd_QueryRegistrationsCommitmentResponse_registrations_commitment = md_QueryRegistrationsCommitmentResponse.Fields().ByName(\"registrations_commitment\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryRegistrationsCommitmentResponse)(nil)\n\ntype fastReflection_QueryRegistrationsCommitmentResponse QueryRegistrationsCommitmentResponse\n\nfunc (x *QueryRegistrationsCommitmentResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentResponse)(x)\n}\n\nfunc (x *QueryRegistrationsCommitmentResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryRegistrationsCommitmentResponse_messageType fastReflection_QueryRegistrationsCommitmentResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryRegistrationsCommitmentResponse_messageType{}\n\ntype fastReflection_QueryRegistrationsCommitmentResponse_messageType struct{}\n\nfunc (x fastReflection_QueryRegistrationsCommitmentResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentResponse)(nil)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentResponse)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryRegistrationsCommitmentResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryRegistrationsCommitmentResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RegistrationsCommitment != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.RegistrationsCommitment.ProtoReflect())\n\t\tif !f(fd_QueryRegistrationsCommitmentResponse_registrations_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\treturn x.RegistrationsCommitment != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\tx.RegistrationsCommitment = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\tvalue := x.RegistrationsCommitment\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\tx.RegistrationsCommitment = value.Message().Interface().(*RegistrationsCommitment)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\tif x.RegistrationsCommitment == nil {\n\t\t\tx.RegistrationsCommitment = new(RegistrationsCommitment)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.RegistrationsCommitment.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment\":\n\t\tm := new(RegistrationsCommitment)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryRegistrationsCommitmentResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryRegistrationsCommitmentResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RegistrationsCommitment != nil {\n\t\t\tl = options.Size(x.RegistrationsCommitment)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RegistrationsCommitment != nil {\n\t\t\tencoded, err := options.Marshal(x.RegistrationsCommitment)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.RegistrationsCommitment == nil {\n\t\t\t\t\tx.RegistrationsCommitment = &RegistrationsCommitment{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RegistrationsCommitment); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryRegistrationsCommitmentByCommitmentRequest            protoreflect.MessageDescriptor\n\tfd_QueryRegistrationsCommitmentByCommitmentRequest_commitment protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryRegistrationsCommitmentByCommitmentRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryRegistrationsCommitmentByCommitmentRequest\")\n\tfd_QueryRegistrationsCommitmentByCommitmentRequest_commitment = md_QueryRegistrationsCommitmentByCommitmentRequest.Fields().ByName(\"commitment\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryRegistrationsCommitmentByCommitmentRequest)(nil)\n\ntype fastReflection_QueryRegistrationsCommitmentByCommitmentRequest QueryRegistrationsCommitmentByCommitmentRequest\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentByCommitmentRequest)(x)\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType{}\n\ntype fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType struct{}\n\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentByCommitmentRequest)(nil)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentByCommitmentRequest)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentByCommitmentRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentByCommitmentRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryRegistrationsCommitmentByCommitmentRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentByCommitmentRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryRegistrationsCommitmentByCommitmentRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Commitment) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Commitment)\n\t\tif !f(fd_QueryRegistrationsCommitmentByCommitmentRequest_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\treturn len(x.Commitment) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\tx.Commitment = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\tvalue := x.Commitment\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\tx.Commitment = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\tpanic(fmt.Errorf(\"field commitment of message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest.commitment\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Commitment)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Commitment) > 0 {\n\t\t\ti -= len(x.Commitment)\n\t\t\tcopy(dAtA[i:], x.Commitment)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Commitment)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Commitment = append(x.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Commitment == nil {\n\t\t\t\t\tx.Commitment = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryRegistrationsCommitmentByCommitmentResponse_1_list)(nil)\n\ntype _QueryRegistrationsCommitmentByCommitmentResponse_1_list struct {\n\tlist *[]*RegistrationsCommitment\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RegistrationsCommitment)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RegistrationsCommitment)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(RegistrationsCommitment)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(RegistrationsCommitment)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryRegistrationsCommitmentByCommitmentResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryRegistrationsCommitmentByCommitmentResponse                           protoreflect.MessageDescriptor\n\tfd_QueryRegistrationsCommitmentByCommitmentResponse_registrations_commitments protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryRegistrationsCommitmentByCommitmentResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryRegistrationsCommitmentByCommitmentResponse\")\n\tfd_QueryRegistrationsCommitmentByCommitmentResponse_registrations_commitments = md_QueryRegistrationsCommitmentByCommitmentResponse.Fields().ByName(\"registrations_commitments\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryRegistrationsCommitmentByCommitmentResponse)(nil)\n\ntype fastReflection_QueryRegistrationsCommitmentByCommitmentResponse QueryRegistrationsCommitmentByCommitmentResponse\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentByCommitmentResponse)(x)\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType{}\n\ntype fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType struct{}\n\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryRegistrationsCommitmentByCommitmentResponse)(nil)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentByCommitmentResponse)\n}\nfunc (x fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentByCommitmentResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryRegistrationsCommitmentByCommitmentResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryRegistrationsCommitmentByCommitmentResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryRegistrationsCommitmentByCommitmentResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryRegistrationsCommitmentByCommitmentResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.RegistrationsCommitments) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryRegistrationsCommitmentByCommitmentResponse_1_list{list: &x.RegistrationsCommitments})\n\t\tif !f(fd_QueryRegistrationsCommitmentByCommitmentResponse_registrations_commitments, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\treturn len(x.RegistrationsCommitments) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\tx.RegistrationsCommitments = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\tif len(x.RegistrationsCommitments) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryRegistrationsCommitmentByCommitmentResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryRegistrationsCommitmentByCommitmentResponse_1_list{list: &x.RegistrationsCommitments}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryRegistrationsCommitmentByCommitmentResponse_1_list)\n\t\tx.RegistrationsCommitments = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\tif x.RegistrationsCommitments == nil {\n\t\t\tx.RegistrationsCommitments = []*RegistrationsCommitment{}\n\t\t}\n\t\tvalue := &_QueryRegistrationsCommitmentByCommitmentResponse_1_list{list: &x.RegistrationsCommitments}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments\":\n\t\tlist := []*RegistrationsCommitment{}\n\t\treturn protoreflect.ValueOfList(&_QueryRegistrationsCommitmentByCommitmentResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryRegistrationsCommitmentByCommitmentResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.RegistrationsCommitments) > 0 {\n\t\t\tfor _, e := range x.RegistrationsCommitments {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.RegistrationsCommitments) > 0 {\n\t\t\tfor iNdEx := len(x.RegistrationsCommitments) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.RegistrationsCommitments[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryRegistrationsCommitmentByCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitments\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RegistrationsCommitments = append(x.RegistrationsCommitments, &RegistrationsCommitment{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RegistrationsCommitments[len(x.RegistrationsCommitments)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryGenerateCommitmentRequest_2_list)(nil)\n\ntype _QueryGenerateCommitmentRequest_2_list struct {\n\tlist *[]*types.Object\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*types.Object)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*types.Object)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) AppendMutable() protoreflect.Value {\n\tv := new(types.Object)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) NewElement() protoreflect.Value {\n\tv := new(types.Object)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentRequest_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryGenerateCommitmentRequest           protoreflect.MessageDescriptor\n\tfd_QueryGenerateCommitmentRequest_policy_id protoreflect.FieldDescriptor\n\tfd_QueryGenerateCommitmentRequest_objects   protoreflect.FieldDescriptor\n\tfd_QueryGenerateCommitmentRequest_actor     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryGenerateCommitmentRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryGenerateCommitmentRequest\")\n\tfd_QueryGenerateCommitmentRequest_policy_id = md_QueryGenerateCommitmentRequest.Fields().ByName(\"policy_id\")\n\tfd_QueryGenerateCommitmentRequest_objects = md_QueryGenerateCommitmentRequest.Fields().ByName(\"objects\")\n\tfd_QueryGenerateCommitmentRequest_actor = md_QueryGenerateCommitmentRequest.Fields().ByName(\"actor\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryGenerateCommitmentRequest)(nil)\n\ntype fastReflection_QueryGenerateCommitmentRequest QueryGenerateCommitmentRequest\n\nfunc (x *QueryGenerateCommitmentRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryGenerateCommitmentRequest)(x)\n}\n\nfunc (x *QueryGenerateCommitmentRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryGenerateCommitmentRequest_messageType fastReflection_QueryGenerateCommitmentRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryGenerateCommitmentRequest_messageType{}\n\ntype fastReflection_QueryGenerateCommitmentRequest_messageType struct{}\n\nfunc (x fastReflection_QueryGenerateCommitmentRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryGenerateCommitmentRequest)(nil)\n}\nfunc (x fastReflection_QueryGenerateCommitmentRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryGenerateCommitmentRequest)\n}\nfunc (x fastReflection_QueryGenerateCommitmentRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryGenerateCommitmentRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryGenerateCommitmentRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryGenerateCommitmentRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryGenerateCommitmentRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryGenerateCommitmentRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryGenerateCommitmentRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Objects) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryGenerateCommitmentRequest_2_list{list: &x.Objects})\n\t\tif !f(fd_QueryGenerateCommitmentRequest_objects, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\t\tif !f(fd_QueryGenerateCommitmentRequest_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\treturn len(x.Objects) != 0\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\treturn x.Actor != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\tx.Objects = nil\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\tx.Actor = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\tif len(x.Objects) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentRequest_2_list{})\n\t\t}\n\t\tlistValue := &_QueryGenerateCommitmentRequest_2_list{list: &x.Objects}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryGenerateCommitmentRequest_2_list)\n\t\tx.Objects = *clv.list\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\tx.Actor = value.Message().Interface().(*types.Actor)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\tif x.Objects == nil {\n\t\t\tx.Objects = []*types.Object{}\n\t\t}\n\t\tvalue := &_QueryGenerateCommitmentRequest_2_list{list: &x.Objects}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\tif x.Actor == nil {\n\t\t\tx.Actor = new(types.Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.QueryGenerateCommitmentRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.objects\":\n\t\tlist := []*types.Object{}\n\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentRequest_2_list{list: &list})\n\tcase \"sourcehub.acp.QueryGenerateCommitmentRequest.actor\":\n\t\tm := new(types.Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryGenerateCommitmentRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryGenerateCommitmentRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Objects) > 0 {\n\t\t\tfor _, e := range x.Objects {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tl = options.Size(x.Actor)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tencoded, err := options.Marshal(x.Actor)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Objects) > 0 {\n\t\t\tfor iNdEx := len(x.Objects) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Objects[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryGenerateCommitmentRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryGenerateCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Objects\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Objects = append(x.Objects, &types.Object{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Objects[len(x.Objects)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Actor == nil {\n\t\t\t\t\tx.Actor = &types.Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Actor); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryGenerateCommitmentResponse_3_list)(nil)\n\ntype _QueryGenerateCommitmentResponse_3_list struct {\n\tlist *[]*RegistrationProof\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RegistrationProof)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RegistrationProof)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) AppendMutable() protoreflect.Value {\n\tv := new(RegistrationProof)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) NewElement() protoreflect.Value {\n\tv := new(RegistrationProof)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_QueryGenerateCommitmentResponse_4_list)(nil)\n\ntype _QueryGenerateCommitmentResponse_4_list struct {\n\tlist *[]string\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message QueryGenerateCommitmentResponse at list field ProofsJson as it is not of Message kind\"))\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_QueryGenerateCommitmentResponse_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryGenerateCommitmentResponse                protoreflect.MessageDescriptor\n\tfd_QueryGenerateCommitmentResponse_commitment     protoreflect.FieldDescriptor\n\tfd_QueryGenerateCommitmentResponse_hex_commitment protoreflect.FieldDescriptor\n\tfd_QueryGenerateCommitmentResponse_proofs         protoreflect.FieldDescriptor\n\tfd_QueryGenerateCommitmentResponse_proofs_json    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryGenerateCommitmentResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryGenerateCommitmentResponse\")\n\tfd_QueryGenerateCommitmentResponse_commitment = md_QueryGenerateCommitmentResponse.Fields().ByName(\"commitment\")\n\tfd_QueryGenerateCommitmentResponse_hex_commitment = md_QueryGenerateCommitmentResponse.Fields().ByName(\"hex_commitment\")\n\tfd_QueryGenerateCommitmentResponse_proofs = md_QueryGenerateCommitmentResponse.Fields().ByName(\"proofs\")\n\tfd_QueryGenerateCommitmentResponse_proofs_json = md_QueryGenerateCommitmentResponse.Fields().ByName(\"proofs_json\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryGenerateCommitmentResponse)(nil)\n\ntype fastReflection_QueryGenerateCommitmentResponse QueryGenerateCommitmentResponse\n\nfunc (x *QueryGenerateCommitmentResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryGenerateCommitmentResponse)(x)\n}\n\nfunc (x *QueryGenerateCommitmentResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryGenerateCommitmentResponse_messageType fastReflection_QueryGenerateCommitmentResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryGenerateCommitmentResponse_messageType{}\n\ntype fastReflection_QueryGenerateCommitmentResponse_messageType struct{}\n\nfunc (x fastReflection_QueryGenerateCommitmentResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryGenerateCommitmentResponse)(nil)\n}\nfunc (x fastReflection_QueryGenerateCommitmentResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryGenerateCommitmentResponse)\n}\nfunc (x fastReflection_QueryGenerateCommitmentResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryGenerateCommitmentResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryGenerateCommitmentResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryGenerateCommitmentResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryGenerateCommitmentResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryGenerateCommitmentResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Commitment) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Commitment)\n\t\tif !f(fd_QueryGenerateCommitmentResponse_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.HexCommitment != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.HexCommitment)\n\t\tif !f(fd_QueryGenerateCommitmentResponse_hex_commitment, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Proofs) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_3_list{list: &x.Proofs})\n\t\tif !f(fd_QueryGenerateCommitmentResponse_proofs, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.ProofsJson) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_4_list{list: &x.ProofsJson})\n\t\tif !f(fd_QueryGenerateCommitmentResponse_proofs_json, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\treturn len(x.Commitment) != 0\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\treturn x.HexCommitment != \"\"\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\treturn len(x.Proofs) != 0\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\treturn len(x.ProofsJson) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\tx.Commitment = nil\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\tx.HexCommitment = \"\"\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\tx.Proofs = nil\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\tx.ProofsJson = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\tvalue := x.Commitment\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\tvalue := x.HexCommitment\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\tif len(x.Proofs) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_3_list{})\n\t\t}\n\t\tlistValue := &_QueryGenerateCommitmentResponse_3_list{list: &x.Proofs}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\tif len(x.ProofsJson) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_4_list{})\n\t\t}\n\t\tlistValue := &_QueryGenerateCommitmentResponse_4_list{list: &x.ProofsJson}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\tx.Commitment = value.Bytes()\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\tx.HexCommitment = value.Interface().(string)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryGenerateCommitmentResponse_3_list)\n\t\tx.Proofs = *clv.list\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryGenerateCommitmentResponse_4_list)\n\t\tx.ProofsJson = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\tif x.Proofs == nil {\n\t\t\tx.Proofs = []*RegistrationProof{}\n\t\t}\n\t\tvalue := &_QueryGenerateCommitmentResponse_3_list{list: &x.Proofs}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\tif x.ProofsJson == nil {\n\t\t\tx.ProofsJson = []string{}\n\t\t}\n\t\tvalue := &_QueryGenerateCommitmentResponse_4_list{list: &x.ProofsJson}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\tpanic(fmt.Errorf(\"field commitment of message sourcehub.acp.QueryGenerateCommitmentResponse is not mutable\"))\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\tpanic(fmt.Errorf(\"field hex_commitment of message sourcehub.acp.QueryGenerateCommitmentResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.commitment\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.hex_commitment\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs\":\n\t\tlist := []*RegistrationProof{}\n\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_3_list{list: &list})\n\tcase \"sourcehub.acp.QueryGenerateCommitmentResponse.proofs_json\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_QueryGenerateCommitmentResponse_4_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryGenerateCommitmentResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryGenerateCommitmentResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryGenerateCommitmentResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryGenerateCommitmentResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Commitment)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.HexCommitment)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Proofs) > 0 {\n\t\t\tfor _, e := range x.Proofs {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.ProofsJson) > 0 {\n\t\t\tfor _, s := range x.ProofsJson {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ProofsJson) > 0 {\n\t\t\tfor iNdEx := len(x.ProofsJson) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.ProofsJson[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.ProofsJson[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ProofsJson[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.Proofs) > 0 {\n\t\t\tfor iNdEx := len(x.Proofs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Proofs[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.HexCommitment) > 0 {\n\t\t\ti -= len(x.HexCommitment)\n\t\t\tcopy(dAtA[i:], x.HexCommitment)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.HexCommitment)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Commitment) > 0 {\n\t\t\ti -= len(x.Commitment)\n\t\t\tcopy(dAtA[i:], x.Commitment)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Commitment)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryGenerateCommitmentResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryGenerateCommitmentResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryGenerateCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Commitment = append(x.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Commitment == nil {\n\t\t\t\t\tx.Commitment = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field HexCommitment\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.HexCommitment = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Proofs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Proofs = append(x.Proofs, &RegistrationProof{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proofs[len(x.Proofs)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProofsJson\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ProofsJson = append(x.ProofsJson, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryHijackAttemptsByPolicyRequest           protoreflect.MessageDescriptor\n\tfd_QueryHijackAttemptsByPolicyRequest_policy_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryHijackAttemptsByPolicyRequest = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryHijackAttemptsByPolicyRequest\")\n\tfd_QueryHijackAttemptsByPolicyRequest_policy_id = md_QueryHijackAttemptsByPolicyRequest.Fields().ByName(\"policy_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryHijackAttemptsByPolicyRequest)(nil)\n\ntype fastReflection_QueryHijackAttemptsByPolicyRequest QueryHijackAttemptsByPolicyRequest\n\nfunc (x *QueryHijackAttemptsByPolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryHijackAttemptsByPolicyRequest)(x)\n}\n\nfunc (x *QueryHijackAttemptsByPolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryHijackAttemptsByPolicyRequest_messageType fastReflection_QueryHijackAttemptsByPolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryHijackAttemptsByPolicyRequest_messageType{}\n\ntype fastReflection_QueryHijackAttemptsByPolicyRequest_messageType struct{}\n\nfunc (x fastReflection_QueryHijackAttemptsByPolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryHijackAttemptsByPolicyRequest)(nil)\n}\nfunc (x fastReflection_QueryHijackAttemptsByPolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryHijackAttemptsByPolicyRequest)\n}\nfunc (x fastReflection_QueryHijackAttemptsByPolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryHijackAttemptsByPolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryHijackAttemptsByPolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryHijackAttemptsByPolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryHijackAttemptsByPolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryHijackAttemptsByPolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryHijackAttemptsByPolicyRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.QueryHijackAttemptsByPolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryHijackAttemptsByPolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryHijackAttemptsByPolicyResponse_1_list)(nil)\n\ntype _QueryHijackAttemptsByPolicyResponse_1_list struct {\n\tlist *[]*AmendmentEvent\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*AmendmentEvent)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*AmendmentEvent)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(AmendmentEvent)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(AmendmentEvent)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryHijackAttemptsByPolicyResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryHijackAttemptsByPolicyResponse        protoreflect.MessageDescriptor\n\tfd_QueryHijackAttemptsByPolicyResponse_events protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_query_proto_init()\n\tmd_QueryHijackAttemptsByPolicyResponse = File_sourcehub_acp_query_proto.Messages().ByName(\"QueryHijackAttemptsByPolicyResponse\")\n\tfd_QueryHijackAttemptsByPolicyResponse_events = md_QueryHijackAttemptsByPolicyResponse.Fields().ByName(\"events\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryHijackAttemptsByPolicyResponse)(nil)\n\ntype fastReflection_QueryHijackAttemptsByPolicyResponse QueryHijackAttemptsByPolicyResponse\n\nfunc (x *QueryHijackAttemptsByPolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryHijackAttemptsByPolicyResponse)(x)\n}\n\nfunc (x *QueryHijackAttemptsByPolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_query_proto_msgTypes[23]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryHijackAttemptsByPolicyResponse_messageType fastReflection_QueryHijackAttemptsByPolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryHijackAttemptsByPolicyResponse_messageType{}\n\ntype fastReflection_QueryHijackAttemptsByPolicyResponse_messageType struct{}\n\nfunc (x fastReflection_QueryHijackAttemptsByPolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryHijackAttemptsByPolicyResponse)(nil)\n}\nfunc (x fastReflection_QueryHijackAttemptsByPolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryHijackAttemptsByPolicyResponse)\n}\nfunc (x fastReflection_QueryHijackAttemptsByPolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryHijackAttemptsByPolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryHijackAttemptsByPolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryHijackAttemptsByPolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryHijackAttemptsByPolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryHijackAttemptsByPolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Events) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryHijackAttemptsByPolicyResponse_1_list{list: &x.Events})\n\t\tif !f(fd_QueryHijackAttemptsByPolicyResponse_events, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\treturn len(x.Events) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\tx.Events = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\tif len(x.Events) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryHijackAttemptsByPolicyResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryHijackAttemptsByPolicyResponse_1_list{list: &x.Events}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryHijackAttemptsByPolicyResponse_1_list)\n\t\tx.Events = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\tif x.Events == nil {\n\t\t\tx.Events = []*AmendmentEvent{}\n\t\t}\n\t\tvalue := &_QueryHijackAttemptsByPolicyResponse_1_list{list: &x.Events}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events\":\n\t\tlist := []*AmendmentEvent{}\n\t\treturn protoreflect.ValueOfList(&_QueryHijackAttemptsByPolicyResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.QueryHijackAttemptsByPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.QueryHijackAttemptsByPolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryHijackAttemptsByPolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Events) > 0 {\n\t\t\tfor _, e := range x.Events {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Events) > 0 {\n\t\t\tfor iNdEx := len(x.Events) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Events[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryHijackAttemptsByPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Events\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Events = append(x.Events, &AmendmentEvent{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Events[len(x.Events)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryParamsRequest) Reset() {\n\t*x = QueryParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{0}\n}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params holds all the parameters of this module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *QueryParamsResponse) Reset() {\n\t*x = QueryParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryParamsResponse) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\ntype QueryPolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *QueryPolicyRequest) Reset() {\n\t*x = QueryPolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryPolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryPolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *QueryPolicyRequest) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryPolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecord *PolicyRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *QueryPolicyResponse) Reset() {\n\t*x = QueryPolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryPolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *QueryPolicyResponse) GetRecord() *PolicyRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype QueryPolicyIdsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryPolicyIdsRequest) Reset() {\n\t*x = QueryPolicyIdsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPolicyIdsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPolicyIdsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryPolicyIdsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryPolicyIdsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *QueryPolicyIdsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPolicyIdsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tIds        []string              `protobuf:\"bytes,1,rep,name=ids,proto3\" json:\"ids,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryPolicyIdsResponse) Reset() {\n\t*x = QueryPolicyIdsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPolicyIdsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPolicyIdsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryPolicyIdsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryPolicyIdsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *QueryPolicyIdsResponse) GetIds() []string {\n\tif x != nil {\n\t\treturn x.Ids\n\t}\n\treturn nil\n}\n\nfunc (x *QueryPolicyIdsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryFilterRelationshipsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string                      `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tSelector *types.RelationshipSelector `protobuf:\"bytes,2,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n}\n\nfunc (x *QueryFilterRelationshipsRequest) Reset() {\n\t*x = QueryFilterRelationshipsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryFilterRelationshipsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryFilterRelationshipsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryFilterRelationshipsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryFilterRelationshipsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *QueryFilterRelationshipsRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryFilterRelationshipsRequest) GetSelector() *types.RelationshipSelector {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn nil\n}\n\ntype QueryFilterRelationshipsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecords []*RelationshipRecord `protobuf:\"bytes,1,rep,name=records,proto3\" json:\"records,omitempty\"`\n}\n\nfunc (x *QueryFilterRelationshipsResponse) Reset() {\n\t*x = QueryFilterRelationshipsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryFilterRelationshipsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryFilterRelationshipsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryFilterRelationshipsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryFilterRelationshipsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *QueryFilterRelationshipsResponse) GetRecords() []*RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Records\n\t}\n\treturn nil\n}\n\ntype QueryVerifyAccessRequestRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId      string               `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tAccessRequest *types.AccessRequest `protobuf:\"bytes,2,opt,name=access_request,json=accessRequest,proto3\" json:\"access_request,omitempty\"`\n}\n\nfunc (x *QueryVerifyAccessRequestRequest) Reset() {\n\t*x = QueryVerifyAccessRequestRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryVerifyAccessRequestRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryVerifyAccessRequestRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryVerifyAccessRequestRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryVerifyAccessRequestRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *QueryVerifyAccessRequestRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryVerifyAccessRequestRequest) GetAccessRequest() *types.AccessRequest {\n\tif x != nil {\n\t\treturn x.AccessRequest\n\t}\n\treturn nil\n}\n\ntype QueryVerifyAccessRequestResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValid bool `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n}\n\nfunc (x *QueryVerifyAccessRequestResponse) Reset() {\n\t*x = QueryVerifyAccessRequestResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryVerifyAccessRequestResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryVerifyAccessRequestResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryVerifyAccessRequestResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryVerifyAccessRequestResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *QueryVerifyAccessRequestResponse) GetValid() bool {\n\tif x != nil {\n\t\treturn x.Valid\n\t}\n\treturn false\n}\n\ntype QueryValidatePolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy      string                     `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,3,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (x *QueryValidatePolicyRequest) Reset() {\n\t*x = QueryValidatePolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryValidatePolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryValidatePolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryValidatePolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryValidatePolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *QueryValidatePolicyRequest) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryValidatePolicyRequest) GetMarshalType() types.PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn types.PolicyMarshalingType(0)\n}\n\ntype QueryValidatePolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValid    bool          `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n\tErrorMsg string        `protobuf:\"bytes,2,opt,name=error_msg,json=errorMsg,proto3\" json:\"error_msg,omitempty\"`\n\tPolicy   *types.Policy `protobuf:\"bytes,3,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n}\n\nfunc (x *QueryValidatePolicyResponse) Reset() {\n\t*x = QueryValidatePolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryValidatePolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryValidatePolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryValidatePolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryValidatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *QueryValidatePolicyResponse) GetValid() bool {\n\tif x != nil {\n\t\treturn x.Valid\n\t}\n\treturn false\n}\n\nfunc (x *QueryValidatePolicyResponse) GetErrorMsg() string {\n\tif x != nil {\n\t\treturn x.ErrorMsg\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryValidatePolicyResponse) GetPolicy() *types.Policy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\ntype QueryAccessDecisionRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *QueryAccessDecisionRequest) Reset() {\n\t*x = QueryAccessDecisionRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAccessDecisionRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAccessDecisionRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryAccessDecisionRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryAccessDecisionRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *QueryAccessDecisionRequest) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryAccessDecisionResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDecision *AccessDecision `protobuf:\"bytes,1,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n}\n\nfunc (x *QueryAccessDecisionResponse) Reset() {\n\t*x = QueryAccessDecisionResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAccessDecisionResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAccessDecisionResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryAccessDecisionResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryAccessDecisionResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *QueryAccessDecisionResponse) GetDecision() *AccessDecision {\n\tif x != nil {\n\t\treturn x.Decision\n\t}\n\treturn nil\n}\n\ntype QueryObjectOwnerRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string        `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject   *types.Object `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *QueryObjectOwnerRequest) Reset() {\n\t*x = QueryObjectOwnerRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryObjectOwnerRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryObjectOwnerRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryObjectOwnerRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryObjectOwnerRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *QueryObjectOwnerRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryObjectOwnerRequest) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\ntype QueryObjectOwnerResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tIsRegistered bool                `protobuf:\"varint,1,opt,name=is_registered,json=isRegistered,proto3\" json:\"is_registered,omitempty\"`\n\tRecord       *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *QueryObjectOwnerResponse) Reset() {\n\t*x = QueryObjectOwnerResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryObjectOwnerResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryObjectOwnerResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryObjectOwnerResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryObjectOwnerResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *QueryObjectOwnerResponse) GetIsRegistered() bool {\n\tif x != nil {\n\t\treturn x.IsRegistered\n\t}\n\treturn false\n}\n\nfunc (x *QueryObjectOwnerResponse) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *QueryRegistrationsCommitmentRequest) Reset() {\n\t*x = QueryRegistrationsCommitmentRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryRegistrationsCommitmentRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryRegistrationsCommitmentRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryRegistrationsCommitmentRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryRegistrationsCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *QueryRegistrationsCommitmentRequest) GetId() uint64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\ntype QueryRegistrationsCommitmentResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRegistrationsCommitment *RegistrationsCommitment `protobuf:\"bytes,1,opt,name=registrations_commitment,json=registrationsCommitment,proto3\" json:\"registrations_commitment,omitempty\"`\n}\n\nfunc (x *QueryRegistrationsCommitmentResponse) Reset() {\n\t*x = QueryRegistrationsCommitmentResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryRegistrationsCommitmentResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryRegistrationsCommitmentResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryRegistrationsCommitmentResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryRegistrationsCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *QueryRegistrationsCommitmentResponse) GetRegistrationsCommitment() *RegistrationsCommitment {\n\tif x != nil {\n\t\treturn x.RegistrationsCommitment\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentByCommitmentRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCommitment []byte `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentRequest) Reset() {\n\t*x = QueryRegistrationsCommitmentByCommitmentRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryRegistrationsCommitmentByCommitmentRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryRegistrationsCommitmentByCommitmentRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryRegistrationsCommitmentByCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentRequest) GetCommitment() []byte {\n\tif x != nil {\n\t\treturn x.Commitment\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentByCommitmentResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRegistrationsCommitments []*RegistrationsCommitment `protobuf:\"bytes,1,rep,name=registrations_commitments,json=registrationsCommitments,proto3\" json:\"registrations_commitments,omitempty\"`\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentResponse) Reset() {\n\t*x = QueryRegistrationsCommitmentByCommitmentResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryRegistrationsCommitmentByCommitmentResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryRegistrationsCommitmentByCommitmentResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryRegistrationsCommitmentByCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *QueryRegistrationsCommitmentByCommitmentResponse) GetRegistrationsCommitments() []*RegistrationsCommitment {\n\tif x != nil {\n\t\treturn x.RegistrationsCommitments\n\t}\n\treturn nil\n}\n\ntype QueryGenerateCommitmentRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string          `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObjects  []*types.Object `protobuf:\"bytes,2,rep,name=objects,proto3\" json:\"objects,omitempty\"`\n\tActor    *types.Actor    `protobuf:\"bytes,3,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n}\n\nfunc (x *QueryGenerateCommitmentRequest) Reset() {\n\t*x = QueryGenerateCommitmentRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryGenerateCommitmentRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryGenerateCommitmentRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryGenerateCommitmentRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryGenerateCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *QueryGenerateCommitmentRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryGenerateCommitmentRequest) GetObjects() []*types.Object {\n\tif x != nil {\n\t\treturn x.Objects\n\t}\n\treturn nil\n}\n\nfunc (x *QueryGenerateCommitmentRequest) GetActor() *types.Actor {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn nil\n}\n\ntype QueryGenerateCommitmentResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCommitment    []byte               `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n\tHexCommitment string               `protobuf:\"bytes,2,opt,name=hex_commitment,json=hexCommitment,proto3\" json:\"hex_commitment,omitempty\"`\n\tProofs        []*RegistrationProof `protobuf:\"bytes,3,rep,name=proofs,proto3\" json:\"proofs,omitempty\"`\n\tProofsJson    []string             `protobuf:\"bytes,4,rep,name=proofs_json,json=proofsJson,proto3\" json:\"proofs_json,omitempty\"`\n}\n\nfunc (x *QueryGenerateCommitmentResponse) Reset() {\n\t*x = QueryGenerateCommitmentResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryGenerateCommitmentResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryGenerateCommitmentResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryGenerateCommitmentResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryGenerateCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{21}\n}\n\nfunc (x *QueryGenerateCommitmentResponse) GetCommitment() []byte {\n\tif x != nil {\n\t\treturn x.Commitment\n\t}\n\treturn nil\n}\n\nfunc (x *QueryGenerateCommitmentResponse) GetHexCommitment() string {\n\tif x != nil {\n\t\treturn x.HexCommitment\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryGenerateCommitmentResponse) GetProofs() []*RegistrationProof {\n\tif x != nil {\n\t\treturn x.Proofs\n\t}\n\treturn nil\n}\n\nfunc (x *QueryGenerateCommitmentResponse) GetProofsJson() []string {\n\tif x != nil {\n\t\treturn x.ProofsJson\n\t}\n\treturn nil\n}\n\ntype QueryHijackAttemptsByPolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n}\n\nfunc (x *QueryHijackAttemptsByPolicyRequest) Reset() {\n\t*x = QueryHijackAttemptsByPolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryHijackAttemptsByPolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryHijackAttemptsByPolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryHijackAttemptsByPolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryHijackAttemptsByPolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *QueryHijackAttemptsByPolicyRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\ntype QueryHijackAttemptsByPolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEvents []*AmendmentEvent `protobuf:\"bytes,1,rep,name=events,proto3\" json:\"events,omitempty\"`\n}\n\nfunc (x *QueryHijackAttemptsByPolicyResponse) Reset() {\n\t*x = QueryHijackAttemptsByPolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_query_proto_msgTypes[23]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryHijackAttemptsByPolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryHijackAttemptsByPolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryHijackAttemptsByPolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryHijackAttemptsByPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_query_proto_rawDescGZIP(), []int{23}\n}\n\nfunc (x *QueryHijackAttemptsByPolicyResponse) GetEvents() []*AmendmentEvent {\n\tif x != nil {\n\t\treturn x.Events\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_query_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_query_proto_rawDesc = []byte{\n\t0x0a, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e,\n\t0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,\n\t0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x61, 0x63, 0x63,\n\t0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65,\n\t0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x65, 0x6c,\n\t0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38,\n\t0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01,\n\t0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x24, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e,\n\t0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a,\n\t0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f,\n\t0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x5f, 0x0a, 0x15, 0x51, 0x75,\n\t0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52,\n\t0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x16, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,\n\t0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x22, 0x88, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,\n\t0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,\n\t0x64, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,\n\t0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x20, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x3b, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70,\n\t0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x63,\n\t0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x8c, 0x01, 0x0a,\n\t0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65,\n\t0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x4c, 0x0a,\n\t0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41,\n\t0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x61, 0x63,\n\t0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, 0x20, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0c,\n\t0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65,\n\t0x52, 0x0b, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01,\n\t0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a,\n\t0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61,\n\t0x6c, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67,\n\t0x12, 0x36, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x2c, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x58, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,\n\t0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,\n\t0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65,\n\t0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e,\n\t0x22, 0x6e, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f,\n\t0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x22, 0x7a, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f,\n\t0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d,\n\t0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,\n\t0x64, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65,\n\t0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x35, 0x0a, 0x23,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,\n\t0x02, 0x69, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67,\n\t0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,\n\t0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x18,\n\t0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52,\n\t0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d,\n\t0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22,\n\t0x51, 0x0a, 0x2f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42,\n\t0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65,\n\t0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x30, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x19, 0x72, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65,\n\t0x6e, 0x74, 0x52, 0x18, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xac, 0x01, 0x0a,\n\t0x1e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,\n\t0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x07,\n\t0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f,\n\t0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41,\n\t0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xc3, 0x01, 0x0a, 0x1f,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d,\n\t0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12,\n\t0x25, 0x0a, 0x0e, 0x68, 0x65, 0x78, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e,\n\t0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x65, 0x78, 0x43, 0x6f, 0x6d, 0x6d,\n\t0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73,\n\t0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73,\n\t0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x4a, 0x73, 0x6f,\n\t0x6e, 0x22, 0x41, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b,\n\t0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x23, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x6a,\n\t0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x65,\n\t0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41, 0x6d, 0x65, 0x6e,\n\t0x64, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,\n\t0x74, 0x73, 0x32, 0xce, 0x10, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7c, 0x0a, 0x06,\n\t0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82,\n\t0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x61, 0x63, 0x70, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x06, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x63, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x89,\n\t0x01, 0x0a, 0x09, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,\n\t0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02,\n\t0x29, 0x12, 0x27, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x13, 0x46,\n\t0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69,\n\t0x70, 0x73, 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,\n\t0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x7b,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x13, 0x56,\n\t0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63,\n\t0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63,\n\t0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,\n\t0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2f,\n\t0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x0e,\n\t0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x29,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x76, 0x61, 0x6c, 0x69,\n\t0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x7b, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x7d, 0x12, 0xa2, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44,\n\t0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63,\n\t0x65, 0x73, 0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61,\n\t0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65,\n\t0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39,\n\t0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x61, 0x63, 0x70, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x69,\n\t0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x0b, 0x4f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f,\n\t0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x77, 0x6e,\n\t0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93,\n\t0x02, 0x55, 0x12, 0x53, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70,\n\t0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x2f, 0x7b, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x6f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x7d, 0x2f, 0x7b, 0x6f, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x12, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67,\n\t0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,\n\t0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x63, 0x70, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xf3, 0x01, 0x0a, 0x23,\n\t0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d,\n\t0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x12, 0x3e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,\n\t0x65, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e,\n\t0x74, 0x12, 0xad, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f,\n\t0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65,\n\t0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x6e,\n\t0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12,\n\t0x30, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x67, 0x65,\n\t0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e,\n\t0x74, 0x12, 0xbf, 0x01, 0x0a, 0x16, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65,\n\t0x6d, 0x70, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x31, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,\n\t0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x65, 0x6d,\n\t0x70, 0x74, 0x73, 0x42, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x68, 0x69, 0x6a, 0x61, 0x63, 0x6b,\n\t0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x42, 0x94, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73,\n\t0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50,\n\t0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_query_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_query_proto_rawDescData = file_sourcehub_acp_query_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_query_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_query_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_query_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_query_proto_rawDescData\n}\n\nvar file_sourcehub_acp_query_proto_msgTypes = make([]protoimpl.MessageInfo, 24)\nvar file_sourcehub_acp_query_proto_goTypes = []interface{}{\n\t(*QueryParamsRequest)(nil),                               // 0: sourcehub.acp.QueryParamsRequest\n\t(*QueryParamsResponse)(nil),                              // 1: sourcehub.acp.QueryParamsResponse\n\t(*QueryPolicyRequest)(nil),                               // 2: sourcehub.acp.QueryPolicyRequest\n\t(*QueryPolicyResponse)(nil),                              // 3: sourcehub.acp.QueryPolicyResponse\n\t(*QueryPolicyIdsRequest)(nil),                            // 4: sourcehub.acp.QueryPolicyIdsRequest\n\t(*QueryPolicyIdsResponse)(nil),                           // 5: sourcehub.acp.QueryPolicyIdsResponse\n\t(*QueryFilterRelationshipsRequest)(nil),                  // 6: sourcehub.acp.QueryFilterRelationshipsRequest\n\t(*QueryFilterRelationshipsResponse)(nil),                 // 7: sourcehub.acp.QueryFilterRelationshipsResponse\n\t(*QueryVerifyAccessRequestRequest)(nil),                  // 8: sourcehub.acp.QueryVerifyAccessRequestRequest\n\t(*QueryVerifyAccessRequestResponse)(nil),                 // 9: sourcehub.acp.QueryVerifyAccessRequestResponse\n\t(*QueryValidatePolicyRequest)(nil),                       // 10: sourcehub.acp.QueryValidatePolicyRequest\n\t(*QueryValidatePolicyResponse)(nil),                      // 11: sourcehub.acp.QueryValidatePolicyResponse\n\t(*QueryAccessDecisionRequest)(nil),                       // 12: sourcehub.acp.QueryAccessDecisionRequest\n\t(*QueryAccessDecisionResponse)(nil),                      // 13: sourcehub.acp.QueryAccessDecisionResponse\n\t(*QueryObjectOwnerRequest)(nil),                          // 14: sourcehub.acp.QueryObjectOwnerRequest\n\t(*QueryObjectOwnerResponse)(nil),                         // 15: sourcehub.acp.QueryObjectOwnerResponse\n\t(*QueryRegistrationsCommitmentRequest)(nil),              // 16: sourcehub.acp.QueryRegistrationsCommitmentRequest\n\t(*QueryRegistrationsCommitmentResponse)(nil),             // 17: sourcehub.acp.QueryRegistrationsCommitmentResponse\n\t(*QueryRegistrationsCommitmentByCommitmentRequest)(nil),  // 18: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\n\t(*QueryRegistrationsCommitmentByCommitmentResponse)(nil), // 19: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\n\t(*QueryGenerateCommitmentRequest)(nil),                   // 20: sourcehub.acp.QueryGenerateCommitmentRequest\n\t(*QueryGenerateCommitmentResponse)(nil),                  // 21: sourcehub.acp.QueryGenerateCommitmentResponse\n\t(*QueryHijackAttemptsByPolicyRequest)(nil),               // 22: sourcehub.acp.QueryHijackAttemptsByPolicyRequest\n\t(*QueryHijackAttemptsByPolicyResponse)(nil),              // 23: sourcehub.acp.QueryHijackAttemptsByPolicyResponse\n\t(*Params)(nil),                     // 24: sourcehub.acp.Params\n\t(*PolicyRecord)(nil),               // 25: sourcehub.acp.PolicyRecord\n\t(*v1beta1.PageRequest)(nil),        // 26: cosmos.base.query.v1beta1.PageRequest\n\t(*v1beta1.PageResponse)(nil),       // 27: cosmos.base.query.v1beta1.PageResponse\n\t(*types.RelationshipSelector)(nil), // 28: sourcenetwork.acp_core.RelationshipSelector\n\t(*RelationshipRecord)(nil),         // 29: sourcehub.acp.RelationshipRecord\n\t(*types.AccessRequest)(nil),        // 30: sourcenetwork.acp_core.AccessRequest\n\t(types.PolicyMarshalingType)(0),    // 31: sourcenetwork.acp_core.PolicyMarshalingType\n\t(*types.Policy)(nil),               // 32: sourcenetwork.acp_core.Policy\n\t(*AccessDecision)(nil),             // 33: sourcehub.acp.AccessDecision\n\t(*types.Object)(nil),               // 34: sourcenetwork.acp_core.Object\n\t(*RegistrationsCommitment)(nil),    // 35: sourcehub.acp.RegistrationsCommitment\n\t(*types.Actor)(nil),                // 36: sourcenetwork.acp_core.Actor\n\t(*RegistrationProof)(nil),          // 37: sourcehub.acp.RegistrationProof\n\t(*AmendmentEvent)(nil),             // 38: sourcehub.acp.AmendmentEvent\n}\nvar file_sourcehub_acp_query_proto_depIdxs = []int32{\n\t24, // 0: sourcehub.acp.QueryParamsResponse.params:type_name -> sourcehub.acp.Params\n\t25, // 1: sourcehub.acp.QueryPolicyResponse.record:type_name -> sourcehub.acp.PolicyRecord\n\t26, // 2: sourcehub.acp.QueryPolicyIdsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t27, // 3: sourcehub.acp.QueryPolicyIdsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t28, // 4: sourcehub.acp.QueryFilterRelationshipsRequest.selector:type_name -> sourcenetwork.acp_core.RelationshipSelector\n\t29, // 5: sourcehub.acp.QueryFilterRelationshipsResponse.records:type_name -> sourcehub.acp.RelationshipRecord\n\t30, // 6: sourcehub.acp.QueryVerifyAccessRequestRequest.access_request:type_name -> sourcenetwork.acp_core.AccessRequest\n\t31, // 7: sourcehub.acp.QueryValidatePolicyRequest.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t32, // 8: sourcehub.acp.QueryValidatePolicyResponse.policy:type_name -> sourcenetwork.acp_core.Policy\n\t33, // 9: sourcehub.acp.QueryAccessDecisionResponse.decision:type_name -> sourcehub.acp.AccessDecision\n\t34, // 10: sourcehub.acp.QueryObjectOwnerRequest.object:type_name -> sourcenetwork.acp_core.Object\n\t29, // 11: sourcehub.acp.QueryObjectOwnerResponse.record:type_name -> sourcehub.acp.RelationshipRecord\n\t35, // 12: sourcehub.acp.QueryRegistrationsCommitmentResponse.registrations_commitment:type_name -> sourcehub.acp.RegistrationsCommitment\n\t35, // 13: sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse.registrations_commitments:type_name -> sourcehub.acp.RegistrationsCommitment\n\t34, // 14: sourcehub.acp.QueryGenerateCommitmentRequest.objects:type_name -> sourcenetwork.acp_core.Object\n\t36, // 15: sourcehub.acp.QueryGenerateCommitmentRequest.actor:type_name -> sourcenetwork.acp_core.Actor\n\t37, // 16: sourcehub.acp.QueryGenerateCommitmentResponse.proofs:type_name -> sourcehub.acp.RegistrationProof\n\t38, // 17: sourcehub.acp.QueryHijackAttemptsByPolicyResponse.events:type_name -> sourcehub.acp.AmendmentEvent\n\t0,  // 18: sourcehub.acp.Query.Params:input_type -> sourcehub.acp.QueryParamsRequest\n\t2,  // 19: sourcehub.acp.Query.Policy:input_type -> sourcehub.acp.QueryPolicyRequest\n\t4,  // 20: sourcehub.acp.Query.PolicyIds:input_type -> sourcehub.acp.QueryPolicyIdsRequest\n\t6,  // 21: sourcehub.acp.Query.FilterRelationships:input_type -> sourcehub.acp.QueryFilterRelationshipsRequest\n\t8,  // 22: sourcehub.acp.Query.VerifyAccessRequest:input_type -> sourcehub.acp.QueryVerifyAccessRequestRequest\n\t10, // 23: sourcehub.acp.Query.ValidatePolicy:input_type -> sourcehub.acp.QueryValidatePolicyRequest\n\t12, // 24: sourcehub.acp.Query.AccessDecision:input_type -> sourcehub.acp.QueryAccessDecisionRequest\n\t14, // 25: sourcehub.acp.Query.ObjectOwner:input_type -> sourcehub.acp.QueryObjectOwnerRequest\n\t16, // 26: sourcehub.acp.Query.RegistrationsCommitment:input_type -> sourcehub.acp.QueryRegistrationsCommitmentRequest\n\t18, // 27: sourcehub.acp.Query.RegistrationsCommitmentByCommitment:input_type -> sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\n\t20, // 28: sourcehub.acp.Query.GenerateCommitment:input_type -> sourcehub.acp.QueryGenerateCommitmentRequest\n\t22, // 29: sourcehub.acp.Query.HijackAttemptsByPolicy:input_type -> sourcehub.acp.QueryHijackAttemptsByPolicyRequest\n\t1,  // 30: sourcehub.acp.Query.Params:output_type -> sourcehub.acp.QueryParamsResponse\n\t3,  // 31: sourcehub.acp.Query.Policy:output_type -> sourcehub.acp.QueryPolicyResponse\n\t5,  // 32: sourcehub.acp.Query.PolicyIds:output_type -> sourcehub.acp.QueryPolicyIdsResponse\n\t7,  // 33: sourcehub.acp.Query.FilterRelationships:output_type -> sourcehub.acp.QueryFilterRelationshipsResponse\n\t9,  // 34: sourcehub.acp.Query.VerifyAccessRequest:output_type -> sourcehub.acp.QueryVerifyAccessRequestResponse\n\t11, // 35: sourcehub.acp.Query.ValidatePolicy:output_type -> sourcehub.acp.QueryValidatePolicyResponse\n\t13, // 36: sourcehub.acp.Query.AccessDecision:output_type -> sourcehub.acp.QueryAccessDecisionResponse\n\t15, // 37: sourcehub.acp.Query.ObjectOwner:output_type -> sourcehub.acp.QueryObjectOwnerResponse\n\t17, // 38: sourcehub.acp.Query.RegistrationsCommitment:output_type -> sourcehub.acp.QueryRegistrationsCommitmentResponse\n\t19, // 39: sourcehub.acp.Query.RegistrationsCommitmentByCommitment:output_type -> sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\n\t21, // 40: sourcehub.acp.Query.GenerateCommitment:output_type -> sourcehub.acp.QueryGenerateCommitmentResponse\n\t23, // 41: sourcehub.acp.Query.HijackAttemptsByPolicy:output_type -> sourcehub.acp.QueryHijackAttemptsByPolicyResponse\n\t30, // [30:42] is the sub-list for method output_type\n\t18, // [18:30] is the sub-list for method input_type\n\t18, // [18:18] is the sub-list for extension type_name\n\t18, // [18:18] is the sub-list for extension extendee\n\t0,  // [0:18] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_query_proto_init() }\nfunc file_sourcehub_acp_query_proto_init() {\n\tif File_sourcehub_acp_query_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tfile_sourcehub_acp_commitment_proto_init()\n\tfile_sourcehub_acp_params_proto_init()\n\tfile_sourcehub_acp_record_proto_init()\n\tfile_sourcehub_acp_registration_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPolicyIdsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPolicyIdsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryFilterRelationshipsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryFilterRelationshipsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryVerifyAccessRequestRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryVerifyAccessRequestResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryValidatePolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryValidatePolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAccessDecisionRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAccessDecisionResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryObjectOwnerRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryObjectOwnerResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryRegistrationsCommitmentRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryRegistrationsCommitmentResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryRegistrationsCommitmentByCommitmentRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryRegistrationsCommitmentByCommitmentResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryGenerateCommitmentRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryGenerateCommitmentResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryHijackAttemptsByPolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_query_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryHijackAttemptsByPolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   24,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_query_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_query_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_query_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_query_proto = out.File\n\tfile_sourcehub_acp_query_proto_rawDesc = nil\n\tfile_sourcehub_acp_query_proto_goTypes = nil\n\tfile_sourcehub_acp_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/acp/query.proto\n\npackage acp\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_Params_FullMethodName                              = \"/sourcehub.acp.Query/Params\"\n\tQuery_Policy_FullMethodName                              = \"/sourcehub.acp.Query/Policy\"\n\tQuery_PolicyIds_FullMethodName                           = \"/sourcehub.acp.Query/PolicyIds\"\n\tQuery_FilterRelationships_FullMethodName                 = \"/sourcehub.acp.Query/FilterRelationships\"\n\tQuery_VerifyAccessRequest_FullMethodName                 = \"/sourcehub.acp.Query/VerifyAccessRequest\"\n\tQuery_ValidatePolicy_FullMethodName                      = \"/sourcehub.acp.Query/ValidatePolicy\"\n\tQuery_AccessDecision_FullMethodName                      = \"/sourcehub.acp.Query/AccessDecision\"\n\tQuery_ObjectOwner_FullMethodName                         = \"/sourcehub.acp.Query/ObjectOwner\"\n\tQuery_RegistrationsCommitment_FullMethodName             = \"/sourcehub.acp.Query/RegistrationsCommitment\"\n\tQuery_RegistrationsCommitmentByCommitment_FullMethodName = \"/sourcehub.acp.Query/RegistrationsCommitmentByCommitment\"\n\tQuery_GenerateCommitment_FullMethodName                  = \"/sourcehub.acp.Query/GenerateCommitment\"\n\tQuery_HijackAttemptsByPolicy_FullMethodName              = \"/sourcehub.acp.Query/HijackAttemptsByPolicy\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Policy returns a Policy with the given ID.\n\tPolicy(ctx context.Context, in *QueryPolicyRequest, opts ...grpc.CallOption) (*QueryPolicyResponse, error)\n\t// PolicyIds returns list of Ids for Policies registered in the system.\n\tPolicyIds(ctx context.Context, in *QueryPolicyIdsRequest, opts ...grpc.CallOption) (*QueryPolicyIdsResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(ctx context.Context, in *QueryFilterRelationshipsRequest, opts ...grpc.CallOption) (*QueryFilterRelationshipsResponse, error)\n\t// VerifyAccessRequest verifies whether an Access Request is accepted with respect to the given Policy's Relation Graph.\n\tVerifyAccessRequest(ctx context.Context, in *QueryVerifyAccessRequestRequest, opts ...grpc.CallOption) (*QueryVerifyAccessRequestResponse, error)\n\t// ValidatePolicy verifies whether the given Policy definition is properly formatted\n\tValidatePolicy(ctx context.Context, in *QueryValidatePolicyRequest, opts ...grpc.CallOption) (*QueryValidatePolicyResponse, error)\n\t// AccessDecision queries the system for an AccessDecision with the given ID.\n\tAccessDecision(ctx context.Context, in *QueryAccessDecisionRequest, opts ...grpc.CallOption) (*QueryAccessDecisionResponse, error)\n\t// ObjectOwner returns the Actor ID of the the given Object's owner\n\tObjectOwner(ctx context.Context, in *QueryObjectOwnerRequest, opts ...grpc.CallOption) (*QueryObjectOwnerResponse, error)\n\t// RegistrationsCommitment returns a specific RegistrationsCommitment record\n\tRegistrationsCommitment(ctx context.Context, in *QueryRegistrationsCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentResponse, error)\n\t// RegistrationsCommitmentByCommitment returns all RegistrationCommitment records with a given commitment\n\tRegistrationsCommitmentByCommitment(ctx context.Context, in *QueryRegistrationsCommitmentByCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentByCommitmentResponse, error)\n\t// GenerateCommitment generates a Object registration commitment for the given objects\n\t//\n\t// Note: this operation assures the commitment is valid (no object is registered and the policy exists)\n\t// but exposes the Object Ids to the RPC node.\n\t// ONLY use this method if the node is trusted\n\tGenerateCommitment(ctx context.Context, in *QueryGenerateCommitmentRequest, opts ...grpc.CallOption) (*QueryGenerateCommitmentResponse, error)\n\t// HijackAttemptsByPolicy returns, for a given policy, all AmendmentEvent whose hijack flag is true\n\tHijackAttemptsByPolicy(ctx context.Context, in *QueryHijackAttemptsByPolicyRequest, opts ...grpc.CallOption) (*QueryHijackAttemptsByPolicyResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Policy(ctx context.Context, in *QueryPolicyRequest, opts ...grpc.CallOption) (*QueryPolicyResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryPolicyResponse)\n\terr := c.cc.Invoke(ctx, Query_Policy_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) PolicyIds(ctx context.Context, in *QueryPolicyIdsRequest, opts ...grpc.CallOption) (*QueryPolicyIdsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryPolicyIdsResponse)\n\terr := c.cc.Invoke(ctx, Query_PolicyIds_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) FilterRelationships(ctx context.Context, in *QueryFilterRelationshipsRequest, opts ...grpc.CallOption) (*QueryFilterRelationshipsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryFilterRelationshipsResponse)\n\terr := c.cc.Invoke(ctx, Query_FilterRelationships_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) VerifyAccessRequest(ctx context.Context, in *QueryVerifyAccessRequestRequest, opts ...grpc.CallOption) (*QueryVerifyAccessRequestResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryVerifyAccessRequestResponse)\n\terr := c.cc.Invoke(ctx, Query_VerifyAccessRequest_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) ValidatePolicy(ctx context.Context, in *QueryValidatePolicyRequest, opts ...grpc.CallOption) (*QueryValidatePolicyResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryValidatePolicyResponse)\n\terr := c.cc.Invoke(ctx, Query_ValidatePolicy_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) AccessDecision(ctx context.Context, in *QueryAccessDecisionRequest, opts ...grpc.CallOption) (*QueryAccessDecisionResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryAccessDecisionResponse)\n\terr := c.cc.Invoke(ctx, Query_AccessDecision_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) ObjectOwner(ctx context.Context, in *QueryObjectOwnerRequest, opts ...grpc.CallOption) (*QueryObjectOwnerResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryObjectOwnerResponse)\n\terr := c.cc.Invoke(ctx, Query_ObjectOwner_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) RegistrationsCommitment(ctx context.Context, in *QueryRegistrationsCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryRegistrationsCommitmentResponse)\n\terr := c.cc.Invoke(ctx, Query_RegistrationsCommitment_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) RegistrationsCommitmentByCommitment(ctx context.Context, in *QueryRegistrationsCommitmentByCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryRegistrationsCommitmentByCommitmentResponse)\n\terr := c.cc.Invoke(ctx, Query_RegistrationsCommitmentByCommitment_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) GenerateCommitment(ctx context.Context, in *QueryGenerateCommitmentRequest, opts ...grpc.CallOption) (*QueryGenerateCommitmentResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryGenerateCommitmentResponse)\n\terr := c.cc.Invoke(ctx, Query_GenerateCommitment_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) HijackAttemptsByPolicy(ctx context.Context, in *QueryHijackAttemptsByPolicyRequest, opts ...grpc.CallOption) (*QueryHijackAttemptsByPolicyResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryHijackAttemptsByPolicyResponse)\n\terr := c.cc.Invoke(ctx, Query_HijackAttemptsByPolicy_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Policy returns a Policy with the given ID.\n\tPolicy(context.Context, *QueryPolicyRequest) (*QueryPolicyResponse, error)\n\t// PolicyIds returns list of Ids for Policies registered in the system.\n\tPolicyIds(context.Context, *QueryPolicyIdsRequest) (*QueryPolicyIdsResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(context.Context, *QueryFilterRelationshipsRequest) (*QueryFilterRelationshipsResponse, error)\n\t// VerifyAccessRequest verifies whether an Access Request is accepted with respect to the given Policy's Relation Graph.\n\tVerifyAccessRequest(context.Context, *QueryVerifyAccessRequestRequest) (*QueryVerifyAccessRequestResponse, error)\n\t// ValidatePolicy verifies whether the given Policy definition is properly formatted\n\tValidatePolicy(context.Context, *QueryValidatePolicyRequest) (*QueryValidatePolicyResponse, error)\n\t// AccessDecision queries the system for an AccessDecision with the given ID.\n\tAccessDecision(context.Context, *QueryAccessDecisionRequest) (*QueryAccessDecisionResponse, error)\n\t// ObjectOwner returns the Actor ID of the the given Object's owner\n\tObjectOwner(context.Context, *QueryObjectOwnerRequest) (*QueryObjectOwnerResponse, error)\n\t// RegistrationsCommitment returns a specific RegistrationsCommitment record\n\tRegistrationsCommitment(context.Context, *QueryRegistrationsCommitmentRequest) (*QueryRegistrationsCommitmentResponse, error)\n\t// RegistrationsCommitmentByCommitment returns all RegistrationCommitment records with a given commitment\n\tRegistrationsCommitmentByCommitment(context.Context, *QueryRegistrationsCommitmentByCommitmentRequest) (*QueryRegistrationsCommitmentByCommitmentResponse, error)\n\t// GenerateCommitment generates a Object registration commitment for the given objects\n\t//\n\t// Note: this operation assures the commitment is valid (no object is registered and the policy exists)\n\t// but exposes the Object Ids to the RPC node.\n\t// ONLY use this method if the node is trusted\n\tGenerateCommitment(context.Context, *QueryGenerateCommitmentRequest) (*QueryGenerateCommitmentResponse, error)\n\t// HijackAttemptsByPolicy returns, for a given policy, all AmendmentEvent whose hijack flag is true\n\tHijackAttemptsByPolicy(context.Context, *QueryHijackAttemptsByPolicyRequest) (*QueryHijackAttemptsByPolicyResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (UnimplementedQueryServer) Policy(context.Context, *QueryPolicyRequest) (*QueryPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Policy not implemented\")\n}\nfunc (UnimplementedQueryServer) PolicyIds(context.Context, *QueryPolicyIdsRequest) (*QueryPolicyIdsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PolicyIds not implemented\")\n}\nfunc (UnimplementedQueryServer) FilterRelationships(context.Context, *QueryFilterRelationshipsRequest) (*QueryFilterRelationshipsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method FilterRelationships not implemented\")\n}\nfunc (UnimplementedQueryServer) VerifyAccessRequest(context.Context, *QueryVerifyAccessRequestRequest) (*QueryVerifyAccessRequestResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method VerifyAccessRequest not implemented\")\n}\nfunc (UnimplementedQueryServer) ValidatePolicy(context.Context, *QueryValidatePolicyRequest) (*QueryValidatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ValidatePolicy not implemented\")\n}\nfunc (UnimplementedQueryServer) AccessDecision(context.Context, *QueryAccessDecisionRequest) (*QueryAccessDecisionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AccessDecision not implemented\")\n}\nfunc (UnimplementedQueryServer) ObjectOwner(context.Context, *QueryObjectOwnerRequest) (*QueryObjectOwnerResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ObjectOwner not implemented\")\n}\nfunc (UnimplementedQueryServer) RegistrationsCommitment(context.Context, *QueryRegistrationsCommitmentRequest) (*QueryRegistrationsCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegistrationsCommitment not implemented\")\n}\nfunc (UnimplementedQueryServer) RegistrationsCommitmentByCommitment(context.Context, *QueryRegistrationsCommitmentByCommitmentRequest) (*QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegistrationsCommitmentByCommitment not implemented\")\n}\nfunc (UnimplementedQueryServer) GenerateCommitment(context.Context, *QueryGenerateCommitmentRequest) (*QueryGenerateCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GenerateCommitment not implemented\")\n}\nfunc (UnimplementedQueryServer) HijackAttemptsByPolicy(context.Context, *QueryHijackAttemptsByPolicyRequest) (*QueryHijackAttemptsByPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method HijackAttemptsByPolicy not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Params_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Policy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Policy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Policy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Policy(ctx, req.(*QueryPolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_PolicyIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPolicyIdsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).PolicyIds(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_PolicyIds_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).PolicyIds(ctx, req.(*QueryPolicyIdsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_FilterRelationships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryFilterRelationshipsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).FilterRelationships(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_FilterRelationships_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).FilterRelationships(ctx, req.(*QueryFilterRelationshipsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_VerifyAccessRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryVerifyAccessRequestRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).VerifyAccessRequest(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_VerifyAccessRequest_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).VerifyAccessRequest(ctx, req.(*QueryVerifyAccessRequestRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_ValidatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryValidatePolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).ValidatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_ValidatePolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).ValidatePolicy(ctx, req.(*QueryValidatePolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_AccessDecision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAccessDecisionRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).AccessDecision(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_AccessDecision_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).AccessDecision(ctx, req.(*QueryAccessDecisionRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_ObjectOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryObjectOwnerRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).ObjectOwner(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_ObjectOwner_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).ObjectOwner(ctx, req.(*QueryObjectOwnerRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_RegistrationsCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryRegistrationsCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).RegistrationsCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_RegistrationsCommitment_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).RegistrationsCommitment(ctx, req.(*QueryRegistrationsCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_RegistrationsCommitmentByCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryRegistrationsCommitmentByCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).RegistrationsCommitmentByCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_RegistrationsCommitmentByCommitment_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).RegistrationsCommitmentByCommitment(ctx, req.(*QueryRegistrationsCommitmentByCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_GenerateCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryGenerateCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).GenerateCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_GenerateCommitment_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).GenerateCommitment(ctx, req.(*QueryGenerateCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_HijackAttemptsByPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryHijackAttemptsByPolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).HijackAttemptsByPolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_HijackAttemptsByPolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).HijackAttemptsByPolicy(ctx, req.(*QueryHijackAttemptsByPolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.acp.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Policy\",\n\t\t\tHandler:    _Query_Policy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PolicyIds\",\n\t\t\tHandler:    _Query_PolicyIds_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"FilterRelationships\",\n\t\t\tHandler:    _Query_FilterRelationships_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"VerifyAccessRequest\",\n\t\t\tHandler:    _Query_VerifyAccessRequest_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ValidatePolicy\",\n\t\t\tHandler:    _Query_ValidatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AccessDecision\",\n\t\t\tHandler:    _Query_AccessDecision_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ObjectOwner\",\n\t\t\tHandler:    _Query_ObjectOwner_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegistrationsCommitment\",\n\t\t\tHandler:    _Query_RegistrationsCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegistrationsCommitmentByCommitment\",\n\t\t\tHandler:    _Query_RegistrationsCommitmentByCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GenerateCommitment\",\n\t\t\tHandler:    _Query_GenerateCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"HijackAttemptsByPolicy\",\n\t\t\tHandler:    _Query_HijackAttemptsByPolicy_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/acp/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/acp/record.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_RecordMetadata             protoreflect.MessageDescriptor\n\tfd_RecordMetadata_creation_ts protoreflect.FieldDescriptor\n\tfd_RecordMetadata_tx_hash     protoreflect.FieldDescriptor\n\tfd_RecordMetadata_tx_signer   protoreflect.FieldDescriptor\n\tfd_RecordMetadata_owner_did   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_record_proto_init()\n\tmd_RecordMetadata = File_sourcehub_acp_record_proto.Messages().ByName(\"RecordMetadata\")\n\tfd_RecordMetadata_creation_ts = md_RecordMetadata.Fields().ByName(\"creation_ts\")\n\tfd_RecordMetadata_tx_hash = md_RecordMetadata.Fields().ByName(\"tx_hash\")\n\tfd_RecordMetadata_tx_signer = md_RecordMetadata.Fields().ByName(\"tx_signer\")\n\tfd_RecordMetadata_owner_did = md_RecordMetadata.Fields().ByName(\"owner_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RecordMetadata)(nil)\n\ntype fastReflection_RecordMetadata RecordMetadata\n\nfunc (x *RecordMetadata) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RecordMetadata)(x)\n}\n\nfunc (x *RecordMetadata) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_record_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RecordMetadata_messageType fastReflection_RecordMetadata_messageType\nvar _ protoreflect.MessageType = fastReflection_RecordMetadata_messageType{}\n\ntype fastReflection_RecordMetadata_messageType struct{}\n\nfunc (x fastReflection_RecordMetadata_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RecordMetadata)(nil)\n}\nfunc (x fastReflection_RecordMetadata_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RecordMetadata)\n}\nfunc (x fastReflection_RecordMetadata_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RecordMetadata\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RecordMetadata) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RecordMetadata\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RecordMetadata) Type() protoreflect.MessageType {\n\treturn _fastReflection_RecordMetadata_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RecordMetadata) New() protoreflect.Message {\n\treturn new(fastReflection_RecordMetadata)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RecordMetadata) Interface() protoreflect.ProtoMessage {\n\treturn (*RecordMetadata)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RecordMetadata) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CreationTs != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTs.ProtoReflect())\n\t\tif !f(fd_RecordMetadata_creation_ts, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.TxHash) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.TxHash)\n\t\tif !f(fd_RecordMetadata_tx_hash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TxSigner != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.TxSigner)\n\t\tif !f(fd_RecordMetadata_tx_signer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.OwnerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.OwnerDid)\n\t\tif !f(fd_RecordMetadata_owner_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RecordMetadata) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\treturn x.CreationTs != nil\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\treturn len(x.TxHash) != 0\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\treturn x.TxSigner != \"\"\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\treturn x.OwnerDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RecordMetadata) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\tx.CreationTs = nil\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\tx.TxHash = nil\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\tx.TxSigner = \"\"\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\tx.OwnerDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RecordMetadata) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\tvalue := x.CreationTs\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\tvalue := x.TxHash\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\tvalue := x.TxSigner\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\tvalue := x.OwnerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RecordMetadata) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\tx.CreationTs = value.Message().Interface().(*Timestamp)\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\tx.TxHash = value.Bytes()\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\tx.TxSigner = value.Interface().(string)\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\tx.OwnerDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RecordMetadata) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\tif x.CreationTs == nil {\n\t\t\tx.CreationTs = new(Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTs.ProtoReflect())\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\tpanic(fmt.Errorf(\"field tx_hash of message sourcehub.acp.RecordMetadata is not mutable\"))\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\tpanic(fmt.Errorf(\"field tx_signer of message sourcehub.acp.RecordMetadata is not mutable\"))\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\tpanic(fmt.Errorf(\"field owner_did of message sourcehub.acp.RecordMetadata is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RecordMetadata) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RecordMetadata.creation_ts\":\n\t\tm := new(Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.RecordMetadata.tx_hash\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcehub.acp.RecordMetadata.tx_signer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.RecordMetadata.owner_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RecordMetadata\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RecordMetadata does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RecordMetadata) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RecordMetadata\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RecordMetadata) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RecordMetadata) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RecordMetadata) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RecordMetadata) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RecordMetadata)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.CreationTs != nil {\n\t\t\tl = options.Size(x.CreationTs)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.TxHash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.TxSigner)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.OwnerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RecordMetadata)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.OwnerDid) > 0 {\n\t\t\ti -= len(x.OwnerDid)\n\t\t\tcopy(dAtA[i:], x.OwnerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.TxSigner) > 0 {\n\t\t\ti -= len(x.TxSigner)\n\t\t\tcopy(dAtA[i:], x.TxSigner)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TxSigner)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.TxHash) > 0 {\n\t\t\ti -= len(x.TxHash)\n\t\t\tcopy(dAtA[i:], x.TxHash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TxHash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.CreationTs != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTs)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RecordMetadata)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RecordMetadata: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RecordMetadata: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTs == nil {\n\t\t\t\t\tx.CreationTs = &Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTs); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TxHash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TxHash = append(x.TxHash[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.TxHash == nil {\n\t\t\t\t\tx.TxHash = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TxSigner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TxSigner = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_PolicyRecord              protoreflect.MessageDescriptor\n\tfd_PolicyRecord_policy       protoreflect.FieldDescriptor\n\tfd_PolicyRecord_metadata     protoreflect.FieldDescriptor\n\tfd_PolicyRecord_raw_policy   protoreflect.FieldDescriptor\n\tfd_PolicyRecord_marshal_type protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_record_proto_init()\n\tmd_PolicyRecord = File_sourcehub_acp_record_proto.Messages().ByName(\"PolicyRecord\")\n\tfd_PolicyRecord_policy = md_PolicyRecord.Fields().ByName(\"policy\")\n\tfd_PolicyRecord_metadata = md_PolicyRecord.Fields().ByName(\"metadata\")\n\tfd_PolicyRecord_raw_policy = md_PolicyRecord.Fields().ByName(\"raw_policy\")\n\tfd_PolicyRecord_marshal_type = md_PolicyRecord.Fields().ByName(\"marshal_type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyRecord)(nil)\n\ntype fastReflection_PolicyRecord PolicyRecord\n\nfunc (x *PolicyRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyRecord)(x)\n}\n\nfunc (x *PolicyRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_record_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyRecord_messageType fastReflection_PolicyRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyRecord_messageType{}\n\ntype fastReflection_PolicyRecord_messageType struct{}\n\nfunc (x fastReflection_PolicyRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyRecord)(nil)\n}\nfunc (x fastReflection_PolicyRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyRecord)\n}\nfunc (x fastReflection_PolicyRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyRecord) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\t\tif !f(fd_PolicyRecord_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Metadata != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\t\tif !f(fd_PolicyRecord_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RawPolicy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RawPolicy)\n\t\tif !f(fd_PolicyRecord_raw_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_PolicyRecord_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\treturn x.Policy != nil\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\treturn x.Metadata != nil\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\treturn x.RawPolicy != \"\"\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\tx.Policy = nil\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\tx.Metadata = nil\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\tx.RawPolicy = \"\"\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\tx.MarshalType = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\tvalue := x.Metadata\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\tvalue := x.RawPolicy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\tx.Policy = value.Message().Interface().(*types.Policy)\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\tx.Metadata = value.Message().Interface().(*RecordMetadata)\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\tx.RawPolicy = value.Interface().(string)\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\tx.MarshalType = (types.PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\tif x.Policy == nil {\n\t\t\tx.Policy = new(types.Policy)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = new(RecordMetadata)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\tpanic(fmt.Errorf(\"field raw_policy of message sourcehub.acp.PolicyRecord is not mutable\"))\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcehub.acp.PolicyRecord is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.PolicyRecord.policy\":\n\t\tm := new(types.Policy)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.metadata\":\n\t\tm := new(RecordMetadata)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.PolicyRecord.raw_policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.PolicyRecord.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.PolicyRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Policy != nil {\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tl = options.Size(x.Metadata)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.RawPolicy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif len(x.RawPolicy) > 0 {\n\t\t\ti -= len(x.RawPolicy)\n\t\t\tcopy(dAtA[i:], x.RawPolicy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RawPolicy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tencoded, err := options.Marshal(x.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Policy == nil {\n\t\t\t\t\tx.Policy = &types.Policy{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policy); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = &RecordMetadata{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RawPolicy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RawPolicy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RelationshipRecord              protoreflect.MessageDescriptor\n\tfd_RelationshipRecord_policy_id    protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_relationship protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_archived     protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_metadata     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_record_proto_init()\n\tmd_RelationshipRecord = File_sourcehub_acp_record_proto.Messages().ByName(\"RelationshipRecord\")\n\tfd_RelationshipRecord_policy_id = md_RelationshipRecord.Fields().ByName(\"policy_id\")\n\tfd_RelationshipRecord_relationship = md_RelationshipRecord.Fields().ByName(\"relationship\")\n\tfd_RelationshipRecord_archived = md_RelationshipRecord.Fields().ByName(\"archived\")\n\tfd_RelationshipRecord_metadata = md_RelationshipRecord.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RelationshipRecord)(nil)\n\ntype fastReflection_RelationshipRecord RelationshipRecord\n\nfunc (x *RelationshipRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RelationshipRecord)(x)\n}\n\nfunc (x *RelationshipRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_record_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RelationshipRecord_messageType fastReflection_RelationshipRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_RelationshipRecord_messageType{}\n\ntype fastReflection_RelationshipRecord_messageType struct{}\n\nfunc (x fastReflection_RelationshipRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RelationshipRecord)(nil)\n}\nfunc (x fastReflection_RelationshipRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipRecord)\n}\nfunc (x fastReflection_RelationshipRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RelationshipRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RelationshipRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_RelationshipRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RelationshipRecord) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RelationshipRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*RelationshipRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RelationshipRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_RelationshipRecord_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_RelationshipRecord_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Archived != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Archived)\n\t\tif !f(fd_RelationshipRecord_archived, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Metadata != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\t\tif !f(fd_RelationshipRecord_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RelationshipRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\treturn x.Relationship != nil\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\treturn x.Archived != false\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\treturn x.Metadata != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\tx.Relationship = nil\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\tx.Archived = false\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RelationshipRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\tvalue := x.Archived\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\tvalue := x.Metadata\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*types.Relationship)\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\tx.Archived = value.Bool()\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\tx.Metadata = value.Message().Interface().(*RecordMetadata)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(types.Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = new(RecordMetadata)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.RelationshipRecord is not mutable\"))\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\tpanic(fmt.Errorf(\"field archived of message sourcehub.acp.RelationshipRecord is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RelationshipRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.RelationshipRecord.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.RelationshipRecord.relationship\":\n\t\tm := new(types.Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.RelationshipRecord.archived\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.RelationshipRecord.metadata\":\n\t\tm := new(RecordMetadata)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RelationshipRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.RelationshipRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RelationshipRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RelationshipRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RelationshipRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Archived {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tl = options.Size(x.Metadata)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tencoded, err := options.Marshal(x.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Archived {\n\t\t\ti--\n\t\t\tif x.Archived {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &types.Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Archived\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Archived = bool(v != 0)\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = &RecordMetadata{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/record.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// RecordMetadata models metadata which is stored alongside acp records\ntype RecordMetadata struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// creation_ts is the timestamp of record creation\n\tCreationTs *Timestamp `protobuf:\"bytes,1,opt,name=creation_ts,json=creationTs,proto3\" json:\"creation_ts,omitempty\"`\n\t// tx_hash is the hash256 of the tx bytes which produced the record\n\tTxHash []byte `protobuf:\"bytes,2,opt,name=tx_hash,json=txHash,proto3\" json:\"tx_hash,omitempty\"`\n\t// tx_signer is the SourceHub bech32 address of the account that signed the Tx\n\tTxSigner string `protobuf:\"bytes,3,opt,name=tx_signer,json=txSigner,proto3\" json:\"tx_signer,omitempty\"`\n\t// owner_did is the DID of the PolicyCmd actor\n\tOwnerDid string `protobuf:\"bytes,4,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n}\n\nfunc (x *RecordMetadata) Reset() {\n\t*x = RecordMetadata{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_record_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RecordMetadata) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RecordMetadata) ProtoMessage() {}\n\n// Deprecated: Use RecordMetadata.ProtoReflect.Descriptor instead.\nfunc (*RecordMetadata) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_record_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RecordMetadata) GetCreationTs() *Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTs\n\t}\n\treturn nil\n}\n\nfunc (x *RecordMetadata) GetTxHash() []byte {\n\tif x != nil {\n\t\treturn x.TxHash\n\t}\n\treturn nil\n}\n\nfunc (x *RecordMetadata) GetTxSigner() string {\n\tif x != nil {\n\t\treturn x.TxSigner\n\t}\n\treturn \"\"\n}\n\nfunc (x *RecordMetadata) GetOwnerDid() string {\n\tif x != nil {\n\t\treturn x.OwnerDid\n\t}\n\treturn \"\"\n}\n\ntype PolicyRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy    *types.Policy   `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMetadata  *RecordMetadata `protobuf:\"bytes,2,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tRawPolicy string          `protobuf:\"bytes,3,opt,name=raw_policy,json=rawPolicy,proto3\" json:\"raw_policy,omitempty\"`\n\t// marshal_type flags the format of policy_raw\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,4,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (x *PolicyRecord) Reset() {\n\t*x = PolicyRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_record_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyRecord) ProtoMessage() {}\n\n// Deprecated: Use PolicyRecord.ProtoReflect.Descriptor instead.\nfunc (*PolicyRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_record_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *PolicyRecord) GetPolicy() *types.Policy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyRecord) GetMetadata() *RecordMetadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyRecord) GetRawPolicy() string {\n\tif x != nil {\n\t\treturn x.RawPolicy\n\t}\n\treturn \"\"\n}\n\nfunc (x *PolicyRecord) GetMarshalType() types.PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn types.PolicyMarshalingType(0)\n}\n\ntype RelationshipRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId     string              `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tRelationship *types.Relationship `protobuf:\"bytes,2,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n\tArchived     bool                `protobuf:\"varint,3,opt,name=archived,proto3\" json:\"archived,omitempty\"`\n\tMetadata     *RecordMetadata     `protobuf:\"bytes,4,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (x *RelationshipRecord) Reset() {\n\t*x = RelationshipRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_record_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RelationshipRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RelationshipRecord) ProtoMessage() {}\n\n// Deprecated: Use RelationshipRecord.ProtoReflect.Descriptor instead.\nfunc (*RelationshipRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_record_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *RelationshipRecord) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *RelationshipRecord) GetRelationship() *types.Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\nfunc (x *RelationshipRecord) GetArchived() bool {\n\tif x != nil {\n\t\treturn x.Archived\n\t}\n\treturn false\n}\n\nfunc (x *RelationshipRecord) GetMetadata() *RecordMetadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_record_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_record_proto_rawDesc = []byte{\n\t0x0a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d, 0x69,\n\t0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73,\n\t0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,\n\t0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,\n\t0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x74, 0x69,\n\t0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x68, 0x6f,\n\t0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65,\n\t0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x54, 0x69, 0x6d, 0x65,\n\t0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,\n\t0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0c, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78,\n\t0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,\n\t0x78, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72,\n\t0x5f, 0x64, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65,\n\t0x72, 0x44, 0x69, 0x64, 0x22, 0xf1, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a,\n\t0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08,\n\t0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x77, 0x5f,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x61,\n\t0x77, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x73, 0x68,\n\t0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72,\n\t0x73, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x61, 0x72,\n\t0x73, 0x68, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6c,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,\n\t0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0c,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76,\n\t0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76,\n\t0x65, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x95, 0x01,\n\t0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x63, 0x70, 0x42, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_record_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_record_proto_rawDescData = file_sourcehub_acp_record_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_record_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_record_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_record_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_record_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_record_proto_rawDescData\n}\n\nvar file_sourcehub_acp_record_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_sourcehub_acp_record_proto_goTypes = []interface{}{\n\t(*RecordMetadata)(nil),          // 0: sourcehub.acp.RecordMetadata\n\t(*PolicyRecord)(nil),            // 1: sourcehub.acp.PolicyRecord\n\t(*RelationshipRecord)(nil),      // 2: sourcehub.acp.RelationshipRecord\n\t(*Timestamp)(nil),               // 3: sourcehub.acp.Timestamp\n\t(*types.Policy)(nil),            // 4: sourcenetwork.acp_core.Policy\n\t(types.PolicyMarshalingType)(0), // 5: sourcenetwork.acp_core.PolicyMarshalingType\n\t(*types.Relationship)(nil),      // 6: sourcenetwork.acp_core.Relationship\n}\nvar file_sourcehub_acp_record_proto_depIdxs = []int32{\n\t3, // 0: sourcehub.acp.RecordMetadata.creation_ts:type_name -> sourcehub.acp.Timestamp\n\t4, // 1: sourcehub.acp.PolicyRecord.policy:type_name -> sourcenetwork.acp_core.Policy\n\t0, // 2: sourcehub.acp.PolicyRecord.metadata:type_name -> sourcehub.acp.RecordMetadata\n\t5, // 3: sourcehub.acp.PolicyRecord.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t6, // 4: sourcehub.acp.RelationshipRecord.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t0, // 5: sourcehub.acp.RelationshipRecord.metadata:type_name -> sourcehub.acp.RecordMetadata\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_record_proto_init() }\nfunc file_sourcehub_acp_record_proto_init() {\n\tif File_sourcehub_acp_record_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tfile_sourcehub_acp_time_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_record_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RecordMetadata); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_record_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_record_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RelationshipRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_record_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_record_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_record_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_record_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_record_proto = out.File\n\tfile_sourcehub_acp_record_proto_rawDesc = nil\n\tfile_sourcehub_acp_record_proto_goTypes = nil\n\tfile_sourcehub_acp_record_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/registration.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_AmendmentEvent                protoreflect.MessageDescriptor\n\tfd_AmendmentEvent_id             protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_policy_id      protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_object         protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_new_owner      protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_previous_owner protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_commitment_id  protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_hijack_flag    protoreflect.FieldDescriptor\n\tfd_AmendmentEvent_metadata       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_registration_proto_init()\n\tmd_AmendmentEvent = File_sourcehub_acp_registration_proto.Messages().ByName(\"AmendmentEvent\")\n\tfd_AmendmentEvent_id = md_AmendmentEvent.Fields().ByName(\"id\")\n\tfd_AmendmentEvent_policy_id = md_AmendmentEvent.Fields().ByName(\"policy_id\")\n\tfd_AmendmentEvent_object = md_AmendmentEvent.Fields().ByName(\"object\")\n\tfd_AmendmentEvent_new_owner = md_AmendmentEvent.Fields().ByName(\"new_owner\")\n\tfd_AmendmentEvent_previous_owner = md_AmendmentEvent.Fields().ByName(\"previous_owner\")\n\tfd_AmendmentEvent_commitment_id = md_AmendmentEvent.Fields().ByName(\"commitment_id\")\n\tfd_AmendmentEvent_hijack_flag = md_AmendmentEvent.Fields().ByName(\"hijack_flag\")\n\tfd_AmendmentEvent_metadata = md_AmendmentEvent.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AmendmentEvent)(nil)\n\ntype fastReflection_AmendmentEvent AmendmentEvent\n\nfunc (x *AmendmentEvent) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AmendmentEvent)(x)\n}\n\nfunc (x *AmendmentEvent) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_registration_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AmendmentEvent_messageType fastReflection_AmendmentEvent_messageType\nvar _ protoreflect.MessageType = fastReflection_AmendmentEvent_messageType{}\n\ntype fastReflection_AmendmentEvent_messageType struct{}\n\nfunc (x fastReflection_AmendmentEvent_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AmendmentEvent)(nil)\n}\nfunc (x fastReflection_AmendmentEvent_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AmendmentEvent)\n}\nfunc (x fastReflection_AmendmentEvent_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AmendmentEvent\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AmendmentEvent) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AmendmentEvent\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AmendmentEvent) Type() protoreflect.MessageType {\n\treturn _fastReflection_AmendmentEvent_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AmendmentEvent) New() protoreflect.Message {\n\treturn new(fastReflection_AmendmentEvent)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AmendmentEvent) Interface() protoreflect.ProtoMessage {\n\treturn (*AmendmentEvent)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AmendmentEvent) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Id)\n\t\tif !f(fd_AmendmentEvent_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_AmendmentEvent_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_AmendmentEvent_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.NewOwner != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.NewOwner.ProtoReflect())\n\t\tif !f(fd_AmendmentEvent_new_owner, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PreviousOwner != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.PreviousOwner.ProtoReflect())\n\t\tif !f(fd_AmendmentEvent_previous_owner, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CommitmentId != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.CommitmentId)\n\t\tif !f(fd_AmendmentEvent_commitment_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.HijackFlag != false {\n\t\tvalue := protoreflect.ValueOfBool(x.HijackFlag)\n\t\tif !f(fd_AmendmentEvent_hijack_flag, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Metadata != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\t\tif !f(fd_AmendmentEvent_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AmendmentEvent) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\treturn x.Id != uint64(0)\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\treturn x.NewOwner != nil\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\treturn x.PreviousOwner != nil\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\treturn x.CommitmentId != uint64(0)\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\treturn x.HijackFlag != false\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\treturn x.Metadata != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AmendmentEvent) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\tx.Id = uint64(0)\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\tx.Object = nil\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\tx.NewOwner = nil\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\tx.PreviousOwner = nil\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\tx.CommitmentId = uint64(0)\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\tx.HijackFlag = false\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AmendmentEvent) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\tvalue := x.NewOwner\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\tvalue := x.PreviousOwner\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\tvalue := x.CommitmentId\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\tvalue := x.HijackFlag\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\tvalue := x.Metadata\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AmendmentEvent) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\tx.Id = value.Uint()\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\tx.Object = value.Message().Interface().(*types.Object)\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\tx.NewOwner = value.Message().Interface().(*types.Actor)\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\tx.PreviousOwner = value.Message().Interface().(*types.Actor)\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\tx.CommitmentId = value.Uint()\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\tx.HijackFlag = value.Bool()\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\tx.Metadata = value.Message().Interface().(*RecordMetadata)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AmendmentEvent) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(types.Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\tif x.NewOwner == nil {\n\t\t\tx.NewOwner = new(types.Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.NewOwner.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\tif x.PreviousOwner == nil {\n\t\t\tx.PreviousOwner = new(types.Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.PreviousOwner.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = new(RecordMetadata)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Metadata.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.acp.AmendmentEvent is not mutable\"))\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.AmendmentEvent is not mutable\"))\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\tpanic(fmt.Errorf(\"field commitment_id of message sourcehub.acp.AmendmentEvent is not mutable\"))\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\tpanic(fmt.Errorf(\"field hijack_flag of message sourcehub.acp.AmendmentEvent is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AmendmentEvent) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.AmendmentEvent.id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.AmendmentEvent.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.AmendmentEvent.object\":\n\t\tm := new(types.Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.new_owner\":\n\t\tm := new(types.Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.previous_owner\":\n\t\tm := new(types.Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.AmendmentEvent.commitment_id\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.AmendmentEvent.hijack_flag\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.acp.AmendmentEvent.metadata\":\n\t\tm := new(RecordMetadata)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.AmendmentEvent\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.AmendmentEvent does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AmendmentEvent) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.AmendmentEvent\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AmendmentEvent) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AmendmentEvent) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AmendmentEvent) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AmendmentEvent) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AmendmentEvent)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Id != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Id))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.NewOwner != nil {\n\t\t\tl = options.Size(x.NewOwner)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.PreviousOwner != nil {\n\t\t\tl = options.Size(x.PreviousOwner)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CommitmentId != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CommitmentId))\n\t\t}\n\t\tif x.HijackFlag {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tl = options.Size(x.Metadata)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AmendmentEvent)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Metadata != nil {\n\t\t\tencoded, err := options.Marshal(x.Metadata)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.HijackFlag {\n\t\t\ti--\n\t\t\tif x.HijackFlag {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x38\n\t\t}\n\t\tif x.CommitmentId != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CommitmentId))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x30\n\t\t}\n\t\tif x.PreviousOwner != nil {\n\t\t\tencoded, err := options.Marshal(x.PreviousOwner)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.NewOwner != nil {\n\t\t\tencoded, err := options.Marshal(x.NewOwner)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Id != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Id))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AmendmentEvent)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AmendmentEvent: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AmendmentEvent: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Id = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Id |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &types.Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NewOwner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.NewOwner == nil {\n\t\t\t\t\tx.NewOwner = &types.Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.NewOwner); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PreviousOwner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.PreviousOwner == nil {\n\t\t\t\t\tx.PreviousOwner = &types.Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PreviousOwner); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CommitmentId\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CommitmentId = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CommitmentId |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 7:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field HijackFlag\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.HijackFlag = bool(v != 0)\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = &RecordMetadata{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/registration.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// AmendmentEvent is a record which tracks executions of the Registration Amendment rule in SourceHub ACP\ntype AmendmentEvent struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// event id\n\tId uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// id of affected policy\n\tPolicyId string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\t// object whose registration was amended\n\tObject *types.Object `protobuf:\"bytes,3,opt,name=object,proto3\" json:\"object,omitempty\"`\n\t// new_owner is the new object owner\n\tNewOwner *types.Actor `protobuf:\"bytes,4,opt,name=new_owner,json=newOwner,proto3\" json:\"new_owner,omitempty\"`\n\t// previous_owner is the previous object owner\n\tPreviousOwner *types.Actor `protobuf:\"bytes,5,opt,name=previous_owner,json=previousOwner,proto3\" json:\"previous_owner,omitempty\"`\n\t// commitment_id is the id of the commitment which generated the amendment\n\tCommitmentId uint64 `protobuf:\"varint,6,opt,name=commitment_id,json=commitmentId,proto3\" json:\"commitment_id,omitempty\"`\n\t// hijack_flag is true if the amendment rule was executed and the new_owner chose to flag\n\t// the previous_owner as a potential object hijacker\n\tHijackFlag bool            `protobuf:\"varint,7,opt,name=hijack_flag,json=hijackFlag,proto3\" json:\"hijack_flag,omitempty\"`\n\tMetadata   *RecordMetadata `protobuf:\"bytes,8,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (x *AmendmentEvent) Reset() {\n\t*x = AmendmentEvent{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_registration_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AmendmentEvent) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AmendmentEvent) ProtoMessage() {}\n\n// Deprecated: Use AmendmentEvent.ProtoReflect.Descriptor instead.\nfunc (*AmendmentEvent) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_registration_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AmendmentEvent) GetId() uint64 {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn 0\n}\n\nfunc (x *AmendmentEvent) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *AmendmentEvent) GetObject() *types.Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *AmendmentEvent) GetNewOwner() *types.Actor {\n\tif x != nil {\n\t\treturn x.NewOwner\n\t}\n\treturn nil\n}\n\nfunc (x *AmendmentEvent) GetPreviousOwner() *types.Actor {\n\tif x != nil {\n\t\treturn x.PreviousOwner\n\t}\n\treturn nil\n}\n\nfunc (x *AmendmentEvent) GetCommitmentId() uint64 {\n\tif x != nil {\n\t\treturn x.CommitmentId\n\t}\n\treturn 0\n}\n\nfunc (x *AmendmentEvent) GetHijackFlag() bool {\n\tif x != nil {\n\t\treturn x.HijackFlag\n\t}\n\treturn false\n}\n\nfunc (x *AmendmentEvent) GetMetadata() *RecordMetadata {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_registration_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_registration_proto_rawDesc = []byte{\n\t0x0a, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x74, 0x69,\n\t0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x02, 0x0a, 0x0e, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x6d, 0x65, 0x6e,\n\t0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x6e,\n\t0x65, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6e,\n\t0x65, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69,\n\t0x6f, 0x75, 0x73, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d,\n\t0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a,\n\t0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74,\n\t0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x5f, 0x66, 0x6c, 0x61,\n\t0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x46,\n\t0x6c, 0x61, 0x67, 0x12, 0x39, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,\n\t0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x9b,\n\t0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x42, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2,\n\t0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_registration_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_registration_proto_rawDescData = file_sourcehub_acp_registration_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_registration_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_registration_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_registration_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_registration_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_registration_proto_rawDescData\n}\n\nvar file_sourcehub_acp_registration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_acp_registration_proto_goTypes = []interface{}{\n\t(*AmendmentEvent)(nil), // 0: sourcehub.acp.AmendmentEvent\n\t(*types.Object)(nil),   // 1: sourcenetwork.acp_core.Object\n\t(*types.Actor)(nil),    // 2: sourcenetwork.acp_core.Actor\n\t(*RecordMetadata)(nil), // 3: sourcehub.acp.RecordMetadata\n}\nvar file_sourcehub_acp_registration_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.acp.AmendmentEvent.object:type_name -> sourcenetwork.acp_core.Object\n\t2, // 1: sourcehub.acp.AmendmentEvent.new_owner:type_name -> sourcenetwork.acp_core.Actor\n\t2, // 2: sourcehub.acp.AmendmentEvent.previous_owner:type_name -> sourcenetwork.acp_core.Actor\n\t3, // 3: sourcehub.acp.AmendmentEvent.metadata:type_name -> sourcehub.acp.RecordMetadata\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_registration_proto_init() }\nfunc file_sourcehub_acp_registration_proto_init() {\n\tif File_sourcehub_acp_registration_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_record_proto_init()\n\tfile_sourcehub_acp_time_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_registration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AmendmentEvent); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_registration_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_registration_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_registration_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_registration_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_registration_proto = out.File\n\tfile_sourcehub_acp_registration_proto_rawDesc = nil\n\tfile_sourcehub_acp_registration_proto_goTypes = nil\n\tfile_sourcehub_acp_registration_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/signed_policy_cmd.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_SignedPolicyCmd           protoreflect.MessageDescriptor\n\tfd_SignedPolicyCmd_payload   protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmd_signature protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_signed_policy_cmd_proto_init()\n\tmd_SignedPolicyCmd = File_sourcehub_acp_signed_policy_cmd_proto.Messages().ByName(\"SignedPolicyCmd\")\n\tfd_SignedPolicyCmd_payload = md_SignedPolicyCmd.Fields().ByName(\"payload\")\n\tfd_SignedPolicyCmd_signature = md_SignedPolicyCmd.Fields().ByName(\"signature\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SignedPolicyCmd)(nil)\n\ntype fastReflection_SignedPolicyCmd SignedPolicyCmd\n\nfunc (x *SignedPolicyCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SignedPolicyCmd)(x)\n}\n\nfunc (x *SignedPolicyCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_signed_policy_cmd_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SignedPolicyCmd_messageType fastReflection_SignedPolicyCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_SignedPolicyCmd_messageType{}\n\ntype fastReflection_SignedPolicyCmd_messageType struct{}\n\nfunc (x fastReflection_SignedPolicyCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SignedPolicyCmd)(nil)\n}\nfunc (x fastReflection_SignedPolicyCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SignedPolicyCmd)\n}\nfunc (x fastReflection_SignedPolicyCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SignedPolicyCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SignedPolicyCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SignedPolicyCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SignedPolicyCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_SignedPolicyCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SignedPolicyCmd) New() protoreflect.Message {\n\treturn new(fastReflection_SignedPolicyCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SignedPolicyCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*SignedPolicyCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SignedPolicyCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Payload != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Payload.ProtoReflect())\n\t\tif !f(fd_SignedPolicyCmd_payload, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Signature) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Signature)\n\t\tif !f(fd_SignedPolicyCmd_signature, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SignedPolicyCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\treturn x.Payload != nil\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\treturn len(x.Signature) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\tx.Payload = nil\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\tx.Signature = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SignedPolicyCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\tvalue := x.Payload\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\tvalue := x.Signature\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\tx.Payload = value.Message().Interface().(*SignedPolicyCmdPayload)\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\tx.Signature = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\tif x.Payload == nil {\n\t\t\tx.Payload = new(SignedPolicyCmdPayload)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Payload.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\tpanic(fmt.Errorf(\"field signature of message sourcehub.acp.SignedPolicyCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SignedPolicyCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmd.payload\":\n\t\tm := new(SignedPolicyCmdPayload)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmd.signature\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SignedPolicyCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.SignedPolicyCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SignedPolicyCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SignedPolicyCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SignedPolicyCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Payload != nil {\n\t\t\tl = options.Size(x.Payload)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Signature)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Signature) > 0 {\n\t\t\ti -= len(x.Signature)\n\t\t\tcopy(dAtA[i:], x.Signature)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Signature)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Payload != nil {\n\t\t\tencoded, err := options.Marshal(x.Payload)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SignedPolicyCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SignedPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Payload == nil {\n\t\t\t\t\tx.Payload = &SignedPolicyCmdPayload{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Payload); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Signature\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Signature = append(x.Signature[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Signature == nil {\n\t\t\t\t\tx.Signature = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SignedPolicyCmdPayload                  protoreflect.MessageDescriptor\n\tfd_SignedPolicyCmdPayload_actor            protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmdPayload_issued_height    protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmdPayload_issued_at        protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmdPayload_expiration_delta protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmdPayload_policy_id        protoreflect.FieldDescriptor\n\tfd_SignedPolicyCmdPayload_cmd              protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_signed_policy_cmd_proto_init()\n\tmd_SignedPolicyCmdPayload = File_sourcehub_acp_signed_policy_cmd_proto.Messages().ByName(\"SignedPolicyCmdPayload\")\n\tfd_SignedPolicyCmdPayload_actor = md_SignedPolicyCmdPayload.Fields().ByName(\"actor\")\n\tfd_SignedPolicyCmdPayload_issued_height = md_SignedPolicyCmdPayload.Fields().ByName(\"issued_height\")\n\tfd_SignedPolicyCmdPayload_issued_at = md_SignedPolicyCmdPayload.Fields().ByName(\"issued_at\")\n\tfd_SignedPolicyCmdPayload_expiration_delta = md_SignedPolicyCmdPayload.Fields().ByName(\"expiration_delta\")\n\tfd_SignedPolicyCmdPayload_policy_id = md_SignedPolicyCmdPayload.Fields().ByName(\"policy_id\")\n\tfd_SignedPolicyCmdPayload_cmd = md_SignedPolicyCmdPayload.Fields().ByName(\"cmd\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SignedPolicyCmdPayload)(nil)\n\ntype fastReflection_SignedPolicyCmdPayload SignedPolicyCmdPayload\n\nfunc (x *SignedPolicyCmdPayload) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SignedPolicyCmdPayload)(x)\n}\n\nfunc (x *SignedPolicyCmdPayload) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_signed_policy_cmd_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SignedPolicyCmdPayload_messageType fastReflection_SignedPolicyCmdPayload_messageType\nvar _ protoreflect.MessageType = fastReflection_SignedPolicyCmdPayload_messageType{}\n\ntype fastReflection_SignedPolicyCmdPayload_messageType struct{}\n\nfunc (x fastReflection_SignedPolicyCmdPayload_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SignedPolicyCmdPayload)(nil)\n}\nfunc (x fastReflection_SignedPolicyCmdPayload_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SignedPolicyCmdPayload)\n}\nfunc (x fastReflection_SignedPolicyCmdPayload_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SignedPolicyCmdPayload\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SignedPolicyCmdPayload\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Type() protoreflect.MessageType {\n\treturn _fastReflection_SignedPolicyCmdPayload_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SignedPolicyCmdPayload) New() protoreflect.Message {\n\treturn new(fastReflection_SignedPolicyCmdPayload)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Interface() protoreflect.ProtoMessage {\n\treturn (*SignedPolicyCmdPayload)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_SignedPolicyCmdPayload_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuedHeight != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.IssuedHeight)\n\t\tif !f(fd_SignedPolicyCmdPayload_issued_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.IssuedAt.ProtoReflect())\n\t\tif !f(fd_SignedPolicyCmdPayload_issued_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.ExpirationDelta)\n\t\tif !f(fd_SignedPolicyCmdPayload_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_SignedPolicyCmdPayload_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Cmd != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\t\tif !f(fd_SignedPolicyCmdPayload_cmd, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\treturn x.IssuedHeight != uint64(0)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\treturn x.IssuedAt != nil\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\treturn x.ExpirationDelta != uint64(0)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\treturn x.Cmd != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\tx.IssuedHeight = uint64(0)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\tx.IssuedAt = nil\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\tx.ExpirationDelta = uint64(0)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\tx.Cmd = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\tvalue := x.IssuedHeight\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\tvalue := x.IssuedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\tvalue := x.ExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\tvalue := x.Cmd\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\tx.IssuedHeight = value.Uint()\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\tx.IssuedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\tx.ExpirationDelta = value.Uint()\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\tx.Cmd = value.Message().Interface().(*PolicyCmd)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmdPayload) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\tif x.IssuedAt == nil {\n\t\t\tx.IssuedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.IssuedAt.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tx.Cmd = new(PolicyCmd)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcehub.acp.SignedPolicyCmdPayload is not mutable\"))\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\tpanic(fmt.Errorf(\"field issued_height of message sourcehub.acp.SignedPolicyCmdPayload is not mutable\"))\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field expiration_delta of message sourcehub.acp.SignedPolicyCmdPayload is not mutable\"))\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.SignedPolicyCmdPayload is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SignedPolicyCmdPayload) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_height\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.issued_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.SignedPolicyCmdPayload.cmd\":\n\t\tm := new(PolicyCmd)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.SignedPolicyCmdPayload\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.SignedPolicyCmdPayload does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SignedPolicyCmdPayload) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.SignedPolicyCmdPayload\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SignedPolicyCmdPayload) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SignedPolicyCmdPayload) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SignedPolicyCmdPayload) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SignedPolicyCmdPayload) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SignedPolicyCmdPayload)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.IssuedHeight))\n\t\t}\n\t\tif x.IssuedAt != nil {\n\t\t\tl = options.Size(x.IssuedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.ExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ExpirationDelta))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tl = options.Size(x.Cmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SignedPolicyCmdPayload)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tencoded, err := options.Marshal(x.Cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.ExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.IssuedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.IssuedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.IssuedHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SignedPolicyCmdPayload)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SignedPolicyCmdPayload: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SignedPolicyCmdPayload: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuedHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.IssuedHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.IssuedHeight |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.IssuedAt == nil {\n\t\t\t\t\tx.IssuedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.IssuedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Cmd == nil {\n\t\t\t\t\tx.Cmd = &PolicyCmd{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Cmd); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/signed_policy_cmd.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// SignedPolicyCmd represents a Command issued by an Actor in the context of a Policy\n// The command represents an instruction to be executed\n// The message type contains a signature which is used to authenticate the Command's Actor\ntype SignedPolicyCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// payload contains the command context\n\tPayload *SignedPolicyCmdPayload `protobuf:\"bytes,1,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\t// signature is a signature of the payload.\n\t// The signature is generated using the VerificationMethod / Authorization fields\n\t// specificied by the DID document of the Actor.\n\tSignature []byte `protobuf:\"bytes,2,opt,name=signature,proto3\" json:\"signature,omitempty\"`\n}\n\nfunc (x *SignedPolicyCmd) Reset() {\n\t*x = SignedPolicyCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_signed_policy_cmd_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SignedPolicyCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SignedPolicyCmd) ProtoMessage() {}\n\n// Deprecated: Use SignedPolicyCmd.ProtoReflect.Descriptor instead.\nfunc (*SignedPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_signed_policy_cmd_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *SignedPolicyCmd) GetPayload() *SignedPolicyCmdPayload {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *SignedPolicyCmd) GetSignature() []byte {\n\tif x != nil {\n\t\treturn x.Signature\n\t}\n\treturn nil\n}\n\n// SignedPolicyCmdPayload represents the payload containing the context of the issued command\ntype SignedPolicyCmdPayload struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// actor is a did string representing the actor which issued the command\n\tActor string `protobuf:\"bytes,1,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\t// issued_height is the SourceHub block height of when the Payload was created\n\tIssuedHeight uint64 `protobuf:\"varint,2,opt,name=issued_height,json=issuedHeight,proto3\" json:\"issued_height,omitempty\"`\n\t// issued_at contains a client generated timestamp for the creation of the command.\n\t// This is used only as metadata and isn't trusted\n\tIssuedAt *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=issued_at,json=issuedAt,proto3\" json:\"issued_at,omitempty\"`\n\t// expiration_delta specifies the maximum number of blocks from the issued height during which the Command Payload will be accepted.\n\t// This field is mandatory and is used to prevent replay attacks\n\tExpirationDelta uint64 `protobuf:\"varint,4,opt,name=expiration_delta,json=expirationDelta,proto3\" json:\"expiration_delta,omitempty\"`\n\t// policy_id is the ID of the policy under which the Command will be executed\n\tPolicyId string     `protobuf:\"bytes,5,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd      *PolicyCmd `protobuf:\"bytes,6,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (x *SignedPolicyCmdPayload) Reset() {\n\t*x = SignedPolicyCmdPayload{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_signed_policy_cmd_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SignedPolicyCmdPayload) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SignedPolicyCmdPayload) ProtoMessage() {}\n\n// Deprecated: Use SignedPolicyCmdPayload.ProtoReflect.Descriptor instead.\nfunc (*SignedPolicyCmdPayload) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_signed_policy_cmd_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *SignedPolicyCmdPayload) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *SignedPolicyCmdPayload) GetIssuedHeight() uint64 {\n\tif x != nil {\n\t\treturn x.IssuedHeight\n\t}\n\treturn 0\n}\n\nfunc (x *SignedPolicyCmdPayload) GetIssuedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.IssuedAt\n\t}\n\treturn nil\n}\n\nfunc (x *SignedPolicyCmdPayload) GetExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.ExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *SignedPolicyCmdPayload) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *SignedPolicyCmdPayload) GetCmd() *PolicyCmd {\n\tif x != nil {\n\t\treturn x.Cmd\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_signed_policy_cmd_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_signed_policy_cmd_proto_rawDesc = []byte{\n\t0x0a, 0x25, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6d,\n\t0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e,\n\t0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6d,\n\t0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x63, 0x70, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0x70, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x43, 0x6d, 0x64, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x43, 0x6d, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79,\n\t0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,\n\t0x72, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a,\n\t0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63,\n\t0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x68, 0x65,\n\t0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75,\n\t0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x73, 0x75,\n\t0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41,\n\t0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,\n\t0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x65, 0x78, 0x70,\n\t0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x6d, 0x64,\n\t0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64,\n\t0x52, 0x03, 0x63, 0x6d, 0x64, 0x42, 0x9e, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x14, 0x53, 0x69, 0x67,\n\t0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69,\n\t0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x61, 0x63, 0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,\n\t0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_signed_policy_cmd_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_signed_policy_cmd_proto_rawDescData = file_sourcehub_acp_signed_policy_cmd_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_signed_policy_cmd_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_signed_policy_cmd_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_signed_policy_cmd_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_signed_policy_cmd_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_signed_policy_cmd_proto_rawDescData\n}\n\nvar file_sourcehub_acp_signed_policy_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_acp_signed_policy_cmd_proto_goTypes = []interface{}{\n\t(*SignedPolicyCmd)(nil),        // 0: sourcehub.acp.SignedPolicyCmd\n\t(*SignedPolicyCmdPayload)(nil), // 1: sourcehub.acp.SignedPolicyCmdPayload\n\t(*timestamppb.Timestamp)(nil),  // 2: google.protobuf.Timestamp\n\t(*PolicyCmd)(nil),              // 3: sourcehub.acp.PolicyCmd\n}\nvar file_sourcehub_acp_signed_policy_cmd_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.acp.SignedPolicyCmd.payload:type_name -> sourcehub.acp.SignedPolicyCmdPayload\n\t2, // 1: sourcehub.acp.SignedPolicyCmdPayload.issued_at:type_name -> google.protobuf.Timestamp\n\t3, // 2: sourcehub.acp.SignedPolicyCmdPayload.cmd:type_name -> sourcehub.acp.PolicyCmd\n\t3, // [3:3] is the sub-list for method output_type\n\t3, // [3:3] is the sub-list for method input_type\n\t3, // [3:3] is the sub-list for extension type_name\n\t3, // [3:3] is the sub-list for extension extendee\n\t0, // [0:3] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_signed_policy_cmd_proto_init() }\nfunc file_sourcehub_acp_signed_policy_cmd_proto_init() {\n\tif File_sourcehub_acp_signed_policy_cmd_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_commitment_proto_init()\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tfile_sourcehub_acp_record_proto_init()\n\tfile_sourcehub_acp_registration_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_signed_policy_cmd_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SignedPolicyCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_signed_policy_cmd_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SignedPolicyCmdPayload); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_signed_policy_cmd_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_signed_policy_cmd_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_signed_policy_cmd_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_signed_policy_cmd_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_signed_policy_cmd_proto = out.File\n\tfile_sourcehub_acp_signed_policy_cmd_proto_rawDesc = nil\n\tfile_sourcehub_acp_signed_policy_cmd_proto_goTypes = nil\n\tfile_sourcehub_acp_signed_policy_cmd_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/time.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Duration                protoreflect.MessageDescriptor\n\tfd_Duration_proto_duration protoreflect.FieldDescriptor\n\tfd_Duration_block_count    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_time_proto_init()\n\tmd_Duration = File_sourcehub_acp_time_proto.Messages().ByName(\"Duration\")\n\tfd_Duration_proto_duration = md_Duration.Fields().ByName(\"proto_duration\")\n\tfd_Duration_block_count = md_Duration.Fields().ByName(\"block_count\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Duration)(nil)\n\ntype fastReflection_Duration Duration\n\nfunc (x *Duration) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Duration)(x)\n}\n\nfunc (x *Duration) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_time_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Duration_messageType fastReflection_Duration_messageType\nvar _ protoreflect.MessageType = fastReflection_Duration_messageType{}\n\ntype fastReflection_Duration_messageType struct{}\n\nfunc (x fastReflection_Duration_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Duration)(nil)\n}\nfunc (x fastReflection_Duration_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Duration)\n}\nfunc (x fastReflection_Duration_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Duration\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Duration) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Duration\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Duration) Type() protoreflect.MessageType {\n\treturn _fastReflection_Duration_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Duration) New() protoreflect.Message {\n\treturn new(fastReflection_Duration)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Duration) Interface() protoreflect.ProtoMessage {\n\treturn (*Duration)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Duration) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Duration != nil {\n\t\tswitch o := x.Duration.(type) {\n\t\tcase *Duration_ProtoDuration:\n\t\t\tv := o.ProtoDuration\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_Duration_proto_duration, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *Duration_BlockCount:\n\t\t\tv := o.BlockCount\n\t\t\tvalue := protoreflect.ValueOfUint64(v)\n\t\t\tif !f(fd_Duration_block_count, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Duration) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tif x.Duration == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Duration.(*Duration_ProtoDuration); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\tif x.Duration == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Duration.(*Duration_BlockCount); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Duration) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tx.Duration = nil\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\tx.Duration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Duration) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tif x.Duration == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*durationpb.Duration)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Duration.(*Duration_ProtoDuration); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.ProtoDuration.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*durationpb.Duration)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\tif x.Duration == nil {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\t\t} else if v, ok := x.Duration.(*Duration_BlockCount); ok {\n\t\t\treturn protoreflect.ValueOfUint64(v.BlockCount)\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Duration) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tcv := value.Message().Interface().(*durationpb.Duration)\n\t\tx.Duration = &Duration_ProtoDuration{ProtoDuration: cv}\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\tcv := value.Uint()\n\t\tx.Duration = &Duration_BlockCount{BlockCount: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Duration) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tif x.Duration == nil {\n\t\t\tvalue := &durationpb.Duration{}\n\t\t\toneofValue := &Duration_ProtoDuration{ProtoDuration: value}\n\t\t\tx.Duration = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Duration.(type) {\n\t\tcase *Duration_ProtoDuration:\n\t\t\treturn protoreflect.ValueOfMessage(m.ProtoDuration.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &durationpb.Duration{}\n\t\t\toneofValue := &Duration_ProtoDuration{ProtoDuration: value}\n\t\t\tx.Duration = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\tpanic(fmt.Errorf(\"field block_count of message sourcehub.acp.Duration is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Duration) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Duration.proto_duration\":\n\t\tvalue := &durationpb.Duration{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.Duration.block_count\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Duration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Duration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Duration) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcehub.acp.Duration.duration\":\n\t\tif x.Duration == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Duration.(type) {\n\t\tcase *Duration_ProtoDuration:\n\t\t\treturn x.Descriptor().Fields().ByName(\"proto_duration\")\n\t\tcase *Duration_BlockCount:\n\t\t\treturn x.Descriptor().Fields().ByName(\"block_count\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.Duration\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Duration) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Duration) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Duration) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Duration) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Duration)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Duration.(type) {\n\t\tcase *Duration_ProtoDuration:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.ProtoDuration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *Duration_BlockCount:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tn += 1 + runtime.Sov(uint64(x.BlockCount))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Duration)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Duration.(type) {\n\t\tcase *Duration_ProtoDuration:\n\t\t\tencoded, err := options.Marshal(x.ProtoDuration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *Duration_BlockCount:\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.BlockCount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Duration)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Duration: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Duration: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProtoDuration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &durationpb.Duration{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Duration = &Duration_ProtoDuration{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BlockCount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Duration = &Duration_BlockCount{v}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Timestamp              protoreflect.MessageDescriptor\n\tfd_Timestamp_proto_ts     protoreflect.FieldDescriptor\n\tfd_Timestamp_block_height protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_time_proto_init()\n\tmd_Timestamp = File_sourcehub_acp_time_proto.Messages().ByName(\"Timestamp\")\n\tfd_Timestamp_proto_ts = md_Timestamp.Fields().ByName(\"proto_ts\")\n\tfd_Timestamp_block_height = md_Timestamp.Fields().ByName(\"block_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Timestamp)(nil)\n\ntype fastReflection_Timestamp Timestamp\n\nfunc (x *Timestamp) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Timestamp)(x)\n}\n\nfunc (x *Timestamp) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_time_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Timestamp_messageType fastReflection_Timestamp_messageType\nvar _ protoreflect.MessageType = fastReflection_Timestamp_messageType{}\n\ntype fastReflection_Timestamp_messageType struct{}\n\nfunc (x fastReflection_Timestamp_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Timestamp)(nil)\n}\nfunc (x fastReflection_Timestamp_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Timestamp)\n}\nfunc (x fastReflection_Timestamp_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Timestamp\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Timestamp) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Timestamp\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Timestamp) Type() protoreflect.MessageType {\n\treturn _fastReflection_Timestamp_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Timestamp) New() protoreflect.Message {\n\treturn new(fastReflection_Timestamp)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Timestamp) Interface() protoreflect.ProtoMessage {\n\treturn (*Timestamp)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Timestamp) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.ProtoTs != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ProtoTs.ProtoReflect())\n\t\tif !f(fd_Timestamp_proto_ts, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.BlockHeight != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.BlockHeight)\n\t\tif !f(fd_Timestamp_block_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Timestamp) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\treturn x.ProtoTs != nil\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\treturn x.BlockHeight != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Timestamp) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\tx.ProtoTs = nil\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\tx.BlockHeight = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Timestamp) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\tvalue := x.ProtoTs\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\tvalue := x.BlockHeight\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Timestamp) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\tx.ProtoTs = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\tx.BlockHeight = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Timestamp) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\tif x.ProtoTs == nil {\n\t\t\tx.ProtoTs = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ProtoTs.ProtoReflect())\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\tpanic(fmt.Errorf(\"field block_height of message sourcehub.acp.Timestamp is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Timestamp) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.Timestamp.proto_ts\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.acp.Timestamp.block_height\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.Timestamp\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.Timestamp does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Timestamp) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.Timestamp\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Timestamp) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Timestamp) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Timestamp) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Timestamp) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Timestamp)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.ProtoTs != nil {\n\t\t\tl = options.Size(x.ProtoTs)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.BlockHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.BlockHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Timestamp)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.BlockHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.BlockHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.ProtoTs != nil {\n\t\t\tencoded, err := options.Marshal(x.ProtoTs)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Timestamp)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Timestamp: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Timestamp: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProtoTs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ProtoTs == nil {\n\t\t\t\t\tx.ProtoTs = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ProtoTs); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BlockHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.BlockHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.BlockHeight |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/time.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Duration models a time interval expressed either as a wallclock\n// Duration interval or a number of blocks\ntype Duration struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Duration:\n\t//\n\t//\t*Duration_ProtoDuration\n\t//\t*Duration_BlockCount\n\tDuration isDuration_Duration `protobuf_oneof:\"duration\"`\n}\n\nfunc (x *Duration) Reset() {\n\t*x = Duration{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_time_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Duration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Duration) ProtoMessage() {}\n\n// Deprecated: Use Duration.ProtoReflect.Descriptor instead.\nfunc (*Duration) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_time_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Duration) GetDuration() isDuration_Duration {\n\tif x != nil {\n\t\treturn x.Duration\n\t}\n\treturn nil\n}\n\nfunc (x *Duration) GetProtoDuration() *durationpb.Duration {\n\tif x, ok := x.GetDuration().(*Duration_ProtoDuration); ok {\n\t\treturn x.ProtoDuration\n\t}\n\treturn nil\n}\n\nfunc (x *Duration) GetBlockCount() uint64 {\n\tif x, ok := x.GetDuration().(*Duration_BlockCount); ok {\n\t\treturn x.BlockCount\n\t}\n\treturn 0\n}\n\ntype isDuration_Duration interface {\n\tisDuration_Duration()\n}\n\ntype Duration_ProtoDuration struct {\n\tProtoDuration *durationpb.Duration `protobuf:\"bytes,1,opt,name=proto_duration,json=protoDuration,proto3,oneof\"`\n}\n\ntype Duration_BlockCount struct {\n\tBlockCount uint64 `protobuf:\"varint,2,opt,name=block_count,json=blockCount,proto3,oneof\"`\n}\n\nfunc (*Duration_ProtoDuration) isDuration_Duration() {}\n\nfunc (*Duration_BlockCount) isDuration_Duration() {}\n\n// Timestamp models an instant in time expressed as a wallclock\n// Timestamp and a block height\ntype Timestamp struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tProtoTs     *timestamppb.Timestamp `protobuf:\"bytes,1,opt,name=proto_ts,json=protoTs,proto3\" json:\"proto_ts,omitempty\"`\n\tBlockHeight uint64                 `protobuf:\"varint,2,opt,name=block_height,json=blockHeight,proto3\" json:\"block_height,omitempty\"`\n}\n\nfunc (x *Timestamp) Reset() {\n\t*x = Timestamp{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_time_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Timestamp) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Timestamp) ProtoMessage() {}\n\n// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.\nfunc (*Timestamp) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_time_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Timestamp) GetProtoTs() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.ProtoTs\n\t}\n\treturn nil\n}\n\nfunc (x *Timestamp) GetBlockHeight() uint64 {\n\tif x != nil {\n\t\treturn x.BlockHeight\n\t}\n\treturn 0\n}\n\nvar File_sourcehub_acp_time_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_time_proto_rawDesc = []byte{\n\t0x0a, 0x18, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f,\n\t0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x01,\n\t0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0xb2,\n\t0xe7, 0xb0, 0x2a, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x75, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x75,\n\t0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x10, 0xb2, 0xe7, 0xb0, 0x2a, 0x0b, 0x62,\n\t0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x6c,\n\t0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,\n\t0x70, 0x12, 0x35, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x74, 0x73, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,\n\t0x07, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x54, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63,\n\t0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,\n\t0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x93, 0x01, 0x0a, 0x11,\n\t0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x42, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,\n\t0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0xa2, 0x02,\n\t0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,\n\t0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x63,\n\t0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_time_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_time_proto_rawDescData = file_sourcehub_acp_time_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_time_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_time_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_time_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_time_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_time_proto_rawDescData\n}\n\nvar file_sourcehub_acp_time_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_acp_time_proto_goTypes = []interface{}{\n\t(*Duration)(nil),              // 0: sourcehub.acp.Duration\n\t(*Timestamp)(nil),             // 1: sourcehub.acp.Timestamp\n\t(*durationpb.Duration)(nil),   // 2: google.protobuf.Duration\n\t(*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp\n}\nvar file_sourcehub_acp_time_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.acp.Duration.proto_duration:type_name -> google.protobuf.Duration\n\t3, // 1: sourcehub.acp.Timestamp.proto_ts:type_name -> google.protobuf.Timestamp\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_time_proto_init() }\nfunc file_sourcehub_acp_time_proto_init() {\n\tif File_sourcehub_acp_time_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_time_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Duration); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_time_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Timestamp); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_sourcehub_acp_time_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*Duration_ProtoDuration)(nil),\n\t\t(*Duration_BlockCount)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_time_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_time_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_time_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_acp_time_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_time_proto = out.File\n\tfile_sourcehub_acp_time_proto_rawDesc = nil\n\tfile_sourcehub_acp_time_proto_goTypes = nil\n\tfile_sourcehub_acp_time_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/tx.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/pulsar/types\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_MsgUpdateParams           protoreflect.MessageDescriptor\n\tfd_MsgUpdateParams_authority protoreflect.FieldDescriptor\n\tfd_MsgUpdateParams_params    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgUpdateParams = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgUpdateParams\")\n\tfd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName(\"authority\")\n\tfd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil)\n\ntype fastReflection_MsgUpdateParams MsgUpdateParams\n\nfunc (x *MsgUpdateParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(x)\n}\n\nfunc (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{}\n\ntype fastReflection_MsgUpdateParams_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(nil)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParams) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_MsgUpdateParams_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_MsgUpdateParams_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\treturn x.Authority != \"\"\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\tx.Authority = \"\"\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.acp.MsgUpdateParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgUpdateParams.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgUpdateParams.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgUpdateParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateParamsResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgUpdateParamsResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgUpdateParamsResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil)\n\ntype fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse\n\nfunc (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(x)\n}\n\nfunc (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{}\n\ntype fastReflection_MsgUpdateParamsResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgUpdateParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreatePolicy              protoreflect.MessageDescriptor\n\tfd_MsgCreatePolicy_creator      protoreflect.FieldDescriptor\n\tfd_MsgCreatePolicy_policy       protoreflect.FieldDescriptor\n\tfd_MsgCreatePolicy_marshal_type protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgCreatePolicy = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgCreatePolicy\")\n\tfd_MsgCreatePolicy_creator = md_MsgCreatePolicy.Fields().ByName(\"creator\")\n\tfd_MsgCreatePolicy_policy = md_MsgCreatePolicy.Fields().ByName(\"policy\")\n\tfd_MsgCreatePolicy_marshal_type = md_MsgCreatePolicy.Fields().ByName(\"marshal_type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreatePolicy)(nil)\n\ntype fastReflection_MsgCreatePolicy MsgCreatePolicy\n\nfunc (x *MsgCreatePolicy) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePolicy)(x)\n}\n\nfunc (x *MsgCreatePolicy) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreatePolicy_messageType fastReflection_MsgCreatePolicy_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreatePolicy_messageType{}\n\ntype fastReflection_MsgCreatePolicy_messageType struct{}\n\nfunc (x fastReflection_MsgCreatePolicy_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePolicy)(nil)\n}\nfunc (x fastReflection_MsgCreatePolicy_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePolicy)\n}\nfunc (x fastReflection_MsgCreatePolicy_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePolicy\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreatePolicy) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePolicy\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreatePolicy) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreatePolicy_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreatePolicy) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePolicy)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreatePolicy) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreatePolicy)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreatePolicy) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgCreatePolicy_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_MsgCreatePolicy_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_MsgCreatePolicy_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreatePolicy) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicy) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\tx.MarshalType = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreatePolicy) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicy) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\tx.MarshalType = (types.PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicy) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgCreatePolicy is not mutable\"))\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcehub.acp.MsgCreatePolicy is not mutable\"))\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcehub.acp.MsgCreatePolicy is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreatePolicy) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicy.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgCreatePolicy.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgCreatePolicy.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreatePolicy) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgCreatePolicy\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreatePolicy) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicy) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreatePolicy) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreatePolicy) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreatePolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePolicy: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePolicy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreatePolicyResponse        protoreflect.MessageDescriptor\n\tfd_MsgCreatePolicyResponse_record protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgCreatePolicyResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgCreatePolicyResponse\")\n\tfd_MsgCreatePolicyResponse_record = md_MsgCreatePolicyResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreatePolicyResponse)(nil)\n\ntype fastReflection_MsgCreatePolicyResponse MsgCreatePolicyResponse\n\nfunc (x *MsgCreatePolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePolicyResponse)(x)\n}\n\nfunc (x *MsgCreatePolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreatePolicyResponse_messageType fastReflection_MsgCreatePolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreatePolicyResponse_messageType{}\n\ntype fastReflection_MsgCreatePolicyResponse_messageType struct{}\n\nfunc (x fastReflection_MsgCreatePolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePolicyResponse)(nil)\n}\nfunc (x fastReflection_MsgCreatePolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePolicyResponse)\n}\nfunc (x fastReflection_MsgCreatePolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreatePolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreatePolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreatePolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_MsgCreatePolicyResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\tx.Record = value.Message().Interface().(*PolicyRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(PolicyRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreatePolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCreatePolicyResponse.record\":\n\t\tm := new(PolicyRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreatePolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgCreatePolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreatePolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreatePolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreatePolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &PolicyRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgEditPolicy              protoreflect.MessageDescriptor\n\tfd_MsgEditPolicy_creator      protoreflect.FieldDescriptor\n\tfd_MsgEditPolicy_policy_id    protoreflect.FieldDescriptor\n\tfd_MsgEditPolicy_policy       protoreflect.FieldDescriptor\n\tfd_MsgEditPolicy_marshal_type protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgEditPolicy = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgEditPolicy\")\n\tfd_MsgEditPolicy_creator = md_MsgEditPolicy.Fields().ByName(\"creator\")\n\tfd_MsgEditPolicy_policy_id = md_MsgEditPolicy.Fields().ByName(\"policy_id\")\n\tfd_MsgEditPolicy_policy = md_MsgEditPolicy.Fields().ByName(\"policy\")\n\tfd_MsgEditPolicy_marshal_type = md_MsgEditPolicy.Fields().ByName(\"marshal_type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgEditPolicy)(nil)\n\ntype fastReflection_MsgEditPolicy MsgEditPolicy\n\nfunc (x *MsgEditPolicy) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgEditPolicy)(x)\n}\n\nfunc (x *MsgEditPolicy) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgEditPolicy_messageType fastReflection_MsgEditPolicy_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgEditPolicy_messageType{}\n\ntype fastReflection_MsgEditPolicy_messageType struct{}\n\nfunc (x fastReflection_MsgEditPolicy_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgEditPolicy)(nil)\n}\nfunc (x fastReflection_MsgEditPolicy_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgEditPolicy)\n}\nfunc (x fastReflection_MsgEditPolicy_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgEditPolicy\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgEditPolicy) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgEditPolicy\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgEditPolicy) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgEditPolicy_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgEditPolicy) New() protoreflect.Message {\n\treturn new(fastReflection_MsgEditPolicy)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgEditPolicy) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgEditPolicy)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgEditPolicy) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgEditPolicy_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_MsgEditPolicy_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_MsgEditPolicy_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_MsgEditPolicy_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgEditPolicy) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicy) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\tx.MarshalType = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgEditPolicy) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicy) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\tx.MarshalType = (types.PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicy) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgEditPolicy is not mutable\"))\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.MsgEditPolicy is not mutable\"))\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcehub.acp.MsgEditPolicy is not mutable\"))\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcehub.acp.MsgEditPolicy is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgEditPolicy) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicy.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgEditPolicy.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgEditPolicy.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgEditPolicy.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgEditPolicy) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgEditPolicy\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgEditPolicy) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicy) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgEditPolicy) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgEditPolicy) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgEditPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgEditPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgEditPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgEditPolicy: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgEditPolicy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgEditPolicyResponse                       protoreflect.MessageDescriptor\n\tfd_MsgEditPolicyResponse_relationships_removed protoreflect.FieldDescriptor\n\tfd_MsgEditPolicyResponse_record                protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgEditPolicyResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgEditPolicyResponse\")\n\tfd_MsgEditPolicyResponse_relationships_removed = md_MsgEditPolicyResponse.Fields().ByName(\"relationships_removed\")\n\tfd_MsgEditPolicyResponse_record = md_MsgEditPolicyResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgEditPolicyResponse)(nil)\n\ntype fastReflection_MsgEditPolicyResponse MsgEditPolicyResponse\n\nfunc (x *MsgEditPolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgEditPolicyResponse)(x)\n}\n\nfunc (x *MsgEditPolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgEditPolicyResponse_messageType fastReflection_MsgEditPolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgEditPolicyResponse_messageType{}\n\ntype fastReflection_MsgEditPolicyResponse_messageType struct{}\n\nfunc (x fastReflection_MsgEditPolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgEditPolicyResponse)(nil)\n}\nfunc (x fastReflection_MsgEditPolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgEditPolicyResponse)\n}\nfunc (x fastReflection_MsgEditPolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgEditPolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgEditPolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgEditPolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgEditPolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgEditPolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgEditPolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgEditPolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgEditPolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgEditPolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgEditPolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RelationshipsRemoved != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.RelationshipsRemoved)\n\t\tif !f(fd_MsgEditPolicyResponse_relationships_removed, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_MsgEditPolicyResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgEditPolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\treturn x.RelationshipsRemoved != uint64(0)\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\tx.RelationshipsRemoved = uint64(0)\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgEditPolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\tvalue := x.RelationshipsRemoved\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\tx.RelationshipsRemoved = value.Uint()\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\tx.Record = value.Message().Interface().(*PolicyRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(PolicyRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\tpanic(fmt.Errorf(\"field relationships_removed of message sourcehub.acp.MsgEditPolicyResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgEditPolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.relationships_removed\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.acp.MsgEditPolicyResponse.record\":\n\t\tm := new(PolicyRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgEditPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgEditPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgEditPolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgEditPolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgEditPolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgEditPolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgEditPolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgEditPolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgEditPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.RelationshipsRemoved))\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgEditPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.RelationshipsRemoved))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgEditPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgEditPolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgEditPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipsRemoved\", wireType)\n\t\t\t\t}\n\t\t\t\tx.RelationshipsRemoved = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.RelationshipsRemoved |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &PolicyRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCheckAccess                protoreflect.MessageDescriptor\n\tfd_MsgCheckAccess_creator        protoreflect.FieldDescriptor\n\tfd_MsgCheckAccess_policy_id      protoreflect.FieldDescriptor\n\tfd_MsgCheckAccess_access_request protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgCheckAccess = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgCheckAccess\")\n\tfd_MsgCheckAccess_creator = md_MsgCheckAccess.Fields().ByName(\"creator\")\n\tfd_MsgCheckAccess_policy_id = md_MsgCheckAccess.Fields().ByName(\"policy_id\")\n\tfd_MsgCheckAccess_access_request = md_MsgCheckAccess.Fields().ByName(\"access_request\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCheckAccess)(nil)\n\ntype fastReflection_MsgCheckAccess MsgCheckAccess\n\nfunc (x *MsgCheckAccess) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCheckAccess)(x)\n}\n\nfunc (x *MsgCheckAccess) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCheckAccess_messageType fastReflection_MsgCheckAccess_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCheckAccess_messageType{}\n\ntype fastReflection_MsgCheckAccess_messageType struct{}\n\nfunc (x fastReflection_MsgCheckAccess_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCheckAccess)(nil)\n}\nfunc (x fastReflection_MsgCheckAccess_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCheckAccess)\n}\nfunc (x fastReflection_MsgCheckAccess_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCheckAccess\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCheckAccess) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCheckAccess\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCheckAccess) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCheckAccess_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCheckAccess) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCheckAccess)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCheckAccess) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCheckAccess)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCheckAccess) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgCheckAccess_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_MsgCheckAccess_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AccessRequest != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\t\tif !f(fd_MsgCheckAccess_access_request, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCheckAccess) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\treturn x.AccessRequest != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccess) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\tx.AccessRequest = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCheckAccess) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\tvalue := x.AccessRequest\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccess) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\tx.AccessRequest = value.Message().Interface().(*types.AccessRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccess) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\tif x.AccessRequest == nil {\n\t\t\tx.AccessRequest = new(types.AccessRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgCheckAccess is not mutable\"))\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.MsgCheckAccess is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCheckAccess) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccess.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgCheckAccess.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgCheckAccess.access_request\":\n\t\tm := new(types.AccessRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccess\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccess does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCheckAccess) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgCheckAccess\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCheckAccess) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccess) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCheckAccess) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCheckAccess) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCheckAccess)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tl = options.Size(x.AccessRequest)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCheckAccess)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tencoded, err := options.Marshal(x.AccessRequest)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCheckAccess)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCheckAccess: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCheckAccess: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AccessRequest\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AccessRequest == nil {\n\t\t\t\t\tx.AccessRequest = &types.AccessRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessRequest); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCheckAccessResponse          protoreflect.MessageDescriptor\n\tfd_MsgCheckAccessResponse_decision protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgCheckAccessResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgCheckAccessResponse\")\n\tfd_MsgCheckAccessResponse_decision = md_MsgCheckAccessResponse.Fields().ByName(\"decision\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCheckAccessResponse)(nil)\n\ntype fastReflection_MsgCheckAccessResponse MsgCheckAccessResponse\n\nfunc (x *MsgCheckAccessResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCheckAccessResponse)(x)\n}\n\nfunc (x *MsgCheckAccessResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCheckAccessResponse_messageType fastReflection_MsgCheckAccessResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCheckAccessResponse_messageType{}\n\ntype fastReflection_MsgCheckAccessResponse_messageType struct{}\n\nfunc (x fastReflection_MsgCheckAccessResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCheckAccessResponse)(nil)\n}\nfunc (x fastReflection_MsgCheckAccessResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCheckAccessResponse)\n}\nfunc (x fastReflection_MsgCheckAccessResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCheckAccessResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCheckAccessResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCheckAccessResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCheckAccessResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCheckAccessResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCheckAccessResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCheckAccessResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCheckAccessResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCheckAccessResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCheckAccessResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Decision != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\t\tif !f(fd_MsgCheckAccessResponse_decision, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCheckAccessResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\treturn x.Decision != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccessResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\tx.Decision = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCheckAccessResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\tvalue := x.Decision\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccessResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\tx.Decision = value.Message().Interface().(*AccessDecision)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccessResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\tif x.Decision == nil {\n\t\t\tx.Decision = new(AccessDecision)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCheckAccessResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgCheckAccessResponse.decision\":\n\t\tm := new(AccessDecision)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgCheckAccessResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgCheckAccessResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCheckAccessResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgCheckAccessResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCheckAccessResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCheckAccessResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCheckAccessResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCheckAccessResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCheckAccessResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Decision != nil {\n\t\t\tl = options.Size(x.Decision)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCheckAccessResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tencoded, err := options.Marshal(x.Decision)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCheckAccessResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCheckAccessResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCheckAccessResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Decision == nil {\n\t\t\t\t\tx.Decision = &AccessDecision{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Decision); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgSignedPolicyCmd         protoreflect.MessageDescriptor\n\tfd_MsgSignedPolicyCmd_creator protoreflect.FieldDescriptor\n\tfd_MsgSignedPolicyCmd_payload protoreflect.FieldDescriptor\n\tfd_MsgSignedPolicyCmd_type    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgSignedPolicyCmd = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgSignedPolicyCmd\")\n\tfd_MsgSignedPolicyCmd_creator = md_MsgSignedPolicyCmd.Fields().ByName(\"creator\")\n\tfd_MsgSignedPolicyCmd_payload = md_MsgSignedPolicyCmd.Fields().ByName(\"payload\")\n\tfd_MsgSignedPolicyCmd_type = md_MsgSignedPolicyCmd.Fields().ByName(\"type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgSignedPolicyCmd)(nil)\n\ntype fastReflection_MsgSignedPolicyCmd MsgSignedPolicyCmd\n\nfunc (x *MsgSignedPolicyCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgSignedPolicyCmd)(x)\n}\n\nfunc (x *MsgSignedPolicyCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgSignedPolicyCmd_messageType fastReflection_MsgSignedPolicyCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgSignedPolicyCmd_messageType{}\n\ntype fastReflection_MsgSignedPolicyCmd_messageType struct{}\n\nfunc (x fastReflection_MsgSignedPolicyCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgSignedPolicyCmd)(nil)\n}\nfunc (x fastReflection_MsgSignedPolicyCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgSignedPolicyCmd)\n}\nfunc (x fastReflection_MsgSignedPolicyCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgSignedPolicyCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgSignedPolicyCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgSignedPolicyCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgSignedPolicyCmd) New() protoreflect.Message {\n\treturn new(fastReflection_MsgSignedPolicyCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgSignedPolicyCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgSignedPolicyCmd_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Payload != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Payload)\n\t\tif !f(fd_MsgSignedPolicyCmd_payload, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Type_ != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Type_))\n\t\tif !f(fd_MsgSignedPolicyCmd_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\treturn x.Payload != \"\"\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\treturn x.Type_ != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\tx.Payload = \"\"\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\tx.Type_ = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\tvalue := x.Payload\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\tvalue := x.Type_\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\tx.Payload = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\tx.Type_ = (MsgSignedPolicyCmd_ContentType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgSignedPolicyCmd is not mutable\"))\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\tpanic(fmt.Errorf(\"field payload of message sourcehub.acp.MsgSignedPolicyCmd is not mutable\"))\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\tpanic(fmt.Errorf(\"field type of message sourcehub.acp.MsgSignedPolicyCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgSignedPolicyCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.payload\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgSignedPolicyCmd.type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgSignedPolicyCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgSignedPolicyCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgSignedPolicyCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgSignedPolicyCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgSignedPolicyCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Payload)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Type_ != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Type_))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Type_ != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Type_))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Payload) > 0 {\n\t\t\ti -= len(x.Payload)\n\t\t\tcopy(dAtA[i:], x.Payload)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Payload)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgSignedPolicyCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgSignedPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Payload = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Type_\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Type_ = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Type_ |= MsgSignedPolicyCmd_ContentType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgSignedPolicyCmdResponse        protoreflect.MessageDescriptor\n\tfd_MsgSignedPolicyCmdResponse_result protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgSignedPolicyCmdResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgSignedPolicyCmdResponse\")\n\tfd_MsgSignedPolicyCmdResponse_result = md_MsgSignedPolicyCmdResponse.Fields().ByName(\"result\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgSignedPolicyCmdResponse)(nil)\n\ntype fastReflection_MsgSignedPolicyCmdResponse MsgSignedPolicyCmdResponse\n\nfunc (x *MsgSignedPolicyCmdResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgSignedPolicyCmdResponse)(x)\n}\n\nfunc (x *MsgSignedPolicyCmdResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgSignedPolicyCmdResponse_messageType fastReflection_MsgSignedPolicyCmdResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgSignedPolicyCmdResponse_messageType{}\n\ntype fastReflection_MsgSignedPolicyCmdResponse_messageType struct{}\n\nfunc (x fastReflection_MsgSignedPolicyCmdResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgSignedPolicyCmdResponse)(nil)\n}\nfunc (x fastReflection_MsgSignedPolicyCmdResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgSignedPolicyCmdResponse)\n}\nfunc (x fastReflection_MsgSignedPolicyCmdResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgSignedPolicyCmdResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgSignedPolicyCmdResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgSignedPolicyCmdResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgSignedPolicyCmdResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgSignedPolicyCmdResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Result != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\t\tif !f(fd_MsgSignedPolicyCmdResponse_result, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\treturn x.Result != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\tx.Result = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\tvalue := x.Result\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\tx.Result = value.Message().Interface().(*PolicyCmdResult)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\tif x.Result == nil {\n\t\t\tx.Result = new(PolicyCmdResult)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgSignedPolicyCmdResponse.result\":\n\t\tm := new(PolicyCmdResult)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgSignedPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgSignedPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgSignedPolicyCmdResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgSignedPolicyCmdResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Result != nil {\n\t\t\tl = options.Size(x.Result)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Result != nil {\n\t\t\tencoded, err := options.Marshal(x.Result)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgSignedPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgSignedPolicyCmdResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgSignedPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Result == nil {\n\t\t\t\t\tx.Result = &PolicyCmdResult{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgBearerPolicyCmd              protoreflect.MessageDescriptor\n\tfd_MsgBearerPolicyCmd_creator      protoreflect.FieldDescriptor\n\tfd_MsgBearerPolicyCmd_bearer_token protoreflect.FieldDescriptor\n\tfd_MsgBearerPolicyCmd_policy_id    protoreflect.FieldDescriptor\n\tfd_MsgBearerPolicyCmd_cmd          protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgBearerPolicyCmd = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgBearerPolicyCmd\")\n\tfd_MsgBearerPolicyCmd_creator = md_MsgBearerPolicyCmd.Fields().ByName(\"creator\")\n\tfd_MsgBearerPolicyCmd_bearer_token = md_MsgBearerPolicyCmd.Fields().ByName(\"bearer_token\")\n\tfd_MsgBearerPolicyCmd_policy_id = md_MsgBearerPolicyCmd.Fields().ByName(\"policy_id\")\n\tfd_MsgBearerPolicyCmd_cmd = md_MsgBearerPolicyCmd.Fields().ByName(\"cmd\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgBearerPolicyCmd)(nil)\n\ntype fastReflection_MsgBearerPolicyCmd MsgBearerPolicyCmd\n\nfunc (x *MsgBearerPolicyCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgBearerPolicyCmd)(x)\n}\n\nfunc (x *MsgBearerPolicyCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgBearerPolicyCmd_messageType fastReflection_MsgBearerPolicyCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgBearerPolicyCmd_messageType{}\n\ntype fastReflection_MsgBearerPolicyCmd_messageType struct{}\n\nfunc (x fastReflection_MsgBearerPolicyCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgBearerPolicyCmd)(nil)\n}\nfunc (x fastReflection_MsgBearerPolicyCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgBearerPolicyCmd)\n}\nfunc (x fastReflection_MsgBearerPolicyCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgBearerPolicyCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgBearerPolicyCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgBearerPolicyCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgBearerPolicyCmd) New() protoreflect.Message {\n\treturn new(fastReflection_MsgBearerPolicyCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgBearerPolicyCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgBearerPolicyCmd_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.BearerToken != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.BearerToken)\n\t\tif !f(fd_MsgBearerPolicyCmd_bearer_token, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_MsgBearerPolicyCmd_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Cmd != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\t\tif !f(fd_MsgBearerPolicyCmd_cmd, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\treturn x.BearerToken != \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\treturn x.Cmd != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\tx.BearerToken = \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\tx.Cmd = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\tvalue := x.BearerToken\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\tvalue := x.Cmd\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\tx.BearerToken = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\tx.Cmd = value.Message().Interface().(*PolicyCmd)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tx.Cmd = new(PolicyCmd)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgBearerPolicyCmd is not mutable\"))\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\tpanic(fmt.Errorf(\"field bearer_token of message sourcehub.acp.MsgBearerPolicyCmd is not mutable\"))\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.MsgBearerPolicyCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgBearerPolicyCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.bearer_token\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgBearerPolicyCmd.cmd\":\n\t\tm := new(PolicyCmd)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgBearerPolicyCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgBearerPolicyCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgBearerPolicyCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgBearerPolicyCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgBearerPolicyCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.BearerToken)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tl = options.Size(x.Cmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tencoded, err := options.Marshal(x.Cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.BearerToken) > 0 {\n\t\t\ti -= len(x.BearerToken)\n\t\t\tcopy(dAtA[i:], x.BearerToken)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.BearerToken)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgBearerPolicyCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgBearerPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Cmd == nil {\n\t\t\t\t\tx.Cmd = &PolicyCmd{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Cmd); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgBearerPolicyCmdResponse        protoreflect.MessageDescriptor\n\tfd_MsgBearerPolicyCmdResponse_result protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgBearerPolicyCmdResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgBearerPolicyCmdResponse\")\n\tfd_MsgBearerPolicyCmdResponse_result = md_MsgBearerPolicyCmdResponse.Fields().ByName(\"result\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgBearerPolicyCmdResponse)(nil)\n\ntype fastReflection_MsgBearerPolicyCmdResponse MsgBearerPolicyCmdResponse\n\nfunc (x *MsgBearerPolicyCmdResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgBearerPolicyCmdResponse)(x)\n}\n\nfunc (x *MsgBearerPolicyCmdResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgBearerPolicyCmdResponse_messageType fastReflection_MsgBearerPolicyCmdResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgBearerPolicyCmdResponse_messageType{}\n\ntype fastReflection_MsgBearerPolicyCmdResponse_messageType struct{}\n\nfunc (x fastReflection_MsgBearerPolicyCmdResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgBearerPolicyCmdResponse)(nil)\n}\nfunc (x fastReflection_MsgBearerPolicyCmdResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgBearerPolicyCmdResponse)\n}\nfunc (x fastReflection_MsgBearerPolicyCmdResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgBearerPolicyCmdResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgBearerPolicyCmdResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgBearerPolicyCmdResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgBearerPolicyCmdResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgBearerPolicyCmdResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Result != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\t\tif !f(fd_MsgBearerPolicyCmdResponse_result, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\treturn x.Result != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\tx.Result = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\tvalue := x.Result\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\tx.Result = value.Message().Interface().(*PolicyCmdResult)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\tif x.Result == nil {\n\t\t\tx.Result = new(PolicyCmdResult)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgBearerPolicyCmdResponse.result\":\n\t\tm := new(PolicyCmdResult)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgBearerPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgBearerPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgBearerPolicyCmdResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgBearerPolicyCmdResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Result != nil {\n\t\t\tl = options.Size(x.Result)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Result != nil {\n\t\t\tencoded, err := options.Marshal(x.Result)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgBearerPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgBearerPolicyCmdResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgBearerPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Result == nil {\n\t\t\t\t\tx.Result = &PolicyCmdResult{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgDirectPolicyCmd           protoreflect.MessageDescriptor\n\tfd_MsgDirectPolicyCmd_creator   protoreflect.FieldDescriptor\n\tfd_MsgDirectPolicyCmd_policy_id protoreflect.FieldDescriptor\n\tfd_MsgDirectPolicyCmd_cmd       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgDirectPolicyCmd = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgDirectPolicyCmd\")\n\tfd_MsgDirectPolicyCmd_creator = md_MsgDirectPolicyCmd.Fields().ByName(\"creator\")\n\tfd_MsgDirectPolicyCmd_policy_id = md_MsgDirectPolicyCmd.Fields().ByName(\"policy_id\")\n\tfd_MsgDirectPolicyCmd_cmd = md_MsgDirectPolicyCmd.Fields().ByName(\"cmd\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgDirectPolicyCmd)(nil)\n\ntype fastReflection_MsgDirectPolicyCmd MsgDirectPolicyCmd\n\nfunc (x *MsgDirectPolicyCmd) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgDirectPolicyCmd)(x)\n}\n\nfunc (x *MsgDirectPolicyCmd) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgDirectPolicyCmd_messageType fastReflection_MsgDirectPolicyCmd_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgDirectPolicyCmd_messageType{}\n\ntype fastReflection_MsgDirectPolicyCmd_messageType struct{}\n\nfunc (x fastReflection_MsgDirectPolicyCmd_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgDirectPolicyCmd)(nil)\n}\nfunc (x fastReflection_MsgDirectPolicyCmd_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgDirectPolicyCmd)\n}\nfunc (x fastReflection_MsgDirectPolicyCmd_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgDirectPolicyCmd\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgDirectPolicyCmd\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgDirectPolicyCmd_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgDirectPolicyCmd) New() protoreflect.Message {\n\treturn new(fastReflection_MsgDirectPolicyCmd)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgDirectPolicyCmd)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgDirectPolicyCmd_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_MsgDirectPolicyCmd_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Cmd != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\t\tif !f(fd_MsgDirectPolicyCmd_cmd, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\treturn x.Cmd != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\tx.Cmd = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\tvalue := x.Cmd\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\tx.Cmd = value.Message().Interface().(*PolicyCmd)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmd) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\tif x.Cmd == nil {\n\t\t\tx.Cmd = new(PolicyCmd)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Cmd.ProtoReflect())\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.acp.MsgDirectPolicyCmd is not mutable\"))\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.acp.MsgDirectPolicyCmd is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgDirectPolicyCmd) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.acp.MsgDirectPolicyCmd.cmd\":\n\t\tm := new(PolicyCmd)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmd\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmd does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgDirectPolicyCmd) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgDirectPolicyCmd\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgDirectPolicyCmd) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmd) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgDirectPolicyCmd) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgDirectPolicyCmd) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tl = options.Size(x.Cmd)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Cmd != nil {\n\t\t\tencoded, err := options.Marshal(x.Cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmd)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgDirectPolicyCmd: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgDirectPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Cmd == nil {\n\t\t\t\t\tx.Cmd = &PolicyCmd{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Cmd); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgDirectPolicyCmdResponse        protoreflect.MessageDescriptor\n\tfd_MsgDirectPolicyCmdResponse_result protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_acp_tx_proto_init()\n\tmd_MsgDirectPolicyCmdResponse = File_sourcehub_acp_tx_proto.Messages().ByName(\"MsgDirectPolicyCmdResponse\")\n\tfd_MsgDirectPolicyCmdResponse_result = md_MsgDirectPolicyCmdResponse.Fields().ByName(\"result\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgDirectPolicyCmdResponse)(nil)\n\ntype fastReflection_MsgDirectPolicyCmdResponse MsgDirectPolicyCmdResponse\n\nfunc (x *MsgDirectPolicyCmdResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgDirectPolicyCmdResponse)(x)\n}\n\nfunc (x *MsgDirectPolicyCmdResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_acp_tx_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgDirectPolicyCmdResponse_messageType fastReflection_MsgDirectPolicyCmdResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgDirectPolicyCmdResponse_messageType{}\n\ntype fastReflection_MsgDirectPolicyCmdResponse_messageType struct{}\n\nfunc (x fastReflection_MsgDirectPolicyCmdResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgDirectPolicyCmdResponse)(nil)\n}\nfunc (x fastReflection_MsgDirectPolicyCmdResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgDirectPolicyCmdResponse)\n}\nfunc (x fastReflection_MsgDirectPolicyCmdResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgDirectPolicyCmdResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgDirectPolicyCmdResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgDirectPolicyCmdResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgDirectPolicyCmdResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgDirectPolicyCmdResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Result != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\t\tif !f(fd_MsgDirectPolicyCmdResponse_result, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\treturn x.Result != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\tx.Result = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\tvalue := x.Result\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\tx.Result = value.Message().Interface().(*PolicyCmdResult)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\tif x.Result == nil {\n\t\t\tx.Result = new(PolicyCmdResult)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Result.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.acp.MsgDirectPolicyCmdResponse.result\":\n\t\tm := new(PolicyCmdResult)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.acp.MsgDirectPolicyCmdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.acp.MsgDirectPolicyCmdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.acp.MsgDirectPolicyCmdResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgDirectPolicyCmdResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Result != nil {\n\t\t\tl = options.Size(x.Result)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Result != nil {\n\t\t\tencoded, err := options.Marshal(x.Result)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgDirectPolicyCmdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgDirectPolicyCmdResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgDirectPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Result == nil {\n\t\t\t\t\tx.Result = &PolicyCmdResult{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/acp/tx.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype MsgSignedPolicyCmd_ContentType int32\n\nconst (\n\tMsgSignedPolicyCmd_UNKNOWN MsgSignedPolicyCmd_ContentType = 0\n\tMsgSignedPolicyCmd_JWS     MsgSignedPolicyCmd_ContentType = 1\n)\n\n// Enum value maps for MsgSignedPolicyCmd_ContentType.\nvar (\n\tMsgSignedPolicyCmd_ContentType_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"JWS\",\n\t}\n\tMsgSignedPolicyCmd_ContentType_value = map[string]int32{\n\t\t\"UNKNOWN\": 0,\n\t\t\"JWS\":     1,\n\t}\n)\n\nfunc (x MsgSignedPolicyCmd_ContentType) Enum() *MsgSignedPolicyCmd_ContentType {\n\tp := new(MsgSignedPolicyCmd_ContentType)\n\t*p = x\n\treturn p\n}\n\nfunc (x MsgSignedPolicyCmd_ContentType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (MsgSignedPolicyCmd_ContentType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcehub_acp_tx_proto_enumTypes[0].Descriptor()\n}\n\nfunc (MsgSignedPolicyCmd_ContentType) Type() protoreflect.EnumType {\n\treturn &file_sourcehub_acp_tx_proto_enumTypes[0]\n}\n\nfunc (x MsgSignedPolicyCmd_ContentType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use MsgSignedPolicyCmd_ContentType.Descriptor instead.\nfunc (MsgSignedPolicyCmd_ContentType) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{8, 0}\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams *Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *MsgUpdateParams) Reset() {\n\t*x = MsgUpdateParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParams) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MsgUpdateParams) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateParams) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateParamsResponse) Reset() {\n\t*x = MsgUpdateParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{1}\n}\n\ntype MsgCreatePolicy struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator     string                     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicy      string                     `protobuf:\"bytes,2,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,3,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (x *MsgCreatePolicy) Reset() {\n\t*x = MsgCreatePolicy{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreatePolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreatePolicy) ProtoMessage() {}\n\n// Deprecated: Use MsgCreatePolicy.ProtoReflect.Descriptor instead.\nfunc (*MsgCreatePolicy) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *MsgCreatePolicy) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCreatePolicy) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCreatePolicy) GetMarshalType() types.PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn types.PolicyMarshalingType(0)\n}\n\ntype MsgCreatePolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecord *PolicyRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *MsgCreatePolicyResponse) Reset() {\n\t*x = MsgCreatePolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreatePolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreatePolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgCreatePolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgCreatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *MsgCreatePolicyResponse) GetRecord() *PolicyRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype MsgEditPolicy struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator     string                     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId    string                     `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tPolicy      string                     `protobuf:\"bytes,3,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,4,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (x *MsgEditPolicy) Reset() {\n\t*x = MsgEditPolicy{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgEditPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgEditPolicy) ProtoMessage() {}\n\n// Deprecated: Use MsgEditPolicy.ProtoReflect.Descriptor instead.\nfunc (*MsgEditPolicy) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *MsgEditPolicy) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgEditPolicy) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgEditPolicy) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgEditPolicy) GetMarshalType() types.PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn types.PolicyMarshalingType(0)\n}\n\ntype MsgEditPolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRelationshipsRemoved uint64        `protobuf:\"varint,1,opt,name=relationships_removed,json=relationshipsRemoved,proto3\" json:\"relationships_removed,omitempty\"`\n\tRecord               *PolicyRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *MsgEditPolicyResponse) Reset() {\n\t*x = MsgEditPolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgEditPolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgEditPolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgEditPolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgEditPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *MsgEditPolicyResponse) GetRelationshipsRemoved() uint64 {\n\tif x != nil {\n\t\treturn x.RelationshipsRemoved\n\t}\n\treturn 0\n}\n\nfunc (x *MsgEditPolicyResponse) GetRecord() *PolicyRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype MsgCheckAccess struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator       string               `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId      string               `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tAccessRequest *types.AccessRequest `protobuf:\"bytes,3,opt,name=access_request,json=accessRequest,proto3\" json:\"access_request,omitempty\"`\n}\n\nfunc (x *MsgCheckAccess) Reset() {\n\t*x = MsgCheckAccess{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCheckAccess) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCheckAccess) ProtoMessage() {}\n\n// Deprecated: Use MsgCheckAccess.ProtoReflect.Descriptor instead.\nfunc (*MsgCheckAccess) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MsgCheckAccess) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCheckAccess) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCheckAccess) GetAccessRequest() *types.AccessRequest {\n\tif x != nil {\n\t\treturn x.AccessRequest\n\t}\n\treturn nil\n}\n\ntype MsgCheckAccessResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDecision *AccessDecision `protobuf:\"bytes,1,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n}\n\nfunc (x *MsgCheckAccessResponse) Reset() {\n\t*x = MsgCheckAccessResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCheckAccessResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCheckAccessResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgCheckAccessResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgCheckAccessResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *MsgCheckAccessResponse) GetDecision() *AccessDecision {\n\tif x != nil {\n\t\treturn x.Decision\n\t}\n\treturn nil\n}\n\ntype MsgSignedPolicyCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator string                         `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPayload string                         `protobuf:\"bytes,2,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\tType_   MsgSignedPolicyCmd_ContentType `protobuf:\"varint,3,opt,name=type,proto3,enum=sourcehub.acp.MsgSignedPolicyCmd_ContentType\" json:\"type,omitempty\"`\n}\n\nfunc (x *MsgSignedPolicyCmd) Reset() {\n\t*x = MsgSignedPolicyCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgSignedPolicyCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgSignedPolicyCmd) ProtoMessage() {}\n\n// Deprecated: Use MsgSignedPolicyCmd.ProtoReflect.Descriptor instead.\nfunc (*MsgSignedPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *MsgSignedPolicyCmd) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgSignedPolicyCmd) GetPayload() string {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgSignedPolicyCmd) GetType_() MsgSignedPolicyCmd_ContentType {\n\tif x != nil {\n\t\treturn x.Type_\n\t}\n\treturn MsgSignedPolicyCmd_UNKNOWN\n}\n\ntype MsgSignedPolicyCmdResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (x *MsgSignedPolicyCmdResponse) Reset() {\n\t*x = MsgSignedPolicyCmdResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgSignedPolicyCmdResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgSignedPolicyCmdResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgSignedPolicyCmdResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgSignedPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MsgSignedPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\ntype MsgBearerPolicyCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator     string     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tBearerToken string     `protobuf:\"bytes,2,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\"`\n\tPolicyId    string     `protobuf:\"bytes,3,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd         *PolicyCmd `protobuf:\"bytes,4,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (x *MsgBearerPolicyCmd) Reset() {\n\t*x = MsgBearerPolicyCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgBearerPolicyCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgBearerPolicyCmd) ProtoMessage() {}\n\n// Deprecated: Use MsgBearerPolicyCmd.ProtoReflect.Descriptor instead.\nfunc (*MsgBearerPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *MsgBearerPolicyCmd) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgBearerPolicyCmd) GetBearerToken() string {\n\tif x != nil {\n\t\treturn x.BearerToken\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgBearerPolicyCmd) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgBearerPolicyCmd) GetCmd() *PolicyCmd {\n\tif x != nil {\n\t\treturn x.Cmd\n\t}\n\treturn nil\n}\n\ntype MsgBearerPolicyCmdResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (x *MsgBearerPolicyCmdResponse) Reset() {\n\t*x = MsgBearerPolicyCmdResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgBearerPolicyCmdResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgBearerPolicyCmdResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgBearerPolicyCmdResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgBearerPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *MsgBearerPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\ntype MsgDirectPolicyCmd struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator  string     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId string     `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd      *PolicyCmd `protobuf:\"bytes,3,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (x *MsgDirectPolicyCmd) Reset() {\n\t*x = MsgDirectPolicyCmd{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgDirectPolicyCmd) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgDirectPolicyCmd) ProtoMessage() {}\n\n// Deprecated: Use MsgDirectPolicyCmd.ProtoReflect.Descriptor instead.\nfunc (*MsgDirectPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *MsgDirectPolicyCmd) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgDirectPolicyCmd) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgDirectPolicyCmd) GetCmd() *PolicyCmd {\n\tif x != nil {\n\t\treturn x.Cmd\n\t}\n\treturn nil\n}\n\ntype MsgDirectPolicyCmdResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (x *MsgDirectPolicyCmdResponse) Reset() {\n\t*x = MsgDirectPolicyCmdResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_acp_tx_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgDirectPolicyCmdResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgDirectPolicyCmdResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgDirectPolicyCmdResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgDirectPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_acp_tx_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *MsgDirectPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_acp_tx_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_acp_tx_proto_rawDesc = []byte{\n\t0x0a, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f,\n\t0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61,\n\t0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x61, 0x63, 0x70, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x69,\n\t0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x63, 0x6d, 0x64,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x61, 0x63, 0x70, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x1a, 0x24, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67,\n\t0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09,\n\t0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,\n\t0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f,\n\t0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f,\n\t0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x32,\n\t0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7,\n\t0xb0, 0x2a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x61,\n\t0x63, 0x70, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01,\n\t0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x74,\n\t0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,\n\t0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,\n\t0x54, 0x79, 0x70, 0x65, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a,\n\t0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f,\n\t0x72, 0x64, 0x22, 0xbd, 0x01, 0x0a, 0x0d, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b,\n\t0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x74,\n\t0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,\n\t0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,\n\t0x54, 0x79, 0x70, 0x65, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x45, 0x64, 0x69, 0x74, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x15,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f, 0x72, 0x65,\n\t0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x72, 0x65, 0x6c,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,\n\t0x64, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06,\n\t0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x68,\n\t0x65, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,\n\t0x12, 0x4c, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52,\n\t0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x0c,\n\t0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x53, 0x0a, 0x16,\n\t0x4d, 0x73, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69,\n\t0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44,\n\t0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,\n\t0x6e, 0x22, 0xbe, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x41, 0x0a, 0x04,\n\t0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x69,\n\t0x67, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x2e, 0x43, 0x6f,\n\t0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,\n\t0x23, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b,\n\t0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4a,\n\t0x57, 0x53, 0x10, 0x01, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x6f, 0x72, 0x22, 0x54, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70,\n\t0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,\n\t0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67,\n\t0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12,\n\t0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61,\n\t0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x6d, 0x64,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64,\n\t0x52, 0x03, 0x63, 0x6d, 0x64, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63,\n\t0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c,\n\t0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x4d, 0x73,\n\t0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64,\n\t0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x61, 0x63, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x03,\n\t0x63, 0x6d, 0x64, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f,\n\t0x72, 0x22, 0x54, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x36, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,\n\t0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0x86, 0x05, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12,\n\t0x56, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a,\n\t0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x50, 0x0a, 0x0a, 0x45, 0x64, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1c, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73,\n\t0x67, 0x45, 0x64, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x24, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x45,\n\t0x64, 0x69, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x53, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x12, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70,\n\t0x2e, 0x4d, 0x73, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a,\n\t0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e,\n\t0x4d, 0x73, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x69, 0x67,\n\t0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x1a, 0x29, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67,\n\t0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x42, 0x65, 0x61, 0x72, 0x65,\n\t0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x42, 0x65,\n\t0x61, 0x72, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x1a, 0x29, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73,\n\t0x67, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x44, 0x69, 0x72, 0x65,\n\t0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x12, 0x21, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d, 0x73, 0x67, 0x44,\n\t0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d, 0x64, 0x1a, 0x29,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x2e, 0x4d,\n\t0x73, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6d,\n\t0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01,\n\t0x42, 0x91, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x61, 0x63, 0x70, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,\n\t0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x63,\n\t0x70, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x41, 0x63, 0x70, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x5c, 0x41, 0x63, 0x70, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a,\n\t0x3a, 0x41, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_acp_tx_proto_rawDescOnce sync.Once\n\tfile_sourcehub_acp_tx_proto_rawDescData = file_sourcehub_acp_tx_proto_rawDesc\n)\n\nfunc file_sourcehub_acp_tx_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_acp_tx_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_acp_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_acp_tx_proto_rawDescData)\n\t})\n\treturn file_sourcehub_acp_tx_proto_rawDescData\n}\n\nvar file_sourcehub_acp_tx_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcehub_acp_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14)\nvar file_sourcehub_acp_tx_proto_goTypes = []interface{}{\n\t(MsgSignedPolicyCmd_ContentType)(0), // 0: sourcehub.acp.MsgSignedPolicyCmd.ContentType\n\t(*MsgUpdateParams)(nil),             // 1: sourcehub.acp.MsgUpdateParams\n\t(*MsgUpdateParamsResponse)(nil),     // 2: sourcehub.acp.MsgUpdateParamsResponse\n\t(*MsgCreatePolicy)(nil),             // 3: sourcehub.acp.MsgCreatePolicy\n\t(*MsgCreatePolicyResponse)(nil),     // 4: sourcehub.acp.MsgCreatePolicyResponse\n\t(*MsgEditPolicy)(nil),               // 5: sourcehub.acp.MsgEditPolicy\n\t(*MsgEditPolicyResponse)(nil),       // 6: sourcehub.acp.MsgEditPolicyResponse\n\t(*MsgCheckAccess)(nil),              // 7: sourcehub.acp.MsgCheckAccess\n\t(*MsgCheckAccessResponse)(nil),      // 8: sourcehub.acp.MsgCheckAccessResponse\n\t(*MsgSignedPolicyCmd)(nil),          // 9: sourcehub.acp.MsgSignedPolicyCmd\n\t(*MsgSignedPolicyCmdResponse)(nil),  // 10: sourcehub.acp.MsgSignedPolicyCmdResponse\n\t(*MsgBearerPolicyCmd)(nil),          // 11: sourcehub.acp.MsgBearerPolicyCmd\n\t(*MsgBearerPolicyCmdResponse)(nil),  // 12: sourcehub.acp.MsgBearerPolicyCmdResponse\n\t(*MsgDirectPolicyCmd)(nil),          // 13: sourcehub.acp.MsgDirectPolicyCmd\n\t(*MsgDirectPolicyCmdResponse)(nil),  // 14: sourcehub.acp.MsgDirectPolicyCmdResponse\n\t(*Params)(nil),                      // 15: sourcehub.acp.Params\n\t(types.PolicyMarshalingType)(0),     // 16: sourcenetwork.acp_core.PolicyMarshalingType\n\t(*PolicyRecord)(nil),                // 17: sourcehub.acp.PolicyRecord\n\t(*types.AccessRequest)(nil),         // 18: sourcenetwork.acp_core.AccessRequest\n\t(*AccessDecision)(nil),              // 19: sourcehub.acp.AccessDecision\n\t(*PolicyCmdResult)(nil),             // 20: sourcehub.acp.PolicyCmdResult\n\t(*PolicyCmd)(nil),                   // 21: sourcehub.acp.PolicyCmd\n}\nvar file_sourcehub_acp_tx_proto_depIdxs = []int32{\n\t15, // 0: sourcehub.acp.MsgUpdateParams.params:type_name -> sourcehub.acp.Params\n\t16, // 1: sourcehub.acp.MsgCreatePolicy.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t17, // 2: sourcehub.acp.MsgCreatePolicyResponse.record:type_name -> sourcehub.acp.PolicyRecord\n\t16, // 3: sourcehub.acp.MsgEditPolicy.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t17, // 4: sourcehub.acp.MsgEditPolicyResponse.record:type_name -> sourcehub.acp.PolicyRecord\n\t18, // 5: sourcehub.acp.MsgCheckAccess.access_request:type_name -> sourcenetwork.acp_core.AccessRequest\n\t19, // 6: sourcehub.acp.MsgCheckAccessResponse.decision:type_name -> sourcehub.acp.AccessDecision\n\t0,  // 7: sourcehub.acp.MsgSignedPolicyCmd.type:type_name -> sourcehub.acp.MsgSignedPolicyCmd.ContentType\n\t20, // 8: sourcehub.acp.MsgSignedPolicyCmdResponse.result:type_name -> sourcehub.acp.PolicyCmdResult\n\t21, // 9: sourcehub.acp.MsgBearerPolicyCmd.cmd:type_name -> sourcehub.acp.PolicyCmd\n\t20, // 10: sourcehub.acp.MsgBearerPolicyCmdResponse.result:type_name -> sourcehub.acp.PolicyCmdResult\n\t21, // 11: sourcehub.acp.MsgDirectPolicyCmd.cmd:type_name -> sourcehub.acp.PolicyCmd\n\t20, // 12: sourcehub.acp.MsgDirectPolicyCmdResponse.result:type_name -> sourcehub.acp.PolicyCmdResult\n\t1,  // 13: sourcehub.acp.Msg.UpdateParams:input_type -> sourcehub.acp.MsgUpdateParams\n\t3,  // 14: sourcehub.acp.Msg.CreatePolicy:input_type -> sourcehub.acp.MsgCreatePolicy\n\t5,  // 15: sourcehub.acp.Msg.EditPolicy:input_type -> sourcehub.acp.MsgEditPolicy\n\t7,  // 16: sourcehub.acp.Msg.CheckAccess:input_type -> sourcehub.acp.MsgCheckAccess\n\t9,  // 17: sourcehub.acp.Msg.SignedPolicyCmd:input_type -> sourcehub.acp.MsgSignedPolicyCmd\n\t11, // 18: sourcehub.acp.Msg.BearerPolicyCmd:input_type -> sourcehub.acp.MsgBearerPolicyCmd\n\t13, // 19: sourcehub.acp.Msg.DirectPolicyCmd:input_type -> sourcehub.acp.MsgDirectPolicyCmd\n\t2,  // 20: sourcehub.acp.Msg.UpdateParams:output_type -> sourcehub.acp.MsgUpdateParamsResponse\n\t4,  // 21: sourcehub.acp.Msg.CreatePolicy:output_type -> sourcehub.acp.MsgCreatePolicyResponse\n\t6,  // 22: sourcehub.acp.Msg.EditPolicy:output_type -> sourcehub.acp.MsgEditPolicyResponse\n\t8,  // 23: sourcehub.acp.Msg.CheckAccess:output_type -> sourcehub.acp.MsgCheckAccessResponse\n\t10, // 24: sourcehub.acp.Msg.SignedPolicyCmd:output_type -> sourcehub.acp.MsgSignedPolicyCmdResponse\n\t12, // 25: sourcehub.acp.Msg.BearerPolicyCmd:output_type -> sourcehub.acp.MsgBearerPolicyCmdResponse\n\t14, // 26: sourcehub.acp.Msg.DirectPolicyCmd:output_type -> sourcehub.acp.MsgDirectPolicyCmdResponse\n\t20, // [20:27] is the sub-list for method output_type\n\t13, // [13:20] is the sub-list for method input_type\n\t13, // [13:13] is the sub-list for extension type_name\n\t13, // [13:13] is the sub-list for extension extendee\n\t0,  // [0:13] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_acp_tx_proto_init() }\nfunc file_sourcehub_acp_tx_proto_init() {\n\tif File_sourcehub_acp_tx_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_acp_access_decision_proto_init()\n\tfile_sourcehub_acp_params_proto_init()\n\tfile_sourcehub_acp_policy_cmd_proto_init()\n\tfile_sourcehub_acp_record_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreatePolicy); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreatePolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgEditPolicy); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgEditPolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCheckAccess); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCheckAccessResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgSignedPolicyCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgSignedPolicyCmdResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgBearerPolicyCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgBearerPolicyCmdResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgDirectPolicyCmd); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_acp_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgDirectPolicyCmdResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_acp_tx_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   14,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_acp_tx_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_acp_tx_proto_depIdxs,\n\t\tEnumInfos:         file_sourcehub_acp_tx_proto_enumTypes,\n\t\tMessageInfos:      file_sourcehub_acp_tx_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_acp_tx_proto = out.File\n\tfile_sourcehub_acp_tx_proto_rawDesc = nil\n\tfile_sourcehub_acp_tx_proto_goTypes = nil\n\tfile_sourcehub_acp_tx_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/acp/tx_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/acp/tx.proto\n\npackage acp\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tMsg_UpdateParams_FullMethodName    = \"/sourcehub.acp.Msg/UpdateParams\"\n\tMsg_CreatePolicy_FullMethodName    = \"/sourcehub.acp.Msg/CreatePolicy\"\n\tMsg_EditPolicy_FullMethodName      = \"/sourcehub.acp.Msg/EditPolicy\"\n\tMsg_CheckAccess_FullMethodName     = \"/sourcehub.acp.Msg/CheckAccess\"\n\tMsg_SignedPolicyCmd_FullMethodName = \"/sourcehub.acp.Msg/SignedPolicyCmd\"\n\tMsg_BearerPolicyCmd_FullMethodName = \"/sourcehub.acp.Msg/BearerPolicyCmd\"\n\tMsg_DirectPolicyCmd_FullMethodName = \"/sourcehub.acp.Msg/DirectPolicyCmd\"\n)\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Msg defines the Msg service.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(ctx context.Context, in *MsgCreatePolicy, opts ...grpc.CallOption) (*MsgCreatePolicyResponse, error)\n\t// EditPolicy mutates the rules defined by a Policy.\n\t//\n\t// Relations may be added and removed to resources (if they are not required),\n\t// new resources may be added, but resources may not be removed.\n\t//\n\t// # Removing a relation removes all relationships that reference the removed relation\n\t//\n\t// A few other invariants are enforced such as:\n\t// - the name of the actor resource may not be mutated\n\t// - resources cannot be removed\n\t// - the specification of a policy cannot be mutated\n\t// Violations of these constraints will return an error.\n\tEditPolicy(ctx context.Context, in *MsgEditPolicy, opts ...grpc.CallOption) (*MsgEditPolicyResponse, error)\n\t// CheckAccess executes an Access Request for an User and stores the result of the evaluation in SourceHub.\n\t// The resulting evaluation is used to generate a cryptographic proof that the given Access Request\n\t// was valid at a particular block height.\n\tCheckAccess(ctx context.Context, in *MsgCheckAccess, opts ...grpc.CallOption) (*MsgCheckAccessResponse, error)\n\t// SignedPolicyCmd is a wrapper for a Command which is executed within the Context of a Policy.\n\t// The Command is signed by the Actor issuing it.\n\tSignedPolicyCmd(ctx context.Context, in *MsgSignedPolicyCmd, opts ...grpc.CallOption) (*MsgSignedPolicyCmdResponse, error)\n\t// The Msg authenticates the actor initiating the command through a Bearer token.\n\t// This token MUST be issued and signed by some DID Actor, the verification of the signature\n\t// is used as authentication proof.\n\t// Lastly, the Bearer token MUST be bound to some SourceHub account.\n\tBearerPolicyCmd(ctx context.Context, in *MsgBearerPolicyCmd, opts ...grpc.CallOption) (*MsgBearerPolicyCmdResponse, error)\n\tDirectPolicyCmd(ctx context.Context, in *MsgDirectPolicyCmd, opts ...grpc.CallOption) (*MsgDirectPolicyCmdResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewMsgClient(cc grpc.ClientConnInterface) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreatePolicy(ctx context.Context, in *MsgCreatePolicy, opts ...grpc.CallOption) (*MsgCreatePolicyResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgCreatePolicyResponse)\n\terr := c.cc.Invoke(ctx, Msg_CreatePolicy_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) EditPolicy(ctx context.Context, in *MsgEditPolicy, opts ...grpc.CallOption) (*MsgEditPolicyResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgEditPolicyResponse)\n\terr := c.cc.Invoke(ctx, Msg_EditPolicy_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CheckAccess(ctx context.Context, in *MsgCheckAccess, opts ...grpc.CallOption) (*MsgCheckAccessResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgCheckAccessResponse)\n\terr := c.cc.Invoke(ctx, Msg_CheckAccess_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) SignedPolicyCmd(ctx context.Context, in *MsgSignedPolicyCmd, opts ...grpc.CallOption) (*MsgSignedPolicyCmdResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgSignedPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, Msg_SignedPolicyCmd_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) BearerPolicyCmd(ctx context.Context, in *MsgBearerPolicyCmd, opts ...grpc.CallOption) (*MsgBearerPolicyCmdResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgBearerPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, Msg_BearerPolicyCmd_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) DirectPolicyCmd(ctx context.Context, in *MsgDirectPolicyCmd, opts ...grpc.CallOption) (*MsgDirectPolicyCmdResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgDirectPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, Msg_DirectPolicyCmd_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\n// All implementations must embed UnimplementedMsgServer\n// for forward compatibility.\n//\n// Msg defines the Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(context.Context, *MsgCreatePolicy) (*MsgCreatePolicyResponse, error)\n\t// EditPolicy mutates the rules defined by a Policy.\n\t//\n\t// Relations may be added and removed to resources (if they are not required),\n\t// new resources may be added, but resources may not be removed.\n\t//\n\t// # Removing a relation removes all relationships that reference the removed relation\n\t//\n\t// A few other invariants are enforced such as:\n\t// - the name of the actor resource may not be mutated\n\t// - resources cannot be removed\n\t// - the specification of a policy cannot be mutated\n\t// Violations of these constraints will return an error.\n\tEditPolicy(context.Context, *MsgEditPolicy) (*MsgEditPolicyResponse, error)\n\t// CheckAccess executes an Access Request for an User and stores the result of the evaluation in SourceHub.\n\t// The resulting evaluation is used to generate a cryptographic proof that the given Access Request\n\t// was valid at a particular block height.\n\tCheckAccess(context.Context, *MsgCheckAccess) (*MsgCheckAccessResponse, error)\n\t// SignedPolicyCmd is a wrapper for a Command which is executed within the Context of a Policy.\n\t// The Command is signed by the Actor issuing it.\n\tSignedPolicyCmd(context.Context, *MsgSignedPolicyCmd) (*MsgSignedPolicyCmdResponse, error)\n\t// The Msg authenticates the actor initiating the command through a Bearer token.\n\t// This token MUST be issued and signed by some DID Actor, the verification of the signature\n\t// is used as authentication proof.\n\t// Lastly, the Bearer token MUST be bound to some SourceHub account.\n\tBearerPolicyCmd(context.Context, *MsgBearerPolicyCmd) (*MsgBearerPolicyCmdResponse, error)\n\tDirectPolicyCmd(context.Context, *MsgDirectPolicyCmd) (*MsgDirectPolicyCmdResponse, error)\n\tmustEmbedUnimplementedMsgServer()\n}\n\n// UnimplementedMsgServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedMsgServer struct{}\n\nfunc (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (UnimplementedMsgServer) CreatePolicy(context.Context, *MsgCreatePolicy) (*MsgCreatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreatePolicy not implemented\")\n}\nfunc (UnimplementedMsgServer) EditPolicy(context.Context, *MsgEditPolicy) (*MsgEditPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method EditPolicy not implemented\")\n}\nfunc (UnimplementedMsgServer) CheckAccess(context.Context, *MsgCheckAccess) (*MsgCheckAccessResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CheckAccess not implemented\")\n}\nfunc (UnimplementedMsgServer) SignedPolicyCmd(context.Context, *MsgSignedPolicyCmd) (*MsgSignedPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method SignedPolicyCmd not implemented\")\n}\nfunc (UnimplementedMsgServer) BearerPolicyCmd(context.Context, *MsgBearerPolicyCmd) (*MsgBearerPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method BearerPolicyCmd not implemented\")\n}\nfunc (UnimplementedMsgServer) DirectPolicyCmd(context.Context, *MsgDirectPolicyCmd) (*MsgDirectPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DirectPolicyCmd not implemented\")\n}\nfunc (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}\nfunc (UnimplementedMsgServer) testEmbeddedByValue()             {}\n\n// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to MsgServer will\n// result in compilation errors.\ntype UnsafeMsgServer interface {\n\tmustEmbedUnimplementedMsgServer()\n}\n\nfunc RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) {\n\t// If the following call pancis, it indicates UnimplementedMsgServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Msg_ServiceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreatePolicy)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_CreatePolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreatePolicy(ctx, req.(*MsgCreatePolicy))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_EditPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgEditPolicy)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).EditPolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_EditPolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).EditPolicy(ctx, req.(*MsgEditPolicy))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CheckAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCheckAccess)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CheckAccess(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_CheckAccess_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CheckAccess(ctx, req.(*MsgCheckAccess))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_SignedPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgSignedPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).SignedPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_SignedPolicyCmd_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).SignedPolicyCmd(ctx, req.(*MsgSignedPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_BearerPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgBearerPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).BearerPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_BearerPolicyCmd_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).BearerPolicyCmd(ctx, req.(*MsgBearerPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_DirectPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgDirectPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).DirectPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_DirectPolicyCmd_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).DirectPolicyCmd(ctx, req.(*MsgDirectPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Msg_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.acp.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreatePolicy\",\n\t\t\tHandler:    _Msg_CreatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"EditPolicy\",\n\t\t\tHandler:    _Msg_EditPolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CheckAccess\",\n\t\t\tHandler:    _Msg_CheckAccess_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"SignedPolicyCmd\",\n\t\t\tHandler:    _Msg_SignedPolicyCmd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"BearerPolicyCmd\",\n\t\t\tHandler:    _Msg_BearerPolicyCmd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DirectPolicyCmd\",\n\t\t\tHandler:    _Msg_DirectPolicyCmd_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/acp/tx.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/ante/jws_extension.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage ante\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_JWSExtensionOption              protoreflect.MessageDescriptor\n\tfd_JWSExtensionOption_bearer_token protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_ante_jws_extension_proto_init()\n\tmd_JWSExtensionOption = File_sourcehub_ante_jws_extension_proto.Messages().ByName(\"JWSExtensionOption\")\n\tfd_JWSExtensionOption_bearer_token = md_JWSExtensionOption.Fields().ByName(\"bearer_token\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_JWSExtensionOption)(nil)\n\ntype fastReflection_JWSExtensionOption JWSExtensionOption\n\nfunc (x *JWSExtensionOption) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_JWSExtensionOption)(x)\n}\n\nfunc (x *JWSExtensionOption) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_ante_jws_extension_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_JWSExtensionOption_messageType fastReflection_JWSExtensionOption_messageType\nvar _ protoreflect.MessageType = fastReflection_JWSExtensionOption_messageType{}\n\ntype fastReflection_JWSExtensionOption_messageType struct{}\n\nfunc (x fastReflection_JWSExtensionOption_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_JWSExtensionOption)(nil)\n}\nfunc (x fastReflection_JWSExtensionOption_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_JWSExtensionOption)\n}\nfunc (x fastReflection_JWSExtensionOption_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_JWSExtensionOption\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_JWSExtensionOption) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_JWSExtensionOption\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_JWSExtensionOption) Type() protoreflect.MessageType {\n\treturn _fastReflection_JWSExtensionOption_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_JWSExtensionOption) New() protoreflect.Message {\n\treturn new(fastReflection_JWSExtensionOption)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_JWSExtensionOption) Interface() protoreflect.ProtoMessage {\n\treturn (*JWSExtensionOption)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_JWSExtensionOption) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.BearerToken != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.BearerToken)\n\t\tif !f(fd_JWSExtensionOption_bearer_token, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_JWSExtensionOption) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\treturn x.BearerToken != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSExtensionOption) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\tx.BearerToken = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_JWSExtensionOption) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\tvalue := x.BearerToken\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSExtensionOption) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\tx.BearerToken = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSExtensionOption) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\tpanic(fmt.Errorf(\"field bearer_token of message sourcehub.ante.JWSExtensionOption is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_JWSExtensionOption) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.ante.JWSExtensionOption.bearer_token\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.ante.JWSExtensionOption\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.ante.JWSExtensionOption does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_JWSExtensionOption) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.ante.JWSExtensionOption\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_JWSExtensionOption) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSExtensionOption) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_JWSExtensionOption) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_JWSExtensionOption) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*JWSExtensionOption)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.BearerToken)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*JWSExtensionOption)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.BearerToken) > 0 {\n\t\t\ti -= len(x.BearerToken)\n\t\t\tcopy(dAtA[i:], x.BearerToken)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.BearerToken)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*JWSExtensionOption)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: JWSExtensionOption: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: JWSExtensionOption: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/ante/jws_extension.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// JWSExtensionOption represents a transaction extension option with a bearer token.\n// The bearer token is a JWS containing issuer DID, authorized account, issued at, and expiration time claims.\ntype JWSExtensionOption struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tBearerToken string `protobuf:\"bytes,1,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\"`\n}\n\nfunc (x *JWSExtensionOption) Reset() {\n\t*x = JWSExtensionOption{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_ante_jws_extension_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *JWSExtensionOption) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*JWSExtensionOption) ProtoMessage() {}\n\n// Deprecated: Use JWSExtensionOption.ProtoReflect.Descriptor instead.\nfunc (*JWSExtensionOption) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_ante_jws_extension_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *JWSExtensionOption) GetBearerToken() string {\n\tif x != nil {\n\t\treturn x.BearerToken\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_ante_jws_extension_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_ante_jws_extension_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x6e, 0x74, 0x65,\n\t0x2f, 0x6a, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x61, 0x6e, 0x74, 0x65, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,\n\t0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5a, 0x0a, 0x12, 0x4a, 0x57,\n\t0x53, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x12, 0x3a, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c,\n\t0x3a, 0x22, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52,\n\t0x0b, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x08, 0x88, 0xa0,\n\t0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x42, 0xa1, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x61, 0x6e, 0x74, 0x65, 0x42, 0x11, 0x4a,\n\t0x77, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x6e, 0x74, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x41, 0x6e, 0x74, 0x65, 0xca, 0x02, 0x0e, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x6e, 0x74, 0x65, 0xe2, 0x02, 0x1a, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x41, 0x6e, 0x74, 0x65, 0x5c, 0x47, 0x50, 0x42,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x41, 0x6e, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_ante_jws_extension_proto_rawDescOnce sync.Once\n\tfile_sourcehub_ante_jws_extension_proto_rawDescData = file_sourcehub_ante_jws_extension_proto_rawDesc\n)\n\nfunc file_sourcehub_ante_jws_extension_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_ante_jws_extension_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_ante_jws_extension_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_ante_jws_extension_proto_rawDescData)\n\t})\n\treturn file_sourcehub_ante_jws_extension_proto_rawDescData\n}\n\nvar file_sourcehub_ante_jws_extension_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_ante_jws_extension_proto_goTypes = []interface{}{\n\t(*JWSExtensionOption)(nil), // 0: sourcehub.ante.JWSExtensionOption\n}\nvar file_sourcehub_ante_jws_extension_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_ante_jws_extension_proto_init() }\nfunc file_sourcehub_ante_jws_extension_proto_init() {\n\tif File_sourcehub_ante_jws_extension_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_ante_jws_extension_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*JWSExtensionOption); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_ante_jws_extension_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_ante_jws_extension_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_ante_jws_extension_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_ante_jws_extension_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_ante_jws_extension_proto = out.File\n\tfile_sourcehub_ante_jws_extension_proto_rawDesc = nil\n\tfile_sourcehub_ante_jws_extension_proto_goTypes = nil\n\tfile_sourcehub_ante_jws_extension_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/collaborator.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Collaborator           protoreflect.MessageDescriptor\n\tfd_Collaborator_address   protoreflect.FieldDescriptor\n\tfd_Collaborator_did       protoreflect.FieldDescriptor\n\tfd_Collaborator_namespace protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_collaborator_proto_init()\n\tmd_Collaborator = File_sourcehub_bulletin_collaborator_proto.Messages().ByName(\"Collaborator\")\n\tfd_Collaborator_address = md_Collaborator.Fields().ByName(\"address\")\n\tfd_Collaborator_did = md_Collaborator.Fields().ByName(\"did\")\n\tfd_Collaborator_namespace = md_Collaborator.Fields().ByName(\"namespace\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Collaborator)(nil)\n\ntype fastReflection_Collaborator Collaborator\n\nfunc (x *Collaborator) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Collaborator)(x)\n}\n\nfunc (x *Collaborator) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_collaborator_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Collaborator_messageType fastReflection_Collaborator_messageType\nvar _ protoreflect.MessageType = fastReflection_Collaborator_messageType{}\n\ntype fastReflection_Collaborator_messageType struct{}\n\nfunc (x fastReflection_Collaborator_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Collaborator)(nil)\n}\nfunc (x fastReflection_Collaborator_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Collaborator)\n}\nfunc (x fastReflection_Collaborator_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Collaborator\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Collaborator) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Collaborator\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Collaborator) Type() protoreflect.MessageType {\n\treturn _fastReflection_Collaborator_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Collaborator) New() protoreflect.Message {\n\treturn new(fastReflection_Collaborator)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Collaborator) Interface() protoreflect.ProtoMessage {\n\treturn (*Collaborator)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Collaborator) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_Collaborator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Did != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Did)\n\t\tif !f(fd_Collaborator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_Collaborator_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Collaborator) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\treturn x.Did != \"\"\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\treturn x.Namespace != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Collaborator) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\tx.Did = \"\"\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\tx.Namespace = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Collaborator) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\tvalue := x.Did\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Collaborator) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\tx.Did = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Collaborator) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.bulletin.Collaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\tpanic(fmt.Errorf(\"field did of message sourcehub.bulletin.Collaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.Collaborator is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Collaborator) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Collaborator.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Collaborator.did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Collaborator.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Collaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Collaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Collaborator) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.Collaborator\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Collaborator) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Collaborator) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Collaborator) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Collaborator) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Collaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Did)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Collaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Did) > 0 {\n\t\t\ti -= len(x.Did)\n\t\t\tcopy(dAtA[i:], x.Did)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Collaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Collaborator: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Collaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Did\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Did = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/collaborator.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Collaborator represents an actor with collaborator permissions in a namespace.\ntype Collaborator struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress   string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tDid       string `protobuf:\"bytes,2,opt,name=did,proto3\" json:\"did,omitempty\"`\n\tNamespace string `protobuf:\"bytes,3,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (x *Collaborator) Reset() {\n\t*x = Collaborator{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_collaborator_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Collaborator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Collaborator) ProtoMessage() {}\n\n// Deprecated: Use Collaborator.ProtoReflect.Descriptor instead.\nfunc (*Collaborator) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_collaborator_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Collaborator) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *Collaborator) GetDid() string {\n\tif x != nil {\n\t\treturn x.Did\n\t}\n\treturn \"\"\n}\n\nfunc (x *Collaborator) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_bulletin_collaborator_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_collaborator_proto_rawDesc = []byte{\n\t0x0a, 0x25, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f,\n\t0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x0c, 0x43,\n\t0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64,\n\t0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,\n\t0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0xb9, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x42, 0x11, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x58,\n\t0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_collaborator_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_collaborator_proto_rawDescData = file_sourcehub_bulletin_collaborator_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_collaborator_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_collaborator_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_collaborator_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_collaborator_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_collaborator_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_collaborator_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_collaborator_proto_goTypes = []interface{}{\n\t(*Collaborator)(nil), // 0: sourcehub.bulletin.Collaborator\n}\nvar file_sourcehub_bulletin_collaborator_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_collaborator_proto_init() }\nfunc file_sourcehub_bulletin_collaborator_proto_init() {\n\tif File_sourcehub_bulletin_collaborator_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_collaborator_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Collaborator); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_collaborator_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_collaborator_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_collaborator_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_collaborator_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_collaborator_proto = out.File\n\tfile_sourcehub_bulletin_collaborator_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_collaborator_proto_goTypes = nil\n\tfile_sourcehub_bulletin_collaborator_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/events.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_EventNamespaceRegistered              protoreflect.MessageDescriptor\n\tfd_EventNamespaceRegistered_namespace_id protoreflect.FieldDescriptor\n\tfd_EventNamespaceRegistered_owner_did    protoreflect.FieldDescriptor\n\tfd_EventNamespaceRegistered_created_at   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_events_proto_init()\n\tmd_EventNamespaceRegistered = File_sourcehub_bulletin_events_proto.Messages().ByName(\"EventNamespaceRegistered\")\n\tfd_EventNamespaceRegistered_namespace_id = md_EventNamespaceRegistered.Fields().ByName(\"namespace_id\")\n\tfd_EventNamespaceRegistered_owner_did = md_EventNamespaceRegistered.Fields().ByName(\"owner_did\")\n\tfd_EventNamespaceRegistered_created_at = md_EventNamespaceRegistered.Fields().ByName(\"created_at\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventNamespaceRegistered)(nil)\n\ntype fastReflection_EventNamespaceRegistered EventNamespaceRegistered\n\nfunc (x *EventNamespaceRegistered) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventNamespaceRegistered)(x)\n}\n\nfunc (x *EventNamespaceRegistered) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventNamespaceRegistered_messageType fastReflection_EventNamespaceRegistered_messageType\nvar _ protoreflect.MessageType = fastReflection_EventNamespaceRegistered_messageType{}\n\ntype fastReflection_EventNamespaceRegistered_messageType struct{}\n\nfunc (x fastReflection_EventNamespaceRegistered_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventNamespaceRegistered)(nil)\n}\nfunc (x fastReflection_EventNamespaceRegistered_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventNamespaceRegistered)\n}\nfunc (x fastReflection_EventNamespaceRegistered_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventNamespaceRegistered\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventNamespaceRegistered) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventNamespaceRegistered\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventNamespaceRegistered) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventNamespaceRegistered_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventNamespaceRegistered) New() protoreflect.Message {\n\treturn new(fastReflection_EventNamespaceRegistered)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventNamespaceRegistered) Interface() protoreflect.ProtoMessage {\n\treturn (*EventNamespaceRegistered)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventNamespaceRegistered) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.NamespaceId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.NamespaceId)\n\t\tif !f(fd_EventNamespaceRegistered_namespace_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.OwnerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.OwnerDid)\n\t\tif !f(fd_EventNamespaceRegistered_owner_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreatedAt.ProtoReflect())\n\t\tif !f(fd_EventNamespaceRegistered_created_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventNamespaceRegistered) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\treturn x.NamespaceId != \"\"\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\treturn x.OwnerDid != \"\"\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\treturn x.CreatedAt != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventNamespaceRegistered) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\tx.NamespaceId = \"\"\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\tx.OwnerDid = \"\"\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\tx.CreatedAt = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventNamespaceRegistered) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\tvalue := x.NamespaceId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\tvalue := x.OwnerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\tvalue := x.CreatedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventNamespaceRegistered) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\tx.NamespaceId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\tx.OwnerDid = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\tx.CreatedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventNamespaceRegistered) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\tif x.CreatedAt == nil {\n\t\t\tx.CreatedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreatedAt.ProtoReflect())\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\tpanic(fmt.Errorf(\"field namespace_id of message sourcehub.bulletin.EventNamespaceRegistered is not mutable\"))\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\tpanic(fmt.Errorf(\"field owner_did of message sourcehub.bulletin.EventNamespaceRegistered is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventNamespaceRegistered) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.namespace_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.owner_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventNamespaceRegistered.created_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventNamespaceRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventNamespaceRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventNamespaceRegistered) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.EventNamespaceRegistered\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventNamespaceRegistered) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventNamespaceRegistered) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventNamespaceRegistered) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventNamespaceRegistered) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventNamespaceRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.NamespaceId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.OwnerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreatedAt != nil {\n\t\t\tl = options.Size(x.CreatedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventNamespaceRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CreatedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.CreatedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.OwnerDid) > 0 {\n\t\t\ti -= len(x.OwnerDid)\n\t\t\tcopy(dAtA[i:], x.OwnerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.NamespaceId) > 0 {\n\t\t\ti -= len(x.NamespaceId)\n\t\t\tcopy(dAtA[i:], x.NamespaceId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.NamespaceId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventNamespaceRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventNamespaceRegistered: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventNamespaceRegistered: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreatedAt == nil {\n\t\t\t\t\tx.CreatedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreatedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventPostCreated              protoreflect.MessageDescriptor\n\tfd_EventPostCreated_namespace_id protoreflect.FieldDescriptor\n\tfd_EventPostCreated_post_id      protoreflect.FieldDescriptor\n\tfd_EventPostCreated_creator_did  protoreflect.FieldDescriptor\n\tfd_EventPostCreated_payload      protoreflect.FieldDescriptor\n\tfd_EventPostCreated_artifact     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_events_proto_init()\n\tmd_EventPostCreated = File_sourcehub_bulletin_events_proto.Messages().ByName(\"EventPostCreated\")\n\tfd_EventPostCreated_namespace_id = md_EventPostCreated.Fields().ByName(\"namespace_id\")\n\tfd_EventPostCreated_post_id = md_EventPostCreated.Fields().ByName(\"post_id\")\n\tfd_EventPostCreated_creator_did = md_EventPostCreated.Fields().ByName(\"creator_did\")\n\tfd_EventPostCreated_payload = md_EventPostCreated.Fields().ByName(\"payload\")\n\tfd_EventPostCreated_artifact = md_EventPostCreated.Fields().ByName(\"artifact\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventPostCreated)(nil)\n\ntype fastReflection_EventPostCreated EventPostCreated\n\nfunc (x *EventPostCreated) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventPostCreated)(x)\n}\n\nfunc (x *EventPostCreated) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventPostCreated_messageType fastReflection_EventPostCreated_messageType\nvar _ protoreflect.MessageType = fastReflection_EventPostCreated_messageType{}\n\ntype fastReflection_EventPostCreated_messageType struct{}\n\nfunc (x fastReflection_EventPostCreated_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventPostCreated)(nil)\n}\nfunc (x fastReflection_EventPostCreated_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventPostCreated)\n}\nfunc (x fastReflection_EventPostCreated_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventPostCreated\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventPostCreated) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventPostCreated\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventPostCreated) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventPostCreated_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventPostCreated) New() protoreflect.Message {\n\treturn new(fastReflection_EventPostCreated)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventPostCreated) Interface() protoreflect.ProtoMessage {\n\treturn (*EventPostCreated)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventPostCreated) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.NamespaceId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.NamespaceId)\n\t\tif !f(fd_EventPostCreated_namespace_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PostId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PostId)\n\t\tif !f(fd_EventPostCreated_post_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CreatorDid)\n\t\tif !f(fd_EventPostCreated_creator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Payload != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Payload)\n\t\tif !f(fd_EventPostCreated_payload, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Artifact != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Artifact)\n\t\tif !f(fd_EventPostCreated_artifact, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventPostCreated) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\treturn x.NamespaceId != \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\treturn x.PostId != \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\treturn x.CreatorDid != \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\treturn x.Payload != \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\treturn x.Artifact != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPostCreated) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\tx.NamespaceId = \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\tx.PostId = \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\tx.CreatorDid = \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\tx.Payload = \"\"\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\tx.Artifact = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventPostCreated) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\tvalue := x.NamespaceId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\tvalue := x.PostId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\tvalue := x.CreatorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\tvalue := x.Payload\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\tvalue := x.Artifact\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPostCreated) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\tx.NamespaceId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\tx.PostId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\tx.CreatorDid = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\tx.Payload = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\tx.Artifact = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPostCreated) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\tpanic(fmt.Errorf(\"field namespace_id of message sourcehub.bulletin.EventPostCreated is not mutable\"))\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\tpanic(fmt.Errorf(\"field post_id of message sourcehub.bulletin.EventPostCreated is not mutable\"))\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\tpanic(fmt.Errorf(\"field creator_did of message sourcehub.bulletin.EventPostCreated is not mutable\"))\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\tpanic(fmt.Errorf(\"field payload of message sourcehub.bulletin.EventPostCreated is not mutable\"))\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\tpanic(fmt.Errorf(\"field artifact of message sourcehub.bulletin.EventPostCreated is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventPostCreated) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventPostCreated.namespace_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventPostCreated.post_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventPostCreated.creator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventPostCreated.payload\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventPostCreated.artifact\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventPostCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventPostCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventPostCreated) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.EventPostCreated\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventPostCreated) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPostCreated) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventPostCreated) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventPostCreated) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventPostCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.NamespaceId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PostId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.CreatorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Payload)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Artifact)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventPostCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Artifact) > 0 {\n\t\t\ti -= len(x.Artifact)\n\t\t\tcopy(dAtA[i:], x.Artifact)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Artifact)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.Payload) > 0 {\n\t\t\ti -= len(x.Payload)\n\t\t\tcopy(dAtA[i:], x.Payload)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Payload)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.CreatorDid) > 0 {\n\t\t\ti -= len(x.CreatorDid)\n\t\t\tcopy(dAtA[i:], x.CreatorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CreatorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PostId) > 0 {\n\t\t\ti -= len(x.PostId)\n\t\t\tcopy(dAtA[i:], x.PostId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PostId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.NamespaceId) > 0 {\n\t\t\ti -= len(x.NamespaceId)\n\t\t\tcopy(dAtA[i:], x.NamespaceId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.NamespaceId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventPostCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventPostCreated: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventPostCreated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PostId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PostId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CreatorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Payload = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Artifact\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Artifact = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventCollaboratorAdded                  protoreflect.MessageDescriptor\n\tfd_EventCollaboratorAdded_namespace_id     protoreflect.FieldDescriptor\n\tfd_EventCollaboratorAdded_collaborator_did protoreflect.FieldDescriptor\n\tfd_EventCollaboratorAdded_added_by         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_events_proto_init()\n\tmd_EventCollaboratorAdded = File_sourcehub_bulletin_events_proto.Messages().ByName(\"EventCollaboratorAdded\")\n\tfd_EventCollaboratorAdded_namespace_id = md_EventCollaboratorAdded.Fields().ByName(\"namespace_id\")\n\tfd_EventCollaboratorAdded_collaborator_did = md_EventCollaboratorAdded.Fields().ByName(\"collaborator_did\")\n\tfd_EventCollaboratorAdded_added_by = md_EventCollaboratorAdded.Fields().ByName(\"added_by\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventCollaboratorAdded)(nil)\n\ntype fastReflection_EventCollaboratorAdded EventCollaboratorAdded\n\nfunc (x *EventCollaboratorAdded) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventCollaboratorAdded)(x)\n}\n\nfunc (x *EventCollaboratorAdded) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventCollaboratorAdded_messageType fastReflection_EventCollaboratorAdded_messageType\nvar _ protoreflect.MessageType = fastReflection_EventCollaboratorAdded_messageType{}\n\ntype fastReflection_EventCollaboratorAdded_messageType struct{}\n\nfunc (x fastReflection_EventCollaboratorAdded_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventCollaboratorAdded)(nil)\n}\nfunc (x fastReflection_EventCollaboratorAdded_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventCollaboratorAdded)\n}\nfunc (x fastReflection_EventCollaboratorAdded_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventCollaboratorAdded\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventCollaboratorAdded) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventCollaboratorAdded\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventCollaboratorAdded) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventCollaboratorAdded_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventCollaboratorAdded) New() protoreflect.Message {\n\treturn new(fastReflection_EventCollaboratorAdded)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventCollaboratorAdded) Interface() protoreflect.ProtoMessage {\n\treturn (*EventCollaboratorAdded)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventCollaboratorAdded) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.NamespaceId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.NamespaceId)\n\t\tif !f(fd_EventCollaboratorAdded_namespace_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CollaboratorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CollaboratorDid)\n\t\tif !f(fd_EventCollaboratorAdded_collaborator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AddedBy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.AddedBy)\n\t\tif !f(fd_EventCollaboratorAdded_added_by, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventCollaboratorAdded) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\treturn x.NamespaceId != \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\treturn x.CollaboratorDid != \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\treturn x.AddedBy != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorAdded) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\tx.NamespaceId = \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\tx.CollaboratorDid = \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\tx.AddedBy = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventCollaboratorAdded) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\tvalue := x.NamespaceId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\tvalue := x.CollaboratorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\tvalue := x.AddedBy\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorAdded) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\tx.NamespaceId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\tx.CollaboratorDid = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\tx.AddedBy = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorAdded) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\tpanic(fmt.Errorf(\"field namespace_id of message sourcehub.bulletin.EventCollaboratorAdded is not mutable\"))\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\tpanic(fmt.Errorf(\"field collaborator_did of message sourcehub.bulletin.EventCollaboratorAdded is not mutable\"))\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\tpanic(fmt.Errorf(\"field added_by of message sourcehub.bulletin.EventCollaboratorAdded is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventCollaboratorAdded) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.namespace_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.collaborator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventCollaboratorAdded.added_by\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorAdded\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorAdded does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventCollaboratorAdded) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.EventCollaboratorAdded\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventCollaboratorAdded) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorAdded) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventCollaboratorAdded) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventCollaboratorAdded) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventCollaboratorAdded)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.NamespaceId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.CollaboratorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.AddedBy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventCollaboratorAdded)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.AddedBy) > 0 {\n\t\t\ti -= len(x.AddedBy)\n\t\t\tcopy(dAtA[i:], x.AddedBy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.AddedBy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.CollaboratorDid) > 0 {\n\t\t\ti -= len(x.CollaboratorDid)\n\t\t\tcopy(dAtA[i:], x.CollaboratorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CollaboratorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.NamespaceId) > 0 {\n\t\t\ti -= len(x.NamespaceId)\n\t\t\tcopy(dAtA[i:], x.NamespaceId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.NamespaceId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventCollaboratorAdded)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventCollaboratorAdded: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventCollaboratorAdded: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AddedBy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.AddedBy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventCollaboratorRemoved                  protoreflect.MessageDescriptor\n\tfd_EventCollaboratorRemoved_namespace_id     protoreflect.FieldDescriptor\n\tfd_EventCollaboratorRemoved_collaborator_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_events_proto_init()\n\tmd_EventCollaboratorRemoved = File_sourcehub_bulletin_events_proto.Messages().ByName(\"EventCollaboratorRemoved\")\n\tfd_EventCollaboratorRemoved_namespace_id = md_EventCollaboratorRemoved.Fields().ByName(\"namespace_id\")\n\tfd_EventCollaboratorRemoved_collaborator_did = md_EventCollaboratorRemoved.Fields().ByName(\"collaborator_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventCollaboratorRemoved)(nil)\n\ntype fastReflection_EventCollaboratorRemoved EventCollaboratorRemoved\n\nfunc (x *EventCollaboratorRemoved) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventCollaboratorRemoved)(x)\n}\n\nfunc (x *EventCollaboratorRemoved) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventCollaboratorRemoved_messageType fastReflection_EventCollaboratorRemoved_messageType\nvar _ protoreflect.MessageType = fastReflection_EventCollaboratorRemoved_messageType{}\n\ntype fastReflection_EventCollaboratorRemoved_messageType struct{}\n\nfunc (x fastReflection_EventCollaboratorRemoved_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventCollaboratorRemoved)(nil)\n}\nfunc (x fastReflection_EventCollaboratorRemoved_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventCollaboratorRemoved)\n}\nfunc (x fastReflection_EventCollaboratorRemoved_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventCollaboratorRemoved\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventCollaboratorRemoved) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventCollaboratorRemoved\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventCollaboratorRemoved) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventCollaboratorRemoved_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventCollaboratorRemoved) New() protoreflect.Message {\n\treturn new(fastReflection_EventCollaboratorRemoved)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventCollaboratorRemoved) Interface() protoreflect.ProtoMessage {\n\treturn (*EventCollaboratorRemoved)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventCollaboratorRemoved) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.NamespaceId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.NamespaceId)\n\t\tif !f(fd_EventCollaboratorRemoved_namespace_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CollaboratorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CollaboratorDid)\n\t\tif !f(fd_EventCollaboratorRemoved_collaborator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventCollaboratorRemoved) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\treturn x.NamespaceId != \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\treturn x.CollaboratorDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorRemoved) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\tx.NamespaceId = \"\"\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\tx.CollaboratorDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventCollaboratorRemoved) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\tvalue := x.NamespaceId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\tvalue := x.CollaboratorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorRemoved) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\tx.NamespaceId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\tx.CollaboratorDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorRemoved) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\tpanic(fmt.Errorf(\"field namespace_id of message sourcehub.bulletin.EventCollaboratorRemoved is not mutable\"))\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\tpanic(fmt.Errorf(\"field collaborator_did of message sourcehub.bulletin.EventCollaboratorRemoved is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventCollaboratorRemoved) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.namespace_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.EventCollaboratorRemoved.collaborator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.EventCollaboratorRemoved\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.EventCollaboratorRemoved does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventCollaboratorRemoved) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.EventCollaboratorRemoved\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventCollaboratorRemoved) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventCollaboratorRemoved) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventCollaboratorRemoved) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventCollaboratorRemoved) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventCollaboratorRemoved)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.NamespaceId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.CollaboratorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventCollaboratorRemoved)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.CollaboratorDid) > 0 {\n\t\t\ti -= len(x.CollaboratorDid)\n\t\t\tcopy(dAtA[i:], x.CollaboratorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CollaboratorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.NamespaceId) > 0 {\n\t\t\ti -= len(x.NamespaceId)\n\t\t\tcopy(dAtA[i:], x.NamespaceId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.NamespaceId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventCollaboratorRemoved)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventCollaboratorRemoved: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventCollaboratorRemoved: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/events.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// EventNamespaceRegistered is emitted when a namespace is registered.\ntype EventNamespaceRegistered struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// namespace_id is the unique identifier of the namespace.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// owner_did is the DID of the namespace owner.\n\tOwnerDid string `protobuf:\"bytes,2,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n\t// created_at is the timestamp when the namespace was created.\n\tCreatedAt *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=created_at,json=createdAt,proto3\" json:\"created_at,omitempty\"`\n}\n\nfunc (x *EventNamespaceRegistered) Reset() {\n\t*x = EventNamespaceRegistered{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventNamespaceRegistered) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventNamespaceRegistered) ProtoMessage() {}\n\n// Deprecated: Use EventNamespaceRegistered.ProtoReflect.Descriptor instead.\nfunc (*EventNamespaceRegistered) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_events_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EventNamespaceRegistered) GetNamespaceId() string {\n\tif x != nil {\n\t\treturn x.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventNamespaceRegistered) GetOwnerDid() string {\n\tif x != nil {\n\t\treturn x.OwnerDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventNamespaceRegistered) GetCreatedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreatedAt\n\t}\n\treturn nil\n}\n\n// EventPostCreated is emitted when a post is created.\ntype EventPostCreated struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// namespace_id is the namespace the post belongs to.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// post_id is the unique identifier of the post.\n\tPostId string `protobuf:\"bytes,2,opt,name=post_id,json=postId,proto3\" json:\"post_id,omitempty\"`\n\t// creator_did is the DID of the post creator.\n\tCreatorDid string `protobuf:\"bytes,3,opt,name=creator_did,json=creatorDid,proto3\" json:\"creator_did,omitempty\"`\n\t// payload is the base64-encoded content of the post.\n\tPayload string `protobuf:\"bytes,4,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\t// artifact is sent with a post call for tracking purposes\n\tArtifact string `protobuf:\"bytes,5,opt,name=artifact,proto3\" json:\"artifact,omitempty\"`\n}\n\nfunc (x *EventPostCreated) Reset() {\n\t*x = EventPostCreated{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventPostCreated) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventPostCreated) ProtoMessage() {}\n\n// Deprecated: Use EventPostCreated.ProtoReflect.Descriptor instead.\nfunc (*EventPostCreated) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_events_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EventPostCreated) GetNamespaceId() string {\n\tif x != nil {\n\t\treturn x.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventPostCreated) GetPostId() string {\n\tif x != nil {\n\t\treturn x.PostId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventPostCreated) GetCreatorDid() string {\n\tif x != nil {\n\t\treturn x.CreatorDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventPostCreated) GetPayload() string {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventPostCreated) GetArtifact() string {\n\tif x != nil {\n\t\treturn x.Artifact\n\t}\n\treturn \"\"\n}\n\n// EventCollaboratorAdded is emitted when a collaborator is added to a namespace.\ntype EventCollaboratorAdded struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// namespace_id is the namespace the collaborator was added to.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// collaborator_did is the DID of the collaborator.\n\tCollaboratorDid string `protobuf:\"bytes,2,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n\t// added_by is the DID of the user who added the collaborator.\n\tAddedBy string `protobuf:\"bytes,3,opt,name=added_by,json=addedBy,proto3\" json:\"added_by,omitempty\"`\n}\n\nfunc (x *EventCollaboratorAdded) Reset() {\n\t*x = EventCollaboratorAdded{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventCollaboratorAdded) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventCollaboratorAdded) ProtoMessage() {}\n\n// Deprecated: Use EventCollaboratorAdded.ProtoReflect.Descriptor instead.\nfunc (*EventCollaboratorAdded) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_events_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *EventCollaboratorAdded) GetNamespaceId() string {\n\tif x != nil {\n\t\treturn x.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventCollaboratorAdded) GetCollaboratorDid() string {\n\tif x != nil {\n\t\treturn x.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventCollaboratorAdded) GetAddedBy() string {\n\tif x != nil {\n\t\treturn x.AddedBy\n\t}\n\treturn \"\"\n}\n\n// EventCollaboratorRemoved is emitted when a collaborator is removed from a namespace.\ntype EventCollaboratorRemoved struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// namespace_id is the namespace the collaborator was removed from.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// collaborator_did is the DID of the collaborator.\n\tCollaboratorDid string `protobuf:\"bytes,2,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (x *EventCollaboratorRemoved) Reset() {\n\t*x = EventCollaboratorRemoved{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_events_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventCollaboratorRemoved) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventCollaboratorRemoved) ProtoMessage() {}\n\n// Deprecated: Use EventCollaboratorRemoved.ProtoReflect.Descriptor instead.\nfunc (*EventCollaboratorRemoved) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_events_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *EventCollaboratorRemoved) GetNamespaceId() string {\n\tif x != nil {\n\t\treturn x.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventCollaboratorRemoved) GetCollaboratorDid() string {\n\tif x != nil {\n\t\treturn x.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_bulletin_events_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_events_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,\n\t0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a,\n\t0x18, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,\n\t0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,\n\t0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,\n\t0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,\n\t0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90,\n\t0xdf, 0x1f, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xa5,\n\t0x01, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x72, 0x65, 0x61,\n\t0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,\n\t0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69,\n\t0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12,\n\t0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64,\n\t0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72,\n\t0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72,\n\t0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x45, 0x76, 0x65, 0x6e, 0x74,\n\t0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x65,\n\t0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72,\n\t0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,\n\t0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64, 0x12,\n\t0x19, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x65, 0x64, 0x42, 0x79, 0x22, 0x68, 0x0a, 0x18, 0x45, 0x76,\n\t0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52,\n\t0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,\n\t0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61,\n\t0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c,\n\t0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f,\n\t0x72, 0x44, 0x69, 0x64, 0x42, 0xb3, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42,\n\t0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,\n\t0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02,\n\t0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_events_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_events_proto_rawDescData = file_sourcehub_bulletin_events_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_events_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_events_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_events_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_events_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_events_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_sourcehub_bulletin_events_proto_goTypes = []interface{}{\n\t(*EventNamespaceRegistered)(nil), // 0: sourcehub.bulletin.EventNamespaceRegistered\n\t(*EventPostCreated)(nil),         // 1: sourcehub.bulletin.EventPostCreated\n\t(*EventCollaboratorAdded)(nil),   // 2: sourcehub.bulletin.EventCollaboratorAdded\n\t(*EventCollaboratorRemoved)(nil), // 3: sourcehub.bulletin.EventCollaboratorRemoved\n\t(*timestamppb.Timestamp)(nil),    // 4: google.protobuf.Timestamp\n}\nvar file_sourcehub_bulletin_events_proto_depIdxs = []int32{\n\t4, // 0: sourcehub.bulletin.EventNamespaceRegistered.created_at:type_name -> google.protobuf.Timestamp\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_events_proto_init() }\nfunc file_sourcehub_bulletin_events_proto_init() {\n\tif File_sourcehub_bulletin_events_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventNamespaceRegistered); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_events_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventPostCreated); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_events_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventCollaboratorAdded); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_events_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventCollaboratorRemoved); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_events_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_events_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_events_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_events_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_events_proto = out.File\n\tfile_sourcehub_bulletin_events_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_events_proto_goTypes = nil\n\tfile_sourcehub_bulletin_events_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_GenesisState_3_list)(nil)\n\ntype _GenesisState_3_list struct {\n\tlist *[]*Namespace\n}\n\nfunc (x *_GenesisState_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Namespace)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Namespace)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_3_list) AppendMutable() protoreflect.Value {\n\tv := new(Namespace)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_3_list) NewElement() protoreflect.Value {\n\tv := new(Namespace)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_4_list)(nil)\n\ntype _GenesisState_4_list struct {\n\tlist *[]*Collaborator\n}\n\nfunc (x *_GenesisState_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Collaborator)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Collaborator)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_4_list) AppendMutable() protoreflect.Value {\n\tv := new(Collaborator)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_4_list) NewElement() protoreflect.Value {\n\tv := new(Collaborator)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_5_list)(nil)\n\ntype _GenesisState_5_list struct {\n\tlist *[]*Post\n}\n\nfunc (x *_GenesisState_5_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_5_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_5_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_5_list) AppendMutable() protoreflect.Value {\n\tv := new(Post)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_5_list) NewElement() protoreflect.Value {\n\tv := new(Post)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_GenesisState               protoreflect.MessageDescriptor\n\tfd_GenesisState_params        protoreflect.FieldDescriptor\n\tfd_GenesisState_policy_id     protoreflect.FieldDescriptor\n\tfd_GenesisState_namespaces    protoreflect.FieldDescriptor\n\tfd_GenesisState_collaborators protoreflect.FieldDescriptor\n\tfd_GenesisState_posts         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_genesis_proto_init()\n\tmd_GenesisState = File_sourcehub_bulletin_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_params = md_GenesisState.Fields().ByName(\"params\")\n\tfd_GenesisState_policy_id = md_GenesisState.Fields().ByName(\"policy_id\")\n\tfd_GenesisState_namespaces = md_GenesisState.Fields().ByName(\"namespaces\")\n\tfd_GenesisState_collaborators = md_GenesisState.Fields().ByName(\"collaborators\")\n\tfd_GenesisState_posts = md_GenesisState.Fields().ByName(\"posts\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_GenesisState_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_GenesisState_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Namespaces) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.Namespaces})\n\t\tif !f(fd_GenesisState_namespaces, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Collaborators) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_4_list{list: &x.Collaborators})\n\t\tif !f(fd_GenesisState_collaborators, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Posts) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_5_list{list: &x.Posts})\n\t\tif !f(fd_GenesisState_posts, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\treturn x.Params != nil\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\treturn len(x.Namespaces) != 0\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\treturn len(x.Collaborators) != 0\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\treturn len(x.Posts) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\tx.Params = nil\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\tx.Namespaces = nil\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\tx.Collaborators = nil\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\tx.Posts = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\tif len(x.Namespaces) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_3_list{list: &x.Namespaces}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\tif len(x.Collaborators) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_4_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_4_list{list: &x.Collaborators}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\tif len(x.Posts) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_5_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_5_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_3_list)\n\t\tx.Namespaces = *clv.list\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_4_list)\n\t\tx.Collaborators = *clv.list\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_5_list)\n\t\tx.Posts = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\tif x.Namespaces == nil {\n\t\t\tx.Namespaces = []*Namespace{}\n\t\t}\n\t\tvalue := &_GenesisState_3_list{list: &x.Namespaces}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\tif x.Collaborators == nil {\n\t\t\tx.Collaborators = []*Collaborator{}\n\t\t}\n\t\tvalue := &_GenesisState_4_list{list: &x.Collaborators}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\tif x.Posts == nil {\n\t\t\tx.Posts = []*Post{}\n\t\t}\n\t\tvalue := &_GenesisState_5_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.bulletin.GenesisState is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.GenesisState.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.bulletin.GenesisState.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.GenesisState.namespaces\":\n\t\tlist := []*Namespace{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{list: &list})\n\tcase \"sourcehub.bulletin.GenesisState.collaborators\":\n\t\tlist := []*Collaborator{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_4_list{list: &list})\n\tcase \"sourcehub.bulletin.GenesisState.posts\":\n\t\tlist := []*Post{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_5_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Namespaces) > 0 {\n\t\t\tfor _, e := range x.Namespaces {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.Collaborators) > 0 {\n\t\t\tfor _, e := range x.Collaborators {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor _, e := range x.Posts {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor iNdEx := len(x.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Posts[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t}\n\t\t}\n\t\tif len(x.Collaborators) > 0 {\n\t\t\tfor iNdEx := len(x.Collaborators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Collaborators[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.Namespaces) > 0 {\n\t\t\tfor iNdEx := len(x.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Namespaces[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespaces = append(x.Namespaces, &Namespace{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Namespaces[len(x.Namespaces)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Collaborators\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Collaborators = append(x.Collaborators, &Collaborator{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Collaborators[len(x.Collaborators)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Posts = append(x.Posts, &Post{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Posts[len(x.Posts)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// GenesisState defines the bulletin module's genesis state.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params defines all the parameters of the module.\n\tParams        *Params         `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n\tPolicyId      string          `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tNamespaces    []*Namespace    `protobuf:\"bytes,3,rep,name=namespaces,proto3\" json:\"namespaces,omitempty\"`\n\tCollaborators []*Collaborator `protobuf:\"bytes,4,rep,name=collaborators,proto3\" json:\"collaborators,omitempty\"`\n\tPosts         []*Post         `protobuf:\"bytes,5,rep,name=posts,proto3\" json:\"posts,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GenesisState) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *GenesisState) GetNamespaces() []*Namespace {\n\tif x != nil {\n\t\treturn x.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetCollaborators() []*Collaborator {\n\tif x != nil {\n\t\treturn x.Collaborators\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetPosts() []*Post {\n\tif x != nil {\n\t\treturn x.Posts\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_bulletin_genesis_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75,\n\t0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d,\n\t0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f,\n\t0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f,\n\t0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x02, 0x0a, 0x0c, 0x47,\n\t0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x70,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0,\n\t0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00,\n\t0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,\n\t0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f,\n\t0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x43, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00,\n\t0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61,\n\t0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x09, 0xc8,\n\t0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x42,\n\t0xb4, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65,\n\t0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2,\n\t0x02, 0x03, 0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2,\n\t0x02, 0x1e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,\n\t0xea, 0x02, 0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75,\n\t0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_genesis_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_genesis_proto_rawDescData = file_sourcehub_bulletin_genesis_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_genesis_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_genesis_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_genesis_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_genesis_proto_goTypes = []interface{}{\n\t(*GenesisState)(nil), // 0: sourcehub.bulletin.GenesisState\n\t(*Params)(nil),       // 1: sourcehub.bulletin.Params\n\t(*Namespace)(nil),    // 2: sourcehub.bulletin.Namespace\n\t(*Collaborator)(nil), // 3: sourcehub.bulletin.Collaborator\n\t(*Post)(nil),         // 4: sourcehub.bulletin.Post\n}\nvar file_sourcehub_bulletin_genesis_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.bulletin.GenesisState.params:type_name -> sourcehub.bulletin.Params\n\t2, // 1: sourcehub.bulletin.GenesisState.namespaces:type_name -> sourcehub.bulletin.Namespace\n\t3, // 2: sourcehub.bulletin.GenesisState.collaborators:type_name -> sourcehub.bulletin.Collaborator\n\t4, // 3: sourcehub.bulletin.GenesisState.posts:type_name -> sourcehub.bulletin.Post\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_genesis_proto_init() }\nfunc file_sourcehub_bulletin_genesis_proto_init() {\n\tif File_sourcehub_bulletin_genesis_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_bulletin_params_proto_init()\n\tfile_sourcehub_bulletin_namespace_proto_init()\n\tfile_sourcehub_bulletin_collaborator_proto_init()\n\tfile_sourcehub_bulletin_post_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_genesis_proto = out.File\n\tfile_sourcehub_bulletin_genesis_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_genesis_proto_goTypes = nil\n\tfile_sourcehub_bulletin_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/module/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage module\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Module           protoreflect.MessageDescriptor\n\tfd_Module_authority protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_module_module_proto_init()\n\tmd_Module = File_sourcehub_bulletin_module_module_proto.Messages().ByName(\"Module\")\n\tfd_Module_authority = md_Module.Fields().ByName(\"authority\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_module_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_Module_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\treturn x.Authority != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\tx.Authority = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.bulletin.module.Module is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.module.Module.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.module.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/module/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object for the module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority defines the custom module authority. If not set, defaults to the governance module.\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_module_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_module_module_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Module) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_bulletin_module_module_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_module_module_proto_rawDesc = []byte{\n\t0x0a, 0x26, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x6d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f,\n\t0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5d, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12,\n\t0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x35, 0xba,\n\t0xc0, 0x96, 0xda, 0x01, 0x2f, 0x0a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,\n\t0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x42, 0xde, 0x01, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c,\n\t0x65, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x4d, 0xaa, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0xca, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xe2,\n\t0x02, 0x25, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d,\n\t0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x3a, 0x3a, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_module_module_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_module_module_proto_rawDescData = file_sourcehub_bulletin_module_module_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_module_module_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_module_module_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_module_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_module_module_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_module_module_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_module_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_module_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: sourcehub.bulletin.module.Module\n}\nvar file_sourcehub_bulletin_module_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_module_module_proto_init() }\nfunc file_sourcehub_bulletin_module_module_proto_init() {\n\tif File_sourcehub_bulletin_module_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_module_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_module_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_module_module_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_module_module_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_module_module_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_module_module_proto = out.File\n\tfile_sourcehub_bulletin_module_module_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_module_module_proto_goTypes = nil\n\tfile_sourcehub_bulletin_module_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/namespace.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Namespace            protoreflect.MessageDescriptor\n\tfd_Namespace_id         protoreflect.FieldDescriptor\n\tfd_Namespace_creator    protoreflect.FieldDescriptor\n\tfd_Namespace_owner_did  protoreflect.FieldDescriptor\n\tfd_Namespace_created_at protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_namespace_proto_init()\n\tmd_Namespace = File_sourcehub_bulletin_namespace_proto.Messages().ByName(\"Namespace\")\n\tfd_Namespace_id = md_Namespace.Fields().ByName(\"id\")\n\tfd_Namespace_creator = md_Namespace.Fields().ByName(\"creator\")\n\tfd_Namespace_owner_did = md_Namespace.Fields().ByName(\"owner_did\")\n\tfd_Namespace_created_at = md_Namespace.Fields().ByName(\"created_at\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Namespace)(nil)\n\ntype fastReflection_Namespace Namespace\n\nfunc (x *Namespace) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Namespace)(x)\n}\n\nfunc (x *Namespace) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_namespace_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Namespace_messageType fastReflection_Namespace_messageType\nvar _ protoreflect.MessageType = fastReflection_Namespace_messageType{}\n\ntype fastReflection_Namespace_messageType struct{}\n\nfunc (x fastReflection_Namespace_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Namespace)(nil)\n}\nfunc (x fastReflection_Namespace_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Namespace)\n}\nfunc (x fastReflection_Namespace_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Namespace\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Namespace) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Namespace\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Namespace) Type() protoreflect.MessageType {\n\treturn _fastReflection_Namespace_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Namespace) New() protoreflect.Message {\n\treturn new(fastReflection_Namespace)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Namespace) Interface() protoreflect.ProtoMessage {\n\treturn (*Namespace)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Namespace) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_Namespace_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_Namespace_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.OwnerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.OwnerDid)\n\t\tif !f(fd_Namespace_owner_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreatedAt.ProtoReflect())\n\t\tif !f(fd_Namespace_created_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Namespace) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\treturn x.OwnerDid != \"\"\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\treturn x.CreatedAt != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Namespace) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\tx.OwnerDid = \"\"\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\tx.CreatedAt = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Namespace) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\tvalue := x.OwnerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\tvalue := x.CreatedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Namespace) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\tx.OwnerDid = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\tx.CreatedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Namespace) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\tif x.CreatedAt == nil {\n\t\t\tx.CreatedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreatedAt.ProtoReflect())\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.bulletin.Namespace is not mutable\"))\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.bulletin.Namespace is not mutable\"))\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\tpanic(fmt.Errorf(\"field owner_did of message sourcehub.bulletin.Namespace is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Namespace) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Namespace.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Namespace.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Namespace.owner_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Namespace.created_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Namespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Namespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Namespace) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.Namespace\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Namespace) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Namespace) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Namespace) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Namespace) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Namespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.OwnerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreatedAt != nil {\n\t\t\tl = options.Size(x.CreatedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Namespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CreatedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.CreatedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.OwnerDid) > 0 {\n\t\t\ti -= len(x.OwnerDid)\n\t\t\tcopy(dAtA[i:], x.OwnerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Namespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Namespace: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Namespace: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreatedAt == nil {\n\t\t\t\t\tx.CreatedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreatedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/namespace.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Namespace represents a logical bulletin space used to group posts.\ntype Namespace struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId        string                 `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tCreator   string                 `protobuf:\"bytes,2,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tOwnerDid  string                 `protobuf:\"bytes,3,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n\tCreatedAt *timestamppb.Timestamp `protobuf:\"bytes,4,opt,name=created_at,json=createdAt,proto3\" json:\"created_at,omitempty\"`\n}\n\nfunc (x *Namespace) Reset() {\n\t*x = Namespace{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_namespace_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Namespace) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Namespace) ProtoMessage() {}\n\n// Deprecated: Use Namespace.ProtoReflect.Descriptor instead.\nfunc (*Namespace) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_namespace_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Namespace) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *Namespace) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *Namespace) GetOwnerDid() string {\n\tif x != nil {\n\t\treturn x.OwnerDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *Namespace) GetCreatedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreatedAt\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_bulletin_namespace_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_namespace_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,\n\t0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,\n\t0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97,\n\t0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02,\n\t0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,\n\t0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f,\n\t0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72,\n\t0x44, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,\n\t0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,\n\t0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, 0x63,\n\t0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0xb6, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x42, 0x0e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x58,\n\t0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_namespace_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_namespace_proto_rawDescData = file_sourcehub_bulletin_namespace_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_namespace_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_namespace_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_namespace_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_namespace_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_namespace_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_namespace_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_namespace_proto_goTypes = []interface{}{\n\t(*Namespace)(nil),             // 0: sourcehub.bulletin.Namespace\n\t(*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp\n}\nvar file_sourcehub_bulletin_namespace_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.bulletin.Namespace.created_at:type_name -> google.protobuf.Timestamp\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_namespace_proto_init() }\nfunc file_sourcehub_bulletin_namespace_proto_init() {\n\tif File_sourcehub_bulletin_namespace_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_bulletin_post_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_namespace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Namespace); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_namespace_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_namespace_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_namespace_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_namespace_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_namespace_proto = out.File\n\tfile_sourcehub_bulletin_namespace_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_namespace_proto_goTypes = nil\n\tfile_sourcehub_bulletin_namespace_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/params.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Params protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_params_proto_init()\n\tmd_Params = File_sourcehub_bulletin_params_proto.Messages().ByName(\"Params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Params)(nil)\n\ntype fastReflection_Params Params\n\nfunc (x *Params) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Params)(x)\n}\n\nfunc (x *Params) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_params_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Params_messageType fastReflection_Params_messageType\nvar _ protoreflect.MessageType = fastReflection_Params_messageType{}\n\ntype fastReflection_Params_messageType struct{}\n\nfunc (x fastReflection_Params_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Params)(nil)\n}\nfunc (x fastReflection_Params_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\nfunc (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Params) Type() protoreflect.MessageType {\n\treturn _fastReflection_Params_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Params) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Params) Interface() protoreflect.ProtoMessage {\n\treturn (*Params)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.Params\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Params) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Params) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Params) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/params.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Params defines the parameters for the module.\ntype Params struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *Params) Reset() {\n\t*x = Params{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_params_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Params) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Params) ProtoMessage() {}\n\n// Deprecated: Use Params.ProtoReflect.Descriptor instead.\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_params_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_sourcehub_bulletin_params_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_params_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69,\n\t0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2e,\n\t0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7,\n\t0xb0, 0x2a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xb3,\n\t0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03,\n\t0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_params_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_params_proto_rawDescData = file_sourcehub_bulletin_params_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_params_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_params_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_params_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_params_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_params_proto_goTypes = []interface{}{\n\t(*Params)(nil), // 0: sourcehub.bulletin.Params\n}\nvar file_sourcehub_bulletin_params_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_params_proto_init() }\nfunc file_sourcehub_bulletin_params_proto_init() {\n\tif File_sourcehub_bulletin_params_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Params); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_params_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_params_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_params_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_params_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_params_proto = out.File\n\tfile_sourcehub_bulletin_params_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_params_proto_goTypes = nil\n\tfile_sourcehub_bulletin_params_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/post.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Post             protoreflect.MessageDescriptor\n\tfd_Post_id          protoreflect.FieldDescriptor\n\tfd_Post_namespace   protoreflect.FieldDescriptor\n\tfd_Post_creator_did protoreflect.FieldDescriptor\n\tfd_Post_payload     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_post_proto_init()\n\tmd_Post = File_sourcehub_bulletin_post_proto.Messages().ByName(\"Post\")\n\tfd_Post_id = md_Post.Fields().ByName(\"id\")\n\tfd_Post_namespace = md_Post.Fields().ByName(\"namespace\")\n\tfd_Post_creator_did = md_Post.Fields().ByName(\"creator_did\")\n\tfd_Post_payload = md_Post.Fields().ByName(\"payload\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Post)(nil)\n\ntype fastReflection_Post Post\n\nfunc (x *Post) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Post)(x)\n}\n\nfunc (x *Post) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_post_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Post_messageType fastReflection_Post_messageType\nvar _ protoreflect.MessageType = fastReflection_Post_messageType{}\n\ntype fastReflection_Post_messageType struct{}\n\nfunc (x fastReflection_Post_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Post)(nil)\n}\nfunc (x fastReflection_Post_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Post)\n}\nfunc (x fastReflection_Post_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Post\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Post) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Post\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Post) Type() protoreflect.MessageType {\n\treturn _fastReflection_Post_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Post) New() protoreflect.Message {\n\treturn new(fastReflection_Post)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Post) Interface() protoreflect.ProtoMessage {\n\treturn (*Post)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Post) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_Post_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_Post_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CreatorDid)\n\t\tif !f(fd_Post_creator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Payload) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Payload)\n\t\tif !f(fd_Post_payload, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Post) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\treturn x.CreatorDid != \"\"\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\treturn len(x.Payload) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Post) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\tx.CreatorDid = \"\"\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\tx.Payload = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Post) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\tvalue := x.CreatorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\tvalue := x.Payload\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Post) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\tx.CreatorDid = value.Interface().(string)\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\tx.Payload = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Post) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.bulletin.Post is not mutable\"))\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.Post is not mutable\"))\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\tpanic(fmt.Errorf(\"field creator_did of message sourcehub.bulletin.Post is not mutable\"))\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\tpanic(fmt.Errorf(\"field payload of message sourcehub.bulletin.Post is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Post) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.Post.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Post.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Post.creator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.Post.payload\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.Post\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.Post does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Post) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.Post\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Post) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Post) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Post) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Post) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Post)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.CreatorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Payload)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Post)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Payload) > 0 {\n\t\t\ti -= len(x.Payload)\n\t\t\tcopy(dAtA[i:], x.Payload)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Payload)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.CreatorDid) > 0 {\n\t\t\ti -= len(x.CreatorDid)\n\t\t\tcopy(dAtA[i:], x.CreatorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CreatorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Post)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Post: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Post: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CreatorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Payload = append(x.Payload[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Payload == nil {\n\t\t\t\t\tx.Payload = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/post.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Post represents a bulletin entry created within a specific namespace.\ntype Post struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId         string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tNamespace  string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCreatorDid string `protobuf:\"bytes,3,opt,name=creator_did,json=creatorDid,proto3\" json:\"creator_did,omitempty\"`\n\tPayload    []byte `protobuf:\"bytes,4,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n}\n\nfunc (x *Post) Reset() {\n\t*x = Post{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_post_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Post) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Post) ProtoMessage() {}\n\n// Deprecated: Use Post.ProtoReflect.Descriptor instead.\nfunc (*Post) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_post_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Post) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *Post) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *Post) GetCreatorDid() string {\n\tif x != nil {\n\t\treturn x.CreatorDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *Post) GetPayload() []byte {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_bulletin_post_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_post_proto_rawDesc = []byte{\n\t0x0a, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x22, 0x6f, 0x0a, 0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,\n\t0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79,\n\t0x6c, 0x6f, 0x61, 0x64, 0x42, 0xb1, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42,\n\t0x09, 0x50, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0xe2, 0x02, 0x1e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75,\n\t0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_post_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_post_proto_rawDescData = file_sourcehub_bulletin_post_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_post_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_post_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_post_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_post_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_post_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_post_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_bulletin_post_proto_goTypes = []interface{}{\n\t(*Post)(nil), // 0: sourcehub.bulletin.Post\n}\nvar file_sourcehub_bulletin_post_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_post_proto_init() }\nfunc file_sourcehub_bulletin_post_proto_init() {\n\tif File_sourcehub_bulletin_post_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_post_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Post); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_post_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_post_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_post_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_post_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_post_proto = out.File\n\tfile_sourcehub_bulletin_post_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_post_proto_goTypes = nil\n\tfile_sourcehub_bulletin_post_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/query/v1beta1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryParamsRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryParamsRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryParamsRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil)\n\ntype fastReflection_QueryParamsRequest QueryParamsRequest\n\nfunc (x *QueryParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(x)\n}\n\nfunc (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{}\n\ntype fastReflection_QueryParamsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(nil)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryParamsResponse        protoreflect.MessageDescriptor\n\tfd_QueryParamsResponse_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryParamsResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryParamsResponse\")\n\tfd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil)\n\ntype fastReflection_QueryParamsResponse QueryParamsResponse\n\nfunc (x *QueryParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(x)\n}\n\nfunc (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{}\n\ntype fastReflection_QueryParamsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(nil)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_QueryParamsResponse_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryParamsResponse.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryNamespaceRequest           protoreflect.MessageDescriptor\n\tfd_QueryNamespaceRequest_namespace protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespaceRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespaceRequest\")\n\tfd_QueryNamespaceRequest_namespace = md_QueryNamespaceRequest.Fields().ByName(\"namespace\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespaceRequest)(nil)\n\ntype fastReflection_QueryNamespaceRequest QueryNamespaceRequest\n\nfunc (x *QueryNamespaceRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceRequest)(x)\n}\n\nfunc (x *QueryNamespaceRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespaceRequest_messageType fastReflection_QueryNamespaceRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespaceRequest_messageType{}\n\ntype fastReflection_QueryNamespaceRequest_messageType struct{}\n\nfunc (x fastReflection_QueryNamespaceRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceRequest)(nil)\n}\nfunc (x fastReflection_QueryNamespaceRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceRequest)\n}\nfunc (x fastReflection_QueryNamespaceRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespaceRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespaceRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespaceRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespaceRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespaceRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespaceRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespaceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_QueryNamespaceRequest_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespaceRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\treturn x.Namespace != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\tx.Namespace = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespaceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.QueryNamespaceRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespaceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceRequest.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespaceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespaceRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespaceRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespaceRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespaceRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespaceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryNamespaceResponse           protoreflect.MessageDescriptor\n\tfd_QueryNamespaceResponse_namespace protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespaceResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespaceResponse\")\n\tfd_QueryNamespaceResponse_namespace = md_QueryNamespaceResponse.Fields().ByName(\"namespace\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespaceResponse)(nil)\n\ntype fastReflection_QueryNamespaceResponse QueryNamespaceResponse\n\nfunc (x *QueryNamespaceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceResponse)(x)\n}\n\nfunc (x *QueryNamespaceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespaceResponse_messageType fastReflection_QueryNamespaceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespaceResponse_messageType{}\n\ntype fastReflection_QueryNamespaceResponse_messageType struct{}\n\nfunc (x fastReflection_QueryNamespaceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceResponse)(nil)\n}\nfunc (x fastReflection_QueryNamespaceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceResponse)\n}\nfunc (x fastReflection_QueryNamespaceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespaceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespaceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespaceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespaceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespaceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespaceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespaceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Namespace.ProtoReflect())\n\t\tif !f(fd_QueryNamespaceResponse_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespaceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\treturn x.Namespace != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\tx.Namespace = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespaceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\tx.Namespace = value.Message().Interface().(*Namespace)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\tif x.Namespace == nil {\n\t\t\tx.Namespace = new(Namespace)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Namespace.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespaceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceResponse.namespace\":\n\t\tm := new(Namespace)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespaceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespaceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespaceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespaceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespaceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Namespace != nil {\n\t\t\tl = options.Size(x.Namespace)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Namespace != nil {\n\t\t\tencoded, err := options.Marshal(x.Namespace)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Namespace == nil {\n\t\t\t\t\tx.Namespace = &Namespace{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Namespace); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryNamespacesRequest            protoreflect.MessageDescriptor\n\tfd_QueryNamespacesRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespacesRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespacesRequest\")\n\tfd_QueryNamespacesRequest_pagination = md_QueryNamespacesRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespacesRequest)(nil)\n\ntype fastReflection_QueryNamespacesRequest QueryNamespacesRequest\n\nfunc (x *QueryNamespacesRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacesRequest)(x)\n}\n\nfunc (x *QueryNamespacesRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespacesRequest_messageType fastReflection_QueryNamespacesRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespacesRequest_messageType{}\n\ntype fastReflection_QueryNamespacesRequest_messageType struct{}\n\nfunc (x fastReflection_QueryNamespacesRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacesRequest)(nil)\n}\nfunc (x fastReflection_QueryNamespacesRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacesRequest)\n}\nfunc (x fastReflection_QueryNamespacesRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacesRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespacesRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacesRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespacesRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespacesRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespacesRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacesRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespacesRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespacesRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespacesRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespacesRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespacesRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespacesRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespacesRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespacesRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespacesRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespacesRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespacesRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespacesRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespacesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacesRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryNamespacesResponse_1_list)(nil)\n\ntype _QueryNamespacesResponse_1_list struct {\n\tlist *[]*Namespace\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Namespace)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Namespace)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Namespace)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Namespace)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespacesResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryNamespacesResponse            protoreflect.MessageDescriptor\n\tfd_QueryNamespacesResponse_namespaces protoreflect.FieldDescriptor\n\tfd_QueryNamespacesResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespacesResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespacesResponse\")\n\tfd_QueryNamespacesResponse_namespaces = md_QueryNamespacesResponse.Fields().ByName(\"namespaces\")\n\tfd_QueryNamespacesResponse_pagination = md_QueryNamespacesResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespacesResponse)(nil)\n\ntype fastReflection_QueryNamespacesResponse QueryNamespacesResponse\n\nfunc (x *QueryNamespacesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacesResponse)(x)\n}\n\nfunc (x *QueryNamespacesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespacesResponse_messageType fastReflection_QueryNamespacesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespacesResponse_messageType{}\n\ntype fastReflection_QueryNamespacesResponse_messageType struct{}\n\nfunc (x fastReflection_QueryNamespacesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacesResponse)(nil)\n}\nfunc (x fastReflection_QueryNamespacesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacesResponse)\n}\nfunc (x fastReflection_QueryNamespacesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespacesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespacesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespacesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespacesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespacesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespacesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespacesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Namespaces) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryNamespacesResponse_1_list{list: &x.Namespaces})\n\t\tif !f(fd_QueryNamespacesResponse_namespaces, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespacesResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespacesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\treturn len(x.Namespaces) != 0\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\tx.Namespaces = nil\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespacesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\tif len(x.Namespaces) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryNamespacesResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryNamespacesResponse_1_list{list: &x.Namespaces}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryNamespacesResponse_1_list)\n\t\tx.Namespaces = *clv.list\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\tif x.Namespaces == nil {\n\t\t\tx.Namespaces = []*Namespace{}\n\t\t}\n\t\tvalue := &_QueryNamespacesResponse_1_list{list: &x.Namespaces}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespacesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.namespaces\":\n\t\tlist := []*Namespace{}\n\t\treturn protoreflect.ValueOfList(&_QueryNamespacesResponse_1_list{list: &list})\n\tcase \"sourcehub.bulletin.QueryNamespacesResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespacesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespacesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespacesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespacesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespacesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespacesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Namespaces) > 0 {\n\t\t\tfor _, e := range x.Namespaces {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Namespaces) > 0 {\n\t\t\tfor iNdEx := len(x.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Namespaces[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespaces = append(x.Namespaces, &Namespace{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Namespaces[len(x.Namespaces)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryNamespaceCollaboratorsRequest            protoreflect.MessageDescriptor\n\tfd_QueryNamespaceCollaboratorsRequest_namespace  protoreflect.FieldDescriptor\n\tfd_QueryNamespaceCollaboratorsRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespaceCollaboratorsRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespaceCollaboratorsRequest\")\n\tfd_QueryNamespaceCollaboratorsRequest_namespace = md_QueryNamespaceCollaboratorsRequest.Fields().ByName(\"namespace\")\n\tfd_QueryNamespaceCollaboratorsRequest_pagination = md_QueryNamespaceCollaboratorsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespaceCollaboratorsRequest)(nil)\n\ntype fastReflection_QueryNamespaceCollaboratorsRequest QueryNamespaceCollaboratorsRequest\n\nfunc (x *QueryNamespaceCollaboratorsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceCollaboratorsRequest)(x)\n}\n\nfunc (x *QueryNamespaceCollaboratorsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespaceCollaboratorsRequest_messageType fastReflection_QueryNamespaceCollaboratorsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespaceCollaboratorsRequest_messageType{}\n\ntype fastReflection_QueryNamespaceCollaboratorsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryNamespaceCollaboratorsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceCollaboratorsRequest)(nil)\n}\nfunc (x fastReflection_QueryNamespaceCollaboratorsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceCollaboratorsRequest)\n}\nfunc (x fastReflection_QueryNamespaceCollaboratorsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceCollaboratorsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceCollaboratorsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespaceCollaboratorsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceCollaboratorsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespaceCollaboratorsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_QueryNamespaceCollaboratorsRequest_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespaceCollaboratorsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceCollaboratorsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceCollaboratorsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryNamespaceCollaboratorsResponse_1_list)(nil)\n\ntype _QueryNamespaceCollaboratorsResponse_1_list struct {\n\tlist *[]*Collaborator\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Collaborator)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Collaborator)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Collaborator)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Collaborator)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespaceCollaboratorsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryNamespaceCollaboratorsResponse               protoreflect.MessageDescriptor\n\tfd_QueryNamespaceCollaboratorsResponse_collaborators protoreflect.FieldDescriptor\n\tfd_QueryNamespaceCollaboratorsResponse_pagination    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespaceCollaboratorsResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespaceCollaboratorsResponse\")\n\tfd_QueryNamespaceCollaboratorsResponse_collaborators = md_QueryNamespaceCollaboratorsResponse.Fields().ByName(\"collaborators\")\n\tfd_QueryNamespaceCollaboratorsResponse_pagination = md_QueryNamespaceCollaboratorsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespaceCollaboratorsResponse)(nil)\n\ntype fastReflection_QueryNamespaceCollaboratorsResponse QueryNamespaceCollaboratorsResponse\n\nfunc (x *QueryNamespaceCollaboratorsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceCollaboratorsResponse)(x)\n}\n\nfunc (x *QueryNamespaceCollaboratorsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespaceCollaboratorsResponse_messageType fastReflection_QueryNamespaceCollaboratorsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespaceCollaboratorsResponse_messageType{}\n\ntype fastReflection_QueryNamespaceCollaboratorsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryNamespaceCollaboratorsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespaceCollaboratorsResponse)(nil)\n}\nfunc (x fastReflection_QueryNamespaceCollaboratorsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceCollaboratorsResponse)\n}\nfunc (x fastReflection_QueryNamespaceCollaboratorsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceCollaboratorsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespaceCollaboratorsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespaceCollaboratorsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespaceCollaboratorsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespaceCollaboratorsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Collaborators) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryNamespaceCollaboratorsResponse_1_list{list: &x.Collaborators})\n\t\tif !f(fd_QueryNamespaceCollaboratorsResponse_collaborators, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespaceCollaboratorsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\treturn len(x.Collaborators) != 0\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\tx.Collaborators = nil\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\tif len(x.Collaborators) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryNamespaceCollaboratorsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryNamespaceCollaboratorsResponse_1_list{list: &x.Collaborators}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryNamespaceCollaboratorsResponse_1_list)\n\t\tx.Collaborators = *clv.list\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\tif x.Collaborators == nil {\n\t\t\tx.Collaborators = []*Collaborator{}\n\t\t}\n\t\tvalue := &_QueryNamespaceCollaboratorsResponse_1_list{list: &x.Collaborators}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators\":\n\t\tlist := []*Collaborator{}\n\t\treturn protoreflect.ValueOfList(&_QueryNamespaceCollaboratorsResponse_1_list{list: &list})\n\tcase \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespaceCollaboratorsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespaceCollaboratorsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Collaborators) > 0 {\n\t\t\tfor _, e := range x.Collaborators {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Collaborators) > 0 {\n\t\t\tfor iNdEx := len(x.Collaborators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Collaborators[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespaceCollaboratorsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceCollaboratorsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespaceCollaboratorsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Collaborators\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Collaborators = append(x.Collaborators, &Collaborator{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Collaborators[len(x.Collaborators)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryNamespacePostsRequest            protoreflect.MessageDescriptor\n\tfd_QueryNamespacePostsRequest_namespace  protoreflect.FieldDescriptor\n\tfd_QueryNamespacePostsRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespacePostsRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespacePostsRequest\")\n\tfd_QueryNamespacePostsRequest_namespace = md_QueryNamespacePostsRequest.Fields().ByName(\"namespace\")\n\tfd_QueryNamespacePostsRequest_pagination = md_QueryNamespacePostsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespacePostsRequest)(nil)\n\ntype fastReflection_QueryNamespacePostsRequest QueryNamespacePostsRequest\n\nfunc (x *QueryNamespacePostsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacePostsRequest)(x)\n}\n\nfunc (x *QueryNamespacePostsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespacePostsRequest_messageType fastReflection_QueryNamespacePostsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespacePostsRequest_messageType{}\n\ntype fastReflection_QueryNamespacePostsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryNamespacePostsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacePostsRequest)(nil)\n}\nfunc (x fastReflection_QueryNamespacePostsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacePostsRequest)\n}\nfunc (x fastReflection_QueryNamespacePostsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacePostsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacePostsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespacePostsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespacePostsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacePostsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespacePostsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_QueryNamespacePostsRequest_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespacePostsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.QueryNamespacePostsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespacePostsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.QueryNamespacePostsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespacePostsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespacePostsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespacePostsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespacePostsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespacePostsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacePostsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacePostsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryNamespacePostsResponse_1_list)(nil)\n\ntype _QueryNamespacePostsResponse_1_list struct {\n\tlist *[]*Post\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Post)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Post)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryNamespacePostsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryNamespacePostsResponse            protoreflect.MessageDescriptor\n\tfd_QueryNamespacePostsResponse_posts      protoreflect.FieldDescriptor\n\tfd_QueryNamespacePostsResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryNamespacePostsResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryNamespacePostsResponse\")\n\tfd_QueryNamespacePostsResponse_posts = md_QueryNamespacePostsResponse.Fields().ByName(\"posts\")\n\tfd_QueryNamespacePostsResponse_pagination = md_QueryNamespacePostsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryNamespacePostsResponse)(nil)\n\ntype fastReflection_QueryNamespacePostsResponse QueryNamespacePostsResponse\n\nfunc (x *QueryNamespacePostsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacePostsResponse)(x)\n}\n\nfunc (x *QueryNamespacePostsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryNamespacePostsResponse_messageType fastReflection_QueryNamespacePostsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryNamespacePostsResponse_messageType{}\n\ntype fastReflection_QueryNamespacePostsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryNamespacePostsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryNamespacePostsResponse)(nil)\n}\nfunc (x fastReflection_QueryNamespacePostsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacePostsResponse)\n}\nfunc (x fastReflection_QueryNamespacePostsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacePostsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryNamespacePostsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryNamespacePostsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryNamespacePostsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryNamespacePostsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryNamespacePostsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Posts) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryNamespacePostsResponse_1_list{list: &x.Posts})\n\t\tif !f(fd_QueryNamespacePostsResponse_posts, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryNamespacePostsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\treturn len(x.Posts) != 0\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\tx.Posts = nil\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\tif len(x.Posts) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryNamespacePostsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryNamespacePostsResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryNamespacePostsResponse_1_list)\n\t\tx.Posts = *clv.list\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\tif x.Posts == nil {\n\t\t\tx.Posts = []*Post{}\n\t\t}\n\t\tvalue := &_QueryNamespacePostsResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryNamespacePostsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.posts\":\n\t\tlist := []*Post{}\n\t\treturn protoreflect.ValueOfList(&_QueryNamespacePostsResponse_1_list{list: &list})\n\tcase \"sourcehub.bulletin.QueryNamespacePostsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryNamespacePostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryNamespacePostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryNamespacePostsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryNamespacePostsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryNamespacePostsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryNamespacePostsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryNamespacePostsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryNamespacePostsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor _, e := range x.Posts {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor iNdEx := len(x.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Posts[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryNamespacePostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacePostsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryNamespacePostsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Posts = append(x.Posts, &Post{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Posts[len(x.Posts)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPostRequest           protoreflect.MessageDescriptor\n\tfd_QueryPostRequest_namespace protoreflect.FieldDescriptor\n\tfd_QueryPostRequest_id        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryPostRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryPostRequest\")\n\tfd_QueryPostRequest_namespace = md_QueryPostRequest.Fields().ByName(\"namespace\")\n\tfd_QueryPostRequest_id = md_QueryPostRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPostRequest)(nil)\n\ntype fastReflection_QueryPostRequest QueryPostRequest\n\nfunc (x *QueryPostRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPostRequest)(x)\n}\n\nfunc (x *QueryPostRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPostRequest_messageType fastReflection_QueryPostRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPostRequest_messageType{}\n\ntype fastReflection_QueryPostRequest_messageType struct{}\n\nfunc (x fastReflection_QueryPostRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPostRequest)(nil)\n}\nfunc (x fastReflection_QueryPostRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostRequest)\n}\nfunc (x fastReflection_QueryPostRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPostRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPostRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPostRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPostRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPostRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPostRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPostRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_QueryPostRequest_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_QueryPostRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPostRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPostRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.QueryPostRequest is not mutable\"))\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcehub.bulletin.QueryPostRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPostRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostRequest.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.QueryPostRequest.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPostRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryPostRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPostRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPostRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPostRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPostRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPostResponse      protoreflect.MessageDescriptor\n\tfd_QueryPostResponse_post protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryPostResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryPostResponse\")\n\tfd_QueryPostResponse_post = md_QueryPostResponse.Fields().ByName(\"post\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPostResponse)(nil)\n\ntype fastReflection_QueryPostResponse QueryPostResponse\n\nfunc (x *QueryPostResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPostResponse)(x)\n}\n\nfunc (x *QueryPostResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPostResponse_messageType fastReflection_QueryPostResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPostResponse_messageType{}\n\ntype fastReflection_QueryPostResponse_messageType struct{}\n\nfunc (x fastReflection_QueryPostResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPostResponse)(nil)\n}\nfunc (x fastReflection_QueryPostResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostResponse)\n}\nfunc (x fastReflection_QueryPostResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPostResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPostResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPostResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPostResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPostResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPostResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPostResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Post != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Post.ProtoReflect())\n\t\tif !f(fd_QueryPostResponse_post, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPostResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\treturn x.Post != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\tx.Post = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPostResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\tvalue := x.Post\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\tx.Post = value.Message().Interface().(*Post)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\tif x.Post == nil {\n\t\t\tx.Post = new(Post)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Post.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPostResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostResponse.post\":\n\t\tm := new(Post)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPostResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryPostResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPostResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPostResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPostResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Post != nil {\n\t\t\tl = options.Size(x.Post)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Post != nil {\n\t\t\tencoded, err := options.Marshal(x.Post)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Post\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Post == nil {\n\t\t\t\t\tx.Post = &Post{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Post); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryPostsRequest            protoreflect.MessageDescriptor\n\tfd_QueryPostsRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryPostsRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryPostsRequest\")\n\tfd_QueryPostsRequest_pagination = md_QueryPostsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPostsRequest)(nil)\n\ntype fastReflection_QueryPostsRequest QueryPostsRequest\n\nfunc (x *QueryPostsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPostsRequest)(x)\n}\n\nfunc (x *QueryPostsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPostsRequest_messageType fastReflection_QueryPostsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPostsRequest_messageType{}\n\ntype fastReflection_QueryPostsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryPostsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPostsRequest)(nil)\n}\nfunc (x fastReflection_QueryPostsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostsRequest)\n}\nfunc (x fastReflection_QueryPostsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPostsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPostsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPostsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPostsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPostsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPostsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPostsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryPostsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPostsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPostsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPostsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPostsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryPostsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPostsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPostsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPostsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryPostsResponse_1_list)(nil)\n\ntype _QueryPostsResponse_1_list struct {\n\tlist *[]*Post\n}\n\nfunc (x *_QueryPostsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryPostsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryPostsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryPostsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryPostsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Post)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryPostsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryPostsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Post)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryPostsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryPostsResponse            protoreflect.MessageDescriptor\n\tfd_QueryPostsResponse_posts      protoreflect.FieldDescriptor\n\tfd_QueryPostsResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryPostsResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryPostsResponse\")\n\tfd_QueryPostsResponse_posts = md_QueryPostsResponse.Fields().ByName(\"posts\")\n\tfd_QueryPostsResponse_pagination = md_QueryPostsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryPostsResponse)(nil)\n\ntype fastReflection_QueryPostsResponse QueryPostsResponse\n\nfunc (x *QueryPostsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryPostsResponse)(x)\n}\n\nfunc (x *QueryPostsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryPostsResponse_messageType fastReflection_QueryPostsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryPostsResponse_messageType{}\n\ntype fastReflection_QueryPostsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryPostsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryPostsResponse)(nil)\n}\nfunc (x fastReflection_QueryPostsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostsResponse)\n}\nfunc (x fastReflection_QueryPostsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryPostsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryPostsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryPostsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryPostsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryPostsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryPostsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryPostsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryPostsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryPostsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Posts) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryPostsResponse_1_list{list: &x.Posts})\n\t\tif !f(fd_QueryPostsResponse_posts, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryPostsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryPostsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\treturn len(x.Posts) != 0\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\tx.Posts = nil\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryPostsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\tif len(x.Posts) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryPostsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryPostsResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryPostsResponse_1_list)\n\t\tx.Posts = *clv.list\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\tif x.Posts == nil {\n\t\t\tx.Posts = []*Post{}\n\t\t}\n\t\tvalue := &_QueryPostsResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryPostsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryPostsResponse.posts\":\n\t\tlist := []*Post{}\n\t\treturn protoreflect.ValueOfList(&_QueryPostsResponse_1_list{list: &list})\n\tcase \"sourcehub.bulletin.QueryPostsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryPostsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryPostsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryPostsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryPostsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryPostsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryPostsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryPostsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryPostsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryPostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor _, e := range x.Posts {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor iNdEx := len(x.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Posts[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryPostsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryPostsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Posts = append(x.Posts, &Post{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Posts[len(x.Posts)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryBulletinPolicyIdRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryBulletinPolicyIdRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryBulletinPolicyIdRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryBulletinPolicyIdRequest)(nil)\n\ntype fastReflection_QueryBulletinPolicyIdRequest QueryBulletinPolicyIdRequest\n\nfunc (x *QueryBulletinPolicyIdRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryBulletinPolicyIdRequest)(x)\n}\n\nfunc (x *QueryBulletinPolicyIdRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryBulletinPolicyIdRequest_messageType fastReflection_QueryBulletinPolicyIdRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryBulletinPolicyIdRequest_messageType{}\n\ntype fastReflection_QueryBulletinPolicyIdRequest_messageType struct{}\n\nfunc (x fastReflection_QueryBulletinPolicyIdRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryBulletinPolicyIdRequest)(nil)\n}\nfunc (x fastReflection_QueryBulletinPolicyIdRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryBulletinPolicyIdRequest)\n}\nfunc (x fastReflection_QueryBulletinPolicyIdRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryBulletinPolicyIdRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryBulletinPolicyIdRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryBulletinPolicyIdRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryBulletinPolicyIdRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryBulletinPolicyIdRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryBulletinPolicyIdRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryBulletinPolicyIdRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryBulletinPolicyIdRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryBulletinPolicyIdRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryBulletinPolicyIdResponse           protoreflect.MessageDescriptor\n\tfd_QueryBulletinPolicyIdResponse_policy_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryBulletinPolicyIdResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryBulletinPolicyIdResponse\")\n\tfd_QueryBulletinPolicyIdResponse_policy_id = md_QueryBulletinPolicyIdResponse.Fields().ByName(\"policy_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryBulletinPolicyIdResponse)(nil)\n\ntype fastReflection_QueryBulletinPolicyIdResponse QueryBulletinPolicyIdResponse\n\nfunc (x *QueryBulletinPolicyIdResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryBulletinPolicyIdResponse)(x)\n}\n\nfunc (x *QueryBulletinPolicyIdResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryBulletinPolicyIdResponse_messageType fastReflection_QueryBulletinPolicyIdResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryBulletinPolicyIdResponse_messageType{}\n\ntype fastReflection_QueryBulletinPolicyIdResponse_messageType struct{}\n\nfunc (x fastReflection_QueryBulletinPolicyIdResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryBulletinPolicyIdResponse)(nil)\n}\nfunc (x fastReflection_QueryBulletinPolicyIdResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryBulletinPolicyIdResponse)\n}\nfunc (x fastReflection_QueryBulletinPolicyIdResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryBulletinPolicyIdResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryBulletinPolicyIdResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryBulletinPolicyIdResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryBulletinPolicyIdResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryBulletinPolicyIdResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_QueryBulletinPolicyIdResponse_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\tx.PolicyId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcehub.bulletin.QueryBulletinPolicyIdResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryBulletinPolicyIdResponse.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryBulletinPolicyIdResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryBulletinPolicyIdResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryBulletinPolicyIdResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryBulletinPolicyIdResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryBulletinPolicyIdResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryBulletinPolicyIdResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryBulletinPolicyIdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryIterateGlobRequest            protoreflect.MessageDescriptor\n\tfd_QueryIterateGlobRequest_namespace  protoreflect.FieldDescriptor\n\tfd_QueryIterateGlobRequest_glob       protoreflect.FieldDescriptor\n\tfd_QueryIterateGlobRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryIterateGlobRequest = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryIterateGlobRequest\")\n\tfd_QueryIterateGlobRequest_namespace = md_QueryIterateGlobRequest.Fields().ByName(\"namespace\")\n\tfd_QueryIterateGlobRequest_glob = md_QueryIterateGlobRequest.Fields().ByName(\"glob\")\n\tfd_QueryIterateGlobRequest_pagination = md_QueryIterateGlobRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryIterateGlobRequest)(nil)\n\ntype fastReflection_QueryIterateGlobRequest QueryIterateGlobRequest\n\nfunc (x *QueryIterateGlobRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryIterateGlobRequest)(x)\n}\n\nfunc (x *QueryIterateGlobRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryIterateGlobRequest_messageType fastReflection_QueryIterateGlobRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryIterateGlobRequest_messageType{}\n\ntype fastReflection_QueryIterateGlobRequest_messageType struct{}\n\nfunc (x fastReflection_QueryIterateGlobRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryIterateGlobRequest)(nil)\n}\nfunc (x fastReflection_QueryIterateGlobRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryIterateGlobRequest)\n}\nfunc (x fastReflection_QueryIterateGlobRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryIterateGlobRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryIterateGlobRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryIterateGlobRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryIterateGlobRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryIterateGlobRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryIterateGlobRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryIterateGlobRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryIterateGlobRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryIterateGlobRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryIterateGlobRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_QueryIterateGlobRequest_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Glob != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Glob)\n\t\tif !f(fd_QueryIterateGlobRequest_glob, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryIterateGlobRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryIterateGlobRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\treturn x.Glob != \"\"\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\tx.Glob = \"\"\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryIterateGlobRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\tvalue := x.Glob\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\tx.Glob = value.Interface().(string)\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.QueryIterateGlobRequest is not mutable\"))\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\tpanic(fmt.Errorf(\"field glob of message sourcehub.bulletin.QueryIterateGlobRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryIterateGlobRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.glob\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.QueryIterateGlobRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryIterateGlobRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryIterateGlobRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryIterateGlobRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryIterateGlobRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryIterateGlobRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryIterateGlobRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Glob)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryIterateGlobRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Glob) > 0 {\n\t\t\ti -= len(x.Glob)\n\t\t\tcopy(dAtA[i:], x.Glob)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Glob)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryIterateGlobRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryIterateGlobRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryIterateGlobRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Glob\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Glob = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryIterateGlobResponse_1_list)(nil)\n\ntype _QueryIterateGlobResponse_1_list struct {\n\tlist *[]*Post\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Post)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Post)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Post)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryIterateGlobResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryIterateGlobResponse            protoreflect.MessageDescriptor\n\tfd_QueryIterateGlobResponse_posts      protoreflect.FieldDescriptor\n\tfd_QueryIterateGlobResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_query_proto_init()\n\tmd_QueryIterateGlobResponse = File_sourcehub_bulletin_query_proto.Messages().ByName(\"QueryIterateGlobResponse\")\n\tfd_QueryIterateGlobResponse_posts = md_QueryIterateGlobResponse.Fields().ByName(\"posts\")\n\tfd_QueryIterateGlobResponse_pagination = md_QueryIterateGlobResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryIterateGlobResponse)(nil)\n\ntype fastReflection_QueryIterateGlobResponse QueryIterateGlobResponse\n\nfunc (x *QueryIterateGlobResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryIterateGlobResponse)(x)\n}\n\nfunc (x *QueryIterateGlobResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryIterateGlobResponse_messageType fastReflection_QueryIterateGlobResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryIterateGlobResponse_messageType{}\n\ntype fastReflection_QueryIterateGlobResponse_messageType struct{}\n\nfunc (x fastReflection_QueryIterateGlobResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryIterateGlobResponse)(nil)\n}\nfunc (x fastReflection_QueryIterateGlobResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryIterateGlobResponse)\n}\nfunc (x fastReflection_QueryIterateGlobResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryIterateGlobResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryIterateGlobResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryIterateGlobResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryIterateGlobResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryIterateGlobResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryIterateGlobResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryIterateGlobResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryIterateGlobResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryIterateGlobResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryIterateGlobResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Posts) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryIterateGlobResponse_1_list{list: &x.Posts})\n\t\tif !f(fd_QueryIterateGlobResponse_posts, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryIterateGlobResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryIterateGlobResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\treturn len(x.Posts) != 0\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\tx.Posts = nil\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryIterateGlobResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\tif len(x.Posts) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryIterateGlobResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryIterateGlobResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryIterateGlobResponse_1_list)\n\t\tx.Posts = *clv.list\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\tif x.Posts == nil {\n\t\t\tx.Posts = []*Post{}\n\t\t}\n\t\tvalue := &_QueryIterateGlobResponse_1_list{list: &x.Posts}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryIterateGlobResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.posts\":\n\t\tlist := []*Post{}\n\t\treturn protoreflect.ValueOfList(&_QueryIterateGlobResponse_1_list{list: &list})\n\tcase \"sourcehub.bulletin.QueryIterateGlobResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.QueryIterateGlobResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.QueryIterateGlobResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryIterateGlobResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.QueryIterateGlobResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryIterateGlobResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryIterateGlobResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryIterateGlobResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryIterateGlobResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryIterateGlobResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor _, e := range x.Posts {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryIterateGlobResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Posts) > 0 {\n\t\t\tfor iNdEx := len(x.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Posts[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryIterateGlobResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryIterateGlobResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryIterateGlobResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Posts = append(x.Posts, &Post{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Posts[len(x.Posts)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryParamsRequest) Reset() {\n\t*x = QueryParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{0}\n}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params holds all the parameters of this module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *QueryParamsResponse) Reset() {\n\t*x = QueryParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryParamsResponse) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\ntype QueryNamespaceRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (x *QueryNamespaceRequest) Reset() {\n\t*x = QueryNamespaceRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespaceRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespaceRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespaceRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespaceRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *QueryNamespaceRequest) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\ntype QueryNamespaceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace *Namespace `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (x *QueryNamespaceResponse) Reset() {\n\t*x = QueryNamespaceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespaceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespaceResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespaceResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespaceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *QueryNamespaceResponse) GetNamespace() *Namespace {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn nil\n}\n\ntype QueryNamespacesRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespacesRequest) Reset() {\n\t*x = QueryNamespacesRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespacesRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespacesRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespacesRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespacesRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *QueryNamespacesRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespaces []*Namespace          `protobuf:\"bytes,1,rep,name=namespaces,proto3\" json:\"namespaces,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespacesResponse) Reset() {\n\t*x = QueryNamespacesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespacesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespacesResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespacesResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespacesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *QueryNamespacesResponse) GetNamespaces() []*Namespace {\n\tif x != nil {\n\t\treturn x.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (x *QueryNamespacesResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespaceCollaboratorsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace  string               `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespaceCollaboratorsRequest) Reset() {\n\t*x = QueryNamespaceCollaboratorsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespaceCollaboratorsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespaceCollaboratorsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespaceCollaboratorsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespaceCollaboratorsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *QueryNamespaceCollaboratorsRequest) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryNamespaceCollaboratorsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespaceCollaboratorsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCollaborators []*Collaborator       `protobuf:\"bytes,1,rep,name=collaborators,proto3\" json:\"collaborators,omitempty\"`\n\tPagination    *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespaceCollaboratorsResponse) Reset() {\n\t*x = QueryNamespaceCollaboratorsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespaceCollaboratorsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespaceCollaboratorsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespaceCollaboratorsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespaceCollaboratorsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *QueryNamespaceCollaboratorsResponse) GetCollaborators() []*Collaborator {\n\tif x != nil {\n\t\treturn x.Collaborators\n\t}\n\treturn nil\n}\n\nfunc (x *QueryNamespaceCollaboratorsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacePostsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace  string               `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespacePostsRequest) Reset() {\n\t*x = QueryNamespacePostsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespacePostsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespacePostsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespacePostsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespacePostsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *QueryNamespacePostsRequest) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryNamespacePostsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacePostsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPosts      []*Post               `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryNamespacePostsResponse) Reset() {\n\t*x = QueryNamespacePostsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryNamespacePostsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryNamespacePostsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryNamespacePostsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryNamespacePostsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *QueryNamespacePostsResponse) GetPosts() []*Post {\n\tif x != nil {\n\t\treturn x.Posts\n\t}\n\treturn nil\n}\n\nfunc (x *QueryNamespacePostsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPostRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tId        string `protobuf:\"bytes,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *QueryPostRequest) Reset() {\n\t*x = QueryPostRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPostRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPostRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryPostRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryPostRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *QueryPostRequest) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryPostRequest) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryPostResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPost *Post `protobuf:\"bytes,1,opt,name=post,proto3\" json:\"post,omitempty\"`\n}\n\nfunc (x *QueryPostResponse) Reset() {\n\t*x = QueryPostResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPostResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPostResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryPostResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryPostResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *QueryPostResponse) GetPost() *Post {\n\tif x != nil {\n\t\treturn x.Post\n\t}\n\treturn nil\n}\n\ntype QueryPostsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryPostsRequest) Reset() {\n\t*x = QueryPostsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPostsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPostsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryPostsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryPostsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *QueryPostsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPostsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPosts      []*Post               `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryPostsResponse) Reset() {\n\t*x = QueryPostsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryPostsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryPostsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryPostsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryPostsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *QueryPostsResponse) GetPosts() []*Post {\n\tif x != nil {\n\t\treturn x.Posts\n\t}\n\treturn nil\n}\n\nfunc (x *QueryPostsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryBulletinPolicyIdRequest is request type for the Query/BulletinPolicyId RPC method.\ntype QueryBulletinPolicyIdRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryBulletinPolicyIdRequest) Reset() {\n\t*x = QueryBulletinPolicyIdRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryBulletinPolicyIdRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryBulletinPolicyIdRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryBulletinPolicyIdRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryBulletinPolicyIdRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{14}\n}\n\n// QueryBulletinPolicyIdResponse is response type for the Query/BulletinPolicyId RPC method.\ntype QueryBulletinPolicyIdResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n}\n\nfunc (x *QueryBulletinPolicyIdResponse) Reset() {\n\t*x = QueryBulletinPolicyIdResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryBulletinPolicyIdResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryBulletinPolicyIdResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryBulletinPolicyIdResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryBulletinPolicyIdResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *QueryBulletinPolicyIdResponse) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\n// QueryIterateGlobRequest\ntype QueryIterateGlobRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tGlob      string `protobuf:\"bytes,2,opt,name=glob,proto3\" json:\"glob,omitempty\"`\n\t// pagination defines an optional pagination for the request.\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,3,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryIterateGlobRequest) Reset() {\n\t*x = QueryIterateGlobRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryIterateGlobRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryIterateGlobRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryIterateGlobRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryIterateGlobRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *QueryIterateGlobRequest) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryIterateGlobRequest) GetGlob() string {\n\tif x != nil {\n\t\treturn x.Glob\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryIterateGlobRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryIterateGlobResponse\ntype QueryIterateGlobResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPosts      []*Post               `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryIterateGlobResponse) Reset() {\n\t*x = QueryIterateGlobResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_query_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryIterateGlobResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryIterateGlobResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryIterateGlobResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryIterateGlobResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_query_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *QueryIterateGlobResponse) GetPosts() []*Post {\n\tif x != nil {\n\t\treturn x.Posts\n\t}\n\treturn nil\n}\n\nfunc (x *QueryIterateGlobResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_bulletin_query_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_query_proto_rawDesc = []byte{\n\t0x0a, 0x1e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e,\n\t0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f,\n\t0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,\n\t0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6e, 0x61, 0x6d,\n\t0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f,\n\t0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x35,\n\t0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,\n\t0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61,\n\t0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x3b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x60, 0x0a, 0x16,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac,\n\t0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x6e, 0x61,\n\t0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x09, 0xc8,\n\t0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,\n\t0x61, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01,\n\t0x0a, 0x22, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,\n\t0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a,\n\t0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x01, 0x0a, 0x23, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c,\n\t0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74,\n\t0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x43,\n\t0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f,\n\t0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72,\n\t0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82,\n\t0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a,\n\t0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x70,\n\t0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75,\n\t0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d,\n\t0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x09, 0xc8, 0xde,\n\t0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47,\n\t0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65,\n\t0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,\n\t0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x11, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c,\n\t0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x11,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62,\n\t0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70,\n\t0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x12, 0x51, 0x75,\n\t0x65, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x39, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8,\n\t0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70,\n\t0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75,\n\t0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,\n\t0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x49, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x72,\n\t0x61, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,\n\t0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,\n\t0x67, 0x6c, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x6c, 0x6f, 0x62,\n\t0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,\n\t0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61,\n\t0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x18, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x05,\n\t0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xce,\n\t0x0b, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x8b, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70,\n\t0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4,\n\t0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75,\n\t0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,\n\t0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x12, 0x9b, 0x01, 0x0a,\n\t0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0xce, 0x01, 0x0a, 0x16, 0x4e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72,\n\t0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f,\n\t0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b,\n\t0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f,\n\t0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x0e,\n\t0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x2e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,\n\t0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73,\n\t0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x12, 0x94, 0x01, 0x0a,\n\t0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f,\n\t0x73, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x7b,\n\t0x69, 0x64, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x25, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,\n\t0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x12, 0xa0, 0x01,\n\t0x0a, 0x0b, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x12, 0x2b, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47,\n\t0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30,\n\t0x12, 0x2e, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x6c, 0x6f, 0x62,\n\t0x12, 0xac, 0x01, 0x0a, 0x10, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x51, 0x75, 0x65,\n\t0x72, 0x79, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93,\n\t0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x42,\n\t0xb2, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03,\n\t0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xca, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_query_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_query_proto_rawDescData = file_sourcehub_bulletin_query_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_query_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_query_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_query_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_query_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_query_proto_msgTypes = make([]protoimpl.MessageInfo, 18)\nvar file_sourcehub_bulletin_query_proto_goTypes = []interface{}{\n\t(*QueryParamsRequest)(nil),                  // 0: sourcehub.bulletin.QueryParamsRequest\n\t(*QueryParamsResponse)(nil),                 // 1: sourcehub.bulletin.QueryParamsResponse\n\t(*QueryNamespaceRequest)(nil),               // 2: sourcehub.bulletin.QueryNamespaceRequest\n\t(*QueryNamespaceResponse)(nil),              // 3: sourcehub.bulletin.QueryNamespaceResponse\n\t(*QueryNamespacesRequest)(nil),              // 4: sourcehub.bulletin.QueryNamespacesRequest\n\t(*QueryNamespacesResponse)(nil),             // 5: sourcehub.bulletin.QueryNamespacesResponse\n\t(*QueryNamespaceCollaboratorsRequest)(nil),  // 6: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\n\t(*QueryNamespaceCollaboratorsResponse)(nil), // 7: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\n\t(*QueryNamespacePostsRequest)(nil),          // 8: sourcehub.bulletin.QueryNamespacePostsRequest\n\t(*QueryNamespacePostsResponse)(nil),         // 9: sourcehub.bulletin.QueryNamespacePostsResponse\n\t(*QueryPostRequest)(nil),                    // 10: sourcehub.bulletin.QueryPostRequest\n\t(*QueryPostResponse)(nil),                   // 11: sourcehub.bulletin.QueryPostResponse\n\t(*QueryPostsRequest)(nil),                   // 12: sourcehub.bulletin.QueryPostsRequest\n\t(*QueryPostsResponse)(nil),                  // 13: sourcehub.bulletin.QueryPostsResponse\n\t(*QueryBulletinPolicyIdRequest)(nil),        // 14: sourcehub.bulletin.QueryBulletinPolicyIdRequest\n\t(*QueryBulletinPolicyIdResponse)(nil),       // 15: sourcehub.bulletin.QueryBulletinPolicyIdResponse\n\t(*QueryIterateGlobRequest)(nil),             // 16: sourcehub.bulletin.QueryIterateGlobRequest\n\t(*QueryIterateGlobResponse)(nil),            // 17: sourcehub.bulletin.QueryIterateGlobResponse\n\t(*Params)(nil),                              // 18: sourcehub.bulletin.Params\n\t(*Namespace)(nil),                           // 19: sourcehub.bulletin.Namespace\n\t(*v1beta1.PageRequest)(nil),                 // 20: cosmos.base.query.v1beta1.PageRequest\n\t(*v1beta1.PageResponse)(nil),                // 21: cosmos.base.query.v1beta1.PageResponse\n\t(*Collaborator)(nil),                        // 22: sourcehub.bulletin.Collaborator\n\t(*Post)(nil),                                // 23: sourcehub.bulletin.Post\n}\nvar file_sourcehub_bulletin_query_proto_depIdxs = []int32{\n\t18, // 0: sourcehub.bulletin.QueryParamsResponse.params:type_name -> sourcehub.bulletin.Params\n\t19, // 1: sourcehub.bulletin.QueryNamespaceResponse.namespace:type_name -> sourcehub.bulletin.Namespace\n\t20, // 2: sourcehub.bulletin.QueryNamespacesRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t19, // 3: sourcehub.bulletin.QueryNamespacesResponse.namespaces:type_name -> sourcehub.bulletin.Namespace\n\t21, // 4: sourcehub.bulletin.QueryNamespacesResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t20, // 5: sourcehub.bulletin.QueryNamespaceCollaboratorsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t22, // 6: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.collaborators:type_name -> sourcehub.bulletin.Collaborator\n\t21, // 7: sourcehub.bulletin.QueryNamespaceCollaboratorsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t20, // 8: sourcehub.bulletin.QueryNamespacePostsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t23, // 9: sourcehub.bulletin.QueryNamespacePostsResponse.posts:type_name -> sourcehub.bulletin.Post\n\t21, // 10: sourcehub.bulletin.QueryNamespacePostsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t23, // 11: sourcehub.bulletin.QueryPostResponse.post:type_name -> sourcehub.bulletin.Post\n\t20, // 12: sourcehub.bulletin.QueryPostsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t23, // 13: sourcehub.bulletin.QueryPostsResponse.posts:type_name -> sourcehub.bulletin.Post\n\t21, // 14: sourcehub.bulletin.QueryPostsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t20, // 15: sourcehub.bulletin.QueryIterateGlobRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t23, // 16: sourcehub.bulletin.QueryIterateGlobResponse.posts:type_name -> sourcehub.bulletin.Post\n\t21, // 17: sourcehub.bulletin.QueryIterateGlobResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t0,  // 18: sourcehub.bulletin.Query.Params:input_type -> sourcehub.bulletin.QueryParamsRequest\n\t2,  // 19: sourcehub.bulletin.Query.Namespace:input_type -> sourcehub.bulletin.QueryNamespaceRequest\n\t4,  // 20: sourcehub.bulletin.Query.Namespaces:input_type -> sourcehub.bulletin.QueryNamespacesRequest\n\t6,  // 21: sourcehub.bulletin.Query.NamespaceCollaborators:input_type -> sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\n\t8,  // 22: sourcehub.bulletin.Query.NamespacePosts:input_type -> sourcehub.bulletin.QueryNamespacePostsRequest\n\t10, // 23: sourcehub.bulletin.Query.Post:input_type -> sourcehub.bulletin.QueryPostRequest\n\t12, // 24: sourcehub.bulletin.Query.Posts:input_type -> sourcehub.bulletin.QueryPostsRequest\n\t16, // 25: sourcehub.bulletin.Query.IterateGlob:input_type -> sourcehub.bulletin.QueryIterateGlobRequest\n\t14, // 26: sourcehub.bulletin.Query.BulletinPolicyId:input_type -> sourcehub.bulletin.QueryBulletinPolicyIdRequest\n\t1,  // 27: sourcehub.bulletin.Query.Params:output_type -> sourcehub.bulletin.QueryParamsResponse\n\t3,  // 28: sourcehub.bulletin.Query.Namespace:output_type -> sourcehub.bulletin.QueryNamespaceResponse\n\t5,  // 29: sourcehub.bulletin.Query.Namespaces:output_type -> sourcehub.bulletin.QueryNamespacesResponse\n\t7,  // 30: sourcehub.bulletin.Query.NamespaceCollaborators:output_type -> sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\n\t9,  // 31: sourcehub.bulletin.Query.NamespacePosts:output_type -> sourcehub.bulletin.QueryNamespacePostsResponse\n\t11, // 32: sourcehub.bulletin.Query.Post:output_type -> sourcehub.bulletin.QueryPostResponse\n\t13, // 33: sourcehub.bulletin.Query.Posts:output_type -> sourcehub.bulletin.QueryPostsResponse\n\t17, // 34: sourcehub.bulletin.Query.IterateGlob:output_type -> sourcehub.bulletin.QueryIterateGlobResponse\n\t15, // 35: sourcehub.bulletin.Query.BulletinPolicyId:output_type -> sourcehub.bulletin.QueryBulletinPolicyIdResponse\n\t27, // [27:36] is the sub-list for method output_type\n\t18, // [18:27] is the sub-list for method input_type\n\t18, // [18:18] is the sub-list for extension type_name\n\t18, // [18:18] is the sub-list for extension extendee\n\t0,  // [0:18] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_query_proto_init() }\nfunc file_sourcehub_bulletin_query_proto_init() {\n\tif File_sourcehub_bulletin_query_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_bulletin_params_proto_init()\n\tfile_sourcehub_bulletin_namespace_proto_init()\n\tfile_sourcehub_bulletin_collaborator_proto_init()\n\tfile_sourcehub_bulletin_post_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespaceRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespaceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespacesRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespacesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespaceCollaboratorsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespaceCollaboratorsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespacePostsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryNamespacePostsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPostRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPostResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPostsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryPostsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryBulletinPolicyIdRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryBulletinPolicyIdResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryIterateGlobRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_query_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryIterateGlobResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   18,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_query_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_query_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_query_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_query_proto = out.File\n\tfile_sourcehub_bulletin_query_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_query_proto_goTypes = nil\n\tfile_sourcehub_bulletin_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/bulletin/query.proto\n\npackage bulletin\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_Params_FullMethodName                 = \"/sourcehub.bulletin.Query/Params\"\n\tQuery_Namespace_FullMethodName              = \"/sourcehub.bulletin.Query/Namespace\"\n\tQuery_Namespaces_FullMethodName             = \"/sourcehub.bulletin.Query/Namespaces\"\n\tQuery_NamespaceCollaborators_FullMethodName = \"/sourcehub.bulletin.Query/NamespaceCollaborators\"\n\tQuery_NamespacePosts_FullMethodName         = \"/sourcehub.bulletin.Query/NamespacePosts\"\n\tQuery_Post_FullMethodName                   = \"/sourcehub.bulletin.Query/Post\"\n\tQuery_Posts_FullMethodName                  = \"/sourcehub.bulletin.Query/Posts\"\n\tQuery_IterateGlob_FullMethodName            = \"/sourcehub.bulletin.Query/IterateGlob\"\n\tQuery_BulletinPolicyId_FullMethodName       = \"/sourcehub.bulletin.Query/BulletinPolicyId\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Queries a namespace based on the specified namespace id.\n\tNamespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error)\n\t// Queries all namespaces.\n\tNamespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error)\n\t// Queries all namespace collaborators.\n\tNamespaceCollaborators(ctx context.Context, in *QueryNamespaceCollaboratorsRequest, opts ...grpc.CallOption) (*QueryNamespaceCollaboratorsResponse, error)\n\t// Queries all namespace posts.\n\tNamespacePosts(ctx context.Context, in *QueryNamespacePostsRequest, opts ...grpc.CallOption) (*QueryNamespacePostsResponse, error)\n\t// Queries a post based on the specified namespace and post id.\n\tPost(ctx context.Context, in *QueryPostRequest, opts ...grpc.CallOption) (*QueryPostResponse, error)\n\t// Queries all posts.\n\tPosts(ctx context.Context, in *QueryPostsRequest, opts ...grpc.CallOption) (*QueryPostsResponse, error)\n\t// Glob iteration over a namespace\n\tIterateGlob(ctx context.Context, in *QueryIterateGlobRequest, opts ...grpc.CallOption) (*QueryIterateGlobResponse, error)\n\t// Queries the bulletin module policy id.\n\tBulletinPolicyId(ctx context.Context, in *QueryBulletinPolicyIdRequest, opts ...grpc.CallOption) (*QueryBulletinPolicyIdResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryNamespaceResponse)\n\terr := c.cc.Invoke(ctx, Query_Namespace_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryNamespacesResponse)\n\terr := c.cc.Invoke(ctx, Query_Namespaces_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) NamespaceCollaborators(ctx context.Context, in *QueryNamespaceCollaboratorsRequest, opts ...grpc.CallOption) (*QueryNamespaceCollaboratorsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryNamespaceCollaboratorsResponse)\n\terr := c.cc.Invoke(ctx, Query_NamespaceCollaborators_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) NamespacePosts(ctx context.Context, in *QueryNamespacePostsRequest, opts ...grpc.CallOption) (*QueryNamespacePostsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryNamespacePostsResponse)\n\terr := c.cc.Invoke(ctx, Query_NamespacePosts_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Post(ctx context.Context, in *QueryPostRequest, opts ...grpc.CallOption) (*QueryPostResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryPostResponse)\n\terr := c.cc.Invoke(ctx, Query_Post_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Posts(ctx context.Context, in *QueryPostsRequest, opts ...grpc.CallOption) (*QueryPostsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryPostsResponse)\n\terr := c.cc.Invoke(ctx, Query_Posts_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) IterateGlob(ctx context.Context, in *QueryIterateGlobRequest, opts ...grpc.CallOption) (*QueryIterateGlobResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryIterateGlobResponse)\n\terr := c.cc.Invoke(ctx, Query_IterateGlob_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) BulletinPolicyId(ctx context.Context, in *QueryBulletinPolicyIdRequest, opts ...grpc.CallOption) (*QueryBulletinPolicyIdResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryBulletinPolicyIdResponse)\n\terr := c.cc.Invoke(ctx, Query_BulletinPolicyId_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Queries a namespace based on the specified namespace id.\n\tNamespace(context.Context, *QueryNamespaceRequest) (*QueryNamespaceResponse, error)\n\t// Queries all namespaces.\n\tNamespaces(context.Context, *QueryNamespacesRequest) (*QueryNamespacesResponse, error)\n\t// Queries all namespace collaborators.\n\tNamespaceCollaborators(context.Context, *QueryNamespaceCollaboratorsRequest) (*QueryNamespaceCollaboratorsResponse, error)\n\t// Queries all namespace posts.\n\tNamespacePosts(context.Context, *QueryNamespacePostsRequest) (*QueryNamespacePostsResponse, error)\n\t// Queries a post based on the specified namespace and post id.\n\tPost(context.Context, *QueryPostRequest) (*QueryPostResponse, error)\n\t// Queries all posts.\n\tPosts(context.Context, *QueryPostsRequest) (*QueryPostsResponse, error)\n\t// Glob iteration over a namespace\n\tIterateGlob(context.Context, *QueryIterateGlobRequest) (*QueryIterateGlobResponse, error)\n\t// Queries the bulletin module policy id.\n\tBulletinPolicyId(context.Context, *QueryBulletinPolicyIdRequest) (*QueryBulletinPolicyIdResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (UnimplementedQueryServer) Namespace(context.Context, *QueryNamespaceRequest) (*QueryNamespaceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Namespace not implemented\")\n}\nfunc (UnimplementedQueryServer) Namespaces(context.Context, *QueryNamespacesRequest) (*QueryNamespacesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Namespaces not implemented\")\n}\nfunc (UnimplementedQueryServer) NamespaceCollaborators(context.Context, *QueryNamespaceCollaboratorsRequest) (*QueryNamespaceCollaboratorsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method NamespaceCollaborators not implemented\")\n}\nfunc (UnimplementedQueryServer) NamespacePosts(context.Context, *QueryNamespacePostsRequest) (*QueryNamespacePostsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method NamespacePosts not implemented\")\n}\nfunc (UnimplementedQueryServer) Post(context.Context, *QueryPostRequest) (*QueryPostResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Post not implemented\")\n}\nfunc (UnimplementedQueryServer) Posts(context.Context, *QueryPostsRequest) (*QueryPostsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Posts not implemented\")\n}\nfunc (UnimplementedQueryServer) IterateGlob(context.Context, *QueryIterateGlobRequest) (*QueryIterateGlobResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method IterateGlob not implemented\")\n}\nfunc (UnimplementedQueryServer) BulletinPolicyId(context.Context, *QueryBulletinPolicyIdRequest) (*QueryBulletinPolicyIdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method BulletinPolicyId not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Params_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Namespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespaceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Namespace(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Namespace_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Namespace(ctx, req.(*QueryNamespaceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Namespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespacesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Namespaces(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Namespaces_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Namespaces(ctx, req.(*QueryNamespacesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_NamespaceCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespaceCollaboratorsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).NamespaceCollaborators(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_NamespaceCollaborators_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).NamespaceCollaborators(ctx, req.(*QueryNamespaceCollaboratorsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_NamespacePosts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespacePostsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).NamespacePosts(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_NamespacePosts_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).NamespacePosts(ctx, req.(*QueryNamespacePostsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Post_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPostRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Post(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Post_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Post(ctx, req.(*QueryPostRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Posts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPostsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Posts(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Posts_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Posts(ctx, req.(*QueryPostsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_IterateGlob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryIterateGlobRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).IterateGlob(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_IterateGlob_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).IterateGlob(ctx, req.(*QueryIterateGlobRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_BulletinPolicyId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryBulletinPolicyIdRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).BulletinPolicyId(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_BulletinPolicyId_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).BulletinPolicyId(ctx, req.(*QueryBulletinPolicyIdRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.bulletin.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Namespace\",\n\t\t\tHandler:    _Query_Namespace_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Namespaces\",\n\t\t\tHandler:    _Query_Namespaces_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"NamespaceCollaborators\",\n\t\t\tHandler:    _Query_NamespaceCollaborators_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"NamespacePosts\",\n\t\t\tHandler:    _Query_NamespacePosts_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Post\",\n\t\t\tHandler:    _Query_Post_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Posts\",\n\t\t\tHandler:    _Query_Posts_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"IterateGlob\",\n\t\t\tHandler:    _Query_IterateGlob_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"BulletinPolicyId\",\n\t\t\tHandler:    _Query_BulletinPolicyId_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/bulletin/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/tx.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage bulletin\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_MsgUpdateParams           protoreflect.MessageDescriptor\n\tfd_MsgUpdateParams_authority protoreflect.FieldDescriptor\n\tfd_MsgUpdateParams_params    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgUpdateParams = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgUpdateParams\")\n\tfd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName(\"authority\")\n\tfd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil)\n\ntype fastReflection_MsgUpdateParams MsgUpdateParams\n\nfunc (x *MsgUpdateParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(x)\n}\n\nfunc (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{}\n\ntype fastReflection_MsgUpdateParams_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(nil)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParams) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_MsgUpdateParams_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_MsgUpdateParams_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\treturn x.Authority != \"\"\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\tx.Authority = \"\"\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.bulletin.MsgUpdateParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgUpdateParams.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgUpdateParams.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgUpdateParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateParamsResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgUpdateParamsResponse = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgUpdateParamsResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil)\n\ntype fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse\n\nfunc (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(x)\n}\n\nfunc (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{}\n\ntype fastReflection_MsgUpdateParamsResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgUpdateParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreatePost           protoreflect.MessageDescriptor\n\tfd_MsgCreatePost_creator   protoreflect.FieldDescriptor\n\tfd_MsgCreatePost_namespace protoreflect.FieldDescriptor\n\tfd_MsgCreatePost_payload   protoreflect.FieldDescriptor\n\tfd_MsgCreatePost_artifact  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgCreatePost = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgCreatePost\")\n\tfd_MsgCreatePost_creator = md_MsgCreatePost.Fields().ByName(\"creator\")\n\tfd_MsgCreatePost_namespace = md_MsgCreatePost.Fields().ByName(\"namespace\")\n\tfd_MsgCreatePost_payload = md_MsgCreatePost.Fields().ByName(\"payload\")\n\tfd_MsgCreatePost_artifact = md_MsgCreatePost.Fields().ByName(\"artifact\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreatePost)(nil)\n\ntype fastReflection_MsgCreatePost MsgCreatePost\n\nfunc (x *MsgCreatePost) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePost)(x)\n}\n\nfunc (x *MsgCreatePost) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreatePost_messageType fastReflection_MsgCreatePost_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreatePost_messageType{}\n\ntype fastReflection_MsgCreatePost_messageType struct{}\n\nfunc (x fastReflection_MsgCreatePost_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePost)(nil)\n}\nfunc (x fastReflection_MsgCreatePost_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePost)\n}\nfunc (x fastReflection_MsgCreatePost_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePost\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreatePost) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePost\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreatePost) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreatePost_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreatePost) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePost)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreatePost) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreatePost)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreatePost) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgCreatePost_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_MsgCreatePost_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Payload) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Payload)\n\t\tif !f(fd_MsgCreatePost_payload, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Artifact != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Artifact)\n\t\tif !f(fd_MsgCreatePost_artifact, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreatePost) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\treturn len(x.Payload) != 0\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\treturn x.Artifact != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePost) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\tx.Payload = nil\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\tx.Artifact = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreatePost) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\tvalue := x.Payload\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\tvalue := x.Artifact\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePost) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\tx.Payload = value.Bytes()\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\tx.Artifact = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePost) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.bulletin.MsgCreatePost is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.MsgCreatePost is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\tpanic(fmt.Errorf(\"field payload of message sourcehub.bulletin.MsgCreatePost is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\tpanic(fmt.Errorf(\"field artifact of message sourcehub.bulletin.MsgCreatePost is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreatePost) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgCreatePost.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgCreatePost.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgCreatePost.payload\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcehub.bulletin.MsgCreatePost.artifact\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePost\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePost does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreatePost) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgCreatePost\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreatePost) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePost) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreatePost) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreatePost) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreatePost)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Payload)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Artifact)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePost)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Artifact) > 0 {\n\t\t\ti -= len(x.Artifact)\n\t\t\tcopy(dAtA[i:], x.Artifact)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Artifact)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.Payload) > 0 {\n\t\t\ti -= len(x.Payload)\n\t\t\tcopy(dAtA[i:], x.Payload)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Payload)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePost)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePost: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePost: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Payload = append(x.Payload[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Payload == nil {\n\t\t\t\t\tx.Payload = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Artifact\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Artifact = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreatePostResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgCreatePostResponse = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgCreatePostResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreatePostResponse)(nil)\n\ntype fastReflection_MsgCreatePostResponse MsgCreatePostResponse\n\nfunc (x *MsgCreatePostResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePostResponse)(x)\n}\n\nfunc (x *MsgCreatePostResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreatePostResponse_messageType fastReflection_MsgCreatePostResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreatePostResponse_messageType{}\n\ntype fastReflection_MsgCreatePostResponse_messageType struct{}\n\nfunc (x fastReflection_MsgCreatePostResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreatePostResponse)(nil)\n}\nfunc (x fastReflection_MsgCreatePostResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePostResponse)\n}\nfunc (x fastReflection_MsgCreatePostResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePostResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreatePostResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreatePostResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreatePostResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreatePostResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreatePostResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreatePostResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreatePostResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreatePostResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreatePostResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreatePostResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePostResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreatePostResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePostResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePostResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreatePostResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgCreatePostResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgCreatePostResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreatePostResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgCreatePostResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreatePostResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreatePostResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreatePostResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreatePostResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreatePostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreatePostResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePostResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreatePostResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRegisterNamespace           protoreflect.MessageDescriptor\n\tfd_MsgRegisterNamespace_creator   protoreflect.FieldDescriptor\n\tfd_MsgRegisterNamespace_namespace protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgRegisterNamespace = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgRegisterNamespace\")\n\tfd_MsgRegisterNamespace_creator = md_MsgRegisterNamespace.Fields().ByName(\"creator\")\n\tfd_MsgRegisterNamespace_namespace = md_MsgRegisterNamespace.Fields().ByName(\"namespace\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRegisterNamespace)(nil)\n\ntype fastReflection_MsgRegisterNamespace MsgRegisterNamespace\n\nfunc (x *MsgRegisterNamespace) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRegisterNamespace)(x)\n}\n\nfunc (x *MsgRegisterNamespace) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRegisterNamespace_messageType fastReflection_MsgRegisterNamespace_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRegisterNamespace_messageType{}\n\ntype fastReflection_MsgRegisterNamespace_messageType struct{}\n\nfunc (x fastReflection_MsgRegisterNamespace_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRegisterNamespace)(nil)\n}\nfunc (x fastReflection_MsgRegisterNamespace_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRegisterNamespace)\n}\nfunc (x fastReflection_MsgRegisterNamespace_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRegisterNamespace\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRegisterNamespace) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRegisterNamespace\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRegisterNamespace) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRegisterNamespace_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRegisterNamespace) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRegisterNamespace)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRegisterNamespace) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRegisterNamespace)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRegisterNamespace) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgRegisterNamespace_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_MsgRegisterNamespace_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRegisterNamespace) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\treturn x.Namespace != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespace) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\tx.Namespace = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRegisterNamespace) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespace) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespace) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.bulletin.MsgRegisterNamespace is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.MsgRegisterNamespace is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRegisterNamespace) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgRegisterNamespace.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespace\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespace does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRegisterNamespace) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgRegisterNamespace\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRegisterNamespace) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespace) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRegisterNamespace) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRegisterNamespace) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespace)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRegisterNamespace: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRegisterNamespace: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRegisterNamespaceResponse           protoreflect.MessageDescriptor\n\tfd_MsgRegisterNamespaceResponse_namespace protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgRegisterNamespaceResponse = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgRegisterNamespaceResponse\")\n\tfd_MsgRegisterNamespaceResponse_namespace = md_MsgRegisterNamespaceResponse.Fields().ByName(\"namespace\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRegisterNamespaceResponse)(nil)\n\ntype fastReflection_MsgRegisterNamespaceResponse MsgRegisterNamespaceResponse\n\nfunc (x *MsgRegisterNamespaceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRegisterNamespaceResponse)(x)\n}\n\nfunc (x *MsgRegisterNamespaceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRegisterNamespaceResponse_messageType fastReflection_MsgRegisterNamespaceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRegisterNamespaceResponse_messageType{}\n\ntype fastReflection_MsgRegisterNamespaceResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRegisterNamespaceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRegisterNamespaceResponse)(nil)\n}\nfunc (x fastReflection_MsgRegisterNamespaceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRegisterNamespaceResponse)\n}\nfunc (x fastReflection_MsgRegisterNamespaceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRegisterNamespaceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRegisterNamespaceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRegisterNamespaceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRegisterNamespaceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRegisterNamespaceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Namespace != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Namespace.ProtoReflect())\n\t\tif !f(fd_MsgRegisterNamespaceResponse_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\treturn x.Namespace != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\tx.Namespace = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\tx.Namespace = value.Message().Interface().(*Namespace)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\tif x.Namespace == nil {\n\t\t\tx.Namespace = new(Namespace)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Namespace.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace\":\n\t\tm := new(Namespace)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRegisterNamespaceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRegisterNamespaceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgRegisterNamespaceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRegisterNamespaceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Namespace != nil {\n\t\t\tl = options.Size(x.Namespace)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Namespace != nil {\n\t\t\tencoded, err := options.Marshal(x.Namespace)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRegisterNamespaceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRegisterNamespaceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRegisterNamespaceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Namespace == nil {\n\t\t\t\t\tx.Namespace = &Namespace{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Namespace); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgAddCollaborator              protoreflect.MessageDescriptor\n\tfd_MsgAddCollaborator_creator      protoreflect.FieldDescriptor\n\tfd_MsgAddCollaborator_namespace    protoreflect.FieldDescriptor\n\tfd_MsgAddCollaborator_collaborator protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgAddCollaborator = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgAddCollaborator\")\n\tfd_MsgAddCollaborator_creator = md_MsgAddCollaborator.Fields().ByName(\"creator\")\n\tfd_MsgAddCollaborator_namespace = md_MsgAddCollaborator.Fields().ByName(\"namespace\")\n\tfd_MsgAddCollaborator_collaborator = md_MsgAddCollaborator.Fields().ByName(\"collaborator\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgAddCollaborator)(nil)\n\ntype fastReflection_MsgAddCollaborator MsgAddCollaborator\n\nfunc (x *MsgAddCollaborator) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgAddCollaborator)(x)\n}\n\nfunc (x *MsgAddCollaborator) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgAddCollaborator_messageType fastReflection_MsgAddCollaborator_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgAddCollaborator_messageType{}\n\ntype fastReflection_MsgAddCollaborator_messageType struct{}\n\nfunc (x fastReflection_MsgAddCollaborator_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgAddCollaborator)(nil)\n}\nfunc (x fastReflection_MsgAddCollaborator_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddCollaborator)\n}\nfunc (x fastReflection_MsgAddCollaborator_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddCollaborator\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgAddCollaborator) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddCollaborator\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgAddCollaborator) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgAddCollaborator_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgAddCollaborator) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddCollaborator)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgAddCollaborator) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgAddCollaborator)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgAddCollaborator) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgAddCollaborator_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_MsgAddCollaborator_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Collaborator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Collaborator)\n\t\tif !f(fd_MsgAddCollaborator_collaborator, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgAddCollaborator) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\treturn x.Collaborator != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaborator) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\tx.Collaborator = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgAddCollaborator) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\tvalue := x.Collaborator\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaborator) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\tx.Collaborator = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaborator) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.bulletin.MsgAddCollaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.MsgAddCollaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\tpanic(fmt.Errorf(\"field collaborator of message sourcehub.bulletin.MsgAddCollaborator is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgAddCollaborator) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgAddCollaborator.collaborator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgAddCollaborator) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgAddCollaborator\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgAddCollaborator) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaborator) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgAddCollaborator) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgAddCollaborator) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgAddCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Collaborator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Collaborator) > 0 {\n\t\t\ti -= len(x.Collaborator)\n\t\t\tcopy(dAtA[i:], x.Collaborator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Collaborator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddCollaborator: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddCollaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Collaborator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Collaborator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgAddCollaboratorResponse                  protoreflect.MessageDescriptor\n\tfd_MsgAddCollaboratorResponse_collaborator_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgAddCollaboratorResponse = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgAddCollaboratorResponse\")\n\tfd_MsgAddCollaboratorResponse_collaborator_did = md_MsgAddCollaboratorResponse.Fields().ByName(\"collaborator_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgAddCollaboratorResponse)(nil)\n\ntype fastReflection_MsgAddCollaboratorResponse MsgAddCollaboratorResponse\n\nfunc (x *MsgAddCollaboratorResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgAddCollaboratorResponse)(x)\n}\n\nfunc (x *MsgAddCollaboratorResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgAddCollaboratorResponse_messageType fastReflection_MsgAddCollaboratorResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgAddCollaboratorResponse_messageType{}\n\ntype fastReflection_MsgAddCollaboratorResponse_messageType struct{}\n\nfunc (x fastReflection_MsgAddCollaboratorResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgAddCollaboratorResponse)(nil)\n}\nfunc (x fastReflection_MsgAddCollaboratorResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddCollaboratorResponse)\n}\nfunc (x fastReflection_MsgAddCollaboratorResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddCollaboratorResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddCollaboratorResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgAddCollaboratorResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddCollaboratorResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgAddCollaboratorResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CollaboratorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CollaboratorDid)\n\t\tif !f(fd_MsgAddCollaboratorResponse_collaborator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\treturn x.CollaboratorDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\tx.CollaboratorDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\tvalue := x.CollaboratorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\tx.CollaboratorDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\tpanic(fmt.Errorf(\"field collaborator_did of message sourcehub.bulletin.MsgAddCollaboratorResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgAddCollaboratorResponse.collaborator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgAddCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgAddCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgAddCollaboratorResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgAddCollaboratorResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgAddCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.CollaboratorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.CollaboratorDid) > 0 {\n\t\t\ti -= len(x.CollaboratorDid)\n\t\t\tcopy(dAtA[i:], x.CollaboratorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CollaboratorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddCollaboratorResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddCollaboratorResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveCollaborator              protoreflect.MessageDescriptor\n\tfd_MsgRemoveCollaborator_creator      protoreflect.FieldDescriptor\n\tfd_MsgRemoveCollaborator_namespace    protoreflect.FieldDescriptor\n\tfd_MsgRemoveCollaborator_collaborator protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgRemoveCollaborator = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgRemoveCollaborator\")\n\tfd_MsgRemoveCollaborator_creator = md_MsgRemoveCollaborator.Fields().ByName(\"creator\")\n\tfd_MsgRemoveCollaborator_namespace = md_MsgRemoveCollaborator.Fields().ByName(\"namespace\")\n\tfd_MsgRemoveCollaborator_collaborator = md_MsgRemoveCollaborator.Fields().ByName(\"collaborator\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveCollaborator)(nil)\n\ntype fastReflection_MsgRemoveCollaborator MsgRemoveCollaborator\n\nfunc (x *MsgRemoveCollaborator) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveCollaborator)(x)\n}\n\nfunc (x *MsgRemoveCollaborator) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveCollaborator_messageType fastReflection_MsgRemoveCollaborator_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveCollaborator_messageType{}\n\ntype fastReflection_MsgRemoveCollaborator_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveCollaborator_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveCollaborator)(nil)\n}\nfunc (x fastReflection_MsgRemoveCollaborator_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveCollaborator)\n}\nfunc (x fastReflection_MsgRemoveCollaborator_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveCollaborator\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveCollaborator) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveCollaborator\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveCollaborator) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveCollaborator_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveCollaborator) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveCollaborator)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveCollaborator) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveCollaborator)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveCollaborator) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgRemoveCollaborator_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Namespace != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Namespace)\n\t\tif !f(fd_MsgRemoveCollaborator_namespace, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Collaborator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Collaborator)\n\t\tif !f(fd_MsgRemoveCollaborator_collaborator, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveCollaborator) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\treturn x.Namespace != \"\"\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\treturn x.Collaborator != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaborator) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\tx.Namespace = \"\"\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\tx.Collaborator = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveCollaborator) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\tvalue := x.Namespace\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\tvalue := x.Collaborator\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaborator) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\tx.Namespace = value.Interface().(string)\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\tx.Collaborator = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaborator) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.bulletin.MsgRemoveCollaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\tpanic(fmt.Errorf(\"field namespace of message sourcehub.bulletin.MsgRemoveCollaborator is not mutable\"))\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\tpanic(fmt.Errorf(\"field collaborator of message sourcehub.bulletin.MsgRemoveCollaborator is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveCollaborator) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.namespace\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.bulletin.MsgRemoveCollaborator.collaborator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaborator\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaborator does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveCollaborator) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgRemoveCollaborator\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveCollaborator) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaborator) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveCollaborator) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveCollaborator) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Namespace)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Collaborator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Collaborator) > 0 {\n\t\t\ti -= len(x.Collaborator)\n\t\t\tcopy(dAtA[i:], x.Collaborator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Collaborator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Namespace) > 0 {\n\t\t\ti -= len(x.Namespace)\n\t\t\tcopy(dAtA[i:], x.Namespace)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Namespace)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaborator)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveCollaborator: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveCollaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Collaborator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Collaborator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveCollaboratorResponse                  protoreflect.MessageDescriptor\n\tfd_MsgRemoveCollaboratorResponse_collaborator_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_bulletin_tx_proto_init()\n\tmd_MsgRemoveCollaboratorResponse = File_sourcehub_bulletin_tx_proto.Messages().ByName(\"MsgRemoveCollaboratorResponse\")\n\tfd_MsgRemoveCollaboratorResponse_collaborator_did = md_MsgRemoveCollaboratorResponse.Fields().ByName(\"collaborator_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveCollaboratorResponse)(nil)\n\ntype fastReflection_MsgRemoveCollaboratorResponse MsgRemoveCollaboratorResponse\n\nfunc (x *MsgRemoveCollaboratorResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveCollaboratorResponse)(x)\n}\n\nfunc (x *MsgRemoveCollaboratorResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveCollaboratorResponse_messageType fastReflection_MsgRemoveCollaboratorResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveCollaboratorResponse_messageType{}\n\ntype fastReflection_MsgRemoveCollaboratorResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveCollaboratorResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveCollaboratorResponse)(nil)\n}\nfunc (x fastReflection_MsgRemoveCollaboratorResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveCollaboratorResponse)\n}\nfunc (x fastReflection_MsgRemoveCollaboratorResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveCollaboratorResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveCollaboratorResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveCollaboratorResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveCollaboratorResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveCollaboratorResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CollaboratorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.CollaboratorDid)\n\t\tif !f(fd_MsgRemoveCollaboratorResponse_collaborator_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\treturn x.CollaboratorDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\tx.CollaboratorDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\tvalue := x.CollaboratorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\tx.CollaboratorDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\tpanic(fmt.Errorf(\"field collaborator_did of message sourcehub.bulletin.MsgRemoveCollaboratorResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.bulletin.MsgRemoveCollaboratorResponse.collaborator_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.bulletin.MsgRemoveCollaboratorResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.bulletin.MsgRemoveCollaboratorResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.bulletin.MsgRemoveCollaboratorResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveCollaboratorResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.CollaboratorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.CollaboratorDid) > 0 {\n\t\t\ti -= len(x.CollaboratorDid)\n\t\t\tcopy(dAtA[i:], x.CollaboratorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.CollaboratorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveCollaboratorResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveCollaboratorResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveCollaboratorResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/bulletin/tx.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams *Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *MsgUpdateParams) Reset() {\n\t*x = MsgUpdateParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParams) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MsgUpdateParams) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateParams) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateParamsResponse) Reset() {\n\t*x = MsgUpdateParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{1}\n}\n\ntype MsgCreatePost struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator   string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPayload   []byte `protobuf:\"bytes,3,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\tArtifact  string `protobuf:\"bytes,5,opt,name=artifact,proto3\" json:\"artifact,omitempty\"`\n}\n\nfunc (x *MsgCreatePost) Reset() {\n\t*x = MsgCreatePost{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreatePost) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreatePost) ProtoMessage() {}\n\n// Deprecated: Use MsgCreatePost.ProtoReflect.Descriptor instead.\nfunc (*MsgCreatePost) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *MsgCreatePost) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCreatePost) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCreatePost) GetPayload() []byte {\n\tif x != nil {\n\t\treturn x.Payload\n\t}\n\treturn nil\n}\n\nfunc (x *MsgCreatePost) GetArtifact() string {\n\tif x != nil {\n\t\treturn x.Artifact\n\t}\n\treturn \"\"\n}\n\ntype MsgCreatePostResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgCreatePostResponse) Reset() {\n\t*x = MsgCreatePostResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreatePostResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreatePostResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgCreatePostResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgCreatePostResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{3}\n}\n\ntype MsgRegisterNamespace struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator   string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (x *MsgRegisterNamespace) Reset() {\n\t*x = MsgRegisterNamespace{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRegisterNamespace) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRegisterNamespace) ProtoMessage() {}\n\n// Deprecated: Use MsgRegisterNamespace.ProtoReflect.Descriptor instead.\nfunc (*MsgRegisterNamespace) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *MsgRegisterNamespace) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRegisterNamespace) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\ntype MsgRegisterNamespaceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tNamespace *Namespace `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (x *MsgRegisterNamespaceResponse) Reset() {\n\t*x = MsgRegisterNamespaceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRegisterNamespaceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRegisterNamespaceResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRegisterNamespaceResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRegisterNamespaceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *MsgRegisterNamespaceResponse) GetNamespace() *Namespace {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn nil\n}\n\ntype MsgAddCollaborator struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator      string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace    string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCollaborator string `protobuf:\"bytes,3,opt,name=collaborator,proto3\" json:\"collaborator,omitempty\"`\n}\n\nfunc (x *MsgAddCollaborator) Reset() {\n\t*x = MsgAddCollaborator{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgAddCollaborator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgAddCollaborator) ProtoMessage() {}\n\n// Deprecated: Use MsgAddCollaborator.ProtoReflect.Descriptor instead.\nfunc (*MsgAddCollaborator) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MsgAddCollaborator) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgAddCollaborator) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgAddCollaborator) GetCollaborator() string {\n\tif x != nil {\n\t\treturn x.Collaborator\n\t}\n\treturn \"\"\n}\n\ntype MsgAddCollaboratorResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCollaboratorDid string `protobuf:\"bytes,1,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (x *MsgAddCollaboratorResponse) Reset() {\n\t*x = MsgAddCollaboratorResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgAddCollaboratorResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgAddCollaboratorResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgAddCollaboratorResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgAddCollaboratorResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *MsgAddCollaboratorResponse) GetCollaboratorDid() string {\n\tif x != nil {\n\t\treturn x.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\ntype MsgRemoveCollaborator struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator      string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace    string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCollaborator string `protobuf:\"bytes,3,opt,name=collaborator,proto3\" json:\"collaborator,omitempty\"`\n}\n\nfunc (x *MsgRemoveCollaborator) Reset() {\n\t*x = MsgRemoveCollaborator{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveCollaborator) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveCollaborator) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveCollaborator.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveCollaborator) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *MsgRemoveCollaborator) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRemoveCollaborator) GetNamespace() string {\n\tif x != nil {\n\t\treturn x.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRemoveCollaborator) GetCollaborator() string {\n\tif x != nil {\n\t\treturn x.Collaborator\n\t}\n\treturn \"\"\n}\n\ntype MsgRemoveCollaboratorResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCollaboratorDid string `protobuf:\"bytes,1,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (x *MsgRemoveCollaboratorResponse) Reset() {\n\t*x = MsgRemoveCollaboratorResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_bulletin_tx_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveCollaboratorResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveCollaboratorResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveCollaboratorResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveCollaboratorResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_bulletin_tx_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MsgRemoveCollaboratorResponse) GetCollaboratorDid() string {\n\tif x != nil {\n\t\treturn x.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_bulletin_tx_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_bulletin_tx_proto_rawDesc = []byte{\n\t0x0a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69,\n\t0x6e, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67,\n\t0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74,\n\t0x69, 0x6e, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c, 0x6c, 0x65,\n\t0x74, 0x69, 0x6e, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74,\n\t0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f,\n\t0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74,\n\t0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,\n\t0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f,\n\t0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x37,\n\t0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7,\n\t0xb0, 0x2a, 0x24, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74,\n\t0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,\n\t0x50, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c,\n\t0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07,\n\t0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70,\n\t0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,\n\t0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,\n\t0x63, 0x74, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72,\n\t0x22, 0x17, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73,\n\t0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x73, 0x67,\n\t0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,\n\t0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x5b, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x52, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e,\n\t0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,\n\t0x70, 0x61, 0x63, 0x65, 0x22, 0x7e, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72,\n\t0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74,\n\t0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62,\n\t0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64, 0x22, 0x81, 0x01,\n\t0x0a, 0x15, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61,\n\t0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f,\n\t0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,\n\t0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18,\n\t0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61,\n\t0x74, 0x6f, 0x72, 0x3a, 0x0c, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f,\n\t0x72, 0x22, 0x4a, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f,\n\t0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64, 0x32, 0x9a, 0x04,\n\t0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,\n\t0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e,\n\t0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72,\n\t0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73,\n\t0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e,\n\t0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73,\n\t0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,\n\t0x63, 0x65, 0x1a, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62,\n\t0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73,\n\t0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x61,\n\t0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67,\n\t0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x1a,\n\t0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c,\n\t0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x61,\n\t0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x72, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f,\n\t0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65,\n\t0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72,\n\t0x1a, 0x31, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43,\n\t0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xaf, 0x01, 0x0a, 0x16, 0x63,\n\t0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x62, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x53, 0x42, 0x58, 0xaa, 0x02, 0x12, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e,\n\t0xca, 0x02, 0x12, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x42, 0x75, 0x6c,\n\t0x6c, 0x65, 0x74, 0x69, 0x6e, 0xe2, 0x02, 0x1e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,\n\t0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x3a, 0x3a, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_bulletin_tx_proto_rawDescOnce sync.Once\n\tfile_sourcehub_bulletin_tx_proto_rawDescData = file_sourcehub_bulletin_tx_proto_rawDesc\n)\n\nfunc file_sourcehub_bulletin_tx_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_bulletin_tx_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_bulletin_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_bulletin_tx_proto_rawDescData)\n\t})\n\treturn file_sourcehub_bulletin_tx_proto_rawDescData\n}\n\nvar file_sourcehub_bulletin_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 10)\nvar file_sourcehub_bulletin_tx_proto_goTypes = []interface{}{\n\t(*MsgUpdateParams)(nil),               // 0: sourcehub.bulletin.MsgUpdateParams\n\t(*MsgUpdateParamsResponse)(nil),       // 1: sourcehub.bulletin.MsgUpdateParamsResponse\n\t(*MsgCreatePost)(nil),                 // 2: sourcehub.bulletin.MsgCreatePost\n\t(*MsgCreatePostResponse)(nil),         // 3: sourcehub.bulletin.MsgCreatePostResponse\n\t(*MsgRegisterNamespace)(nil),          // 4: sourcehub.bulletin.MsgRegisterNamespace\n\t(*MsgRegisterNamespaceResponse)(nil),  // 5: sourcehub.bulletin.MsgRegisterNamespaceResponse\n\t(*MsgAddCollaborator)(nil),            // 6: sourcehub.bulletin.MsgAddCollaborator\n\t(*MsgAddCollaboratorResponse)(nil),    // 7: sourcehub.bulletin.MsgAddCollaboratorResponse\n\t(*MsgRemoveCollaborator)(nil),         // 8: sourcehub.bulletin.MsgRemoveCollaborator\n\t(*MsgRemoveCollaboratorResponse)(nil), // 9: sourcehub.bulletin.MsgRemoveCollaboratorResponse\n\t(*Params)(nil),                        // 10: sourcehub.bulletin.Params\n\t(*Namespace)(nil),                     // 11: sourcehub.bulletin.Namespace\n}\nvar file_sourcehub_bulletin_tx_proto_depIdxs = []int32{\n\t10, // 0: sourcehub.bulletin.MsgUpdateParams.params:type_name -> sourcehub.bulletin.Params\n\t11, // 1: sourcehub.bulletin.MsgRegisterNamespaceResponse.namespace:type_name -> sourcehub.bulletin.Namespace\n\t0,  // 2: sourcehub.bulletin.Msg.UpdateParams:input_type -> sourcehub.bulletin.MsgUpdateParams\n\t2,  // 3: sourcehub.bulletin.Msg.CreatePost:input_type -> sourcehub.bulletin.MsgCreatePost\n\t4,  // 4: sourcehub.bulletin.Msg.RegisterNamespace:input_type -> sourcehub.bulletin.MsgRegisterNamespace\n\t6,  // 5: sourcehub.bulletin.Msg.AddCollaborator:input_type -> sourcehub.bulletin.MsgAddCollaborator\n\t8,  // 6: sourcehub.bulletin.Msg.RemoveCollaborator:input_type -> sourcehub.bulletin.MsgRemoveCollaborator\n\t1,  // 7: sourcehub.bulletin.Msg.UpdateParams:output_type -> sourcehub.bulletin.MsgUpdateParamsResponse\n\t3,  // 8: sourcehub.bulletin.Msg.CreatePost:output_type -> sourcehub.bulletin.MsgCreatePostResponse\n\t5,  // 9: sourcehub.bulletin.Msg.RegisterNamespace:output_type -> sourcehub.bulletin.MsgRegisterNamespaceResponse\n\t7,  // 10: sourcehub.bulletin.Msg.AddCollaborator:output_type -> sourcehub.bulletin.MsgAddCollaboratorResponse\n\t9,  // 11: sourcehub.bulletin.Msg.RemoveCollaborator:output_type -> sourcehub.bulletin.MsgRemoveCollaboratorResponse\n\t7,  // [7:12] is the sub-list for method output_type\n\t2,  // [2:7] is the sub-list for method input_type\n\t2,  // [2:2] is the sub-list for extension type_name\n\t2,  // [2:2] is the sub-list for extension extendee\n\t0,  // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_bulletin_tx_proto_init() }\nfunc file_sourcehub_bulletin_tx_proto_init() {\n\tif File_sourcehub_bulletin_tx_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_bulletin_params_proto_init()\n\tfile_sourcehub_bulletin_namespace_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreatePost); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreatePostResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRegisterNamespace); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRegisterNamespaceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgAddCollaborator); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgAddCollaboratorResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveCollaborator); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_bulletin_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveCollaboratorResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_bulletin_tx_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   10,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_bulletin_tx_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_bulletin_tx_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_bulletin_tx_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_bulletin_tx_proto = out.File\n\tfile_sourcehub_bulletin_tx_proto_rawDesc = nil\n\tfile_sourcehub_bulletin_tx_proto_goTypes = nil\n\tfile_sourcehub_bulletin_tx_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/bulletin/tx_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/bulletin/tx.proto\n\npackage bulletin\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tMsg_UpdateParams_FullMethodName       = \"/sourcehub.bulletin.Msg/UpdateParams\"\n\tMsg_CreatePost_FullMethodName         = \"/sourcehub.bulletin.Msg/CreatePost\"\n\tMsg_RegisterNamespace_FullMethodName  = \"/sourcehub.bulletin.Msg/RegisterNamespace\"\n\tMsg_AddCollaborator_FullMethodName    = \"/sourcehub.bulletin.Msg/AddCollaborator\"\n\tMsg_RemoveCollaborator_FullMethodName = \"/sourcehub.bulletin.Msg/RemoveCollaborator\"\n)\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Msg defines the Msg service.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\tCreatePost(ctx context.Context, in *MsgCreatePost, opts ...grpc.CallOption) (*MsgCreatePostResponse, error)\n\tRegisterNamespace(ctx context.Context, in *MsgRegisterNamespace, opts ...grpc.CallOption) (*MsgRegisterNamespaceResponse, error)\n\tAddCollaborator(ctx context.Context, in *MsgAddCollaborator, opts ...grpc.CallOption) (*MsgAddCollaboratorResponse, error)\n\tRemoveCollaborator(ctx context.Context, in *MsgRemoveCollaborator, opts ...grpc.CallOption) (*MsgRemoveCollaboratorResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewMsgClient(cc grpc.ClientConnInterface) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreatePost(ctx context.Context, in *MsgCreatePost, opts ...grpc.CallOption) (*MsgCreatePostResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgCreatePostResponse)\n\terr := c.cc.Invoke(ctx, Msg_CreatePost_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RegisterNamespace(ctx context.Context, in *MsgRegisterNamespace, opts ...grpc.CallOption) (*MsgRegisterNamespaceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRegisterNamespaceResponse)\n\terr := c.cc.Invoke(ctx, Msg_RegisterNamespace_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) AddCollaborator(ctx context.Context, in *MsgAddCollaborator, opts ...grpc.CallOption) (*MsgAddCollaboratorResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgAddCollaboratorResponse)\n\terr := c.cc.Invoke(ctx, Msg_AddCollaborator_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveCollaborator(ctx context.Context, in *MsgRemoveCollaborator, opts ...grpc.CallOption) (*MsgRemoveCollaboratorResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRemoveCollaboratorResponse)\n\terr := c.cc.Invoke(ctx, Msg_RemoveCollaborator_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\n// All implementations must embed UnimplementedMsgServer\n// for forward compatibility.\n//\n// Msg defines the Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\tCreatePost(context.Context, *MsgCreatePost) (*MsgCreatePostResponse, error)\n\tRegisterNamespace(context.Context, *MsgRegisterNamespace) (*MsgRegisterNamespaceResponse, error)\n\tAddCollaborator(context.Context, *MsgAddCollaborator) (*MsgAddCollaboratorResponse, error)\n\tRemoveCollaborator(context.Context, *MsgRemoveCollaborator) (*MsgRemoveCollaboratorResponse, error)\n\tmustEmbedUnimplementedMsgServer()\n}\n\n// UnimplementedMsgServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedMsgServer struct{}\n\nfunc (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (UnimplementedMsgServer) CreatePost(context.Context, *MsgCreatePost) (*MsgCreatePostResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreatePost not implemented\")\n}\nfunc (UnimplementedMsgServer) RegisterNamespace(context.Context, *MsgRegisterNamespace) (*MsgRegisterNamespaceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegisterNamespace not implemented\")\n}\nfunc (UnimplementedMsgServer) AddCollaborator(context.Context, *MsgAddCollaborator) (*MsgAddCollaboratorResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AddCollaborator not implemented\")\n}\nfunc (UnimplementedMsgServer) RemoveCollaborator(context.Context, *MsgRemoveCollaborator) (*MsgRemoveCollaboratorResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveCollaborator not implemented\")\n}\nfunc (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}\nfunc (UnimplementedMsgServer) testEmbeddedByValue()             {}\n\n// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to MsgServer will\n// result in compilation errors.\ntype UnsafeMsgServer interface {\n\tmustEmbedUnimplementedMsgServer()\n}\n\nfunc RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) {\n\t// If the following call pancis, it indicates UnimplementedMsgServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Msg_ServiceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreatePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreatePost)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreatePost(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_CreatePost_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreatePost(ctx, req.(*MsgCreatePost))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RegisterNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRegisterNamespace)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RegisterNamespace(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_RegisterNamespace_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RegisterNamespace(ctx, req.(*MsgRegisterNamespace))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_AddCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgAddCollaborator)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).AddCollaborator(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_AddCollaborator_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).AddCollaborator(ctx, req.(*MsgAddCollaborator))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveCollaborator)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveCollaborator(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_RemoveCollaborator_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveCollaborator(ctx, req.(*MsgRemoveCollaborator))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Msg_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.bulletin.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreatePost\",\n\t\t\tHandler:    _Msg_CreatePost_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegisterNamespace\",\n\t\t\tHandler:    _Msg_RegisterNamespace_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AddCollaborator\",\n\t\t\tHandler:    _Msg_AddCollaborator_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveCollaborator\",\n\t\t\tHandler:    _Msg_RemoveCollaborator_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/bulletin/tx.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/faucet/faucet.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage faucet\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/v1beta1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_FaucetRequestRecord         protoreflect.MessageDescriptor\n\tfd_FaucetRequestRecord_address protoreflect.FieldDescriptor\n\tfd_FaucetRequestRecord_amount  protoreflect.FieldDescriptor\n\tfd_FaucetRequestRecord_tx_hash protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_FaucetRequestRecord = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"FaucetRequestRecord\")\n\tfd_FaucetRequestRecord_address = md_FaucetRequestRecord.Fields().ByName(\"address\")\n\tfd_FaucetRequestRecord_amount = md_FaucetRequestRecord.Fields().ByName(\"amount\")\n\tfd_FaucetRequestRecord_tx_hash = md_FaucetRequestRecord.Fields().ByName(\"tx_hash\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FaucetRequestRecord)(nil)\n\ntype fastReflection_FaucetRequestRecord FaucetRequestRecord\n\nfunc (x *FaucetRequestRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FaucetRequestRecord)(x)\n}\n\nfunc (x *FaucetRequestRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FaucetRequestRecord_messageType fastReflection_FaucetRequestRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_FaucetRequestRecord_messageType{}\n\ntype fastReflection_FaucetRequestRecord_messageType struct{}\n\nfunc (x fastReflection_FaucetRequestRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FaucetRequestRecord)(nil)\n}\nfunc (x fastReflection_FaucetRequestRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetRequestRecord)\n}\nfunc (x fastReflection_FaucetRequestRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetRequestRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FaucetRequestRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetRequestRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FaucetRequestRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_FaucetRequestRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FaucetRequestRecord) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetRequestRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FaucetRequestRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*FaucetRequestRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FaucetRequestRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_FaucetRequestRecord_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\t\tif !f(fd_FaucetRequestRecord_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TxHash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.TxHash)\n\t\tif !f(fd_FaucetRequestRecord_tx_hash, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FaucetRequestRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\treturn x.Amount != nil\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\treturn x.TxHash != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequestRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\tx.Amount = nil\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\tx.TxHash = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FaucetRequestRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\tvalue := x.TxHash\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequestRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\tx.Amount = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\tx.TxHash = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequestRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\tif x.Amount == nil {\n\t\t\tx.Amount = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.FaucetRequestRecord is not mutable\"))\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\tpanic(fmt.Errorf(\"field tx_hash of message sourcehub.faucet.FaucetRequestRecord is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FaucetRequestRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequestRecord.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.FaucetRequestRecord.amount\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetRequestRecord.tx_hash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequestRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequestRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FaucetRequestRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.FaucetRequestRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FaucetRequestRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequestRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FaucetRequestRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FaucetRequestRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FaucetRequestRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tl = options.Size(x.Amount)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.TxHash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetRequestRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.TxHash) > 0 {\n\t\t\ti -= len(x.TxHash)\n\t\t\tcopy(dAtA[i:], x.TxHash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TxHash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tencoded, err := options.Marshal(x.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetRequestRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetRequestRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetRequestRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Amount == nil {\n\t\t\t\t\tx.Amount = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TxHash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TxHash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FaucetRequest         protoreflect.MessageDescriptor\n\tfd_FaucetRequest_address protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_FaucetRequest = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"FaucetRequest\")\n\tfd_FaucetRequest_address = md_FaucetRequest.Fields().ByName(\"address\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FaucetRequest)(nil)\n\ntype fastReflection_FaucetRequest FaucetRequest\n\nfunc (x *FaucetRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FaucetRequest)(x)\n}\n\nfunc (x *FaucetRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FaucetRequest_messageType fastReflection_FaucetRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_FaucetRequest_messageType{}\n\ntype fastReflection_FaucetRequest_messageType struct{}\n\nfunc (x fastReflection_FaucetRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FaucetRequest)(nil)\n}\nfunc (x fastReflection_FaucetRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetRequest)\n}\nfunc (x fastReflection_FaucetRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FaucetRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FaucetRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_FaucetRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FaucetRequest) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FaucetRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*FaucetRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FaucetRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_FaucetRequest_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FaucetRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\treturn x.Address != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\tx.Address = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FaucetRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\tx.Address = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.FaucetRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FaucetRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetRequest.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FaucetRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.FaucetRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FaucetRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FaucetRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FaucetRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FaucetRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FaucetResponse         protoreflect.MessageDescriptor\n\tfd_FaucetResponse_txhash  protoreflect.FieldDescriptor\n\tfd_FaucetResponse_code    protoreflect.FieldDescriptor\n\tfd_FaucetResponse_raw_log protoreflect.FieldDescriptor\n\tfd_FaucetResponse_address protoreflect.FieldDescriptor\n\tfd_FaucetResponse_amount  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_FaucetResponse = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"FaucetResponse\")\n\tfd_FaucetResponse_txhash = md_FaucetResponse.Fields().ByName(\"txhash\")\n\tfd_FaucetResponse_code = md_FaucetResponse.Fields().ByName(\"code\")\n\tfd_FaucetResponse_raw_log = md_FaucetResponse.Fields().ByName(\"raw_log\")\n\tfd_FaucetResponse_address = md_FaucetResponse.Fields().ByName(\"address\")\n\tfd_FaucetResponse_amount = md_FaucetResponse.Fields().ByName(\"amount\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FaucetResponse)(nil)\n\ntype fastReflection_FaucetResponse FaucetResponse\n\nfunc (x *FaucetResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FaucetResponse)(x)\n}\n\nfunc (x *FaucetResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FaucetResponse_messageType fastReflection_FaucetResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_FaucetResponse_messageType{}\n\ntype fastReflection_FaucetResponse_messageType struct{}\n\nfunc (x fastReflection_FaucetResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FaucetResponse)(nil)\n}\nfunc (x fastReflection_FaucetResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetResponse)\n}\nfunc (x fastReflection_FaucetResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FaucetResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FaucetResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_FaucetResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FaucetResponse) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FaucetResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*FaucetResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FaucetResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Txhash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Txhash)\n\t\tif !f(fd_FaucetResponse_txhash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Code != uint32(0) {\n\t\tvalue := protoreflect.ValueOfUint32(x.Code)\n\t\tif !f(fd_FaucetResponse_code, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RawLog != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RawLog)\n\t\tif !f(fd_FaucetResponse_raw_log, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_FaucetResponse_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\t\tif !f(fd_FaucetResponse_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FaucetResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\treturn x.Txhash != \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\treturn x.Code != uint32(0)\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\treturn x.RawLog != \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\treturn x.Amount != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\tx.Txhash = \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\tx.Code = uint32(0)\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\tx.RawLog = \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\tx.Amount = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FaucetResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\tvalue := x.Txhash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\tvalue := x.Code\n\t\treturn protoreflect.ValueOfUint32(value)\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\tvalue := x.RawLog\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\tx.Txhash = value.Interface().(string)\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\tx.Code = uint32(value.Uint())\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\tx.RawLog = value.Interface().(string)\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\tx.Amount = value.Message().Interface().(*v1beta1.Coin)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\tif x.Amount == nil {\n\t\t\tx.Amount = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\tpanic(fmt.Errorf(\"field txhash of message sourcehub.faucet.FaucetResponse is not mutable\"))\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\tpanic(fmt.Errorf(\"field code of message sourcehub.faucet.FaucetResponse is not mutable\"))\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\tpanic(fmt.Errorf(\"field raw_log of message sourcehub.faucet.FaucetResponse is not mutable\"))\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.FaucetResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FaucetResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetResponse.txhash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.FaucetResponse.code\":\n\t\treturn protoreflect.ValueOfUint32(uint32(0))\n\tcase \"sourcehub.faucet.FaucetResponse.raw_log\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.FaucetResponse.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.FaucetResponse.amount\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FaucetResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.FaucetResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FaucetResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FaucetResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FaucetResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FaucetResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Txhash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Code))\n\t\t}\n\t\tl = len(x.RawLog)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tl = options.Size(x.Amount)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tencoded, err := options.Marshal(x.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.RawLog) > 0 {\n\t\t\ti -= len(x.RawLog)\n\t\t\tcopy(dAtA[i:], x.RawLog)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RawLog)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Code))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Txhash) > 0 {\n\t\t\ti -= len(x.Txhash)\n\t\t\tcopy(dAtA[i:], x.Txhash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Txhash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Code = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Code |= uint32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Amount == nil {\n\t\t\t\t\tx.Amount = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_InitAccountRequest         protoreflect.MessageDescriptor\n\tfd_InitAccountRequest_address protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_InitAccountRequest = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"InitAccountRequest\")\n\tfd_InitAccountRequest_address = md_InitAccountRequest.Fields().ByName(\"address\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_InitAccountRequest)(nil)\n\ntype fastReflection_InitAccountRequest InitAccountRequest\n\nfunc (x *InitAccountRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_InitAccountRequest)(x)\n}\n\nfunc (x *InitAccountRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_InitAccountRequest_messageType fastReflection_InitAccountRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_InitAccountRequest_messageType{}\n\ntype fastReflection_InitAccountRequest_messageType struct{}\n\nfunc (x fastReflection_InitAccountRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_InitAccountRequest)(nil)\n}\nfunc (x fastReflection_InitAccountRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_InitAccountRequest)\n}\nfunc (x fastReflection_InitAccountRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_InitAccountRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_InitAccountRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_InitAccountRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_InitAccountRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_InitAccountRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_InitAccountRequest) New() protoreflect.Message {\n\treturn new(fastReflection_InitAccountRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_InitAccountRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*InitAccountRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_InitAccountRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_InitAccountRequest_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_InitAccountRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\treturn x.Address != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\tx.Address = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_InitAccountRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\tx.Address = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.InitAccountRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_InitAccountRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountRequest.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_InitAccountRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.InitAccountRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_InitAccountRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_InitAccountRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_InitAccountRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*InitAccountRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*InitAccountRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*InitAccountRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: InitAccountRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: InitAccountRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_InitAccountResponse         protoreflect.MessageDescriptor\n\tfd_InitAccountResponse_message protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_txhash  protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_code    protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_raw_log protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_address protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_amount  protoreflect.FieldDescriptor\n\tfd_InitAccountResponse_exists  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_InitAccountResponse = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"InitAccountResponse\")\n\tfd_InitAccountResponse_message = md_InitAccountResponse.Fields().ByName(\"message\")\n\tfd_InitAccountResponse_txhash = md_InitAccountResponse.Fields().ByName(\"txhash\")\n\tfd_InitAccountResponse_code = md_InitAccountResponse.Fields().ByName(\"code\")\n\tfd_InitAccountResponse_raw_log = md_InitAccountResponse.Fields().ByName(\"raw_log\")\n\tfd_InitAccountResponse_address = md_InitAccountResponse.Fields().ByName(\"address\")\n\tfd_InitAccountResponse_amount = md_InitAccountResponse.Fields().ByName(\"amount\")\n\tfd_InitAccountResponse_exists = md_InitAccountResponse.Fields().ByName(\"exists\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_InitAccountResponse)(nil)\n\ntype fastReflection_InitAccountResponse InitAccountResponse\n\nfunc (x *InitAccountResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_InitAccountResponse)(x)\n}\n\nfunc (x *InitAccountResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_InitAccountResponse_messageType fastReflection_InitAccountResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_InitAccountResponse_messageType{}\n\ntype fastReflection_InitAccountResponse_messageType struct{}\n\nfunc (x fastReflection_InitAccountResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_InitAccountResponse)(nil)\n}\nfunc (x fastReflection_InitAccountResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_InitAccountResponse)\n}\nfunc (x fastReflection_InitAccountResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_InitAccountResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_InitAccountResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_InitAccountResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_InitAccountResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_InitAccountResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_InitAccountResponse) New() protoreflect.Message {\n\treturn new(fastReflection_InitAccountResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_InitAccountResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*InitAccountResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_InitAccountResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Message != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Message)\n\t\tif !f(fd_InitAccountResponse_message, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Txhash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Txhash)\n\t\tif !f(fd_InitAccountResponse_txhash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Code != uint32(0) {\n\t\tvalue := protoreflect.ValueOfUint32(x.Code)\n\t\tif !f(fd_InitAccountResponse_code, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RawLog != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RawLog)\n\t\tif !f(fd_InitAccountResponse_raw_log, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_InitAccountResponse_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\t\tif !f(fd_InitAccountResponse_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Exists != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Exists)\n\t\tif !f(fd_InitAccountResponse_exists, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_InitAccountResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\treturn x.Message != \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\treturn x.Txhash != \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\treturn x.Code != uint32(0)\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\treturn x.RawLog != \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\treturn x.Amount != nil\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\treturn x.Exists != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\tx.Message = \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\tx.Txhash = \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\tx.Code = uint32(0)\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\tx.RawLog = \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\tx.Amount = nil\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\tx.Exists = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_InitAccountResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\tvalue := x.Message\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\tvalue := x.Txhash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\tvalue := x.Code\n\t\treturn protoreflect.ValueOfUint32(value)\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\tvalue := x.RawLog\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\tvalue := x.Exists\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\tx.Message = value.Interface().(string)\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\tx.Txhash = value.Interface().(string)\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\tx.Code = uint32(value.Uint())\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\tx.RawLog = value.Interface().(string)\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\tx.Amount = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\tx.Exists = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\tif x.Amount == nil {\n\t\t\tx.Amount = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Amount.ProtoReflect())\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\tpanic(fmt.Errorf(\"field message of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\tpanic(fmt.Errorf(\"field txhash of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\tpanic(fmt.Errorf(\"field code of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\tpanic(fmt.Errorf(\"field raw_log of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\tpanic(fmt.Errorf(\"field exists of message sourcehub.faucet.InitAccountResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_InitAccountResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.InitAccountResponse.message\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.InitAccountResponse.txhash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.InitAccountResponse.code\":\n\t\treturn protoreflect.ValueOfUint32(uint32(0))\n\tcase \"sourcehub.faucet.InitAccountResponse.raw_log\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.InitAccountResponse.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.InitAccountResponse.amount\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.InitAccountResponse.exists\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.InitAccountResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.InitAccountResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_InitAccountResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.InitAccountResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_InitAccountResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_InitAccountResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_InitAccountResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_InitAccountResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*InitAccountResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Message)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Txhash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Code))\n\t\t}\n\t\tl = len(x.RawLog)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tl = options.Size(x.Amount)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Exists {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*InitAccountResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Exists {\n\t\t\ti--\n\t\t\tif x.Exists {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x38\n\t\t}\n\t\tif x.Amount != nil {\n\t\t\tencoded, err := options.Marshal(x.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.RawLog) > 0 {\n\t\t\ti -= len(x.RawLog)\n\t\t\tcopy(dAtA[i:], x.RawLog)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RawLog)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Code))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Txhash) > 0 {\n\t\t\ti -= len(x.Txhash)\n\t\t\tcopy(dAtA[i:], x.Txhash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Txhash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Message) > 0 {\n\t\t\ti -= len(x.Message)\n\t\t\tcopy(dAtA[i:], x.Message)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Message)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*InitAccountResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: InitAccountResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: InitAccountResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Message = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Code = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Code |= uint32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Amount == nil {\n\t\t\t\t\tx.Amount = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Amount); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Exists\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Exists = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FaucetInfoResponse               protoreflect.MessageDescriptor\n\tfd_FaucetInfoResponse_address       protoreflect.FieldDescriptor\n\tfd_FaucetInfoResponse_balance       protoreflect.FieldDescriptor\n\tfd_FaucetInfoResponse_request_count protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_FaucetInfoResponse = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"FaucetInfoResponse\")\n\tfd_FaucetInfoResponse_address = md_FaucetInfoResponse.Fields().ByName(\"address\")\n\tfd_FaucetInfoResponse_balance = md_FaucetInfoResponse.Fields().ByName(\"balance\")\n\tfd_FaucetInfoResponse_request_count = md_FaucetInfoResponse.Fields().ByName(\"request_count\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FaucetInfoResponse)(nil)\n\ntype fastReflection_FaucetInfoResponse FaucetInfoResponse\n\nfunc (x *FaucetInfoResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FaucetInfoResponse)(x)\n}\n\nfunc (x *FaucetInfoResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FaucetInfoResponse_messageType fastReflection_FaucetInfoResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_FaucetInfoResponse_messageType{}\n\ntype fastReflection_FaucetInfoResponse_messageType struct{}\n\nfunc (x fastReflection_FaucetInfoResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FaucetInfoResponse)(nil)\n}\nfunc (x fastReflection_FaucetInfoResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetInfoResponse)\n}\nfunc (x fastReflection_FaucetInfoResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetInfoResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FaucetInfoResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FaucetInfoResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FaucetInfoResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_FaucetInfoResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FaucetInfoResponse) New() protoreflect.Message {\n\treturn new(fastReflection_FaucetInfoResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FaucetInfoResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*FaucetInfoResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FaucetInfoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_FaucetInfoResponse_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Balance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Balance.ProtoReflect())\n\t\tif !f(fd_FaucetInfoResponse_balance, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RequestCount != int32(0) {\n\t\tvalue := protoreflect.ValueOfInt32(x.RequestCount)\n\t\tif !f(fd_FaucetInfoResponse_request_count, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FaucetInfoResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\treturn x.Balance != nil\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\treturn x.RequestCount != int32(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetInfoResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\tx.Balance = nil\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\tx.RequestCount = int32(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FaucetInfoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\tvalue := x.Balance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\tvalue := x.RequestCount\n\t\treturn protoreflect.ValueOfInt32(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetInfoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\tx.Balance = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\tx.RequestCount = int32(value.Int())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetInfoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\tif x.Balance == nil {\n\t\t\tx.Balance = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Balance.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.FaucetInfoResponse is not mutable\"))\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\tpanic(fmt.Errorf(\"field request_count of message sourcehub.faucet.FaucetInfoResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FaucetInfoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.FaucetInfoResponse.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.FaucetInfoResponse.balance\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.FaucetInfoResponse.request_count\":\n\t\treturn protoreflect.ValueOfInt32(int32(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.FaucetInfoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.FaucetInfoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FaucetInfoResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.FaucetInfoResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FaucetInfoResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FaucetInfoResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FaucetInfoResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FaucetInfoResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FaucetInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Balance != nil {\n\t\t\tl = options.Size(x.Balance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.RequestCount != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.RequestCount))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RequestCount != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.RequestCount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif x.Balance != nil {\n\t\t\tencoded, err := options.Marshal(x.Balance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FaucetInfoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetInfoResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FaucetInfoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Balance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Balance == nil {\n\t\t\t\t\tx.Balance = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Balance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RequestCount\", wireType)\n\t\t\t\t}\n\t\t\t\tx.RequestCount = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.RequestCount |= int32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GrantAllowanceRequest              protoreflect.MessageDescriptor\n\tfd_GrantAllowanceRequest_address      protoreflect.FieldDescriptor\n\tfd_GrantAllowanceRequest_amount_limit protoreflect.FieldDescriptor\n\tfd_GrantAllowanceRequest_expiration   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_GrantAllowanceRequest = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"GrantAllowanceRequest\")\n\tfd_GrantAllowanceRequest_address = md_GrantAllowanceRequest.Fields().ByName(\"address\")\n\tfd_GrantAllowanceRequest_amount_limit = md_GrantAllowanceRequest.Fields().ByName(\"amount_limit\")\n\tfd_GrantAllowanceRequest_expiration = md_GrantAllowanceRequest.Fields().ByName(\"expiration\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GrantAllowanceRequest)(nil)\n\ntype fastReflection_GrantAllowanceRequest GrantAllowanceRequest\n\nfunc (x *GrantAllowanceRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GrantAllowanceRequest)(x)\n}\n\nfunc (x *GrantAllowanceRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GrantAllowanceRequest_messageType fastReflection_GrantAllowanceRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_GrantAllowanceRequest_messageType{}\n\ntype fastReflection_GrantAllowanceRequest_messageType struct{}\n\nfunc (x fastReflection_GrantAllowanceRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GrantAllowanceRequest)(nil)\n}\nfunc (x fastReflection_GrantAllowanceRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GrantAllowanceRequest)\n}\nfunc (x fastReflection_GrantAllowanceRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantAllowanceRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GrantAllowanceRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantAllowanceRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GrantAllowanceRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_GrantAllowanceRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GrantAllowanceRequest) New() protoreflect.Message {\n\treturn new(fastReflection_GrantAllowanceRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GrantAllowanceRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*GrantAllowanceRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GrantAllowanceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_GrantAllowanceRequest_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AmountLimit != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\t\tif !f(fd_GrantAllowanceRequest_amount_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expiration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\t\tif !f(fd_GrantAllowanceRequest_expiration, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GrantAllowanceRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\treturn x.AmountLimit != nil\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\treturn x.Expiration != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\tx.AmountLimit = nil\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\tx.Expiration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GrantAllowanceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\tvalue := x.AmountLimit\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\tvalue := x.Expiration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\tx.AmountLimit = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\tx.Expiration = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\tif x.AmountLimit == nil {\n\t\t\tx.AmountLimit = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\tif x.Expiration == nil {\n\t\t\tx.Expiration = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.faucet.GrantAllowanceRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GrantAllowanceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.amount_limit\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceRequest.expiration\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GrantAllowanceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.GrantAllowanceRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GrantAllowanceRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GrantAllowanceRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GrantAllowanceRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GrantAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tl = options.Size(x.AmountLimit)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tl = options.Size(x.Expiration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tencoded, err := options.Marshal(x.Expiration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tencoded, err := options.Marshal(x.AmountLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantAllowanceRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AmountLimit == nil {\n\t\t\t\t\tx.AmountLimit = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AmountLimit); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Expiration == nil {\n\t\t\t\t\tx.Expiration = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Expiration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GrantAllowanceResponse              protoreflect.MessageDescriptor\n\tfd_GrantAllowanceResponse_message      protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_txhash       protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_code         protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_raw_log      protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_granter      protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_grantee      protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_amount_limit protoreflect.FieldDescriptor\n\tfd_GrantAllowanceResponse_expiration   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_GrantAllowanceResponse = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"GrantAllowanceResponse\")\n\tfd_GrantAllowanceResponse_message = md_GrantAllowanceResponse.Fields().ByName(\"message\")\n\tfd_GrantAllowanceResponse_txhash = md_GrantAllowanceResponse.Fields().ByName(\"txhash\")\n\tfd_GrantAllowanceResponse_code = md_GrantAllowanceResponse.Fields().ByName(\"code\")\n\tfd_GrantAllowanceResponse_raw_log = md_GrantAllowanceResponse.Fields().ByName(\"raw_log\")\n\tfd_GrantAllowanceResponse_granter = md_GrantAllowanceResponse.Fields().ByName(\"granter\")\n\tfd_GrantAllowanceResponse_grantee = md_GrantAllowanceResponse.Fields().ByName(\"grantee\")\n\tfd_GrantAllowanceResponse_amount_limit = md_GrantAllowanceResponse.Fields().ByName(\"amount_limit\")\n\tfd_GrantAllowanceResponse_expiration = md_GrantAllowanceResponse.Fields().ByName(\"expiration\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GrantAllowanceResponse)(nil)\n\ntype fastReflection_GrantAllowanceResponse GrantAllowanceResponse\n\nfunc (x *GrantAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GrantAllowanceResponse)(x)\n}\n\nfunc (x *GrantAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GrantAllowanceResponse_messageType fastReflection_GrantAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_GrantAllowanceResponse_messageType{}\n\ntype fastReflection_GrantAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_GrantAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GrantAllowanceResponse)(nil)\n}\nfunc (x fastReflection_GrantAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GrantAllowanceResponse)\n}\nfunc (x fastReflection_GrantAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GrantAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GrantAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_GrantAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GrantAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_GrantAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GrantAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*GrantAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GrantAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Message != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Message)\n\t\tif !f(fd_GrantAllowanceResponse_message, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Txhash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Txhash)\n\t\tif !f(fd_GrantAllowanceResponse_txhash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Code != uint32(0) {\n\t\tvalue := protoreflect.ValueOfUint32(x.Code)\n\t\tif !f(fd_GrantAllowanceResponse_code, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RawLog != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RawLog)\n\t\tif !f(fd_GrantAllowanceResponse_raw_log, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_GrantAllowanceResponse_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_GrantAllowanceResponse_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AmountLimit != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\t\tif !f(fd_GrantAllowanceResponse_amount_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expiration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\t\tif !f(fd_GrantAllowanceResponse_expiration, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GrantAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\treturn x.Message != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\treturn x.Txhash != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\treturn x.Code != uint32(0)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\treturn x.RawLog != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\treturn x.Grantee != \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\treturn x.AmountLimit != nil\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\treturn x.Expiration != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\tx.Message = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\tx.Txhash = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\tx.Code = uint32(0)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\tx.RawLog = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\tx.Grantee = \"\"\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\tx.AmountLimit = nil\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\tx.Expiration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GrantAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\tvalue := x.Message\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\tvalue := x.Txhash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\tvalue := x.Code\n\t\treturn protoreflect.ValueOfUint32(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\tvalue := x.RawLog\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\tvalue := x.AmountLimit\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\tvalue := x.Expiration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\tx.Message = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\tx.Txhash = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\tx.Code = uint32(value.Uint())\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\tx.RawLog = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\tx.AmountLimit = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\tx.Expiration = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\tif x.AmountLimit == nil {\n\t\t\tx.AmountLimit = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\tif x.Expiration == nil {\n\t\t\tx.Expiration = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\tpanic(fmt.Errorf(\"field message of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\tpanic(fmt.Errorf(\"field txhash of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\tpanic(fmt.Errorf(\"field code of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\tpanic(fmt.Errorf(\"field raw_log of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.faucet.GrantAllowanceResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GrantAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.message\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.txhash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.code\":\n\t\treturn protoreflect.ValueOfUint32(uint32(0))\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.raw_log\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.amount_limit\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantAllowanceResponse.expiration\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GrantAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.GrantAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GrantAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GrantAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GrantAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Message)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Txhash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Code))\n\t\t}\n\t\tl = len(x.RawLog)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tl = options.Size(x.AmountLimit)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tl = options.Size(x.Expiration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tencoded, err := options.Marshal(x.Expiration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tencoded, err := options.Marshal(x.AmountLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.RawLog) > 0 {\n\t\t\ti -= len(x.RawLog)\n\t\t\tcopy(dAtA[i:], x.RawLog)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RawLog)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Code))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Txhash) > 0 {\n\t\t\ti -= len(x.Txhash)\n\t\t\tcopy(dAtA[i:], x.Txhash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Txhash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Message) > 0 {\n\t\t\ti -= len(x.Message)\n\t\t\tcopy(dAtA[i:], x.Message)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Message)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Message = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Code = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Code |= uint32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AmountLimit == nil {\n\t\t\t\t\tx.AmountLimit = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AmountLimit); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Expiration == nil {\n\t\t\t\t\tx.Expiration = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Expiration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GrantDIDAllowanceRequest              protoreflect.MessageDescriptor\n\tfd_GrantDIDAllowanceRequest_did          protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceRequest_amount_limit protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceRequest_expiration   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_GrantDIDAllowanceRequest = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"GrantDIDAllowanceRequest\")\n\tfd_GrantDIDAllowanceRequest_did = md_GrantDIDAllowanceRequest.Fields().ByName(\"did\")\n\tfd_GrantDIDAllowanceRequest_amount_limit = md_GrantDIDAllowanceRequest.Fields().ByName(\"amount_limit\")\n\tfd_GrantDIDAllowanceRequest_expiration = md_GrantDIDAllowanceRequest.Fields().ByName(\"expiration\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GrantDIDAllowanceRequest)(nil)\n\ntype fastReflection_GrantDIDAllowanceRequest GrantDIDAllowanceRequest\n\nfunc (x *GrantDIDAllowanceRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GrantDIDAllowanceRequest)(x)\n}\n\nfunc (x *GrantDIDAllowanceRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GrantDIDAllowanceRequest_messageType fastReflection_GrantDIDAllowanceRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_GrantDIDAllowanceRequest_messageType{}\n\ntype fastReflection_GrantDIDAllowanceRequest_messageType struct{}\n\nfunc (x fastReflection_GrantDIDAllowanceRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GrantDIDAllowanceRequest)(nil)\n}\nfunc (x fastReflection_GrantDIDAllowanceRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GrantDIDAllowanceRequest)\n}\nfunc (x fastReflection_GrantDIDAllowanceRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantDIDAllowanceRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantDIDAllowanceRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_GrantDIDAllowanceRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) New() protoreflect.Message {\n\treturn new(fastReflection_GrantDIDAllowanceRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*GrantDIDAllowanceRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Did != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Did)\n\t\tif !f(fd_GrantDIDAllowanceRequest_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AmountLimit != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\t\tif !f(fd_GrantDIDAllowanceRequest_amount_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expiration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\t\tif !f(fd_GrantDIDAllowanceRequest_expiration, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\treturn x.Did != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\treturn x.AmountLimit != nil\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\treturn x.Expiration != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\tx.Did = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\tx.AmountLimit = nil\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\tx.Expiration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\tvalue := x.Did\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\tvalue := x.AmountLimit\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\tvalue := x.Expiration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\tx.Did = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\tx.AmountLimit = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\tx.Expiration = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\tif x.AmountLimit == nil {\n\t\t\tx.AmountLimit = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\tif x.Expiration == nil {\n\t\t\tx.Expiration = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\tpanic(fmt.Errorf(\"field did of message sourcehub.faucet.GrantDIDAllowanceRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceRequest.expiration\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.GrantDIDAllowanceRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GrantDIDAllowanceRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Did)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tl = options.Size(x.AmountLimit)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tl = options.Size(x.Expiration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tencoded, err := options.Marshal(x.Expiration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tencoded, err := options.Marshal(x.AmountLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Did) > 0 {\n\t\t\ti -= len(x.Did)\n\t\t\tcopy(dAtA[i:], x.Did)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantDIDAllowanceRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantDIDAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Did\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Did = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AmountLimit == nil {\n\t\t\t\t\tx.AmountLimit = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AmountLimit); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Expiration == nil {\n\t\t\t\t\tx.Expiration = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Expiration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GrantDIDAllowanceResponse              protoreflect.MessageDescriptor\n\tfd_GrantDIDAllowanceResponse_message      protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_txhash       protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_code         protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_raw_log      protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_granter      protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_grantee_did  protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_amount_limit protoreflect.FieldDescriptor\n\tfd_GrantDIDAllowanceResponse_expiration   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_faucet_faucet_proto_init()\n\tmd_GrantDIDAllowanceResponse = File_sourcehub_faucet_faucet_proto.Messages().ByName(\"GrantDIDAllowanceResponse\")\n\tfd_GrantDIDAllowanceResponse_message = md_GrantDIDAllowanceResponse.Fields().ByName(\"message\")\n\tfd_GrantDIDAllowanceResponse_txhash = md_GrantDIDAllowanceResponse.Fields().ByName(\"txhash\")\n\tfd_GrantDIDAllowanceResponse_code = md_GrantDIDAllowanceResponse.Fields().ByName(\"code\")\n\tfd_GrantDIDAllowanceResponse_raw_log = md_GrantDIDAllowanceResponse.Fields().ByName(\"raw_log\")\n\tfd_GrantDIDAllowanceResponse_granter = md_GrantDIDAllowanceResponse.Fields().ByName(\"granter\")\n\tfd_GrantDIDAllowanceResponse_grantee_did = md_GrantDIDAllowanceResponse.Fields().ByName(\"grantee_did\")\n\tfd_GrantDIDAllowanceResponse_amount_limit = md_GrantDIDAllowanceResponse.Fields().ByName(\"amount_limit\")\n\tfd_GrantDIDAllowanceResponse_expiration = md_GrantDIDAllowanceResponse.Fields().ByName(\"expiration\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GrantDIDAllowanceResponse)(nil)\n\ntype fastReflection_GrantDIDAllowanceResponse GrantDIDAllowanceResponse\n\nfunc (x *GrantDIDAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GrantDIDAllowanceResponse)(x)\n}\n\nfunc (x *GrantDIDAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GrantDIDAllowanceResponse_messageType fastReflection_GrantDIDAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_GrantDIDAllowanceResponse_messageType{}\n\ntype fastReflection_GrantDIDAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_GrantDIDAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GrantDIDAllowanceResponse)(nil)\n}\nfunc (x fastReflection_GrantDIDAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GrantDIDAllowanceResponse)\n}\nfunc (x fastReflection_GrantDIDAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantDIDAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GrantDIDAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_GrantDIDAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_GrantDIDAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*GrantDIDAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Message != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Message)\n\t\tif !f(fd_GrantDIDAllowanceResponse_message, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Txhash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Txhash)\n\t\tif !f(fd_GrantDIDAllowanceResponse_txhash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Code != uint32(0) {\n\t\tvalue := protoreflect.ValueOfUint32(x.Code)\n\t\tif !f(fd_GrantDIDAllowanceResponse_code, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RawLog != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RawLog)\n\t\tif !f(fd_GrantDIDAllowanceResponse_raw_log, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_GrantDIDAllowanceResponse_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_GrantDIDAllowanceResponse_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AmountLimit != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\t\tif !f(fd_GrantDIDAllowanceResponse_amount_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expiration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\t\tif !f(fd_GrantDIDAllowanceResponse_expiration, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\treturn x.Message != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\treturn x.Txhash != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\treturn x.Code != uint32(0)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\treturn x.RawLog != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\treturn x.AmountLimit != nil\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\treturn x.Expiration != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\tx.Message = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\tx.Txhash = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\tx.Code = uint32(0)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\tx.RawLog = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\tx.AmountLimit = nil\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\tx.Expiration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\tvalue := x.Message\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\tvalue := x.Txhash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\tvalue := x.Code\n\t\treturn protoreflect.ValueOfUint32(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\tvalue := x.RawLog\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\tvalue := x.AmountLimit\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\tvalue := x.Expiration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\tx.Message = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\tx.Txhash = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\tx.Code = uint32(value.Uint())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\tx.RawLog = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\tx.AmountLimit = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\tx.Expiration = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\tif x.AmountLimit == nil {\n\t\t\tx.AmountLimit = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AmountLimit.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\tif x.Expiration == nil {\n\t\t\tx.Expiration = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\tpanic(fmt.Errorf(\"field message of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\tpanic(fmt.Errorf(\"field txhash of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\tpanic(fmt.Errorf(\"field code of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\tpanic(fmt.Errorf(\"field raw_log of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.faucet.GrantDIDAllowanceResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.message\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.txhash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.code\":\n\t\treturn protoreflect.ValueOfUint32(uint32(0))\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.raw_log\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.faucet.GrantDIDAllowanceResponse.expiration\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.faucet.GrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.faucet.GrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.faucet.GrantDIDAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GrantDIDAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Message)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Txhash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Code))\n\t\t}\n\t\tl = len(x.RawLog)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tl = options.Size(x.AmountLimit)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tl = options.Size(x.Expiration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tencoded, err := options.Marshal(x.Expiration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.AmountLimit != nil {\n\t\t\tencoded, err := options.Marshal(x.AmountLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.RawLog) > 0 {\n\t\t\ti -= len(x.RawLog)\n\t\t\tcopy(dAtA[i:], x.RawLog)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RawLog)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Code != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Code))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Txhash) > 0 {\n\t\t\ti -= len(x.Txhash)\n\t\t\tcopy(dAtA[i:], x.Txhash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Txhash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Message) > 0 {\n\t\t\ti -= len(x.Message)\n\t\t\tcopy(dAtA[i:], x.Message)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Message)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GrantDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Message = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Code = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Code |= uint32(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AmountLimit == nil {\n\t\t\t\t\tx.AmountLimit = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AmountLimit); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Expiration == nil {\n\t\t\t\t\tx.Expiration = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Expiration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/faucet/faucet.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// FaucetRequestRecord represents a faucet request record stored internally.\ntype FaucetRequestRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress string        `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  *v1beta1.Coin `protobuf:\"bytes,2,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\tTxHash  string        `protobuf:\"bytes,3,opt,name=tx_hash,json=txHash,proto3\" json:\"tx_hash,omitempty\"`\n}\n\nfunc (x *FaucetRequestRecord) Reset() {\n\t*x = FaucetRequestRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FaucetRequestRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FaucetRequestRecord) ProtoMessage() {}\n\n// Deprecated: Use FaucetRequestRecord.ProtoReflect.Descriptor instead.\nfunc (*FaucetRequestRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *FaucetRequestRecord) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *FaucetRequestRecord) GetAmount() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn nil\n}\n\nfunc (x *FaucetRequestRecord) GetTxHash() string {\n\tif x != nil {\n\t\treturn x.TxHash\n\t}\n\treturn \"\"\n}\n\n// FaucetRequest represents a request to get funds from the faucet.\ntype FaucetRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n}\n\nfunc (x *FaucetRequest) Reset() {\n\t*x = FaucetRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FaucetRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FaucetRequest) ProtoMessage() {}\n\n// Deprecated: Use FaucetRequest.ProtoReflect.Descriptor instead.\nfunc (*FaucetRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *FaucetRequest) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\n// FaucetResponse represents the response from a faucet request.\ntype FaucetResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tTxhash  string        `protobuf:\"bytes,1,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode    uint32        `protobuf:\"varint,2,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog  string        `protobuf:\"bytes,3,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tAddress string        `protobuf:\"bytes,4,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  *v1beta1.Coin `protobuf:\"bytes,5,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n}\n\nfunc (x *FaucetResponse) Reset() {\n\t*x = FaucetResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FaucetResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FaucetResponse) ProtoMessage() {}\n\n// Deprecated: Use FaucetResponse.ProtoReflect.Descriptor instead.\nfunc (*FaucetResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *FaucetResponse) GetTxhash() string {\n\tif x != nil {\n\t\treturn x.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (x *FaucetResponse) GetCode() uint32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *FaucetResponse) GetRawLog() string {\n\tif x != nil {\n\t\treturn x.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (x *FaucetResponse) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *FaucetResponse) GetAmount() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn nil\n}\n\n// InitAccountRequest represents a request to initialize an account.\ntype InitAccountRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n}\n\nfunc (x *InitAccountRequest) Reset() {\n\t*x = InitAccountRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *InitAccountRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*InitAccountRequest) ProtoMessage() {}\n\n// Deprecated: Use InitAccountRequest.ProtoReflect.Descriptor instead.\nfunc (*InitAccountRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *InitAccountRequest) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\n// InitAccountResponse represents the response from an account initialization request.\ntype InitAccountResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMessage string        `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash  string        `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode    uint32        `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog  string        `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tAddress string        `protobuf:\"bytes,5,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  *v1beta1.Coin `protobuf:\"bytes,6,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\tExists  bool          `protobuf:\"varint,7,opt,name=exists,proto3\" json:\"exists,omitempty\"`\n}\n\nfunc (x *InitAccountResponse) Reset() {\n\t*x = InitAccountResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *InitAccountResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*InitAccountResponse) ProtoMessage() {}\n\n// Deprecated: Use InitAccountResponse.ProtoReflect.Descriptor instead.\nfunc (*InitAccountResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *InitAccountResponse) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *InitAccountResponse) GetTxhash() string {\n\tif x != nil {\n\t\treturn x.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (x *InitAccountResponse) GetCode() uint32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *InitAccountResponse) GetRawLog() string {\n\tif x != nil {\n\t\treturn x.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (x *InitAccountResponse) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *InitAccountResponse) GetAmount() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn nil\n}\n\nfunc (x *InitAccountResponse) GetExists() bool {\n\tif x != nil {\n\t\treturn x.Exists\n\t}\n\treturn false\n}\n\n// FaucetInfoResponse represents the faucet information response.\ntype FaucetInfoResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress      string        `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tBalance      *v1beta1.Coin `protobuf:\"bytes,2,opt,name=balance,proto3\" json:\"balance,omitempty\"`\n\tRequestCount int32         `protobuf:\"varint,3,opt,name=request_count,json=requestCount,proto3\" json:\"request_count,omitempty\"`\n}\n\nfunc (x *FaucetInfoResponse) Reset() {\n\t*x = FaucetInfoResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FaucetInfoResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FaucetInfoResponse) ProtoMessage() {}\n\n// Deprecated: Use FaucetInfoResponse.ProtoReflect.Descriptor instead.\nfunc (*FaucetInfoResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *FaucetInfoResponse) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *FaucetInfoResponse) GetBalance() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Balance\n\t}\n\treturn nil\n}\n\nfunc (x *FaucetInfoResponse) GetRequestCount() int32 {\n\tif x != nil {\n\t\treturn x.RequestCount\n\t}\n\treturn 0\n}\n\n// GrantAllowanceRequest represents a request to grant fee allowance from the faucet.\ntype GrantAllowanceRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n\tAmountLimit *v1beta1.Coin `protobuf:\"bytes,2,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit,omitempty\"`\n\t// Optional expiration time. If not provided, defaults to 30 days from now\n\tExpiration *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=expiration,proto3\" json:\"expiration,omitempty\"`\n}\n\nfunc (x *GrantAllowanceRequest) Reset() {\n\t*x = GrantAllowanceRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GrantAllowanceRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrantAllowanceRequest) ProtoMessage() {}\n\n// Deprecated: Use GrantAllowanceRequest.ProtoReflect.Descriptor instead.\nfunc (*GrantAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *GrantAllowanceRequest) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceRequest) GetAmountLimit() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.AmountLimit\n\t}\n\treturn nil\n}\n\nfunc (x *GrantAllowanceRequest) GetExpiration() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Expiration\n\t}\n\treturn nil\n}\n\n// GrantAllowanceResponse represents the response from a grant allowance request.\ntype GrantAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMessage     string                 `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash      string                 `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode        uint32                 `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog      string                 `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tGranter     string                 `protobuf:\"bytes,5,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\tGrantee     string                 `protobuf:\"bytes,6,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\tAmountLimit *v1beta1.Coin          `protobuf:\"bytes,7,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit,omitempty\"`\n\tExpiration  *timestamppb.Timestamp `protobuf:\"bytes,8,opt,name=expiration,proto3\" json:\"expiration,omitempty\"`\n}\n\nfunc (x *GrantAllowanceResponse) Reset() {\n\t*x = GrantAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GrantAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrantAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use GrantAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*GrantAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *GrantAllowanceResponse) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceResponse) GetTxhash() string {\n\tif x != nil {\n\t\treturn x.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceResponse) GetCode() uint32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *GrantAllowanceResponse) GetRawLog() string {\n\tif x != nil {\n\t\treturn x.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceResponse) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceResponse) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantAllowanceResponse) GetAmountLimit() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.AmountLimit\n\t}\n\treturn nil\n}\n\nfunc (x *GrantAllowanceResponse) GetExpiration() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Expiration\n\t}\n\treturn nil\n}\n\n// GrantDIDAllowanceRequest represents a request to grant fee allowance to a DID from the faucet.\ntype GrantDIDAllowanceRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDid string `protobuf:\"bytes,1,opt,name=did,proto3\" json:\"did,omitempty\"`\n\t// Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n\tAmountLimit *v1beta1.Coin `protobuf:\"bytes,2,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit,omitempty\"`\n\t// Optional expiration time. If not provided, defaults to 30 days from now\n\tExpiration *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=expiration,proto3\" json:\"expiration,omitempty\"`\n}\n\nfunc (x *GrantDIDAllowanceRequest) Reset() {\n\t*x = GrantDIDAllowanceRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GrantDIDAllowanceRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrantDIDAllowanceRequest) ProtoMessage() {}\n\n// Deprecated: Use GrantDIDAllowanceRequest.ProtoReflect.Descriptor instead.\nfunc (*GrantDIDAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *GrantDIDAllowanceRequest) GetDid() string {\n\tif x != nil {\n\t\treturn x.Did\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceRequest) GetAmountLimit() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.AmountLimit\n\t}\n\treturn nil\n}\n\nfunc (x *GrantDIDAllowanceRequest) GetExpiration() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Expiration\n\t}\n\treturn nil\n}\n\n// GrantDIDAllowanceResponse represents the response from a DID grant allowance request.\ntype GrantDIDAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMessage     string                 `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash      string                 `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode        uint32                 `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog      string                 `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tGranter     string                 `protobuf:\"bytes,5,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\tGranteeDid  string                 `protobuf:\"bytes,6,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\tAmountLimit *v1beta1.Coin          `protobuf:\"bytes,7,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit,omitempty\"`\n\tExpiration  *timestamppb.Timestamp `protobuf:\"bytes,8,opt,name=expiration,proto3\" json:\"expiration,omitempty\"`\n}\n\nfunc (x *GrantDIDAllowanceResponse) Reset() {\n\t*x = GrantDIDAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_faucet_faucet_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GrantDIDAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GrantDIDAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use GrantDIDAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*GrantDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_faucet_faucet_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetTxhash() string {\n\tif x != nil {\n\t\treturn x.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetCode() uint32 {\n\tif x != nil {\n\t\treturn x.Code\n\t}\n\treturn 0\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetRawLog() string {\n\tif x != nil {\n\t\treturn x.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetAmountLimit() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.AmountLimit\n\t}\n\treturn nil\n}\n\nfunc (x *GrantDIDAllowanceResponse) GetExpiration() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Expiration\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_faucet_faucet_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_faucet_faucet_proto_rawDesc = []byte{\n\t0x0a, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x61, 0x75, 0x63,\n\t0x65, 0x74, 0x2f, 0x66, 0x61, 0x75, 0x63, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x61, 0x75, 0x63, 0x65,\n\t0x74, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61,\n\t0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x01, 0x0a, 0x13, 0x46, 0x61, 0x75, 0x63, 0x65,\n\t0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x18,\n\t0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,\n\t0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43,\n\t0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06,\n\t0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73,\n\t0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22,\n\t0x29, 0x0a, 0x0d, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x0e, 0x46,\n\t0x61, 0x75, 0x63, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a,\n\t0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74,\n\t0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77,\n\t0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c,\n\t0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06,\n\t0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0,\n\t0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2e, 0x0a, 0x12, 0x49, 0x6e,\n\t0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x13, 0x49,\n\t0x6e, 0x69, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06,\n\t0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78,\n\t0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f,\n\t0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f,\n\t0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x61,\n\t0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a,\n\t0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69,\n\t0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74,\n\t0x73, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,\n\t0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09,\n\t0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e,\n\t0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f,\n\t0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x15, 0x47, 0x72, 0x61, 0x6e,\n\t0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x61,\n\t0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde,\n\t0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4c,\n\t0x69, 0x6d, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69,\n\t0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb6, 0x02, 0x0a, 0x16, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74,\n\t0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x68,\n\t0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,\n\t0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c,\n\t0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67,\n\t0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x65, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c,\n\t0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01,\n\t0x52, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x40, 0x0a,\n\t0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90,\n\t0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,\n\t0xb7, 0x01, 0x0a, 0x18, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f,\n\t0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03,\n\t0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x47,\n\t0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,\n\t0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42,\n\t0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x61, 0x6d, 0x6f, 0x75,\n\t0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x65,\n\t0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc0, 0x02, 0x0a, 0x19, 0x47, 0x72,\n\t0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,\n\t0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,\n\t0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x06, 0x74, 0x78, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,\n\t0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a,\n\t0x07, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,\n\t0x72, 0x61, 0x77, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72,\n\t0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18,\n\t0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69,\n\t0x64, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69,\n\t0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f,\n\t0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x61,\n\t0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x78,\n\t0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90, 0xdf, 0x1f, 0x01,\n\t0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xa7, 0x01, 0x0a,\n\t0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66,\n\t0x61, 0x75, 0x63, 0x65, 0x74, 0x42, 0x0b, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x50, 0x01, 0x5a, 0x21, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e,\n\t0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x66, 0x61, 0x75, 0x63, 0x65, 0x74, 0xa2, 0x02, 0x03, 0x53, 0x46, 0x58, 0xaa, 0x02, 0x10,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74,\n\t0xca, 0x02, 0x10, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x61, 0x75,\n\t0x63, 0x65, 0x74, 0xe2, 0x02, 0x1c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c,\n\t0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x11, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a,\n\t0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_faucet_faucet_proto_rawDescOnce sync.Once\n\tfile_sourcehub_faucet_faucet_proto_rawDescData = file_sourcehub_faucet_faucet_proto_rawDesc\n)\n\nfunc file_sourcehub_faucet_faucet_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_faucet_faucet_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_faucet_faucet_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_faucet_faucet_proto_rawDescData)\n\t})\n\treturn file_sourcehub_faucet_faucet_proto_rawDescData\n}\n\nvar file_sourcehub_faucet_faucet_proto_msgTypes = make([]protoimpl.MessageInfo, 10)\nvar file_sourcehub_faucet_faucet_proto_goTypes = []interface{}{\n\t(*FaucetRequestRecord)(nil),       // 0: sourcehub.faucet.FaucetRequestRecord\n\t(*FaucetRequest)(nil),             // 1: sourcehub.faucet.FaucetRequest\n\t(*FaucetResponse)(nil),            // 2: sourcehub.faucet.FaucetResponse\n\t(*InitAccountRequest)(nil),        // 3: sourcehub.faucet.InitAccountRequest\n\t(*InitAccountResponse)(nil),       // 4: sourcehub.faucet.InitAccountResponse\n\t(*FaucetInfoResponse)(nil),        // 5: sourcehub.faucet.FaucetInfoResponse\n\t(*GrantAllowanceRequest)(nil),     // 6: sourcehub.faucet.GrantAllowanceRequest\n\t(*GrantAllowanceResponse)(nil),    // 7: sourcehub.faucet.GrantAllowanceResponse\n\t(*GrantDIDAllowanceRequest)(nil),  // 8: sourcehub.faucet.GrantDIDAllowanceRequest\n\t(*GrantDIDAllowanceResponse)(nil), // 9: sourcehub.faucet.GrantDIDAllowanceResponse\n\t(*v1beta1.Coin)(nil),              // 10: cosmos.base.v1beta1.Coin\n\t(*timestamppb.Timestamp)(nil),     // 11: google.protobuf.Timestamp\n}\nvar file_sourcehub_faucet_faucet_proto_depIdxs = []int32{\n\t10, // 0: sourcehub.faucet.FaucetRequestRecord.amount:type_name -> cosmos.base.v1beta1.Coin\n\t10, // 1: sourcehub.faucet.FaucetResponse.amount:type_name -> cosmos.base.v1beta1.Coin\n\t10, // 2: sourcehub.faucet.InitAccountResponse.amount:type_name -> cosmos.base.v1beta1.Coin\n\t10, // 3: sourcehub.faucet.FaucetInfoResponse.balance:type_name -> cosmos.base.v1beta1.Coin\n\t10, // 4: sourcehub.faucet.GrantAllowanceRequest.amount_limit:type_name -> cosmos.base.v1beta1.Coin\n\t11, // 5: sourcehub.faucet.GrantAllowanceRequest.expiration:type_name -> google.protobuf.Timestamp\n\t10, // 6: sourcehub.faucet.GrantAllowanceResponse.amount_limit:type_name -> cosmos.base.v1beta1.Coin\n\t11, // 7: sourcehub.faucet.GrantAllowanceResponse.expiration:type_name -> google.protobuf.Timestamp\n\t10, // 8: sourcehub.faucet.GrantDIDAllowanceRequest.amount_limit:type_name -> cosmos.base.v1beta1.Coin\n\t11, // 9: sourcehub.faucet.GrantDIDAllowanceRequest.expiration:type_name -> google.protobuf.Timestamp\n\t10, // 10: sourcehub.faucet.GrantDIDAllowanceResponse.amount_limit:type_name -> cosmos.base.v1beta1.Coin\n\t11, // 11: sourcehub.faucet.GrantDIDAllowanceResponse.expiration:type_name -> google.protobuf.Timestamp\n\t12, // [12:12] is the sub-list for method output_type\n\t12, // [12:12] is the sub-list for method input_type\n\t12, // [12:12] is the sub-list for extension type_name\n\t12, // [12:12] is the sub-list for extension extendee\n\t0,  // [0:12] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_faucet_faucet_proto_init() }\nfunc file_sourcehub_faucet_faucet_proto_init() {\n\tif File_sourcehub_faucet_faucet_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FaucetRequestRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FaucetRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FaucetResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*InitAccountRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*InitAccountResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FaucetInfoResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GrantAllowanceRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GrantAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GrantDIDAllowanceRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_faucet_faucet_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GrantDIDAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_faucet_faucet_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   10,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_faucet_faucet_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_faucet_faucet_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_faucet_faucet_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_faucet_faucet_proto = out.File\n\tfile_sourcehub_faucet_faucet_proto_rawDesc = nil\n\tfile_sourcehub_faucet_faucet_proto_goTypes = nil\n\tfile_sourcehub_faucet_faucet_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/module/v1/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage modulev1\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Module protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_module_v1_module_proto_init()\n\tmd_Module = File_sourcehub_feegrant_module_v1_module_proto.Messages().ByName(\"Module\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_module_v1_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.module.v1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.module.v1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.module.v1.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/feegrant/module/v1/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object of the feegrant module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_module_v1_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_module_v1_module_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_sourcehub_feegrant_module_v1_module_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_feegrant_module_v1_module_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3f, 0x0a, 0x06, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x35, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2f, 0x0a, 0x2d, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x78, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x42, 0xfa, 0x01, 0x0a,\n\t0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76,\n\t0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x46, 0x4d, 0xaa, 0x02,\n\t0x1c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x46, 0x65, 0x65, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1c,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x28, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d,\n\t0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x3a, 0x3a, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x3a, 0x3a, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_sourcehub_feegrant_module_v1_module_proto_rawDescOnce sync.Once\n\tfile_sourcehub_feegrant_module_v1_module_proto_rawDescData = file_sourcehub_feegrant_module_v1_module_proto_rawDesc\n)\n\nfunc file_sourcehub_feegrant_module_v1_module_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_feegrant_module_v1_module_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_feegrant_module_v1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_feegrant_module_v1_module_proto_rawDescData)\n\t})\n\treturn file_sourcehub_feegrant_module_v1_module_proto_rawDescData\n}\n\nvar file_sourcehub_feegrant_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_feegrant_module_v1_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: sourcehub.feegrant.module.v1.Module\n}\nvar file_sourcehub_feegrant_module_v1_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_feegrant_module_v1_module_proto_init() }\nfunc file_sourcehub_feegrant_module_v1_module_proto_init() {\n\tif File_sourcehub_feegrant_module_v1_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_feegrant_module_v1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_feegrant_module_v1_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_feegrant_module_v1_module_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_feegrant_module_v1_module_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_feegrant_module_v1_module_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_feegrant_module_v1_module_proto = out.File\n\tfile_sourcehub_feegrant_module_v1_module_proto_rawDesc = nil\n\tfile_sourcehub_feegrant_module_v1_module_proto_goTypes = nil\n\tfile_sourcehub_feegrant_module_v1_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/feegrant.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage feegrantv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/v1beta1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_BasicAllowance_1_list)(nil)\n\ntype _BasicAllowance_1_list struct {\n\tlist *[]*v1beta1.Coin\n}\n\nfunc (x *_BasicAllowance_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_BasicAllowance_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_BasicAllowance_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_BasicAllowance_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_BasicAllowance_1_list) AppendMutable() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_BasicAllowance_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_BasicAllowance_1_list) NewElement() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_BasicAllowance_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_BasicAllowance             protoreflect.MessageDescriptor\n\tfd_BasicAllowance_spend_limit protoreflect.FieldDescriptor\n\tfd_BasicAllowance_expiration  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tmd_BasicAllowance = File_sourcehub_feegrant_v1beta1_feegrant_proto.Messages().ByName(\"BasicAllowance\")\n\tfd_BasicAllowance_spend_limit = md_BasicAllowance.Fields().ByName(\"spend_limit\")\n\tfd_BasicAllowance_expiration = md_BasicAllowance.Fields().ByName(\"expiration\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_BasicAllowance)(nil)\n\ntype fastReflection_BasicAllowance BasicAllowance\n\nfunc (x *BasicAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_BasicAllowance)(x)\n}\n\nfunc (x *BasicAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_BasicAllowance_messageType fastReflection_BasicAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_BasicAllowance_messageType{}\n\ntype fastReflection_BasicAllowance_messageType struct{}\n\nfunc (x fastReflection_BasicAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_BasicAllowance)(nil)\n}\nfunc (x fastReflection_BasicAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_BasicAllowance)\n}\nfunc (x fastReflection_BasicAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_BasicAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_BasicAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_BasicAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_BasicAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_BasicAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_BasicAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_BasicAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_BasicAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*BasicAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_BasicAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.SpendLimit) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_BasicAllowance_1_list{list: &x.SpendLimit})\n\t\tif !f(fd_BasicAllowance_spend_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expiration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\t\tif !f(fd_BasicAllowance_expiration, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_BasicAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\treturn len(x.SpendLimit) != 0\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\treturn x.Expiration != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_BasicAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\tx.SpendLimit = nil\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\tx.Expiration = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_BasicAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\tif len(x.SpendLimit) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_BasicAllowance_1_list{})\n\t\t}\n\t\tlistValue := &_BasicAllowance_1_list{list: &x.SpendLimit}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\tvalue := x.Expiration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_BasicAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_BasicAllowance_1_list)\n\t\tx.SpendLimit = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\tx.Expiration = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_BasicAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\tif x.SpendLimit == nil {\n\t\t\tx.SpendLimit = []*v1beta1.Coin{}\n\t\t}\n\t\tvalue := &_BasicAllowance_1_list{list: &x.SpendLimit}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\tif x.Expiration == nil {\n\t\t\tx.Expiration = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Expiration.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_BasicAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit\":\n\t\tlist := []*v1beta1.Coin{}\n\t\treturn protoreflect.ValueOfList(&_BasicAllowance_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.BasicAllowance.expiration\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.BasicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.BasicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_BasicAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.BasicAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_BasicAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_BasicAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_BasicAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_BasicAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*BasicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.SpendLimit) > 0 {\n\t\t\tfor _, e := range x.SpendLimit {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tl = options.Size(x.Expiration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*BasicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Expiration != nil {\n\t\t\tencoded, err := options.Marshal(x.Expiration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.SpendLimit) > 0 {\n\t\t\tfor iNdEx := len(x.SpendLimit) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.SpendLimit[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*BasicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: BasicAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: BasicAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field SpendLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.SpendLimit = append(x.SpendLimit, &v1beta1.Coin{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.SpendLimit[len(x.SpendLimit)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Expiration == nil {\n\t\t\t\t\tx.Expiration = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Expiration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_PeriodicAllowance_3_list)(nil)\n\ntype _PeriodicAllowance_3_list struct {\n\tlist *[]*v1beta1.Coin\n}\n\nfunc (x *_PeriodicAllowance_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_PeriodicAllowance_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_PeriodicAllowance_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_PeriodicAllowance_3_list) AppendMutable() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_PeriodicAllowance_3_list) NewElement() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_PeriodicAllowance_4_list)(nil)\n\ntype _PeriodicAllowance_4_list struct {\n\tlist *[]*v1beta1.Coin\n}\n\nfunc (x *_PeriodicAllowance_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_PeriodicAllowance_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_PeriodicAllowance_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*v1beta1.Coin)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_PeriodicAllowance_4_list) AppendMutable() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_4_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_PeriodicAllowance_4_list) NewElement() protoreflect.Value {\n\tv := new(v1beta1.Coin)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PeriodicAllowance_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_PeriodicAllowance                    protoreflect.MessageDescriptor\n\tfd_PeriodicAllowance_basic              protoreflect.FieldDescriptor\n\tfd_PeriodicAllowance_period             protoreflect.FieldDescriptor\n\tfd_PeriodicAllowance_period_spend_limit protoreflect.FieldDescriptor\n\tfd_PeriodicAllowance_period_can_spend   protoreflect.FieldDescriptor\n\tfd_PeriodicAllowance_period_reset       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tmd_PeriodicAllowance = File_sourcehub_feegrant_v1beta1_feegrant_proto.Messages().ByName(\"PeriodicAllowance\")\n\tfd_PeriodicAllowance_basic = md_PeriodicAllowance.Fields().ByName(\"basic\")\n\tfd_PeriodicAllowance_period = md_PeriodicAllowance.Fields().ByName(\"period\")\n\tfd_PeriodicAllowance_period_spend_limit = md_PeriodicAllowance.Fields().ByName(\"period_spend_limit\")\n\tfd_PeriodicAllowance_period_can_spend = md_PeriodicAllowance.Fields().ByName(\"period_can_spend\")\n\tfd_PeriodicAllowance_period_reset = md_PeriodicAllowance.Fields().ByName(\"period_reset\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PeriodicAllowance)(nil)\n\ntype fastReflection_PeriodicAllowance PeriodicAllowance\n\nfunc (x *PeriodicAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PeriodicAllowance)(x)\n}\n\nfunc (x *PeriodicAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PeriodicAllowance_messageType fastReflection_PeriodicAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_PeriodicAllowance_messageType{}\n\ntype fastReflection_PeriodicAllowance_messageType struct{}\n\nfunc (x fastReflection_PeriodicAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PeriodicAllowance)(nil)\n}\nfunc (x fastReflection_PeriodicAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PeriodicAllowance)\n}\nfunc (x fastReflection_PeriodicAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PeriodicAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PeriodicAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PeriodicAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PeriodicAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_PeriodicAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PeriodicAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_PeriodicAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PeriodicAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*PeriodicAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PeriodicAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Basic != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Basic.ProtoReflect())\n\t\tif !f(fd_PeriodicAllowance_basic, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Period != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Period.ProtoReflect())\n\t\tif !f(fd_PeriodicAllowance_period, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.PeriodSpendLimit) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_PeriodicAllowance_3_list{list: &x.PeriodSpendLimit})\n\t\tif !f(fd_PeriodicAllowance_period_spend_limit, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.PeriodCanSpend) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_PeriodicAllowance_4_list{list: &x.PeriodCanSpend})\n\t\tif !f(fd_PeriodicAllowance_period_can_spend, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PeriodReset != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.PeriodReset.ProtoReflect())\n\t\tif !f(fd_PeriodicAllowance_period_reset, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PeriodicAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\treturn x.Basic != nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\treturn x.Period != nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\treturn len(x.PeriodSpendLimit) != 0\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\treturn len(x.PeriodCanSpend) != 0\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\treturn x.PeriodReset != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PeriodicAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\tx.Basic = nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\tx.Period = nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\tx.PeriodSpendLimit = nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\tx.PeriodCanSpend = nil\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\tx.PeriodReset = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PeriodicAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\tvalue := x.Basic\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\tvalue := x.Period\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\tif len(x.PeriodSpendLimit) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_PeriodicAllowance_3_list{})\n\t\t}\n\t\tlistValue := &_PeriodicAllowance_3_list{list: &x.PeriodSpendLimit}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\tif len(x.PeriodCanSpend) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_PeriodicAllowance_4_list{})\n\t\t}\n\t\tlistValue := &_PeriodicAllowance_4_list{list: &x.PeriodCanSpend}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\tvalue := x.PeriodReset\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PeriodicAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\tx.Basic = value.Message().Interface().(*BasicAllowance)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\tx.Period = value.Message().Interface().(*durationpb.Duration)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_PeriodicAllowance_3_list)\n\t\tx.PeriodSpendLimit = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_PeriodicAllowance_4_list)\n\t\tx.PeriodCanSpend = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\tx.PeriodReset = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PeriodicAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\tif x.Basic == nil {\n\t\t\tx.Basic = new(BasicAllowance)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Basic.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\tif x.Period == nil {\n\t\t\tx.Period = new(durationpb.Duration)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Period.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\tif x.PeriodSpendLimit == nil {\n\t\t\tx.PeriodSpendLimit = []*v1beta1.Coin{}\n\t\t}\n\t\tvalue := &_PeriodicAllowance_3_list{list: &x.PeriodSpendLimit}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\tif x.PeriodCanSpend == nil {\n\t\t\tx.PeriodCanSpend = []*v1beta1.Coin{}\n\t\t}\n\t\tvalue := &_PeriodicAllowance_4_list{list: &x.PeriodCanSpend}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\tif x.PeriodReset == nil {\n\t\t\tx.PeriodReset = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.PeriodReset.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PeriodicAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.basic\":\n\t\tm := new(BasicAllowance)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period\":\n\t\tm := new(durationpb.Duration)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit\":\n\t\tlist := []*v1beta1.Coin{}\n\t\treturn protoreflect.ValueOfList(&_PeriodicAllowance_3_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend\":\n\t\tlist := []*v1beta1.Coin{}\n\t\treturn protoreflect.ValueOfList(&_PeriodicAllowance_4_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.PeriodicAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.PeriodicAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PeriodicAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.PeriodicAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PeriodicAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PeriodicAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PeriodicAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PeriodicAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PeriodicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Basic != nil {\n\t\t\tl = options.Size(x.Basic)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Period != nil {\n\t\t\tl = options.Size(x.Period)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.PeriodSpendLimit) > 0 {\n\t\t\tfor _, e := range x.PeriodSpendLimit {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.PeriodCanSpend) > 0 {\n\t\t\tfor _, e := range x.PeriodCanSpend {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.PeriodReset != nil {\n\t\t\tl = options.Size(x.PeriodReset)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PeriodicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.PeriodReset != nil {\n\t\t\tencoded, err := options.Marshal(x.PeriodReset)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.PeriodCanSpend) > 0 {\n\t\t\tfor iNdEx := len(x.PeriodCanSpend) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.PeriodCanSpend[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.PeriodSpendLimit) > 0 {\n\t\t\tfor iNdEx := len(x.PeriodSpendLimit) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.PeriodSpendLimit[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif x.Period != nil {\n\t\t\tencoded, err := options.Marshal(x.Period)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Basic != nil {\n\t\t\tencoded, err := options.Marshal(x.Basic)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PeriodicAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PeriodicAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PeriodicAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Basic\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Basic == nil {\n\t\t\t\t\tx.Basic = &BasicAllowance{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Basic); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Period == nil {\n\t\t\t\t\tx.Period = &durationpb.Duration{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Period); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PeriodSpendLimit\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PeriodSpendLimit = append(x.PeriodSpendLimit, &v1beta1.Coin{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PeriodSpendLimit[len(x.PeriodSpendLimit)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PeriodCanSpend\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PeriodCanSpend = append(x.PeriodCanSpend, &v1beta1.Coin{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PeriodCanSpend[len(x.PeriodCanSpend)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PeriodReset\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.PeriodReset == nil {\n\t\t\t\t\tx.PeriodReset = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PeriodReset); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_AllowedMsgAllowance_2_list)(nil)\n\ntype _AllowedMsgAllowance_2_list struct {\n\tlist *[]string\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message AllowedMsgAllowance at list field AllowedMessages as it is not of Message kind\"))\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_AllowedMsgAllowance_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_AllowedMsgAllowance                  protoreflect.MessageDescriptor\n\tfd_AllowedMsgAllowance_allowance        protoreflect.FieldDescriptor\n\tfd_AllowedMsgAllowance_allowed_messages protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tmd_AllowedMsgAllowance = File_sourcehub_feegrant_v1beta1_feegrant_proto.Messages().ByName(\"AllowedMsgAllowance\")\n\tfd_AllowedMsgAllowance_allowance = md_AllowedMsgAllowance.Fields().ByName(\"allowance\")\n\tfd_AllowedMsgAllowance_allowed_messages = md_AllowedMsgAllowance.Fields().ByName(\"allowed_messages\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AllowedMsgAllowance)(nil)\n\ntype fastReflection_AllowedMsgAllowance AllowedMsgAllowance\n\nfunc (x *AllowedMsgAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AllowedMsgAllowance)(x)\n}\n\nfunc (x *AllowedMsgAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AllowedMsgAllowance_messageType fastReflection_AllowedMsgAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_AllowedMsgAllowance_messageType{}\n\ntype fastReflection_AllowedMsgAllowance_messageType struct{}\n\nfunc (x fastReflection_AllowedMsgAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AllowedMsgAllowance)(nil)\n}\nfunc (x fastReflection_AllowedMsgAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AllowedMsgAllowance)\n}\nfunc (x fastReflection_AllowedMsgAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AllowedMsgAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AllowedMsgAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AllowedMsgAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AllowedMsgAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_AllowedMsgAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AllowedMsgAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_AllowedMsgAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AllowedMsgAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*AllowedMsgAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AllowedMsgAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_AllowedMsgAllowance_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.AllowedMessages) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_AllowedMsgAllowance_2_list{list: &x.AllowedMessages})\n\t\tif !f(fd_AllowedMsgAllowance_allowed_messages, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AllowedMsgAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\treturn x.Allowance != nil\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\treturn len(x.AllowedMessages) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllowedMsgAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\tx.Allowance = nil\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\tx.AllowedMessages = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AllowedMsgAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\tif len(x.AllowedMessages) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_AllowedMsgAllowance_2_list{})\n\t\t}\n\t\tlistValue := &_AllowedMsgAllowance_2_list{list: &x.AllowedMessages}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllowedMsgAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*anypb.Any)\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_AllowedMsgAllowance_2_list)\n\t\tx.AllowedMessages = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllowedMsgAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(anypb.Any)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\tif x.AllowedMessages == nil {\n\t\t\tx.AllowedMessages = []string{}\n\t\t}\n\t\tvalue := &_AllowedMsgAllowance_2_list{list: &x.AllowedMessages}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AllowedMsgAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance\":\n\t\tm := new(anypb.Any)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowed_messages\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_AllowedMsgAllowance_2_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.AllowedMsgAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AllowedMsgAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.AllowedMsgAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AllowedMsgAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllowedMsgAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AllowedMsgAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AllowedMsgAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AllowedMsgAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.AllowedMessages) > 0 {\n\t\t\tfor _, s := range x.AllowedMessages {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AllowedMsgAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.AllowedMessages) > 0 {\n\t\t\tfor iNdEx := len(x.AllowedMessages) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.AllowedMessages[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.AllowedMessages[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.AllowedMessages[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AllowedMsgAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AllowedMsgAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AllowedMsgAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &anypb.Any{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AllowedMessages\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.AllowedMessages = append(x.AllowedMessages, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Grant           protoreflect.MessageDescriptor\n\tfd_Grant_granter   protoreflect.FieldDescriptor\n\tfd_Grant_grantee   protoreflect.FieldDescriptor\n\tfd_Grant_allowance protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tmd_Grant = File_sourcehub_feegrant_v1beta1_feegrant_proto.Messages().ByName(\"Grant\")\n\tfd_Grant_granter = md_Grant.Fields().ByName(\"granter\")\n\tfd_Grant_grantee = md_Grant.Fields().ByName(\"grantee\")\n\tfd_Grant_allowance = md_Grant.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Grant)(nil)\n\ntype fastReflection_Grant Grant\n\nfunc (x *Grant) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Grant)(x)\n}\n\nfunc (x *Grant) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Grant_messageType fastReflection_Grant_messageType\nvar _ protoreflect.MessageType = fastReflection_Grant_messageType{}\n\ntype fastReflection_Grant_messageType struct{}\n\nfunc (x fastReflection_Grant_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Grant)(nil)\n}\nfunc (x fastReflection_Grant_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Grant)\n}\nfunc (x fastReflection_Grant_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Grant\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Grant) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Grant\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Grant) Type() protoreflect.MessageType {\n\treturn _fastReflection_Grant_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Grant) New() protoreflect.Message {\n\treturn new(fastReflection_Grant)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Grant) Interface() protoreflect.ProtoMessage {\n\treturn (*Grant)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Grant) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_Grant_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_Grant_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_Grant_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Grant) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\treturn x.Grantee != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Grant) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\tx.Grantee = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Grant) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Grant) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*anypb.Any)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Grant) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(anypb.Any)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.Grant is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.feegrant.v1beta1.Grant is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Grant) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.Grant.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.Grant.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.Grant.allowance\":\n\t\tm := new(anypb.Any)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.Grant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.Grant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Grant) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.Grant\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Grant) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Grant) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Grant) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Grant) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Grant)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Grant)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Grant)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Grant: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Grant: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &anypb.Any{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DIDGrant             protoreflect.MessageDescriptor\n\tfd_DIDGrant_granter     protoreflect.FieldDescriptor\n\tfd_DIDGrant_grantee_did protoreflect.FieldDescriptor\n\tfd_DIDGrant_allowance   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tmd_DIDGrant = File_sourcehub_feegrant_v1beta1_feegrant_proto.Messages().ByName(\"DIDGrant\")\n\tfd_DIDGrant_granter = md_DIDGrant.Fields().ByName(\"granter\")\n\tfd_DIDGrant_grantee_did = md_DIDGrant.Fields().ByName(\"grantee_did\")\n\tfd_DIDGrant_allowance = md_DIDGrant.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DIDGrant)(nil)\n\ntype fastReflection_DIDGrant DIDGrant\n\nfunc (x *DIDGrant) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DIDGrant)(x)\n}\n\nfunc (x *DIDGrant) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DIDGrant_messageType fastReflection_DIDGrant_messageType\nvar _ protoreflect.MessageType = fastReflection_DIDGrant_messageType{}\n\ntype fastReflection_DIDGrant_messageType struct{}\n\nfunc (x fastReflection_DIDGrant_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DIDGrant)(nil)\n}\nfunc (x fastReflection_DIDGrant_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DIDGrant)\n}\nfunc (x fastReflection_DIDGrant_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DIDGrant\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DIDGrant) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DIDGrant\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DIDGrant) Type() protoreflect.MessageType {\n\treturn _fastReflection_DIDGrant_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DIDGrant) New() protoreflect.Message {\n\treturn new(fastReflection_DIDGrant)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DIDGrant) Interface() protoreflect.ProtoMessage {\n\treturn (*DIDGrant)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DIDGrant) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_DIDGrant_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_DIDGrant_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_DIDGrant_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DIDGrant) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DIDGrant) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DIDGrant) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DIDGrant) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*anypb.Any)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DIDGrant) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(anypb.Any)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.DIDGrant is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.DIDGrant is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DIDGrant) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.DIDGrant.allowance\":\n\t\tm := new(anypb.Any)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.DIDGrant\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.DIDGrant does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DIDGrant) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.DIDGrant\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DIDGrant) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DIDGrant) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DIDGrant) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DIDGrant) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DIDGrant)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DIDGrant)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DIDGrant)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DIDGrant: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DIDGrant: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &anypb.Any{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/feegrant/v1beta1/feegrant.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// BasicAllowance implements Allowance with a one-time grant of coins\n// that optionally expires. The grantee can use up to SpendLimit to cover fees.\ntype BasicAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// spend_limit specifies the maximum amount of coins that can be spent\n\t// by this allowance and will be updated as coins are spent. If it is\n\t// empty, there is no spend limit and any amount of coins can be spent.\n\tSpendLimit []*v1beta1.Coin `protobuf:\"bytes,1,rep,name=spend_limit,json=spendLimit,proto3\" json:\"spend_limit,omitempty\"`\n\t// expiration specifies an optional time when this allowance expires\n\tExpiration *timestamppb.Timestamp `protobuf:\"bytes,2,opt,name=expiration,proto3\" json:\"expiration,omitempty\"`\n}\n\nfunc (x *BasicAllowance) Reset() {\n\t*x = BasicAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *BasicAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*BasicAllowance) ProtoMessage() {}\n\n// Deprecated: Use BasicAllowance.ProtoReflect.Descriptor instead.\nfunc (*BasicAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *BasicAllowance) GetSpendLimit() []*v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.SpendLimit\n\t}\n\treturn nil\n}\n\nfunc (x *BasicAllowance) GetExpiration() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.Expiration\n\t}\n\treturn nil\n}\n\n// PeriodicAllowance extends Allowance to allow for both a maximum cap,\n// as well as a limit per time period.\ntype PeriodicAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// basic specifies a struct of `BasicAllowance`\n\tBasic *BasicAllowance `protobuf:\"bytes,1,opt,name=basic,proto3\" json:\"basic,omitempty\"`\n\t// period specifies the time duration in which period_spend_limit coins can\n\t// be spent before that allowance is reset\n\tPeriod *durationpb.Duration `protobuf:\"bytes,2,opt,name=period,proto3\" json:\"period,omitempty\"`\n\t// period_spend_limit specifies the maximum number of coins that can be spent\n\t// in the period\n\tPeriodSpendLimit []*v1beta1.Coin `protobuf:\"bytes,3,rep,name=period_spend_limit,json=periodSpendLimit,proto3\" json:\"period_spend_limit,omitempty\"`\n\t// period_can_spend is the number of coins left to be spent before the period_reset time\n\tPeriodCanSpend []*v1beta1.Coin `protobuf:\"bytes,4,rep,name=period_can_spend,json=periodCanSpend,proto3\" json:\"period_can_spend,omitempty\"`\n\t// period_reset is the time at which this period resets and a new one begins,\n\t// it is calculated from the start time of the first transaction after the\n\t// last period ended\n\tPeriodReset *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=period_reset,json=periodReset,proto3\" json:\"period_reset,omitempty\"`\n}\n\nfunc (x *PeriodicAllowance) Reset() {\n\t*x = PeriodicAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PeriodicAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PeriodicAllowance) ProtoMessage() {}\n\n// Deprecated: Use PeriodicAllowance.ProtoReflect.Descriptor instead.\nfunc (*PeriodicAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *PeriodicAllowance) GetBasic() *BasicAllowance {\n\tif x != nil {\n\t\treturn x.Basic\n\t}\n\treturn nil\n}\n\nfunc (x *PeriodicAllowance) GetPeriod() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn nil\n}\n\nfunc (x *PeriodicAllowance) GetPeriodSpendLimit() []*v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.PeriodSpendLimit\n\t}\n\treturn nil\n}\n\nfunc (x *PeriodicAllowance) GetPeriodCanSpend() []*v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.PeriodCanSpend\n\t}\n\treturn nil\n}\n\nfunc (x *PeriodicAllowance) GetPeriodReset() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.PeriodReset\n\t}\n\treturn nil\n}\n\n// AllowedMsgAllowance creates allowance only for specified message types.\ntype AllowedMsgAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowance can be any of basic and periodic fee allowance.\n\tAllowance *anypb.Any `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n\t// allowed_messages are the messages for which the grantee has the access.\n\tAllowedMessages []string `protobuf:\"bytes,2,rep,name=allowed_messages,json=allowedMessages,proto3\" json:\"allowed_messages,omitempty\"`\n}\n\nfunc (x *AllowedMsgAllowance) Reset() {\n\t*x = AllowedMsgAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AllowedMsgAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AllowedMsgAllowance) ProtoMessage() {}\n\n// Deprecated: Use AllowedMsgAllowance.ProtoReflect.Descriptor instead.\nfunc (*AllowedMsgAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *AllowedMsgAllowance) GetAllowance() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\nfunc (x *AllowedMsgAllowance) GetAllowedMessages() []string {\n\tif x != nil {\n\t\treturn x.AllowedMessages\n\t}\n\treturn nil\n}\n\n// Grant is stored in the KVStore to record a grant with full context\ntype Grant struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *anypb.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *Grant) Reset() {\n\t*x = Grant{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Grant) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Grant) ProtoMessage() {}\n\n// Deprecated: Use Grant.ProtoReflect.Descriptor instead.\nfunc (*Grant) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Grant) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *Grant) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (x *Grant) GetAllowance() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\n// DIDGrant is stored in the KVStore to record a grant with DID as grantee\ntype DIDGrant struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID of the user being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *anypb.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *DIDGrant) Reset() {\n\t*x = DIDGrant{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DIDGrant) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DIDGrant) ProtoMessage() {}\n\n// Deprecated: Use DIDGrant.ProtoReflect.Descriptor instead.\nfunc (*DIDGrant) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *DIDGrant) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *DIDGrant) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *DIDGrant) GetAllowance() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_feegrant_v1beta1_feegrant_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x66, 0x65, 0x65,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61,\n\t0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x02, 0x0a, 0x0e, 0x42, 0x61, 0x73, 0x69,\n\t0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x73,\n\t0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f,\n\t0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64,\n\t0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0,\n\t0x2a, 0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,\n\t0x40, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,\n\t0x04, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x3a, 0x4a, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x8a,\n\t0xe7, 0xb0, 0x2a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x42,\n\t0x61, 0x73, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xdf, 0x04,\n\t0x0a, 0x11, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x09,\n\t0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63,\n\t0x12, 0x40, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0xc8, 0xde, 0x1f,\n\t0x00, 0x98, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69,\n\t0x6f, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x70,\n\t0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00,\n\t0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b,\n\t0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a,\n\t0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0,\n\t0x2a, 0x01, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x4c,\n\t0x69, 0x6d, 0x69, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f,\n\t0x63, 0x61, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00,\n\t0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b,\n\t0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x9a, 0xe7, 0xb0, 0x2a,\n\t0x0c, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0xa8, 0xe7, 0xb0,\n\t0x2a, 0x01, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x61, 0x6e, 0x53, 0x70, 0x65,\n\t0x6e, 0x64, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x72, 0x65, 0x73,\n\t0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x65, 0x74,\n\t0x3a, 0x4d, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x8a, 0xe7,\n\t0xb0, 0x2a, 0x1c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x50, 0x65,\n\t0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22,\n\t0xf7, 0x01, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79,\n\t0x42, 0x2c, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x52, 0x09,\n\t0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20,\n\t0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,\n\t0x61, 0x67, 0x65, 0x73, 0x3a, 0x53, 0x88, 0xa0, 0x1f, 0x00, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f,\n\t0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4d, 0x73, 0x67,\n\t0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x05, 0x47, 0x72,\n\t0x61, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x61,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x41, 0x6e, 0x79, 0x42, 0x2c, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x49, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xc1, 0x01,\n\t0x0a, 0x08, 0x44, 0x49, 0x44, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d,\n\t0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,\n\t0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1f,\n\t0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x12,\n\t0x60, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x2c, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f,\n\t0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x42, 0xf6, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x42, 0x0d, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x3b, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x46, 0x58, 0xaa, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0xe2, 0x02, 0x26, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescOnce sync.Once\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescData = file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDesc\n)\n\nfunc file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescData)\n\t})\n\treturn file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDescData\n}\n\nvar file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_sourcehub_feegrant_v1beta1_feegrant_proto_goTypes = []interface{}{\n\t(*BasicAllowance)(nil),        // 0: sourcehub.feegrant.v1beta1.BasicAllowance\n\t(*PeriodicAllowance)(nil),     // 1: sourcehub.feegrant.v1beta1.PeriodicAllowance\n\t(*AllowedMsgAllowance)(nil),   // 2: sourcehub.feegrant.v1beta1.AllowedMsgAllowance\n\t(*Grant)(nil),                 // 3: sourcehub.feegrant.v1beta1.Grant\n\t(*DIDGrant)(nil),              // 4: sourcehub.feegrant.v1beta1.DIDGrant\n\t(*v1beta1.Coin)(nil),          // 5: cosmos.base.v1beta1.Coin\n\t(*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp\n\t(*durationpb.Duration)(nil),   // 7: google.protobuf.Duration\n\t(*anypb.Any)(nil),             // 8: google.protobuf.Any\n}\nvar file_sourcehub_feegrant_v1beta1_feegrant_proto_depIdxs = []int32{\n\t5,  // 0: sourcehub.feegrant.v1beta1.BasicAllowance.spend_limit:type_name -> cosmos.base.v1beta1.Coin\n\t6,  // 1: sourcehub.feegrant.v1beta1.BasicAllowance.expiration:type_name -> google.protobuf.Timestamp\n\t0,  // 2: sourcehub.feegrant.v1beta1.PeriodicAllowance.basic:type_name -> sourcehub.feegrant.v1beta1.BasicAllowance\n\t7,  // 3: sourcehub.feegrant.v1beta1.PeriodicAllowance.period:type_name -> google.protobuf.Duration\n\t5,  // 4: sourcehub.feegrant.v1beta1.PeriodicAllowance.period_spend_limit:type_name -> cosmos.base.v1beta1.Coin\n\t5,  // 5: sourcehub.feegrant.v1beta1.PeriodicAllowance.period_can_spend:type_name -> cosmos.base.v1beta1.Coin\n\t6,  // 6: sourcehub.feegrant.v1beta1.PeriodicAllowance.period_reset:type_name -> google.protobuf.Timestamp\n\t8,  // 7: sourcehub.feegrant.v1beta1.AllowedMsgAllowance.allowance:type_name -> google.protobuf.Any\n\t8,  // 8: sourcehub.feegrant.v1beta1.Grant.allowance:type_name -> google.protobuf.Any\n\t8,  // 9: sourcehub.feegrant.v1beta1.DIDGrant.allowance:type_name -> google.protobuf.Any\n\t10, // [10:10] is the sub-list for method output_type\n\t10, // [10:10] is the sub-list for method input_type\n\t10, // [10:10] is the sub-list for extension type_name\n\t10, // [10:10] is the sub-list for extension extendee\n\t0,  // [0:10] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_feegrant_v1beta1_feegrant_proto_init() }\nfunc file_sourcehub_feegrant_v1beta1_feegrant_proto_init() {\n\tif File_sourcehub_feegrant_v1beta1_feegrant_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*BasicAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PeriodicAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AllowedMsgAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Grant); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DIDGrant); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_feegrant_v1beta1_feegrant_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_feegrant_v1beta1_feegrant_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_feegrant_v1beta1_feegrant_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_feegrant_v1beta1_feegrant_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_feegrant_v1beta1_feegrant_proto = out.File\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_rawDesc = nil\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_goTypes = nil\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage feegrantv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_GenesisState_1_list)(nil)\n\ntype _GenesisState_1_list struct {\n\tlist *[]*Grant\n}\n\nfunc (x *_GenesisState_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Grant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_1_list) NewElement() protoreflect.Value {\n\tv := new(Grant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_2_list)(nil)\n\ntype _GenesisState_2_list struct {\n\tlist *[]*DIDGrant\n}\n\nfunc (x *_GenesisState_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*DIDGrant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*DIDGrant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_2_list) AppendMutable() protoreflect.Value {\n\tv := new(DIDGrant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_2_list) NewElement() protoreflect.Value {\n\tv := new(DIDGrant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_GenesisState                protoreflect.MessageDescriptor\n\tfd_GenesisState_allowances     protoreflect.FieldDescriptor\n\tfd_GenesisState_did_allowances protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_init()\n\tmd_GenesisState = File_sourcehub_feegrant_v1beta1_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_allowances = md_GenesisState.Fields().ByName(\"allowances\")\n\tfd_GenesisState_did_allowances = md_GenesisState.Fields().ByName(\"did_allowances\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Allowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_1_list{list: &x.Allowances})\n\t\tif !f(fd_GenesisState_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.DidAllowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.DidAllowances})\n\t\tif !f(fd_GenesisState_did_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\treturn len(x.Allowances) != 0\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\treturn len(x.DidAllowances) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\tx.Allowances = nil\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\tx.DidAllowances = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\tif len(x.Allowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_1_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\tif len(x.DidAllowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_2_list{list: &x.DidAllowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_1_list)\n\t\tx.Allowances = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_2_list)\n\t\tx.DidAllowances = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\tif x.Allowances == nil {\n\t\t\tx.Allowances = []*Grant{}\n\t\t}\n\t\tvalue := &_GenesisState_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\tif x.DidAllowances == nil {\n\t\t\tx.DidAllowances = []*DIDGrant{}\n\t\t}\n\t\tvalue := &_GenesisState_2_list{list: &x.DidAllowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.allowances\":\n\t\tlist := []*Grant{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.GenesisState.did_allowances\":\n\t\tlist := []*DIDGrant{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor _, e := range x.Allowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.DidAllowances) > 0 {\n\t\t\tfor _, e := range x.DidAllowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.DidAllowances) > 0 {\n\t\t\tfor iNdEx := len(x.DidAllowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.DidAllowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor iNdEx := len(x.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Allowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Allowances = append(x.Allowances, &Grant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowances[len(x.Allowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DidAllowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DidAllowances = append(x.DidAllowances, &DIDGrant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.DidAllowances[len(x.DidAllowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/feegrant/v1beta1/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// GenesisState contains a set of fee allowances, persisted from the store.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tAllowances    []*Grant    `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\tDidAllowances []*DIDGrant `protobuf:\"bytes,2,rep,name=did_allowances,json=didAllowances,proto3\" json:\"did_allowances,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GenesisState) GetAllowances() []*Grant {\n\tif x != nil {\n\t\treturn x.Allowances\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetDidAllowances() []*DIDGrant {\n\tif x != nil {\n\t\treturn x.DidAllowances\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_feegrant_v1beta1_genesis_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_feegrant_v1beta1_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e,\n\t0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61,\n\t0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x01, 0x0a, 0x0c, 0x47,\n\t0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x61,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61,\n\t0x6e, 0x74, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x61,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0e, 0x64, 0x69, 0x64,\n\t0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65,\n\t0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44,\n\t0x49, 0x44, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0,\n\t0x2a, 0x01, 0x52, 0x0d, 0x64, 0x69, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65,\n\t0x73, 0x42, 0xf5, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e,\n\t0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x3b, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0xa2, 0x02, 0x03, 0x53, 0x46, 0x58, 0xaa, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0xe2, 0x02, 0x26, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x65,\n\t0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47,\n\t0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_rawDescOnce sync.Once\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_rawDescData = file_sourcehub_feegrant_v1beta1_genesis_proto_rawDesc\n)\n\nfunc file_sourcehub_feegrant_v1beta1_genesis_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_feegrant_v1beta1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_feegrant_v1beta1_genesis_proto_rawDescData)\n\t})\n\treturn file_sourcehub_feegrant_v1beta1_genesis_proto_rawDescData\n}\n\nvar file_sourcehub_feegrant_v1beta1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_feegrant_v1beta1_genesis_proto_goTypes = []interface{}{\n\t(*GenesisState)(nil), // 0: sourcehub.feegrant.v1beta1.GenesisState\n\t(*Grant)(nil),        // 1: sourcehub.feegrant.v1beta1.Grant\n\t(*DIDGrant)(nil),     // 2: sourcehub.feegrant.v1beta1.DIDGrant\n}\nvar file_sourcehub_feegrant_v1beta1_genesis_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.feegrant.v1beta1.GenesisState.allowances:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t2, // 1: sourcehub.feegrant.v1beta1.GenesisState.did_allowances:type_name -> sourcehub.feegrant.v1beta1.DIDGrant\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_feegrant_v1beta1_genesis_proto_init() }\nfunc file_sourcehub_feegrant_v1beta1_genesis_proto_init() {\n\tif File_sourcehub_feegrant_v1beta1_genesis_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_feegrant_v1beta1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_feegrant_v1beta1_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_feegrant_v1beta1_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_feegrant_v1beta1_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_feegrant_v1beta1_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_feegrant_v1beta1_genesis_proto = out.File\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_rawDesc = nil\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_goTypes = nil\n\tfile_sourcehub_feegrant_v1beta1_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage feegrantv1beta1\n\nimport (\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/query/v1beta1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryAllowanceRequest         protoreflect.MessageDescriptor\n\tfd_QueryAllowanceRequest_granter protoreflect.FieldDescriptor\n\tfd_QueryAllowanceRequest_grantee protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowanceRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowanceRequest\")\n\tfd_QueryAllowanceRequest_granter = md_QueryAllowanceRequest.Fields().ByName(\"granter\")\n\tfd_QueryAllowanceRequest_grantee = md_QueryAllowanceRequest.Fields().ByName(\"grantee\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowanceRequest)(nil)\n\ntype fastReflection_QueryAllowanceRequest QueryAllowanceRequest\n\nfunc (x *QueryAllowanceRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowanceRequest)(x)\n}\n\nfunc (x *QueryAllowanceRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowanceRequest_messageType fastReflection_QueryAllowanceRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowanceRequest_messageType{}\n\ntype fastReflection_QueryAllowanceRequest_messageType struct{}\n\nfunc (x fastReflection_QueryAllowanceRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowanceRequest)(nil)\n}\nfunc (x fastReflection_QueryAllowanceRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowanceRequest)\n}\nfunc (x fastReflection_QueryAllowanceRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowanceRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowanceRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowanceRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowanceRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowanceRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowanceRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowanceRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowanceRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowanceRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowanceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_QueryAllowanceRequest_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_QueryAllowanceRequest_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowanceRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\treturn x.Grantee != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\tx.Grantee = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowanceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.QueryAllowanceRequest is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.feegrant.v1beta1.QueryAllowanceRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowanceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowanceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowanceRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowanceRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowanceRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowanceRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowanceRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryAllowanceResponse           protoreflect.MessageDescriptor\n\tfd_QueryAllowanceResponse_allowance protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowanceResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowanceResponse\")\n\tfd_QueryAllowanceResponse_allowance = md_QueryAllowanceResponse.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowanceResponse)(nil)\n\ntype fastReflection_QueryAllowanceResponse QueryAllowanceResponse\n\nfunc (x *QueryAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowanceResponse)(x)\n}\n\nfunc (x *QueryAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowanceResponse_messageType fastReflection_QueryAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowanceResponse_messageType{}\n\ntype fastReflection_QueryAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_QueryAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowanceResponse)(nil)\n}\nfunc (x fastReflection_QueryAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowanceResponse)\n}\nfunc (x fastReflection_QueryAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_QueryAllowanceResponse_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*Grant)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(Grant)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance\":\n\t\tm := new(Grant)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &Grant{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryAllowancesRequest            protoreflect.MessageDescriptor\n\tfd_QueryAllowancesRequest_grantee    protoreflect.FieldDescriptor\n\tfd_QueryAllowancesRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowancesRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowancesRequest\")\n\tfd_QueryAllowancesRequest_grantee = md_QueryAllowancesRequest.Fields().ByName(\"grantee\")\n\tfd_QueryAllowancesRequest_pagination = md_QueryAllowancesRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowancesRequest)(nil)\n\ntype fastReflection_QueryAllowancesRequest QueryAllowancesRequest\n\nfunc (x *QueryAllowancesRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesRequest)(x)\n}\n\nfunc (x *QueryAllowancesRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowancesRequest_messageType fastReflection_QueryAllowancesRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowancesRequest_messageType{}\n\ntype fastReflection_QueryAllowancesRequest_messageType struct{}\n\nfunc (x fastReflection_QueryAllowancesRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesRequest)(nil)\n}\nfunc (x fastReflection_QueryAllowancesRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesRequest)\n}\nfunc (x fastReflection_QueryAllowancesRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowancesRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowancesRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowancesRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowancesRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowancesRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowancesRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowancesRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_QueryAllowancesRequest_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryAllowancesRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowancesRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\treturn x.Grantee != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\tx.Grantee = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowancesRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.feegrant.v1beta1.QueryAllowancesRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowancesRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowancesRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowancesRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowancesRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowancesRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowancesRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryAllowancesResponse_1_list)(nil)\n\ntype _QueryAllowancesResponse_1_list struct {\n\tlist *[]*Grant\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Grant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Grant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryAllowancesResponse            protoreflect.MessageDescriptor\n\tfd_QueryAllowancesResponse_allowances protoreflect.FieldDescriptor\n\tfd_QueryAllowancesResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowancesResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowancesResponse\")\n\tfd_QueryAllowancesResponse_allowances = md_QueryAllowancesResponse.Fields().ByName(\"allowances\")\n\tfd_QueryAllowancesResponse_pagination = md_QueryAllowancesResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowancesResponse)(nil)\n\ntype fastReflection_QueryAllowancesResponse QueryAllowancesResponse\n\nfunc (x *QueryAllowancesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesResponse)(x)\n}\n\nfunc (x *QueryAllowancesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowancesResponse_messageType fastReflection_QueryAllowancesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowancesResponse_messageType{}\n\ntype fastReflection_QueryAllowancesResponse_messageType struct{}\n\nfunc (x fastReflection_QueryAllowancesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesResponse)(nil)\n}\nfunc (x fastReflection_QueryAllowancesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesResponse)\n}\nfunc (x fastReflection_QueryAllowancesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowancesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowancesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowancesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowancesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowancesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowancesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowancesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Allowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryAllowancesResponse_1_list{list: &x.Allowances})\n\t\tif !f(fd_QueryAllowancesResponse_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryAllowancesResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowancesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\treturn len(x.Allowances) != 0\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\tx.Allowances = nil\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowancesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\tif len(x.Allowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryAllowancesResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryAllowancesResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryAllowancesResponse_1_list)\n\t\tx.Allowances = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\tif x.Allowances == nil {\n\t\t\tx.Allowances = []*Grant{}\n\t\t}\n\t\tvalue := &_QueryAllowancesResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowancesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances\":\n\t\tlist := []*Grant{}\n\t\treturn protoreflect.ValueOfList(&_QueryAllowancesResponse_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowancesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowancesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowancesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowancesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowancesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor _, e := range x.Allowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor iNdEx := len(x.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Allowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Allowances = append(x.Allowances, &Grant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowances[len(x.Allowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryAllowancesByGranterRequest            protoreflect.MessageDescriptor\n\tfd_QueryAllowancesByGranterRequest_granter    protoreflect.FieldDescriptor\n\tfd_QueryAllowancesByGranterRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowancesByGranterRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowancesByGranterRequest\")\n\tfd_QueryAllowancesByGranterRequest_granter = md_QueryAllowancesByGranterRequest.Fields().ByName(\"granter\")\n\tfd_QueryAllowancesByGranterRequest_pagination = md_QueryAllowancesByGranterRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowancesByGranterRequest)(nil)\n\ntype fastReflection_QueryAllowancesByGranterRequest QueryAllowancesByGranterRequest\n\nfunc (x *QueryAllowancesByGranterRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesByGranterRequest)(x)\n}\n\nfunc (x *QueryAllowancesByGranterRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowancesByGranterRequest_messageType fastReflection_QueryAllowancesByGranterRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowancesByGranterRequest_messageType{}\n\ntype fastReflection_QueryAllowancesByGranterRequest_messageType struct{}\n\nfunc (x fastReflection_QueryAllowancesByGranterRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesByGranterRequest)(nil)\n}\nfunc (x fastReflection_QueryAllowancesByGranterRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesByGranterRequest)\n}\nfunc (x fastReflection_QueryAllowancesByGranterRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesByGranterRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesByGranterRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowancesByGranterRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesByGranterRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowancesByGranterRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_QueryAllowancesByGranterRequest_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryAllowancesByGranterRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowancesByGranterRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesByGranterRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesByGranterRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryAllowancesByGranterResponse_1_list)(nil)\n\ntype _QueryAllowancesByGranterResponse_1_list struct {\n\tlist *[]*Grant\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Grant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Grant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryAllowancesByGranterResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryAllowancesByGranterResponse            protoreflect.MessageDescriptor\n\tfd_QueryAllowancesByGranterResponse_allowances protoreflect.FieldDescriptor\n\tfd_QueryAllowancesByGranterResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryAllowancesByGranterResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryAllowancesByGranterResponse\")\n\tfd_QueryAllowancesByGranterResponse_allowances = md_QueryAllowancesByGranterResponse.Fields().ByName(\"allowances\")\n\tfd_QueryAllowancesByGranterResponse_pagination = md_QueryAllowancesByGranterResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryAllowancesByGranterResponse)(nil)\n\ntype fastReflection_QueryAllowancesByGranterResponse QueryAllowancesByGranterResponse\n\nfunc (x *QueryAllowancesByGranterResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesByGranterResponse)(x)\n}\n\nfunc (x *QueryAllowancesByGranterResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryAllowancesByGranterResponse_messageType fastReflection_QueryAllowancesByGranterResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryAllowancesByGranterResponse_messageType{}\n\ntype fastReflection_QueryAllowancesByGranterResponse_messageType struct{}\n\nfunc (x fastReflection_QueryAllowancesByGranterResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryAllowancesByGranterResponse)(nil)\n}\nfunc (x fastReflection_QueryAllowancesByGranterResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesByGranterResponse)\n}\nfunc (x fastReflection_QueryAllowancesByGranterResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesByGranterResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryAllowancesByGranterResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryAllowancesByGranterResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryAllowancesByGranterResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryAllowancesByGranterResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Allowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryAllowancesByGranterResponse_1_list{list: &x.Allowances})\n\t\tif !f(fd_QueryAllowancesByGranterResponse_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryAllowancesByGranterResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\treturn len(x.Allowances) != 0\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\tx.Allowances = nil\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\tif len(x.Allowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryAllowancesByGranterResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryAllowancesByGranterResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryAllowancesByGranterResponse_1_list)\n\t\tx.Allowances = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\tif x.Allowances == nil {\n\t\t\tx.Allowances = []*Grant{}\n\t\t}\n\t\tvalue := &_QueryAllowancesByGranterResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances\":\n\t\tlist := []*Grant{}\n\t\treturn protoreflect.ValueOfList(&_QueryAllowancesByGranterResponse_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryAllowancesByGranterResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor _, e := range x.Allowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor iNdEx := len(x.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Allowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesByGranterResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryAllowancesByGranterResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Allowances = append(x.Allowances, &Grant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowances[len(x.Allowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryDIDAllowanceRequest             protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowanceRequest_granter     protoreflect.FieldDescriptor\n\tfd_QueryDIDAllowanceRequest_grantee_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowanceRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowanceRequest\")\n\tfd_QueryDIDAllowanceRequest_granter = md_QueryDIDAllowanceRequest.Fields().ByName(\"granter\")\n\tfd_QueryDIDAllowanceRequest_grantee_did = md_QueryDIDAllowanceRequest.Fields().ByName(\"grantee_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowanceRequest)(nil)\n\ntype fastReflection_QueryDIDAllowanceRequest QueryDIDAllowanceRequest\n\nfunc (x *QueryDIDAllowanceRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowanceRequest)(x)\n}\n\nfunc (x *QueryDIDAllowanceRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowanceRequest_messageType fastReflection_QueryDIDAllowanceRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowanceRequest_messageType{}\n\ntype fastReflection_QueryDIDAllowanceRequest_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowanceRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowanceRequest)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowanceRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowanceRequest)\n}\nfunc (x fastReflection_QueryDIDAllowanceRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowanceRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowanceRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowanceRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowanceRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowanceRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_QueryDIDAllowanceRequest_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_QueryDIDAllowanceRequest_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowanceRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowanceRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryDIDAllowanceResponse           protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowanceResponse_allowance protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowanceResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowanceResponse\")\n\tfd_QueryDIDAllowanceResponse_allowance = md_QueryDIDAllowanceResponse.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowanceResponse)(nil)\n\ntype fastReflection_QueryDIDAllowanceResponse QueryDIDAllowanceResponse\n\nfunc (x *QueryDIDAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowanceResponse)(x)\n}\n\nfunc (x *QueryDIDAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowanceResponse_messageType fastReflection_QueryDIDAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowanceResponse_messageType{}\n\ntype fastReflection_QueryDIDAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowanceResponse)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowanceResponse)\n}\nfunc (x fastReflection_QueryDIDAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_QueryDIDAllowanceResponse_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*Grant)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(Grant)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance\":\n\t\tm := new(Grant)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &Grant{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryDIDAllowancesRequest             protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowancesRequest_grantee_did protoreflect.FieldDescriptor\n\tfd_QueryDIDAllowancesRequest_pagination  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowancesRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowancesRequest\")\n\tfd_QueryDIDAllowancesRequest_grantee_did = md_QueryDIDAllowancesRequest.Fields().ByName(\"grantee_did\")\n\tfd_QueryDIDAllowancesRequest_pagination = md_QueryDIDAllowancesRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowancesRequest)(nil)\n\ntype fastReflection_QueryDIDAllowancesRequest QueryDIDAllowancesRequest\n\nfunc (x *QueryDIDAllowancesRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesRequest)(x)\n}\n\nfunc (x *QueryDIDAllowancesRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowancesRequest_messageType fastReflection_QueryDIDAllowancesRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowancesRequest_messageType{}\n\ntype fastReflection_QueryDIDAllowancesRequest_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowancesRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesRequest)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowancesRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesRequest)\n}\nfunc (x fastReflection_QueryDIDAllowancesRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowancesRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowancesRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_QueryDIDAllowancesRequest_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryDIDAllowancesRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowancesRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryDIDAllowancesResponse_1_list)(nil)\n\ntype _QueryDIDAllowancesResponse_1_list struct {\n\tlist *[]*Grant\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Grant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Grant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryDIDAllowancesResponse            protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowancesResponse_allowances protoreflect.FieldDescriptor\n\tfd_QueryDIDAllowancesResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowancesResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowancesResponse\")\n\tfd_QueryDIDAllowancesResponse_allowances = md_QueryDIDAllowancesResponse.Fields().ByName(\"allowances\")\n\tfd_QueryDIDAllowancesResponse_pagination = md_QueryDIDAllowancesResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowancesResponse)(nil)\n\ntype fastReflection_QueryDIDAllowancesResponse QueryDIDAllowancesResponse\n\nfunc (x *QueryDIDAllowancesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesResponse)(x)\n}\n\nfunc (x *QueryDIDAllowancesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowancesResponse_messageType fastReflection_QueryDIDAllowancesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowancesResponse_messageType{}\n\ntype fastReflection_QueryDIDAllowancesResponse_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowancesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesResponse)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowancesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesResponse)\n}\nfunc (x fastReflection_QueryDIDAllowancesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowancesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowancesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Allowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryDIDAllowancesResponse_1_list{list: &x.Allowances})\n\t\tif !f(fd_QueryDIDAllowancesResponse_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryDIDAllowancesResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\treturn len(x.Allowances) != 0\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\tx.Allowances = nil\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\tif len(x.Allowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryDIDAllowancesResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryDIDAllowancesResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryDIDAllowancesResponse_1_list)\n\t\tx.Allowances = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\tif x.Allowances == nil {\n\t\t\tx.Allowances = []*Grant{}\n\t\t}\n\t\tvalue := &_QueryDIDAllowancesResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances\":\n\t\tlist := []*Grant{}\n\t\treturn protoreflect.ValueOfList(&_QueryDIDAllowancesResponse_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowancesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor _, e := range x.Allowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor iNdEx := len(x.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Allowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Allowances = append(x.Allowances, &Grant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowances[len(x.Allowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryDIDAllowancesByGranterRequest            protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowancesByGranterRequest_granter    protoreflect.FieldDescriptor\n\tfd_QueryDIDAllowancesByGranterRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowancesByGranterRequest = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowancesByGranterRequest\")\n\tfd_QueryDIDAllowancesByGranterRequest_granter = md_QueryDIDAllowancesByGranterRequest.Fields().ByName(\"granter\")\n\tfd_QueryDIDAllowancesByGranterRequest_pagination = md_QueryDIDAllowancesByGranterRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowancesByGranterRequest)(nil)\n\ntype fastReflection_QueryDIDAllowancesByGranterRequest QueryDIDAllowancesByGranterRequest\n\nfunc (x *QueryDIDAllowancesByGranterRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesByGranterRequest)(x)\n}\n\nfunc (x *QueryDIDAllowancesByGranterRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowancesByGranterRequest_messageType fastReflection_QueryDIDAllowancesByGranterRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowancesByGranterRequest_messageType{}\n\ntype fastReflection_QueryDIDAllowancesByGranterRequest_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowancesByGranterRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesByGranterRequest)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowancesByGranterRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesByGranterRequest)\n}\nfunc (x fastReflection_QueryDIDAllowancesByGranterRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesByGranterRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesByGranterRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowancesByGranterRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesByGranterRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowancesByGranterRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_QueryDIDAllowancesByGranterRequest_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryDIDAllowancesByGranterRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesByGranterRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesByGranterRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_QueryDIDAllowancesByGranterResponse_1_list)(nil)\n\ntype _QueryDIDAllowancesByGranterResponse_1_list struct {\n\tlist *[]*Grant\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Grant)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Grant)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Grant)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_QueryDIDAllowancesByGranterResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_QueryDIDAllowancesByGranterResponse            protoreflect.MessageDescriptor\n\tfd_QueryDIDAllowancesByGranterResponse_allowances protoreflect.FieldDescriptor\n\tfd_QueryDIDAllowancesByGranterResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_init()\n\tmd_QueryDIDAllowancesByGranterResponse = File_sourcehub_feegrant_v1beta1_query_proto.Messages().ByName(\"QueryDIDAllowancesByGranterResponse\")\n\tfd_QueryDIDAllowancesByGranterResponse_allowances = md_QueryDIDAllowancesByGranterResponse.Fields().ByName(\"allowances\")\n\tfd_QueryDIDAllowancesByGranterResponse_pagination = md_QueryDIDAllowancesByGranterResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryDIDAllowancesByGranterResponse)(nil)\n\ntype fastReflection_QueryDIDAllowancesByGranterResponse QueryDIDAllowancesByGranterResponse\n\nfunc (x *QueryDIDAllowancesByGranterResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesByGranterResponse)(x)\n}\n\nfunc (x *QueryDIDAllowancesByGranterResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryDIDAllowancesByGranterResponse_messageType fastReflection_QueryDIDAllowancesByGranterResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryDIDAllowancesByGranterResponse_messageType{}\n\ntype fastReflection_QueryDIDAllowancesByGranterResponse_messageType struct{}\n\nfunc (x fastReflection_QueryDIDAllowancesByGranterResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryDIDAllowancesByGranterResponse)(nil)\n}\nfunc (x fastReflection_QueryDIDAllowancesByGranterResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesByGranterResponse)\n}\nfunc (x fastReflection_QueryDIDAllowancesByGranterResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesByGranterResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryDIDAllowancesByGranterResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryDIDAllowancesByGranterResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryDIDAllowancesByGranterResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryDIDAllowancesByGranterResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Allowances) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_QueryDIDAllowancesByGranterResponse_1_list{list: &x.Allowances})\n\t\tif !f(fd_QueryDIDAllowancesByGranterResponse_allowances, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_QueryDIDAllowancesByGranterResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\treturn len(x.Allowances) != 0\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\tx.Allowances = nil\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\tif len(x.Allowances) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_QueryDIDAllowancesByGranterResponse_1_list{})\n\t\t}\n\t\tlistValue := &_QueryDIDAllowancesByGranterResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_QueryDIDAllowancesByGranterResponse_1_list)\n\t\tx.Allowances = *clv.list\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\tif x.Allowances == nil {\n\t\t\tx.Allowances = []*Grant{}\n\t\t}\n\t\tvalue := &_QueryDIDAllowancesByGranterResponse_1_list{list: &x.Allowances}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances\":\n\t\tlist := []*Grant{}\n\t\treturn protoreflect.ValueOfList(&_QueryDIDAllowancesByGranterResponse_1_list{list: &list})\n\tcase \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryDIDAllowancesByGranterResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor _, e := range x.Allowances {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Allowances) > 0 {\n\t\t\tfor iNdEx := len(x.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Allowances[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryDIDAllowancesByGranterResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesByGranterResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryDIDAllowancesByGranterResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Allowances = append(x.Allowances, &Grant{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowances[len(x.Allowances)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/feegrant/v1beta1/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// QueryAllowanceRequest is the request type for the Query/Allowance RPC method.\ntype QueryAllowanceRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n}\n\nfunc (x *QueryAllowanceRequest) Reset() {\n\t*x = QueryAllowanceRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowanceRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowanceRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowanceRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *QueryAllowanceRequest) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryAllowanceRequest) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\n// QueryAllowanceResponse is the response type for the Query/Allowance RPC method.\ntype QueryAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowance is an allowance granted for grantee by granter.\n\tAllowance *Grant `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *QueryAllowanceResponse) Reset() {\n\t*x = QueryAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryAllowanceResponse) GetAllowance() *Grant {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\n// QueryAllowancesRequest is the request type for the Query/Allowances RPC method.\ntype QueryAllowancesRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tGrantee string `protobuf:\"bytes,1,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryAllowancesRequest) Reset() {\n\t*x = QueryAllowancesRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowancesRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowancesRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowancesRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowancesRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *QueryAllowancesRequest) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryAllowancesRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesResponse is the response type for the Query/Allowances RPC method.\ntype QueryAllowancesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowances are allowance's granted for grantee by granter.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryAllowancesResponse) Reset() {\n\t*x = QueryAllowancesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowancesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowancesResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowancesResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *QueryAllowancesResponse) GetAllowances() []*Grant {\n\tif x != nil {\n\t\treturn x.Allowances\n\t}\n\treturn nil\n}\n\nfunc (x *QueryAllowancesResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesByGranterRequest is the request type for the Query/AllowancesByGranter RPC method.\ntype QueryAllowancesByGranterRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryAllowancesByGranterRequest) Reset() {\n\t*x = QueryAllowancesByGranterRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowancesByGranterRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowancesByGranterRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowancesByGranterRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowancesByGranterRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *QueryAllowancesByGranterRequest) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryAllowancesByGranterRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\ntype QueryAllowancesByGranterResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowances that have been issued by the granter.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryAllowancesByGranterResponse) Reset() {\n\t*x = QueryAllowancesByGranterResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryAllowancesByGranterResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryAllowancesByGranterResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryAllowancesByGranterResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryAllowancesByGranterResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *QueryAllowancesByGranterResponse) GetAllowances() []*Grant {\n\tif x != nil {\n\t\treturn x.Allowances\n\t}\n\treturn nil\n}\n\nfunc (x *QueryAllowancesByGranterResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowanceRequest is the request type for the Query/DIDAllowance RPC method.\ntype QueryDIDAllowanceRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowanceRequest) Reset() {\n\t*x = QueryDIDAllowanceRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowanceRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowanceRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowanceRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *QueryDIDAllowanceRequest) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryDIDAllowanceRequest) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// QueryDIDAllowanceResponse is the response type for the Query/DIDAllowance RPC method.\ntype QueryDIDAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowance is an allowance granted for DID by granter.\n\tAllowance *Grant `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowanceResponse) Reset() {\n\t*x = QueryDIDAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *QueryDIDAllowanceResponse) GetAllowance() *Grant {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesRequest is the request type for the Query/DIDAllowances RPC method.\ntype QueryDIDAllowancesRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// grantee_did is the DID being granted allowances.\n\tGranteeDid string `protobuf:\"bytes,1,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowancesRequest) Reset() {\n\t*x = QueryDIDAllowancesRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowancesRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowancesRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowancesRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowancesRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *QueryDIDAllowancesRequest) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryDIDAllowancesRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesResponse is the response type for the Query/DIDAllowances RPC method.\ntype QueryDIDAllowancesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowances are DID allowances granted for the grantee DID.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowancesResponse) Reset() {\n\t*x = QueryDIDAllowancesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowancesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowancesResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowancesResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *QueryDIDAllowancesResponse) GetAllowances() []*Grant {\n\tif x != nil {\n\t\treturn x.Allowances\n\t}\n\treturn nil\n}\n\nfunc (x *QueryDIDAllowancesResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesByGranterRequest is the request type for the Query/DIDAllowancesByGranter RPC method.\ntype QueryDIDAllowancesByGranterRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowancesByGranterRequest) Reset() {\n\t*x = QueryDIDAllowancesByGranterRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowancesByGranterRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowancesByGranterRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowancesByGranterRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowancesByGranterRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *QueryDIDAllowancesByGranterRequest) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *QueryDIDAllowancesByGranterRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesByGranterResponse is the response type for the Query/DIDAllowancesByGranter RPC method.\ntype QueryDIDAllowancesByGranterResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allowances that have been issued by the granter to DIDs.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *QueryDIDAllowancesByGranterResponse) Reset() {\n\t*x = QueryDIDAllowancesByGranterResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_query_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryDIDAllowancesByGranterResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryDIDAllowancesByGranterResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryDIDAllowancesByGranterResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryDIDAllowancesByGranterResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *QueryDIDAllowancesByGranterResponse) GetAllowances() []*Grant {\n\tif x != nil {\n\t\treturn x.Allowances\n\t}\n\treturn nil\n}\n\nfunc (x *QueryDIDAllowancesByGranterResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_feegrant_v1beta1_query_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_feegrant_v1beta1_query_proto_rawDesc = []byte{\n\t0x0a, 0x26, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x71, 0x75, 0x65,\n\t0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65,\n\t0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7f, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a,\n\t0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18,\n\t0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x22, 0x59, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x3f, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65,\n\t0x22, 0x94, 0x01, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4,\n\t0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12,\n\t0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,\n\t0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65,\n\t0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f,\n\t0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,\n\t0xb2, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,\n\t0x13, 0xd2, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20,\n\t0x30, 0x2e, 0x34, 0x36, 0x22, 0xc3, 0x01, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a,\n\t0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71,\n\t0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67,\n\t0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x13, 0xd2, 0xb4, 0x2d, 0x0f, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x34, 0x36, 0x22, 0x6f, 0x0a, 0x18, 0x51, 0x75,\n\t0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,\n\t0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x22, 0x5c, 0x0a, 0x19, 0x51,\n\t0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f,\n\t0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x09,\n\t0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x19, 0x51, 0x75,\n\t0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,\n\t0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x22, 0xa8, 0x01, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x41, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52,\n\t0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x22,\n\t0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb1,\n\t0x01, 0x0a, 0x23, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x0a, 0x61,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72,\n\t0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x32, 0xaf, 0x09, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0xb5, 0x01, 0x0a,\n\t0x09, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65,\n\t0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x65, 0x65, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x0a, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x3b,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61,\n\t0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0xca, 0xb4, 0x2d, 0x0f, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x30, 0x2e, 0x34, 0x36, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x7d, 0x12, 0xc6, 0x01, 0x0a, 0x0c, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x12, 0x34, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x69, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x7d, 0x2f, 0x7b, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x0d,\n\t0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x35, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,\n\t0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3,\n\t0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2f, 0x64, 0x69, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73,\n\t0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x7d, 0x12, 0xd3,\n\t0x01, 0x0a, 0x16, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73,\n\t0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x49, 0x44, 0x41,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93,\n\t0x02, 0x32, 0x12, 0x30, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x64, 0x69, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x65, 0x72, 0x7d, 0x42, 0xf3, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x3b, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x46, 0x58, 0xaa, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0xe2, 0x02, 0x26, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_feegrant_v1beta1_query_proto_rawDescOnce sync.Once\n\tfile_sourcehub_feegrant_v1beta1_query_proto_rawDescData = file_sourcehub_feegrant_v1beta1_query_proto_rawDesc\n)\n\nfunc file_sourcehub_feegrant_v1beta1_query_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_feegrant_v1beta1_query_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_feegrant_v1beta1_query_proto_rawDescData)\n\t})\n\treturn file_sourcehub_feegrant_v1beta1_query_proto_rawDescData\n}\n\nvar file_sourcehub_feegrant_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 12)\nvar file_sourcehub_feegrant_v1beta1_query_proto_goTypes = []interface{}{\n\t(*QueryAllowanceRequest)(nil),               // 0: sourcehub.feegrant.v1beta1.QueryAllowanceRequest\n\t(*QueryAllowanceResponse)(nil),              // 1: sourcehub.feegrant.v1beta1.QueryAllowanceResponse\n\t(*QueryAllowancesRequest)(nil),              // 2: sourcehub.feegrant.v1beta1.QueryAllowancesRequest\n\t(*QueryAllowancesResponse)(nil),             // 3: sourcehub.feegrant.v1beta1.QueryAllowancesResponse\n\t(*QueryAllowancesByGranterRequest)(nil),     // 4: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\n\t(*QueryAllowancesByGranterResponse)(nil),    // 5: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\n\t(*QueryDIDAllowanceRequest)(nil),            // 6: sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\n\t(*QueryDIDAllowanceResponse)(nil),           // 7: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\n\t(*QueryDIDAllowancesRequest)(nil),           // 8: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\n\t(*QueryDIDAllowancesResponse)(nil),          // 9: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\n\t(*QueryDIDAllowancesByGranterRequest)(nil),  // 10: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\n\t(*QueryDIDAllowancesByGranterResponse)(nil), // 11: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\n\t(*Grant)(nil),                // 12: sourcehub.feegrant.v1beta1.Grant\n\t(*v1beta1.PageRequest)(nil),  // 13: cosmos.base.query.v1beta1.PageRequest\n\t(*v1beta1.PageResponse)(nil), // 14: cosmos.base.query.v1beta1.PageResponse\n}\nvar file_sourcehub_feegrant_v1beta1_query_proto_depIdxs = []int32{\n\t12, // 0: sourcehub.feegrant.v1beta1.QueryAllowanceResponse.allowance:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t13, // 1: sourcehub.feegrant.v1beta1.QueryAllowancesRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t12, // 2: sourcehub.feegrant.v1beta1.QueryAllowancesResponse.allowances:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t14, // 3: sourcehub.feegrant.v1beta1.QueryAllowancesResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t13, // 4: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t12, // 5: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.allowances:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t14, // 6: sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t12, // 7: sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse.allowance:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t13, // 8: sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t12, // 9: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.allowances:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t14, // 10: sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t13, // 11: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t12, // 12: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.allowances:type_name -> sourcehub.feegrant.v1beta1.Grant\n\t14, // 13: sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t0,  // 14: sourcehub.feegrant.v1beta1.Query.Allowance:input_type -> sourcehub.feegrant.v1beta1.QueryAllowanceRequest\n\t2,  // 15: sourcehub.feegrant.v1beta1.Query.Allowances:input_type -> sourcehub.feegrant.v1beta1.QueryAllowancesRequest\n\t4,  // 16: sourcehub.feegrant.v1beta1.Query.AllowancesByGranter:input_type -> sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\n\t6,  // 17: sourcehub.feegrant.v1beta1.Query.DIDAllowance:input_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\n\t8,  // 18: sourcehub.feegrant.v1beta1.Query.DIDAllowances:input_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\n\t10, // 19: sourcehub.feegrant.v1beta1.Query.DIDAllowancesByGranter:input_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\n\t1,  // 20: sourcehub.feegrant.v1beta1.Query.Allowance:output_type -> sourcehub.feegrant.v1beta1.QueryAllowanceResponse\n\t3,  // 21: sourcehub.feegrant.v1beta1.Query.Allowances:output_type -> sourcehub.feegrant.v1beta1.QueryAllowancesResponse\n\t5,  // 22: sourcehub.feegrant.v1beta1.Query.AllowancesByGranter:output_type -> sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\n\t7,  // 23: sourcehub.feegrant.v1beta1.Query.DIDAllowance:output_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\n\t9,  // 24: sourcehub.feegrant.v1beta1.Query.DIDAllowances:output_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\n\t11, // 25: sourcehub.feegrant.v1beta1.Query.DIDAllowancesByGranter:output_type -> sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\n\t20, // [20:26] is the sub-list for method output_type\n\t14, // [14:20] is the sub-list for method input_type\n\t14, // [14:14] is the sub-list for extension type_name\n\t14, // [14:14] is the sub-list for extension extendee\n\t0,  // [0:14] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_feegrant_v1beta1_query_proto_init() }\nfunc file_sourcehub_feegrant_v1beta1_query_proto_init() {\n\tif File_sourcehub_feegrant_v1beta1_query_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_feegrant_v1beta1_feegrant_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowanceRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowancesRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowancesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowancesByGranterRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryAllowancesByGranterResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowanceRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowancesRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowancesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowancesByGranterRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryDIDAllowancesByGranterResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_feegrant_v1beta1_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   12,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_feegrant_v1beta1_query_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_feegrant_v1beta1_query_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_feegrant_v1beta1_query_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_feegrant_v1beta1_query_proto = out.File\n\tfile_sourcehub_feegrant_v1beta1_query_proto_rawDesc = nil\n\tfile_sourcehub_feegrant_v1beta1_query_proto_goTypes = nil\n\tfile_sourcehub_feegrant_v1beta1_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/feegrant/v1beta1/query.proto\n\npackage feegrantv1beta1\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_Allowance_FullMethodName              = \"/sourcehub.feegrant.v1beta1.Query/Allowance\"\n\tQuery_Allowances_FullMethodName             = \"/sourcehub.feegrant.v1beta1.Query/Allowances\"\n\tQuery_AllowancesByGranter_FullMethodName    = \"/sourcehub.feegrant.v1beta1.Query/AllowancesByGranter\"\n\tQuery_DIDAllowance_FullMethodName           = \"/sourcehub.feegrant.v1beta1.Query/DIDAllowance\"\n\tQuery_DIDAllowances_FullMethodName          = \"/sourcehub.feegrant.v1beta1.Query/DIDAllowances\"\n\tQuery_DIDAllowancesByGranter_FullMethodName = \"/sourcehub.feegrant.v1beta1.Query/DIDAllowancesByGranter\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// Allowance returns granted allowance to the grantee by the granter.\n\tAllowance(ctx context.Context, in *QueryAllowanceRequest, opts ...grpc.CallOption) (*QueryAllowanceResponse, error)\n\t// Allowances returns all the grants for the given grantee address.\n\tAllowances(ctx context.Context, in *QueryAllowancesRequest, opts ...grpc.CallOption) (*QueryAllowancesResponse, error)\n\t// AllowancesByGranter returns all the grants given by an address.\n\tAllowancesByGranter(ctx context.Context, in *QueryAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryAllowancesByGranterResponse, error)\n\t// DIDAllowance returns granted allowance to the DID by the granter.\n\tDIDAllowance(ctx context.Context, in *QueryDIDAllowanceRequest, opts ...grpc.CallOption) (*QueryDIDAllowanceResponse, error)\n\t// DIDAllowances returns all the DID grants for the given grantee DID.\n\tDIDAllowances(ctx context.Context, in *QueryDIDAllowancesRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesResponse, error)\n\t// DIDAllowancesByGranter returns all the DID grants given by an address.\n\tDIDAllowancesByGranter(ctx context.Context, in *QueryDIDAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesByGranterResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Allowance(ctx context.Context, in *QueryAllowanceRequest, opts ...grpc.CallOption) (*QueryAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Query_Allowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Allowances(ctx context.Context, in *QueryAllowancesRequest, opts ...grpc.CallOption) (*QueryAllowancesResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryAllowancesResponse)\n\terr := c.cc.Invoke(ctx, Query_Allowances_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) AllowancesByGranter(ctx context.Context, in *QueryAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryAllowancesByGranterResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryAllowancesByGranterResponse)\n\terr := c.cc.Invoke(ctx, Query_AllowancesByGranter_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowance(ctx context.Context, in *QueryDIDAllowanceRequest, opts ...grpc.CallOption) (*QueryDIDAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Query_DIDAllowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowances(ctx context.Context, in *QueryDIDAllowancesRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryDIDAllowancesResponse)\n\terr := c.cc.Invoke(ctx, Query_DIDAllowances_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowancesByGranter(ctx context.Context, in *QueryDIDAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesByGranterResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryDIDAllowancesByGranterResponse)\n\terr := c.cc.Invoke(ctx, Query_DIDAllowancesByGranter_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// Allowance returns granted allowance to the grantee by the granter.\n\tAllowance(context.Context, *QueryAllowanceRequest) (*QueryAllowanceResponse, error)\n\t// Allowances returns all the grants for the given grantee address.\n\tAllowances(context.Context, *QueryAllowancesRequest) (*QueryAllowancesResponse, error)\n\t// AllowancesByGranter returns all the grants given by an address.\n\tAllowancesByGranter(context.Context, *QueryAllowancesByGranterRequest) (*QueryAllowancesByGranterResponse, error)\n\t// DIDAllowance returns granted allowance to the DID by the granter.\n\tDIDAllowance(context.Context, *QueryDIDAllowanceRequest) (*QueryDIDAllowanceResponse, error)\n\t// DIDAllowances returns all the DID grants for the given grantee DID.\n\tDIDAllowances(context.Context, *QueryDIDAllowancesRequest) (*QueryDIDAllowancesResponse, error)\n\t// DIDAllowancesByGranter returns all the DID grants given by an address.\n\tDIDAllowancesByGranter(context.Context, *QueryDIDAllowancesByGranterRequest) (*QueryDIDAllowancesByGranterResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) Allowance(context.Context, *QueryAllowanceRequest) (*QueryAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Allowance not implemented\")\n}\nfunc (UnimplementedQueryServer) Allowances(context.Context, *QueryAllowancesRequest) (*QueryAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Allowances not implemented\")\n}\nfunc (UnimplementedQueryServer) AllowancesByGranter(context.Context, *QueryAllowancesByGranterRequest) (*QueryAllowancesByGranterResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AllowancesByGranter not implemented\")\n}\nfunc (UnimplementedQueryServer) DIDAllowance(context.Context, *QueryDIDAllowanceRequest) (*QueryDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowance not implemented\")\n}\nfunc (UnimplementedQueryServer) DIDAllowances(context.Context, *QueryDIDAllowancesRequest) (*QueryDIDAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowances not implemented\")\n}\nfunc (UnimplementedQueryServer) DIDAllowancesByGranter(context.Context, *QueryDIDAllowancesByGranterRequest) (*QueryDIDAllowancesByGranterResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowancesByGranter not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_Allowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowanceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Allowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Allowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Allowance(ctx, req.(*QueryAllowanceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Allowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowancesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Allowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Allowances_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Allowances(ctx, req.(*QueryAllowancesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_AllowancesByGranter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowancesByGranterRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).AllowancesByGranter(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_AllowancesByGranter_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).AllowancesByGranter(ctx, req.(*QueryAllowancesByGranterRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowanceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_DIDAllowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowance(ctx, req.(*QueryDIDAllowanceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowancesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_DIDAllowances_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowances(ctx, req.(*QueryDIDAllowancesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowancesByGranter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowancesByGranterRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowancesByGranter(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_DIDAllowancesByGranter_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowancesByGranter(ctx, req.(*QueryDIDAllowancesByGranterRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.feegrant.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Allowance\",\n\t\t\tHandler:    _Query_Allowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Allowances\",\n\t\t\tHandler:    _Query_Allowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AllowancesByGranter\",\n\t\t\tHandler:    _Query_AllowancesByGranter_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowance\",\n\t\t\tHandler:    _Query_DIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowances\",\n\t\t\tHandler:    _Query_DIDAllowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowancesByGranter\",\n\t\t\tHandler:    _Query_DIDAllowancesByGranter_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/feegrant/v1beta1/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/tx.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage feegrantv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tanypb \"google.golang.org/protobuf/types/known/anypb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_MsgGrantAllowance           protoreflect.MessageDescriptor\n\tfd_MsgGrantAllowance_granter   protoreflect.FieldDescriptor\n\tfd_MsgGrantAllowance_grantee   protoreflect.FieldDescriptor\n\tfd_MsgGrantAllowance_allowance protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgGrantAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgGrantAllowance\")\n\tfd_MsgGrantAllowance_granter = md_MsgGrantAllowance.Fields().ByName(\"granter\")\n\tfd_MsgGrantAllowance_grantee = md_MsgGrantAllowance.Fields().ByName(\"grantee\")\n\tfd_MsgGrantAllowance_allowance = md_MsgGrantAllowance.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgGrantAllowance)(nil)\n\ntype fastReflection_MsgGrantAllowance MsgGrantAllowance\n\nfunc (x *MsgGrantAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantAllowance)(x)\n}\n\nfunc (x *MsgGrantAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgGrantAllowance_messageType fastReflection_MsgGrantAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgGrantAllowance_messageType{}\n\ntype fastReflection_MsgGrantAllowance_messageType struct{}\n\nfunc (x fastReflection_MsgGrantAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantAllowance)(nil)\n}\nfunc (x fastReflection_MsgGrantAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantAllowance)\n}\nfunc (x fastReflection_MsgGrantAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgGrantAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgGrantAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgGrantAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgGrantAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgGrantAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgGrantAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgGrantAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_MsgGrantAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_MsgGrantAllowance_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_MsgGrantAllowance_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgGrantAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\treturn x.Grantee != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\tx.Grantee = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgGrantAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*anypb.Any)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(anypb.Any)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.MsgGrantAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.feegrant.v1beta1.MsgGrantAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgGrantAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance\":\n\t\tm := new(anypb.Any)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgGrantAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgGrantAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgGrantAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgGrantAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgGrantAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgGrantAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &anypb.Any{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgGrantAllowanceResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgGrantAllowanceResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgGrantAllowanceResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgGrantAllowanceResponse)(nil)\n\ntype fastReflection_MsgGrantAllowanceResponse MsgGrantAllowanceResponse\n\nfunc (x *MsgGrantAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantAllowanceResponse)(x)\n}\n\nfunc (x *MsgGrantAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgGrantAllowanceResponse_messageType fastReflection_MsgGrantAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgGrantAllowanceResponse_messageType{}\n\ntype fastReflection_MsgGrantAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_MsgGrantAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantAllowanceResponse)(nil)\n}\nfunc (x fastReflection_MsgGrantAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantAllowanceResponse)\n}\nfunc (x fastReflection_MsgGrantAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgGrantAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgGrantAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgGrantAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgGrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRevokeAllowance         protoreflect.MessageDescriptor\n\tfd_MsgRevokeAllowance_granter protoreflect.FieldDescriptor\n\tfd_MsgRevokeAllowance_grantee protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgRevokeAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgRevokeAllowance\")\n\tfd_MsgRevokeAllowance_granter = md_MsgRevokeAllowance.Fields().ByName(\"granter\")\n\tfd_MsgRevokeAllowance_grantee = md_MsgRevokeAllowance.Fields().ByName(\"grantee\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRevokeAllowance)(nil)\n\ntype fastReflection_MsgRevokeAllowance MsgRevokeAllowance\n\nfunc (x *MsgRevokeAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRevokeAllowance)(x)\n}\n\nfunc (x *MsgRevokeAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRevokeAllowance_messageType fastReflection_MsgRevokeAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRevokeAllowance_messageType{}\n\ntype fastReflection_MsgRevokeAllowance_messageType struct{}\n\nfunc (x fastReflection_MsgRevokeAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRevokeAllowance)(nil)\n}\nfunc (x fastReflection_MsgRevokeAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRevokeAllowance)\n}\nfunc (x fastReflection_MsgRevokeAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRevokeAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRevokeAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRevokeAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRevokeAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRevokeAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRevokeAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRevokeAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRevokeAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRevokeAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRevokeAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_MsgRevokeAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Grantee != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Grantee)\n\t\tif !f(fd_MsgRevokeAllowance_grantee, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRevokeAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\treturn x.Grantee != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\tx.Grantee = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRevokeAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\tvalue := x.Grantee\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\tx.Grantee = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.MsgRevokeAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\tpanic(fmt.Errorf(\"field grantee of message sourcehub.feegrant.v1beta1.MsgRevokeAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRevokeAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance.grantee\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRevokeAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgRevokeAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRevokeAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRevokeAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRevokeAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Grantee)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Grantee) > 0 {\n\t\t\ti -= len(x.Grantee)\n\t\t\tcopy(dAtA[i:], x.Grantee)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grantee)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRevokeAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRevokeAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRevokeAllowanceResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgRevokeAllowanceResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgRevokeAllowanceResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRevokeAllowanceResponse)(nil)\n\ntype fastReflection_MsgRevokeAllowanceResponse MsgRevokeAllowanceResponse\n\nfunc (x *MsgRevokeAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRevokeAllowanceResponse)(x)\n}\n\nfunc (x *MsgRevokeAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRevokeAllowanceResponse_messageType fastReflection_MsgRevokeAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRevokeAllowanceResponse_messageType{}\n\ntype fastReflection_MsgRevokeAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRevokeAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRevokeAllowanceResponse)(nil)\n}\nfunc (x fastReflection_MsgRevokeAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRevokeAllowanceResponse)\n}\nfunc (x fastReflection_MsgRevokeAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRevokeAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRevokeAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRevokeAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRevokeAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRevokeAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRevokeAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRevokeAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRevokeAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRevokeAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgPruneAllowances        protoreflect.MessageDescriptor\n\tfd_MsgPruneAllowances_pruner protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgPruneAllowances = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgPruneAllowances\")\n\tfd_MsgPruneAllowances_pruner = md_MsgPruneAllowances.Fields().ByName(\"pruner\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgPruneAllowances)(nil)\n\ntype fastReflection_MsgPruneAllowances MsgPruneAllowances\n\nfunc (x *MsgPruneAllowances) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneAllowances)(x)\n}\n\nfunc (x *MsgPruneAllowances) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgPruneAllowances_messageType fastReflection_MsgPruneAllowances_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgPruneAllowances_messageType{}\n\ntype fastReflection_MsgPruneAllowances_messageType struct{}\n\nfunc (x fastReflection_MsgPruneAllowances_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneAllowances)(nil)\n}\nfunc (x fastReflection_MsgPruneAllowances_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneAllowances)\n}\nfunc (x fastReflection_MsgPruneAllowances_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneAllowances\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgPruneAllowances) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneAllowances\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgPruneAllowances) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgPruneAllowances_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgPruneAllowances) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneAllowances)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgPruneAllowances) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgPruneAllowances)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgPruneAllowances) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pruner != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Pruner)\n\t\tif !f(fd_MsgPruneAllowances_pruner, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgPruneAllowances) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\treturn x.Pruner != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowances) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\tx.Pruner = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgPruneAllowances) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\tvalue := x.Pruner\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowances) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\tx.Pruner = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowances) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\tpanic(fmt.Errorf(\"field pruner of message sourcehub.feegrant.v1beta1.MsgPruneAllowances is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgPruneAllowances) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneAllowances.pruner\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgPruneAllowances) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgPruneAllowances\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgPruneAllowances) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowances) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgPruneAllowances) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgPruneAllowances) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgPruneAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Pruner)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Pruner) > 0 {\n\t\t\ti -= len(x.Pruner)\n\t\t\tcopy(dAtA[i:], x.Pruner)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Pruner)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneAllowances: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneAllowances: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pruner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Pruner = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgPruneAllowancesResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgPruneAllowancesResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgPruneAllowancesResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgPruneAllowancesResponse)(nil)\n\ntype fastReflection_MsgPruneAllowancesResponse MsgPruneAllowancesResponse\n\nfunc (x *MsgPruneAllowancesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneAllowancesResponse)(x)\n}\n\nfunc (x *MsgPruneAllowancesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgPruneAllowancesResponse_messageType fastReflection_MsgPruneAllowancesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgPruneAllowancesResponse_messageType{}\n\ntype fastReflection_MsgPruneAllowancesResponse_messageType struct{}\n\nfunc (x fastReflection_MsgPruneAllowancesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneAllowancesResponse)(nil)\n}\nfunc (x fastReflection_MsgPruneAllowancesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneAllowancesResponse)\n}\nfunc (x fastReflection_MsgPruneAllowancesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneAllowancesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneAllowancesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgPruneAllowancesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneAllowancesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgPruneAllowancesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgPruneAllowancesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgPruneAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneAllowancesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgGrantDIDAllowance             protoreflect.MessageDescriptor\n\tfd_MsgGrantDIDAllowance_granter     protoreflect.FieldDescriptor\n\tfd_MsgGrantDIDAllowance_grantee_did protoreflect.FieldDescriptor\n\tfd_MsgGrantDIDAllowance_allowance   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgGrantDIDAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgGrantDIDAllowance\")\n\tfd_MsgGrantDIDAllowance_granter = md_MsgGrantDIDAllowance.Fields().ByName(\"granter\")\n\tfd_MsgGrantDIDAllowance_grantee_did = md_MsgGrantDIDAllowance.Fields().ByName(\"grantee_did\")\n\tfd_MsgGrantDIDAllowance_allowance = md_MsgGrantDIDAllowance.Fields().ByName(\"allowance\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgGrantDIDAllowance)(nil)\n\ntype fastReflection_MsgGrantDIDAllowance MsgGrantDIDAllowance\n\nfunc (x *MsgGrantDIDAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantDIDAllowance)(x)\n}\n\nfunc (x *MsgGrantDIDAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgGrantDIDAllowance_messageType fastReflection_MsgGrantDIDAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgGrantDIDAllowance_messageType{}\n\ntype fastReflection_MsgGrantDIDAllowance_messageType struct{}\n\nfunc (x fastReflection_MsgGrantDIDAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantDIDAllowance)(nil)\n}\nfunc (x fastReflection_MsgGrantDIDAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantDIDAllowance)\n}\nfunc (x fastReflection_MsgGrantDIDAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantDIDAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantDIDAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgGrantDIDAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgGrantDIDAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantDIDAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgGrantDIDAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_MsgGrantDIDAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_MsgGrantDIDAllowance_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Allowance != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\t\tif !f(fd_MsgGrantDIDAllowance_allowance, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\treturn x.Allowance != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\tx.Allowance = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\tvalue := x.Allowance\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\tx.Allowance = value.Message().Interface().(*anypb.Any)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\tif x.Allowance == nil {\n\t\t\tx.Allowance = new(anypb.Any)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Allowance.ProtoReflect())\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgGrantDIDAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance\":\n\t\tm := new(anypb.Any)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgGrantDIDAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgGrantDIDAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgGrantDIDAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgGrantDIDAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tl = options.Size(x.Allowance)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Allowance != nil {\n\t\t\tencoded, err := options.Marshal(x.Allowance)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantDIDAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Allowance == nil {\n\t\t\t\t\tx.Allowance = &anypb.Any{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Allowance); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgGrantDIDAllowanceResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgGrantDIDAllowanceResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgGrantDIDAllowanceResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgGrantDIDAllowanceResponse)(nil)\n\ntype fastReflection_MsgGrantDIDAllowanceResponse MsgGrantDIDAllowanceResponse\n\nfunc (x *MsgGrantDIDAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantDIDAllowanceResponse)(x)\n}\n\nfunc (x *MsgGrantDIDAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgGrantDIDAllowanceResponse_messageType fastReflection_MsgGrantDIDAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgGrantDIDAllowanceResponse_messageType{}\n\ntype fastReflection_MsgGrantDIDAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_MsgGrantDIDAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgGrantDIDAllowanceResponse)(nil)\n}\nfunc (x fastReflection_MsgGrantDIDAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantDIDAllowanceResponse)\n}\nfunc (x fastReflection_MsgGrantDIDAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantDIDAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgGrantDIDAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgGrantDIDAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgGrantDIDAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgGrantDIDAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgGrantDIDAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgGrantDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgGrantDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgExpireDIDAllowance             protoreflect.MessageDescriptor\n\tfd_MsgExpireDIDAllowance_granter     protoreflect.FieldDescriptor\n\tfd_MsgExpireDIDAllowance_grantee_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgExpireDIDAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgExpireDIDAllowance\")\n\tfd_MsgExpireDIDAllowance_granter = md_MsgExpireDIDAllowance.Fields().ByName(\"granter\")\n\tfd_MsgExpireDIDAllowance_grantee_did = md_MsgExpireDIDAllowance.Fields().ByName(\"grantee_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgExpireDIDAllowance)(nil)\n\ntype fastReflection_MsgExpireDIDAllowance MsgExpireDIDAllowance\n\nfunc (x *MsgExpireDIDAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgExpireDIDAllowance)(x)\n}\n\nfunc (x *MsgExpireDIDAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgExpireDIDAllowance_messageType fastReflection_MsgExpireDIDAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgExpireDIDAllowance_messageType{}\n\ntype fastReflection_MsgExpireDIDAllowance_messageType struct{}\n\nfunc (x fastReflection_MsgExpireDIDAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgExpireDIDAllowance)(nil)\n}\nfunc (x fastReflection_MsgExpireDIDAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgExpireDIDAllowance)\n}\nfunc (x fastReflection_MsgExpireDIDAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgExpireDIDAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgExpireDIDAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgExpireDIDAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgExpireDIDAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_MsgExpireDIDAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgExpireDIDAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_MsgExpireDIDAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_MsgExpireDIDAllowance_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgExpireDIDAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgExpireDIDAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgExpireDIDAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgExpireDIDAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgExpireDIDAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgExpireDIDAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgExpireDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgExpireDIDAllowanceResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgExpireDIDAllowanceResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgExpireDIDAllowanceResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgExpireDIDAllowanceResponse)(nil)\n\ntype fastReflection_MsgExpireDIDAllowanceResponse MsgExpireDIDAllowanceResponse\n\nfunc (x *MsgExpireDIDAllowanceResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgExpireDIDAllowanceResponse)(x)\n}\n\nfunc (x *MsgExpireDIDAllowanceResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgExpireDIDAllowanceResponse_messageType fastReflection_MsgExpireDIDAllowanceResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgExpireDIDAllowanceResponse_messageType{}\n\ntype fastReflection_MsgExpireDIDAllowanceResponse_messageType struct{}\n\nfunc (x fastReflection_MsgExpireDIDAllowanceResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgExpireDIDAllowanceResponse)(nil)\n}\nfunc (x fastReflection_MsgExpireDIDAllowanceResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgExpireDIDAllowanceResponse)\n}\nfunc (x fastReflection_MsgExpireDIDAllowanceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgExpireDIDAllowanceResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgExpireDIDAllowanceResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgExpireDIDAllowanceResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgExpireDIDAllowanceResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgExpireDIDAllowanceResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgExpireDIDAllowanceResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgExpireDIDAllowanceResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgExpireDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgExpireDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventGrantDIDAllowance             protoreflect.MessageDescriptor\n\tfd_EventGrantDIDAllowance_granter     protoreflect.FieldDescriptor\n\tfd_EventGrantDIDAllowance_grantee_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_EventGrantDIDAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"EventGrantDIDAllowance\")\n\tfd_EventGrantDIDAllowance_granter = md_EventGrantDIDAllowance.Fields().ByName(\"granter\")\n\tfd_EventGrantDIDAllowance_grantee_did = md_EventGrantDIDAllowance.Fields().ByName(\"grantee_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventGrantDIDAllowance)(nil)\n\ntype fastReflection_EventGrantDIDAllowance EventGrantDIDAllowance\n\nfunc (x *EventGrantDIDAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventGrantDIDAllowance)(x)\n}\n\nfunc (x *EventGrantDIDAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventGrantDIDAllowance_messageType fastReflection_EventGrantDIDAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_EventGrantDIDAllowance_messageType{}\n\ntype fastReflection_EventGrantDIDAllowance_messageType struct{}\n\nfunc (x fastReflection_EventGrantDIDAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventGrantDIDAllowance)(nil)\n}\nfunc (x fastReflection_EventGrantDIDAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventGrantDIDAllowance)\n}\nfunc (x fastReflection_EventGrantDIDAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventGrantDIDAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventGrantDIDAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventGrantDIDAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventGrantDIDAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventGrantDIDAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventGrantDIDAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_EventGrantDIDAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventGrantDIDAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*EventGrantDIDAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventGrantDIDAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_EventGrantDIDAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_EventGrantDIDAllowance_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventGrantDIDAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventGrantDIDAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventGrantDIDAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventGrantDIDAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventGrantDIDAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventGrantDIDAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventGrantDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventGrantDIDAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventGrantDIDAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventGrantDIDAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventGrantDIDAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventGrantDIDAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventGrantDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventGrantDIDAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventGrantDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventExpireDIDAllowance             protoreflect.MessageDescriptor\n\tfd_EventExpireDIDAllowance_granter     protoreflect.FieldDescriptor\n\tfd_EventExpireDIDAllowance_grantee_did protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_EventExpireDIDAllowance = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"EventExpireDIDAllowance\")\n\tfd_EventExpireDIDAllowance_granter = md_EventExpireDIDAllowance.Fields().ByName(\"granter\")\n\tfd_EventExpireDIDAllowance_grantee_did = md_EventExpireDIDAllowance.Fields().ByName(\"grantee_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventExpireDIDAllowance)(nil)\n\ntype fastReflection_EventExpireDIDAllowance EventExpireDIDAllowance\n\nfunc (x *EventExpireDIDAllowance) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventExpireDIDAllowance)(x)\n}\n\nfunc (x *EventExpireDIDAllowance) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventExpireDIDAllowance_messageType fastReflection_EventExpireDIDAllowance_messageType\nvar _ protoreflect.MessageType = fastReflection_EventExpireDIDAllowance_messageType{}\n\ntype fastReflection_EventExpireDIDAllowance_messageType struct{}\n\nfunc (x fastReflection_EventExpireDIDAllowance_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventExpireDIDAllowance)(nil)\n}\nfunc (x fastReflection_EventExpireDIDAllowance_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventExpireDIDAllowance)\n}\nfunc (x fastReflection_EventExpireDIDAllowance_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventExpireDIDAllowance\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventExpireDIDAllowance) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventExpireDIDAllowance\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventExpireDIDAllowance) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventExpireDIDAllowance_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventExpireDIDAllowance) New() protoreflect.Message {\n\treturn new(fastReflection_EventExpireDIDAllowance)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventExpireDIDAllowance) Interface() protoreflect.ProtoMessage {\n\treturn (*EventExpireDIDAllowance)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventExpireDIDAllowance) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Granter != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Granter)\n\t\tif !f(fd_EventExpireDIDAllowance_granter, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.GranteeDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.GranteeDid)\n\t\tif !f(fd_EventExpireDIDAllowance_grantee_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventExpireDIDAllowance) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\treturn x.Granter != \"\"\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\treturn x.GranteeDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventExpireDIDAllowance) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\tx.Granter = \"\"\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventExpireDIDAllowance) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\tvalue := x.Granter\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\tvalue := x.GranteeDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventExpireDIDAllowance) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\tx.Granter = value.Interface().(string)\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\tx.GranteeDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventExpireDIDAllowance) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\tpanic(fmt.Errorf(\"field granter of message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance is not mutable\"))\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\tpanic(fmt.Errorf(\"field grantee_did of message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventExpireDIDAllowance) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.granter\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance.grantee_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.EventExpireDIDAllowance does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventExpireDIDAllowance) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventExpireDIDAllowance) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventExpireDIDAllowance) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventExpireDIDAllowance) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventExpireDIDAllowance) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Granter)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.GranteeDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.GranteeDid) > 0 {\n\t\t\ti -= len(x.GranteeDid)\n\t\t\tcopy(dAtA[i:], x.GranteeDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.GranteeDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Granter) > 0 {\n\t\t\ti -= len(x.Granter)\n\t\t\tcopy(dAtA[i:], x.Granter)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Granter)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventExpireDIDAllowance)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventExpireDIDAllowance: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventExpireDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgPruneDIDAllowances        protoreflect.MessageDescriptor\n\tfd_MsgPruneDIDAllowances_pruner protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgPruneDIDAllowances = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgPruneDIDAllowances\")\n\tfd_MsgPruneDIDAllowances_pruner = md_MsgPruneDIDAllowances.Fields().ByName(\"pruner\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgPruneDIDAllowances)(nil)\n\ntype fastReflection_MsgPruneDIDAllowances MsgPruneDIDAllowances\n\nfunc (x *MsgPruneDIDAllowances) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneDIDAllowances)(x)\n}\n\nfunc (x *MsgPruneDIDAllowances) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgPruneDIDAllowances_messageType fastReflection_MsgPruneDIDAllowances_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgPruneDIDAllowances_messageType{}\n\ntype fastReflection_MsgPruneDIDAllowances_messageType struct{}\n\nfunc (x fastReflection_MsgPruneDIDAllowances_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneDIDAllowances)(nil)\n}\nfunc (x fastReflection_MsgPruneDIDAllowances_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneDIDAllowances)\n}\nfunc (x fastReflection_MsgPruneDIDAllowances_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneDIDAllowances\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneDIDAllowances\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgPruneDIDAllowances_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgPruneDIDAllowances) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneDIDAllowances)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgPruneDIDAllowances)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pruner != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Pruner)\n\t\tif !f(fd_MsgPruneDIDAllowances_pruner, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\treturn x.Pruner != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\tx.Pruner = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\tvalue := x.Pruner\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\tx.Pruner = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowances) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\tpanic(fmt.Errorf(\"field pruner of message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgPruneDIDAllowances) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances.pruner\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgPruneDIDAllowances) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgPruneDIDAllowances) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowances) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgPruneDIDAllowances) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgPruneDIDAllowances) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Pruner)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Pruner) > 0 {\n\t\t\ti -= len(x.Pruner)\n\t\t\tcopy(dAtA[i:], x.Pruner)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Pruner)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowances)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneDIDAllowances: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneDIDAllowances: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pruner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Pruner = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgPruneDIDAllowancesResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_init()\n\tmd_MsgPruneDIDAllowancesResponse = File_sourcehub_feegrant_v1beta1_tx_proto.Messages().ByName(\"MsgPruneDIDAllowancesResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgPruneDIDAllowancesResponse)(nil)\n\ntype fastReflection_MsgPruneDIDAllowancesResponse MsgPruneDIDAllowancesResponse\n\nfunc (x *MsgPruneDIDAllowancesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneDIDAllowancesResponse)(x)\n}\n\nfunc (x *MsgPruneDIDAllowancesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgPruneDIDAllowancesResponse_messageType fastReflection_MsgPruneDIDAllowancesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgPruneDIDAllowancesResponse_messageType{}\n\ntype fastReflection_MsgPruneDIDAllowancesResponse_messageType struct{}\n\nfunc (x fastReflection_MsgPruneDIDAllowancesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgPruneDIDAllowancesResponse)(nil)\n}\nfunc (x fastReflection_MsgPruneDIDAllowancesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneDIDAllowancesResponse)\n}\nfunc (x fastReflection_MsgPruneDIDAllowancesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneDIDAllowancesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgPruneDIDAllowancesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgPruneDIDAllowancesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgPruneDIDAllowancesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgPruneDIDAllowancesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgPruneDIDAllowancesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgPruneDIDAllowancesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneDIDAllowancesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgPruneDIDAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/feegrant/v1beta1/tx.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// MsgGrantAllowance adds permission for Grantee to spend up to Allowance\n// of fees from the account of Granter.\ntype MsgGrantAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *anypb.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *MsgGrantAllowance) Reset() {\n\t*x = MsgGrantAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgGrantAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgGrantAllowance) ProtoMessage() {}\n\n// Deprecated: Use MsgGrantAllowance.ProtoReflect.Descriptor instead.\nfunc (*MsgGrantAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MsgGrantAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgGrantAllowance) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgGrantAllowance) GetAllowance() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\n// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.\ntype MsgGrantAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgGrantAllowanceResponse) Reset() {\n\t*x = MsgGrantAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgGrantAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgGrantAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgGrantAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgGrantAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{1}\n}\n\n// MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.\ntype MsgRevokeAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n}\n\nfunc (x *MsgRevokeAllowance) Reset() {\n\t*x = MsgRevokeAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRevokeAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRevokeAllowance) ProtoMessage() {}\n\n// Deprecated: Use MsgRevokeAllowance.ProtoReflect.Descriptor instead.\nfunc (*MsgRevokeAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *MsgRevokeAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRevokeAllowance) GetGrantee() string {\n\tif x != nil {\n\t\treturn x.Grantee\n\t}\n\treturn \"\"\n}\n\n// MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.\ntype MsgRevokeAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgRevokeAllowanceResponse) Reset() {\n\t*x = MsgRevokeAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRevokeAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRevokeAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRevokeAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRevokeAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{3}\n}\n\n// MsgPruneAllowances prunes expired fee allowances.\ntype MsgPruneAllowances struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// pruner is the address of the user pruning expired allowances.\n\tPruner string `protobuf:\"bytes,1,opt,name=pruner,proto3\" json:\"pruner,omitempty\"`\n}\n\nfunc (x *MsgPruneAllowances) Reset() {\n\t*x = MsgPruneAllowances{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgPruneAllowances) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgPruneAllowances) ProtoMessage() {}\n\n// Deprecated: Use MsgPruneAllowances.ProtoReflect.Descriptor instead.\nfunc (*MsgPruneAllowances) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *MsgPruneAllowances) GetPruner() string {\n\tif x != nil {\n\t\treturn x.Pruner\n\t}\n\treturn \"\"\n}\n\n// MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\ntype MsgPruneAllowancesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgPruneAllowancesResponse) Reset() {\n\t*x = MsgPruneAllowancesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgPruneAllowancesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgPruneAllowancesResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgPruneAllowancesResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgPruneAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{5}\n}\n\n// MsgGrantDIDAllowance adds permission for a DID to spend up to Allowance\n// of fees from the account of Granter.\ntype MsgGrantDIDAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *anypb.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (x *MsgGrantDIDAllowance) Reset() {\n\t*x = MsgGrantDIDAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgGrantDIDAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgGrantDIDAllowance) ProtoMessage() {}\n\n// Deprecated: Use MsgGrantDIDAllowance.ProtoReflect.Descriptor instead.\nfunc (*MsgGrantDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MsgGrantDIDAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgGrantDIDAllowance) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgGrantDIDAllowance) GetAllowance() *anypb.Any {\n\tif x != nil {\n\t\treturn x.Allowance\n\t}\n\treturn nil\n}\n\n// MsgGrantDIDAllowanceResponse defines the Msg/GrantDIDAllowanceResponse response type.\ntype MsgGrantDIDAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgGrantDIDAllowanceResponse) Reset() {\n\t*x = MsgGrantDIDAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgGrantDIDAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgGrantDIDAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgGrantDIDAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgGrantDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{7}\n}\n\n// MsgExpireDIDAllowance expires an existing DID allowance by setting the expiration to current PeriodReset.\ntype MsgExpireDIDAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user who granted the allowance.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID whose allowance should be expired.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (x *MsgExpireDIDAllowance) Reset() {\n\t*x = MsgExpireDIDAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgExpireDIDAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgExpireDIDAllowance) ProtoMessage() {}\n\n// Deprecated: Use MsgExpireDIDAllowance.ProtoReflect.Descriptor instead.\nfunc (*MsgExpireDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *MsgExpireDIDAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgExpireDIDAllowance) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// MsgExpireDIDAllowanceResponse defines the Msg/ExpireDIDAllowanceResponse response type.\ntype MsgExpireDIDAllowanceResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgExpireDIDAllowanceResponse) Reset() {\n\t*x = MsgExpireDIDAllowanceResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgExpireDIDAllowanceResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgExpireDIDAllowanceResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgExpireDIDAllowanceResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgExpireDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{9}\n}\n\n// EventGrantDIDAllowance is emitted when a DID allowance is granted.\ntype EventGrantDIDAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (x *EventGrantDIDAllowance) Reset() {\n\t*x = EventGrantDIDAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventGrantDIDAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventGrantDIDAllowance) ProtoMessage() {}\n\n// Deprecated: Use EventGrantDIDAllowance.ProtoReflect.Descriptor instead.\nfunc (*EventGrantDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *EventGrantDIDAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventGrantDIDAllowance) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// EventExpireDIDAllowance is emitted when a DID allowance is expired.\ntype EventExpireDIDAllowance struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// granter is the address of the user expiring an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID whose allowance is being expired.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (x *EventExpireDIDAllowance) Reset() {\n\t*x = EventExpireDIDAllowance{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventExpireDIDAllowance) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventExpireDIDAllowance) ProtoMessage() {}\n\n// Deprecated: Use EventExpireDIDAllowance.ProtoReflect.Descriptor instead.\nfunc (*EventExpireDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *EventExpireDIDAllowance) GetGranter() string {\n\tif x != nil {\n\t\treturn x.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventExpireDIDAllowance) GetGranteeDid() string {\n\tif x != nil {\n\t\treturn x.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// MsgPruneDIDAllowances prunes expired DID fee allowances.\ntype MsgPruneDIDAllowances struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// pruner is the address of the user pruning expired DID allowances.\n\tPruner string `protobuf:\"bytes,1,opt,name=pruner,proto3\" json:\"pruner,omitempty\"`\n}\n\nfunc (x *MsgPruneDIDAllowances) Reset() {\n\t*x = MsgPruneDIDAllowances{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgPruneDIDAllowances) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgPruneDIDAllowances) ProtoMessage() {}\n\n// Deprecated: Use MsgPruneDIDAllowances.ProtoReflect.Descriptor instead.\nfunc (*MsgPruneDIDAllowances) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *MsgPruneDIDAllowances) GetPruner() string {\n\tif x != nil {\n\t\treturn x.Pruner\n\t}\n\treturn \"\"\n}\n\n// MsgPruneDIDAllowancesResponse defines the Msg/PruneDIDAllowancesResponse response type.\ntype MsgPruneDIDAllowancesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgPruneDIDAllowancesResponse) Reset() {\n\t*x = MsgPruneDIDAllowancesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgPruneDIDAllowancesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgPruneDIDAllowancesResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgPruneDIDAllowancesResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgPruneDIDAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP(), []int{13}\n}\n\nvar File_sourcehub_feegrant_v1beta1_tx_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_feegrant_v1beta1_tx_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x78, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f,\n\t0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74,\n\t0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a,\n\t0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18,\n\t0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x65, 0x12, 0x60, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x42, 0x2c, 0xca, 0xb4, 0x2d, 0x28,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x3a, 0x2d, 0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b,\n\t0x2f, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,\n\t0xac, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,\n\t0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d,\n\t0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,\n\t0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x3a, 0x2e,\n\t0x82, 0xe7, 0xb0, 0x2a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a,\n\t0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x4d, 0x73, 0x67, 0x52,\n\t0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1c,\n\t0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x12,\n\t0x4d, 0x73, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x72,\n\t0x75, 0x6e, 0x65, 0x72, 0x3a, 0x1f, 0xd2, 0xb4, 0x2d, 0x10, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2d, 0x73, 0x64, 0x6b, 0x20, 0x76, 0x30, 0x2e, 0x35, 0x30, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x70,\n\t0x72, 0x75, 0x6e, 0x65, 0x72, 0x22, 0x32, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x75, 0x6e,\n\t0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x3a, 0x14, 0xd2, 0xb4, 0x2d, 0x10, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d,\n\t0x73, 0x64, 0x6b, 0x20, 0x76, 0x30, 0x2e, 0x35, 0x30, 0x22, 0xfe, 0x01, 0x0a, 0x14, 0x4d, 0x73,\n\t0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x12, 0x60, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79,\n\t0x42, 0x2c, 0xca, 0xb4, 0x2d, 0x28, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x46, 0x65, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x52, 0x09,\n\t0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x2f, 0x82, 0xe7, 0xb0, 0x2a, 0x07,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49,\n\t0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x4d, 0x73,\n\t0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e,\n\t0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x4d,\n\t0x73, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52,\n\t0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x3a, 0x30, 0x82, 0xe7, 0xb0, 0x2a, 0x07,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44,\n\t0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4d,\n\t0x73, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x0a, 0x16,\n\t0x45, 0x76, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72,\n\t0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x64, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x44, 0x69,\n\t0x64, 0x22, 0x54, 0x0a, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65,\n\t0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,\n\t0x65, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x61,\n\t0x6e, 0x74, 0x65, 0x65, 0x44, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x50, 0x72,\n\t0x75, 0x6e, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73,\n\t0x12, 0x30, 0x0a, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x70, 0x72, 0x75, 0x6e,\n\t0x65, 0x72, 0x3a, 0x0b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x70, 0x72, 0x75, 0x6e, 0x65, 0x72, 0x22,\n\t0x1f, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x32, 0x9e, 0x06, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x76, 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x6e,\n\t0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x35, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x79, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x1a, 0x36, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61,\n\t0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x0f,\n\t0x50, 0x72, 0x75, 0x6e, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12,\n\t0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,\n\t0x50, 0x72, 0x75, 0x6e, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a,\n\t0x36, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,\n\t0x50, 0x72, 0x75, 0x6e, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0xca, 0xb4, 0x2d, 0x12, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x20, 0x76, 0x30, 0x2e, 0x35, 0x30, 0x2e, 0x30, 0x12,\n\t0x7f, 0x0a, 0x11, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77,\n\t0x61, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x38, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x44, 0x49, 0x44, 0x41,\n\t0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x82, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x44, 0x49,\n\t0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x39, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72,\n\t0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x75, 0x6e, 0x65, 0x44,\n\t0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x50, 0x72, 0x75,\n\t0x6e, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a,\n\t0x39, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,\n\t0x50, 0x72, 0x75, 0x6e, 0x65, 0x44, 0x49, 0x44, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63,\n\t0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a,\n\t0x01, 0x42, 0xf0, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x66, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,\n\t0x3b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x66, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x66, 0x65, 0x65,\n\t0x67, 0x72, 0x61, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53,\n\t0x46, 0x58, 0xaa, 0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x46,\n\t0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca,\n\t0x02, 0x1a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x65, 0x65, 0x67,\n\t0x72, 0x61, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x26, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e,\n\t0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,\n\t0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x3a, 0x3a, 0x46, 0x65, 0x65, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_rawDescOnce sync.Once\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_rawDescData = file_sourcehub_feegrant_v1beta1_tx_proto_rawDesc\n)\n\nfunc file_sourcehub_feegrant_v1beta1_tx_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_feegrant_v1beta1_tx_proto_rawDescData)\n\t})\n\treturn file_sourcehub_feegrant_v1beta1_tx_proto_rawDescData\n}\n\nvar file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 14)\nvar file_sourcehub_feegrant_v1beta1_tx_proto_goTypes = []interface{}{\n\t(*MsgGrantAllowance)(nil),             // 0: sourcehub.feegrant.v1beta1.MsgGrantAllowance\n\t(*MsgGrantAllowanceResponse)(nil),     // 1: sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\n\t(*MsgRevokeAllowance)(nil),            // 2: sourcehub.feegrant.v1beta1.MsgRevokeAllowance\n\t(*MsgRevokeAllowanceResponse)(nil),    // 3: sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\n\t(*MsgPruneAllowances)(nil),            // 4: sourcehub.feegrant.v1beta1.MsgPruneAllowances\n\t(*MsgPruneAllowancesResponse)(nil),    // 5: sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\n\t(*MsgGrantDIDAllowance)(nil),          // 6: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\n\t(*MsgGrantDIDAllowanceResponse)(nil),  // 7: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\n\t(*MsgExpireDIDAllowance)(nil),         // 8: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\n\t(*MsgExpireDIDAllowanceResponse)(nil), // 9: sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\n\t(*EventGrantDIDAllowance)(nil),        // 10: sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\n\t(*EventExpireDIDAllowance)(nil),       // 11: sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\n\t(*MsgPruneDIDAllowances)(nil),         // 12: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\n\t(*MsgPruneDIDAllowancesResponse)(nil), // 13: sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\n\t(*anypb.Any)(nil),                     // 14: google.protobuf.Any\n}\nvar file_sourcehub_feegrant_v1beta1_tx_proto_depIdxs = []int32{\n\t14, // 0: sourcehub.feegrant.v1beta1.MsgGrantAllowance.allowance:type_name -> google.protobuf.Any\n\t14, // 1: sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance.allowance:type_name -> google.protobuf.Any\n\t0,  // 2: sourcehub.feegrant.v1beta1.Msg.GrantAllowance:input_type -> sourcehub.feegrant.v1beta1.MsgGrantAllowance\n\t2,  // 3: sourcehub.feegrant.v1beta1.Msg.RevokeAllowance:input_type -> sourcehub.feegrant.v1beta1.MsgRevokeAllowance\n\t4,  // 4: sourcehub.feegrant.v1beta1.Msg.PruneAllowances:input_type -> sourcehub.feegrant.v1beta1.MsgPruneAllowances\n\t6,  // 5: sourcehub.feegrant.v1beta1.Msg.GrantDIDAllowance:input_type -> sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\n\t8,  // 6: sourcehub.feegrant.v1beta1.Msg.ExpireDIDAllowance:input_type -> sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\n\t12, // 7: sourcehub.feegrant.v1beta1.Msg.PruneDIDAllowances:input_type -> sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\n\t1,  // 8: sourcehub.feegrant.v1beta1.Msg.GrantAllowance:output_type -> sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\n\t3,  // 9: sourcehub.feegrant.v1beta1.Msg.RevokeAllowance:output_type -> sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\n\t5,  // 10: sourcehub.feegrant.v1beta1.Msg.PruneAllowances:output_type -> sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\n\t7,  // 11: sourcehub.feegrant.v1beta1.Msg.GrantDIDAllowance:output_type -> sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\n\t9,  // 12: sourcehub.feegrant.v1beta1.Msg.ExpireDIDAllowance:output_type -> sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\n\t13, // 13: sourcehub.feegrant.v1beta1.Msg.PruneDIDAllowances:output_type -> sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\n\t8,  // [8:14] is the sub-list for method output_type\n\t2,  // [2:8] is the sub-list for method input_type\n\t2,  // [2:2] is the sub-list for extension type_name\n\t2,  // [2:2] is the sub-list for extension extendee\n\t0,  // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_feegrant_v1beta1_tx_proto_init() }\nfunc file_sourcehub_feegrant_v1beta1_tx_proto_init() {\n\tif File_sourcehub_feegrant_v1beta1_tx_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgGrantAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgGrantAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRevokeAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRevokeAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgPruneAllowances); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgPruneAllowancesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgGrantDIDAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgGrantDIDAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgExpireDIDAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgExpireDIDAllowanceResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventGrantDIDAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventExpireDIDAllowance); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgPruneDIDAllowances); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_feegrant_v1beta1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgPruneDIDAllowancesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_feegrant_v1beta1_tx_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   14,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_feegrant_v1beta1_tx_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_feegrant_v1beta1_tx_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_feegrant_v1beta1_tx_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_feegrant_v1beta1_tx_proto = out.File\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_rawDesc = nil\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_goTypes = nil\n\tfile_sourcehub_feegrant_v1beta1_tx_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/feegrant/v1beta1/tx_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/feegrant/v1beta1/tx.proto\n\npackage feegrantv1beta1\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tMsg_GrantAllowance_FullMethodName     = \"/sourcehub.feegrant.v1beta1.Msg/GrantAllowance\"\n\tMsg_RevokeAllowance_FullMethodName    = \"/sourcehub.feegrant.v1beta1.Msg/RevokeAllowance\"\n\tMsg_PruneAllowances_FullMethodName    = \"/sourcehub.feegrant.v1beta1.Msg/PruneAllowances\"\n\tMsg_GrantDIDAllowance_FullMethodName  = \"/sourcehub.feegrant.v1beta1.Msg/GrantDIDAllowance\"\n\tMsg_ExpireDIDAllowance_FullMethodName = \"/sourcehub.feegrant.v1beta1.Msg/ExpireDIDAllowance\"\n\tMsg_PruneDIDAllowances_FullMethodName = \"/sourcehub.feegrant.v1beta1.Msg/PruneDIDAllowances\"\n)\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Msg defines the feegrant msg service.\ntype MsgClient interface {\n\t// GrantAllowance grants fee allowance to the grantee on the granter's\n\t// account with the provided expiration time.\n\tGrantAllowance(ctx context.Context, in *MsgGrantAllowance, opts ...grpc.CallOption) (*MsgGrantAllowanceResponse, error)\n\t// RevokeAllowance revokes any fee allowance of granter's account that\n\t// has been granted to the grantee.\n\tRevokeAllowance(ctx context.Context, in *MsgRevokeAllowance, opts ...grpc.CallOption) (*MsgRevokeAllowanceResponse, error)\n\t// PruneAllowances prunes expired fee allowances, currently up to 75 at a time.\n\tPruneAllowances(ctx context.Context, in *MsgPruneAllowances, opts ...grpc.CallOption) (*MsgPruneAllowancesResponse, error)\n\t// GrantDIDAllowance grants fee allowance to a DID on the granter's account.\n\tGrantDIDAllowance(ctx context.Context, in *MsgGrantDIDAllowance, opts ...grpc.CallOption) (*MsgGrantDIDAllowanceResponse, error)\n\t// ExpireDIDAllowance expires a fee allowance by setting the expiration to current PeriodReset.\n\t// This allows the allowance to be automatically pruned when the current period expires.\n\tExpireDIDAllowance(ctx context.Context, in *MsgExpireDIDAllowance, opts ...grpc.CallOption) (*MsgExpireDIDAllowanceResponse, error)\n\t// PruneDIDAllowances prunes expired DID fee allowances, currently up to 75 at a time.\n\tPruneDIDAllowances(ctx context.Context, in *MsgPruneDIDAllowances, opts ...grpc.CallOption) (*MsgPruneDIDAllowancesResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewMsgClient(cc grpc.ClientConnInterface) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) GrantAllowance(ctx context.Context, in *MsgGrantAllowance, opts ...grpc.CallOption) (*MsgGrantAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgGrantAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Msg_GrantAllowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RevokeAllowance(ctx context.Context, in *MsgRevokeAllowance, opts ...grpc.CallOption) (*MsgRevokeAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRevokeAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Msg_RevokeAllowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) PruneAllowances(ctx context.Context, in *MsgPruneAllowances, opts ...grpc.CallOption) (*MsgPruneAllowancesResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgPruneAllowancesResponse)\n\terr := c.cc.Invoke(ctx, Msg_PruneAllowances_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) GrantDIDAllowance(ctx context.Context, in *MsgGrantDIDAllowance, opts ...grpc.CallOption) (*MsgGrantDIDAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgGrantDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Msg_GrantDIDAllowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) ExpireDIDAllowance(ctx context.Context, in *MsgExpireDIDAllowance, opts ...grpc.CallOption) (*MsgExpireDIDAllowanceResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgExpireDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, Msg_ExpireDIDAllowance_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) PruneDIDAllowances(ctx context.Context, in *MsgPruneDIDAllowances, opts ...grpc.CallOption) (*MsgPruneDIDAllowancesResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgPruneDIDAllowancesResponse)\n\terr := c.cc.Invoke(ctx, Msg_PruneDIDAllowances_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\n// All implementations must embed UnimplementedMsgServer\n// for forward compatibility.\n//\n// Msg defines the feegrant msg service.\ntype MsgServer interface {\n\t// GrantAllowance grants fee allowance to the grantee on the granter's\n\t// account with the provided expiration time.\n\tGrantAllowance(context.Context, *MsgGrantAllowance) (*MsgGrantAllowanceResponse, error)\n\t// RevokeAllowance revokes any fee allowance of granter's account that\n\t// has been granted to the grantee.\n\tRevokeAllowance(context.Context, *MsgRevokeAllowance) (*MsgRevokeAllowanceResponse, error)\n\t// PruneAllowances prunes expired fee allowances, currently up to 75 at a time.\n\tPruneAllowances(context.Context, *MsgPruneAllowances) (*MsgPruneAllowancesResponse, error)\n\t// GrantDIDAllowance grants fee allowance to a DID on the granter's account.\n\tGrantDIDAllowance(context.Context, *MsgGrantDIDAllowance) (*MsgGrantDIDAllowanceResponse, error)\n\t// ExpireDIDAllowance expires a fee allowance by setting the expiration to current PeriodReset.\n\t// This allows the allowance to be automatically pruned when the current period expires.\n\tExpireDIDAllowance(context.Context, *MsgExpireDIDAllowance) (*MsgExpireDIDAllowanceResponse, error)\n\t// PruneDIDAllowances prunes expired DID fee allowances, currently up to 75 at a time.\n\tPruneDIDAllowances(context.Context, *MsgPruneDIDAllowances) (*MsgPruneDIDAllowancesResponse, error)\n\tmustEmbedUnimplementedMsgServer()\n}\n\n// UnimplementedMsgServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedMsgServer struct{}\n\nfunc (UnimplementedMsgServer) GrantAllowance(context.Context, *MsgGrantAllowance) (*MsgGrantAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GrantAllowance not implemented\")\n}\nfunc (UnimplementedMsgServer) RevokeAllowance(context.Context, *MsgRevokeAllowance) (*MsgRevokeAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RevokeAllowance not implemented\")\n}\nfunc (UnimplementedMsgServer) PruneAllowances(context.Context, *MsgPruneAllowances) (*MsgPruneAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PruneAllowances not implemented\")\n}\nfunc (UnimplementedMsgServer) GrantDIDAllowance(context.Context, *MsgGrantDIDAllowance) (*MsgGrantDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GrantDIDAllowance not implemented\")\n}\nfunc (UnimplementedMsgServer) ExpireDIDAllowance(context.Context, *MsgExpireDIDAllowance) (*MsgExpireDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ExpireDIDAllowance not implemented\")\n}\nfunc (UnimplementedMsgServer) PruneDIDAllowances(context.Context, *MsgPruneDIDAllowances) (*MsgPruneDIDAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PruneDIDAllowances not implemented\")\n}\nfunc (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}\nfunc (UnimplementedMsgServer) testEmbeddedByValue()             {}\n\n// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to MsgServer will\n// result in compilation errors.\ntype UnsafeMsgServer interface {\n\tmustEmbedUnimplementedMsgServer()\n}\n\nfunc RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) {\n\t// If the following call pancis, it indicates UnimplementedMsgServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Msg_ServiceDesc, srv)\n}\n\nfunc _Msg_GrantAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgGrantAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).GrantAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_GrantAllowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).GrantAllowance(ctx, req.(*MsgGrantAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RevokeAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRevokeAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RevokeAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_RevokeAllowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RevokeAllowance(ctx, req.(*MsgRevokeAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_PruneAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgPruneAllowances)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).PruneAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_PruneAllowances_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).PruneAllowances(ctx, req.(*MsgPruneAllowances))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_GrantDIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgGrantDIDAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).GrantDIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_GrantDIDAllowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).GrantDIDAllowance(ctx, req.(*MsgGrantDIDAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_ExpireDIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgExpireDIDAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).ExpireDIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_ExpireDIDAllowance_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).ExpireDIDAllowance(ctx, req.(*MsgExpireDIDAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_PruneDIDAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgPruneDIDAllowances)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).PruneDIDAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_PruneDIDAllowances_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).PruneDIDAllowances(ctx, req.(*MsgPruneDIDAllowances))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Msg_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.feegrant.v1beta1.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"GrantAllowance\",\n\t\t\tHandler:    _Msg_GrantAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RevokeAllowance\",\n\t\t\tHandler:    _Msg_RevokeAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PruneAllowances\",\n\t\t\tHandler:    _Msg_PruneAllowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GrantDIDAllowance\",\n\t\t\tHandler:    _Msg_GrantDIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ExpireDIDAllowance\",\n\t\t\tHandler:    _Msg_ExpireDIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PruneDIDAllowances\",\n\t\t\tHandler:    _Msg_PruneDIDAllowances_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/feegrant/v1beta1/tx.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/hub/chain_config.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_ChainConfig                    protoreflect.MessageDescriptor\n\tfd_ChainConfig_allow_zero_fee_txs protoreflect.FieldDescriptor\n\tfd_ChainConfig_ignore_bearer_auth protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_chain_config_proto_init()\n\tmd_ChainConfig = File_sourcehub_hub_chain_config_proto.Messages().ByName(\"ChainConfig\")\n\tfd_ChainConfig_allow_zero_fee_txs = md_ChainConfig.Fields().ByName(\"allow_zero_fee_txs\")\n\tfd_ChainConfig_ignore_bearer_auth = md_ChainConfig.Fields().ByName(\"ignore_bearer_auth\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ChainConfig)(nil)\n\ntype fastReflection_ChainConfig ChainConfig\n\nfunc (x *ChainConfig) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ChainConfig)(x)\n}\n\nfunc (x *ChainConfig) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_chain_config_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ChainConfig_messageType fastReflection_ChainConfig_messageType\nvar _ protoreflect.MessageType = fastReflection_ChainConfig_messageType{}\n\ntype fastReflection_ChainConfig_messageType struct{}\n\nfunc (x fastReflection_ChainConfig_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ChainConfig)(nil)\n}\nfunc (x fastReflection_ChainConfig_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ChainConfig)\n}\nfunc (x fastReflection_ChainConfig_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ChainConfig\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ChainConfig) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ChainConfig\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ChainConfig) Type() protoreflect.MessageType {\n\treturn _fastReflection_ChainConfig_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ChainConfig) New() protoreflect.Message {\n\treturn new(fastReflection_ChainConfig)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ChainConfig) Interface() protoreflect.ProtoMessage {\n\treturn (*ChainConfig)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ChainConfig) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.AllowZeroFeeTxs != false {\n\t\tvalue := protoreflect.ValueOfBool(x.AllowZeroFeeTxs)\n\t\tif !f(fd_ChainConfig_allow_zero_fee_txs, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IgnoreBearerAuth != false {\n\t\tvalue := protoreflect.ValueOfBool(x.IgnoreBearerAuth)\n\t\tif !f(fd_ChainConfig_ignore_bearer_auth, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ChainConfig) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\treturn x.AllowZeroFeeTxs != false\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\treturn x.IgnoreBearerAuth != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ChainConfig) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\tx.AllowZeroFeeTxs = false\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\tx.IgnoreBearerAuth = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ChainConfig) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\tvalue := x.AllowZeroFeeTxs\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\tvalue := x.IgnoreBearerAuth\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ChainConfig) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\tx.AllowZeroFeeTxs = value.Bool()\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\tx.IgnoreBearerAuth = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ChainConfig) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\tpanic(fmt.Errorf(\"field allow_zero_fee_txs of message sourcehub.hub.ChainConfig is not mutable\"))\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\tpanic(fmt.Errorf(\"field ignore_bearer_auth of message sourcehub.hub.ChainConfig is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ChainConfig) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ChainConfig.allow_zero_fee_txs\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcehub.hub.ChainConfig.ignore_bearer_auth\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ChainConfig\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ChainConfig does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ChainConfig) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.ChainConfig\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ChainConfig) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ChainConfig) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ChainConfig) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ChainConfig) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ChainConfig)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.AllowZeroFeeTxs {\n\t\t\tn += 2\n\t\t}\n\t\tif x.IgnoreBearerAuth {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ChainConfig)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.IgnoreBearerAuth {\n\t\t\ti--\n\t\t\tif x.IgnoreBearerAuth {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.AllowZeroFeeTxs {\n\t\t\ti--\n\t\t\tif x.AllowZeroFeeTxs {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ChainConfig)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ChainConfig: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ChainConfig: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AllowZeroFeeTxs\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.AllowZeroFeeTxs = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IgnoreBearerAuth\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.IgnoreBearerAuth = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/chain_config.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// ChainConfig specifies flags and parameters which\n// tune the chain behavior during genesis creation\ntype ChainConfig struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// allow_zero_fee_txs if true configures the ante handler\n\t// to not reject txs with 0 fees\n\tAllowZeroFeeTxs bool `protobuf:\"varint,1,opt,name=allow_zero_fee_txs,json=allowZeroFeeTxs,proto3\" json:\"allow_zero_fee_txs,omitempty\"`\n\t// ignore_bearer_auth if true ignores the `authorized_account`\n\t// field in the Bearer JWS from Extension Options\n\tIgnoreBearerAuth bool `protobuf:\"varint,2,opt,name=ignore_bearer_auth,json=ignoreBearerAuth,proto3\" json:\"ignore_bearer_auth,omitempty\"`\n}\n\nfunc (x *ChainConfig) Reset() {\n\t*x = ChainConfig{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_chain_config_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ChainConfig) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ChainConfig) ProtoMessage() {}\n\n// Deprecated: Use ChainConfig.ProtoReflect.Descriptor instead.\nfunc (*ChainConfig) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_chain_config_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ChainConfig) GetAllowZeroFeeTxs() bool {\n\tif x != nil {\n\t\treturn x.AllowZeroFeeTxs\n\t}\n\treturn false\n}\n\nfunc (x *ChainConfig) GetIgnoreBearerAuth() bool {\n\tif x != nil {\n\t\treturn x.IgnoreBearerAuth\n\t}\n\treturn false\n}\n\nvar File_sourcehub_hub_chain_config_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_chain_config_proto_rawDesc = []byte{\n\t0x0a, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75,\n\t0x62, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,\n\t0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7c, 0x0a, 0x0b, 0x43, 0x68,\n\t0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x6c, 0x6c,\n\t0x6f, 0x77, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x74, 0x78, 0x73, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x61, 0x6c,\n\t0x6c, 0x6f, 0x77, 0x5a, 0x65, 0x72, 0x6f, 0x46, 0x65, 0x65, 0x54, 0x78, 0x73, 0x12, 0x33, 0x0a,\n\t0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x5f, 0x61,\n\t0x75, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x05, 0xa8, 0xe7, 0xb0, 0x2a, 0x01,\n\t0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75,\n\t0x74, 0x68, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x42, 0x9a, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x42, 0x10,\n\t0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68,\n\t0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_chain_config_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_chain_config_proto_rawDescData = file_sourcehub_hub_chain_config_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_chain_config_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_chain_config_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_chain_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_chain_config_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_chain_config_proto_rawDescData\n}\n\nvar file_sourcehub_hub_chain_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_hub_chain_config_proto_goTypes = []interface{}{\n\t(*ChainConfig)(nil), // 0: sourcehub.hub.ChainConfig\n}\nvar file_sourcehub_hub_chain_config_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_chain_config_proto_init() }\nfunc file_sourcehub_hub_chain_config_proto_init() {\n\tif File_sourcehub_hub_chain_config_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_chain_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ChainConfig); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_chain_config_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_chain_config_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_chain_config_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_chain_config_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_chain_config_proto = out.File\n\tfile_sourcehub_hub_chain_config_proto_rawDesc = nil\n\tfile_sourcehub_hub_chain_config_proto_goTypes = nil\n\tfile_sourcehub_hub_chain_config_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_GenesisState_2_list)(nil)\n\ntype _GenesisState_2_list struct {\n\tlist *[]*ICAConnection\n}\n\nfunc (x *_GenesisState_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ICAConnection)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ICAConnection)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_2_list) AppendMutable() protoreflect.Value {\n\tv := new(ICAConnection)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_2_list) NewElement() protoreflect.Value {\n\tv := new(ICAConnection)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_3_list)(nil)\n\ntype _GenesisState_3_list struct {\n\tlist *[]*JWSTokenRecord\n}\n\nfunc (x *_GenesisState_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*JWSTokenRecord)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*JWSTokenRecord)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_3_list) AppendMutable() protoreflect.Value {\n\tv := new(JWSTokenRecord)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_3_list) NewElement() protoreflect.Value {\n\tv := new(JWSTokenRecord)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_GenesisState                 protoreflect.MessageDescriptor\n\tfd_GenesisState_params          protoreflect.FieldDescriptor\n\tfd_GenesisState_ica_connections protoreflect.FieldDescriptor\n\tfd_GenesisState_jws_tokens      protoreflect.FieldDescriptor\n\tfd_GenesisState_chain_config    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_genesis_proto_init()\n\tmd_GenesisState = File_sourcehub_hub_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_params = md_GenesisState.Fields().ByName(\"params\")\n\tfd_GenesisState_ica_connections = md_GenesisState.Fields().ByName(\"ica_connections\")\n\tfd_GenesisState_jws_tokens = md_GenesisState.Fields().ByName(\"jws_tokens\")\n\tfd_GenesisState_chain_config = md_GenesisState.Fields().ByName(\"chain_config\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_GenesisState_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.IcaConnections) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.IcaConnections})\n\t\tif !f(fd_GenesisState_ica_connections, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.JwsTokens) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.JwsTokens})\n\t\tif !f(fd_GenesisState_jws_tokens, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ChainConfig != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ChainConfig.ProtoReflect())\n\t\tif !f(fd_GenesisState_chain_config, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\treturn x.Params != nil\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\treturn len(x.IcaConnections) != 0\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\treturn len(x.JwsTokens) != 0\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\treturn x.ChainConfig != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\tx.Params = nil\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\tx.IcaConnections = nil\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\tx.JwsTokens = nil\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\tx.ChainConfig = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\tif len(x.IcaConnections) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_2_list{list: &x.IcaConnections}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\tif len(x.JwsTokens) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_3_list{list: &x.JwsTokens}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\tvalue := x.ChainConfig\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_2_list)\n\t\tx.IcaConnections = *clv.list\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_3_list)\n\t\tx.JwsTokens = *clv.list\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\tx.ChainConfig = value.Message().Interface().(*ChainConfig)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\tif x.IcaConnections == nil {\n\t\t\tx.IcaConnections = []*ICAConnection{}\n\t\t}\n\t\tvalue := &_GenesisState_2_list{list: &x.IcaConnections}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\tif x.JwsTokens == nil {\n\t\t\tx.JwsTokens = []*JWSTokenRecord{}\n\t\t}\n\t\tvalue := &_GenesisState_3_list{list: &x.JwsTokens}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\tif x.ChainConfig == nil {\n\t\t\tx.ChainConfig = new(ChainConfig)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ChainConfig.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.GenesisState.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.GenesisState.ica_connections\":\n\t\tlist := []*ICAConnection{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{list: &list})\n\tcase \"sourcehub.hub.GenesisState.jws_tokens\":\n\t\tlist := []*JWSTokenRecord{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{list: &list})\n\tcase \"sourcehub.hub.GenesisState.chain_config\":\n\t\tm := new(ChainConfig)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.IcaConnections) > 0 {\n\t\t\tfor _, e := range x.IcaConnections {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.JwsTokens) > 0 {\n\t\t\tfor _, e := range x.JwsTokens {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.ChainConfig != nil {\n\t\t\tl = options.Size(x.ChainConfig)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.ChainConfig != nil {\n\t\t\tencoded, err := options.Marshal(x.ChainConfig)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.JwsTokens) > 0 {\n\t\t\tfor iNdEx := len(x.JwsTokens) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.JwsTokens[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.IcaConnections) > 0 {\n\t\t\tfor iNdEx := len(x.IcaConnections) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.IcaConnections[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IcaConnections\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.IcaConnections = append(x.IcaConnections, &ICAConnection{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.IcaConnections[len(x.IcaConnections)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field JwsTokens\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.JwsTokens = append(x.JwsTokens, &JWSTokenRecord{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.JwsTokens[len(x.JwsTokens)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ChainConfig\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ChainConfig == nil {\n\t\t\t\t\tx.ChainConfig = &ChainConfig{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ChainConfig); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// GenesisState defines the hub module's genesis state.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params defines all the parameters of the module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n\t// ica_connections defines the list of ICA connections.\n\tIcaConnections []*ICAConnection `protobuf:\"bytes,2,rep,name=ica_connections,json=icaConnections,proto3\" json:\"ica_connections,omitempty\"`\n\t// jws_tokens defines the list of JWS token records.\n\tJwsTokens   []*JWSTokenRecord `protobuf:\"bytes,3,rep,name=jws_tokens,json=jwsTokens,proto3\" json:\"jws_tokens,omitempty\"`\n\tChainConfig *ChainConfig      `protobuf:\"bytes,4,opt,name=chain_config,json=chainConfig,proto3\" json:\"chain_config,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GenesisState) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetIcaConnections() []*ICAConnection {\n\tif x != nil {\n\t\treturn x.IcaConnections\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetJwsTokens() []*JWSTokenRecord {\n\tif x != nil {\n\t\treturn x.JwsTokens\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetChainConfig() *ChainConfig {\n\tif x != nil {\n\t\treturn x.ChainConfig\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_hub_genesis_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x1b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x1a, 0x11, 0x61, 0x6d,\n\t0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62,\n\t0x2f, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x68, 0x75, 0x62, 0x2f, 0x6a, 0x77, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x68, 0x75, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73,\n\t0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09,\n\t0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x49, 0x43, 0x41, 0x43, 0x6f,\n\t0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0e,\n\t0x69, 0x63, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42,\n\t0x0a, 0x0a, 0x6a, 0x77, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68,\n\t0x75, 0x62, 0x2e, 0x4a, 0x57, 0x53, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72,\n\t0x64, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x09, 0x6a, 0x77, 0x73, 0x54, 0x6f, 0x6b, 0x65,\n\t0x6e, 0x73, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66,\n\t0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f,\n\t0x6e, 0x66, 0x69, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52,\n\t0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x96, 0x01, 0x0a,\n\t0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68,\n\t0x75, 0x62, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,\n\t0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68,\n\t0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_genesis_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_genesis_proto_rawDescData = file_sourcehub_hub_genesis_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_genesis_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_genesis_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_genesis_proto_rawDescData\n}\n\nvar file_sourcehub_hub_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_hub_genesis_proto_goTypes = []interface{}{\n\t(*GenesisState)(nil),   // 0: sourcehub.hub.GenesisState\n\t(*Params)(nil),         // 1: sourcehub.hub.Params\n\t(*ICAConnection)(nil),  // 2: sourcehub.hub.ICAConnection\n\t(*JWSTokenRecord)(nil), // 3: sourcehub.hub.JWSTokenRecord\n\t(*ChainConfig)(nil),    // 4: sourcehub.hub.ChainConfig\n}\nvar file_sourcehub_hub_genesis_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.hub.GenesisState.params:type_name -> sourcehub.hub.Params\n\t2, // 1: sourcehub.hub.GenesisState.ica_connections:type_name -> sourcehub.hub.ICAConnection\n\t3, // 2: sourcehub.hub.GenesisState.jws_tokens:type_name -> sourcehub.hub.JWSTokenRecord\n\t4, // 3: sourcehub.hub.GenesisState.chain_config:type_name -> sourcehub.hub.ChainConfig\n\t4, // [4:4] is the sub-list for method output_type\n\t4, // [4:4] is the sub-list for method input_type\n\t4, // [4:4] is the sub-list for extension type_name\n\t4, // [4:4] is the sub-list for extension extendee\n\t0, // [0:4] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_genesis_proto_init() }\nfunc file_sourcehub_hub_genesis_proto_init() {\n\tif File_sourcehub_hub_genesis_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_hub_params_proto_init()\n\tfile_sourcehub_hub_ica_connection_proto_init()\n\tfile_sourcehub_hub_jws_token_proto_init()\n\tfile_sourcehub_hub_chain_config_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_genesis_proto = out.File\n\tfile_sourcehub_hub_genesis_proto_rawDesc = nil\n\tfile_sourcehub_hub_genesis_proto_goTypes = nil\n\tfile_sourcehub_hub_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/ica_connection.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_ICAConnection                     protoreflect.MessageDescriptor\n\tfd_ICAConnection_ica_address         protoreflect.FieldDescriptor\n\tfd_ICAConnection_controller_address  protoreflect.FieldDescriptor\n\tfd_ICAConnection_controller_chain_id protoreflect.FieldDescriptor\n\tfd_ICAConnection_connection_id       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_ica_connection_proto_init()\n\tmd_ICAConnection = File_sourcehub_hub_ica_connection_proto.Messages().ByName(\"ICAConnection\")\n\tfd_ICAConnection_ica_address = md_ICAConnection.Fields().ByName(\"ica_address\")\n\tfd_ICAConnection_controller_address = md_ICAConnection.Fields().ByName(\"controller_address\")\n\tfd_ICAConnection_controller_chain_id = md_ICAConnection.Fields().ByName(\"controller_chain_id\")\n\tfd_ICAConnection_connection_id = md_ICAConnection.Fields().ByName(\"connection_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ICAConnection)(nil)\n\ntype fastReflection_ICAConnection ICAConnection\n\nfunc (x *ICAConnection) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ICAConnection)(x)\n}\n\nfunc (x *ICAConnection) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_ica_connection_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ICAConnection_messageType fastReflection_ICAConnection_messageType\nvar _ protoreflect.MessageType = fastReflection_ICAConnection_messageType{}\n\ntype fastReflection_ICAConnection_messageType struct{}\n\nfunc (x fastReflection_ICAConnection_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ICAConnection)(nil)\n}\nfunc (x fastReflection_ICAConnection_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ICAConnection)\n}\nfunc (x fastReflection_ICAConnection_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ICAConnection\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ICAConnection) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ICAConnection\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ICAConnection) Type() protoreflect.MessageType {\n\treturn _fastReflection_ICAConnection_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ICAConnection) New() protoreflect.Message {\n\treturn new(fastReflection_ICAConnection)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ICAConnection) Interface() protoreflect.ProtoMessage {\n\treturn (*ICAConnection)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ICAConnection) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.IcaAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.IcaAddress)\n\t\tif !f(fd_ICAConnection_ica_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ControllerAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ControllerAddress)\n\t\tif !f(fd_ICAConnection_controller_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ControllerChainId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ControllerChainId)\n\t\tif !f(fd_ICAConnection_controller_chain_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ConnectionId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ConnectionId)\n\t\tif !f(fd_ICAConnection_connection_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ICAConnection) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\treturn x.IcaAddress != \"\"\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\treturn x.ControllerAddress != \"\"\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\treturn x.ControllerChainId != \"\"\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\treturn x.ConnectionId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ICAConnection) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\tx.IcaAddress = \"\"\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\tx.ControllerAddress = \"\"\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\tx.ControllerChainId = \"\"\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\tx.ConnectionId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ICAConnection) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\tvalue := x.IcaAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\tvalue := x.ControllerAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\tvalue := x.ControllerChainId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\tvalue := x.ConnectionId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ICAConnection) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\tx.IcaAddress = value.Interface().(string)\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\tx.ControllerAddress = value.Interface().(string)\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\tx.ControllerChainId = value.Interface().(string)\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\tx.ConnectionId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ICAConnection) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\tpanic(fmt.Errorf(\"field ica_address of message sourcehub.hub.ICAConnection is not mutable\"))\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\tpanic(fmt.Errorf(\"field controller_address of message sourcehub.hub.ICAConnection is not mutable\"))\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\tpanic(fmt.Errorf(\"field controller_chain_id of message sourcehub.hub.ICAConnection is not mutable\"))\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\tpanic(fmt.Errorf(\"field connection_id of message sourcehub.hub.ICAConnection is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ICAConnection) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.ICAConnection.ica_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.ICAConnection.controller_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.ICAConnection.controller_chain_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.ICAConnection.connection_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.ICAConnection\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.ICAConnection does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ICAConnection) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.ICAConnection\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ICAConnection) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ICAConnection) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ICAConnection) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ICAConnection) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ICAConnection)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.IcaAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ControllerAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ControllerChainId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ConnectionId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ICAConnection)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ConnectionId) > 0 {\n\t\t\ti -= len(x.ConnectionId)\n\t\t\tcopy(dAtA[i:], x.ConnectionId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ConnectionId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.ControllerChainId) > 0 {\n\t\t\ti -= len(x.ControllerChainId)\n\t\t\tcopy(dAtA[i:], x.ControllerChainId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ControllerChainId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ControllerAddress) > 0 {\n\t\t\ti -= len(x.ControllerAddress)\n\t\t\tcopy(dAtA[i:], x.ControllerAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ControllerAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.IcaAddress) > 0 {\n\t\t\ti -= len(x.IcaAddress)\n\t\t\tcopy(dAtA[i:], x.IcaAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.IcaAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ICAConnection)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ICAConnection: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ICAConnection: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IcaAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.IcaAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ControllerAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ControllerAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ControllerChainId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ControllerChainId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ConnectionId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ConnectionId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/ica_connection.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// ICAConnection represents an interchain account connection between a controller and host chain.\ntype ICAConnection struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// ica_address is the interchain account address generated on the host chain.\n\tIcaAddress string `protobuf:\"bytes,1,opt,name=ica_address,json=icaAddress,proto3\" json:\"ica_address,omitempty\"`\n\t// controller_address is the address of the controlling account on the controller chain.\n\tControllerAddress string `protobuf:\"bytes,2,opt,name=controller_address,json=controllerAddress,proto3\" json:\"controller_address,omitempty\"`\n\t// controller_chain_id is the chain ID of the controller chain.\n\tControllerChainId string `protobuf:\"bytes,3,opt,name=controller_chain_id,json=controllerChainId,proto3\" json:\"controller_chain_id,omitempty\"`\n\t// connection_id is the IBC connection ID used for this interchain account.\n\tConnectionId string `protobuf:\"bytes,4,opt,name=connection_id,json=connectionId,proto3\" json:\"connection_id,omitempty\"`\n}\n\nfunc (x *ICAConnection) Reset() {\n\t*x = ICAConnection{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_ica_connection_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ICAConnection) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ICAConnection) ProtoMessage() {}\n\n// Deprecated: Use ICAConnection.ProtoReflect.Descriptor instead.\nfunc (*ICAConnection) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_ica_connection_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ICAConnection) GetIcaAddress() string {\n\tif x != nil {\n\t\treturn x.IcaAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *ICAConnection) GetControllerAddress() string {\n\tif x != nil {\n\t\treturn x.ControllerAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *ICAConnection) GetControllerChainId() string {\n\tif x != nil {\n\t\treturn x.ControllerChainId\n\t}\n\treturn \"\"\n}\n\nfunc (x *ICAConnection) GetConnectionId() string {\n\tif x != nil {\n\t\treturn x.ConnectionId\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_hub_ica_connection_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_ica_connection_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x68, 0x75, 0x62, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x49, 0x43, 0x41, 0x43, 0x6f, 0x6e, 0x6e, 0x65,\n\t0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x61, 0x5f, 0x61, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x63, 0x61, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,\n\t0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x64,\n\t0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,\n\t0x6c, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x43, 0x68,\n\t0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,\n\t0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f,\n\t0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x9c, 0x01, 0x0a, 0x11, 0x63,\n\t0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62,\n\t0x42, 0x12, 0x49, 0x63, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64,\n\t0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa, 0x02, 0x0d, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca, 0x02, 0x0d, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2, 0x02, 0x19, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x47, 0x50, 0x42,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_ica_connection_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_ica_connection_proto_rawDescData = file_sourcehub_hub_ica_connection_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_ica_connection_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_ica_connection_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_ica_connection_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_ica_connection_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_ica_connection_proto_rawDescData\n}\n\nvar file_sourcehub_hub_ica_connection_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_hub_ica_connection_proto_goTypes = []interface{}{\n\t(*ICAConnection)(nil), // 0: sourcehub.hub.ICAConnection\n}\nvar file_sourcehub_hub_ica_connection_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_ica_connection_proto_init() }\nfunc file_sourcehub_hub_ica_connection_proto_init() {\n\tif File_sourcehub_hub_ica_connection_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_ica_connection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ICAConnection); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_ica_connection_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_ica_connection_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_ica_connection_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_ica_connection_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_ica_connection_proto = out.File\n\tfile_sourcehub_hub_ica_connection_proto_rawDesc = nil\n\tfile_sourcehub_hub_ica_connection_proto_goTypes = nil\n\tfile_sourcehub_hub_ica_connection_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/jws_token.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_JWSTokenRecord                    protoreflect.MessageDescriptor\n\tfd_JWSTokenRecord_token_hash         protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_bearer_token       protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_issuer_did         protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_authorized_account protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_issued_at          protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_expires_at         protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_status             protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_first_used_at      protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_last_used_at       protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_invalidated_at     protoreflect.FieldDescriptor\n\tfd_JWSTokenRecord_invalidated_by     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_jws_token_proto_init()\n\tmd_JWSTokenRecord = File_sourcehub_hub_jws_token_proto.Messages().ByName(\"JWSTokenRecord\")\n\tfd_JWSTokenRecord_token_hash = md_JWSTokenRecord.Fields().ByName(\"token_hash\")\n\tfd_JWSTokenRecord_bearer_token = md_JWSTokenRecord.Fields().ByName(\"bearer_token\")\n\tfd_JWSTokenRecord_issuer_did = md_JWSTokenRecord.Fields().ByName(\"issuer_did\")\n\tfd_JWSTokenRecord_authorized_account = md_JWSTokenRecord.Fields().ByName(\"authorized_account\")\n\tfd_JWSTokenRecord_issued_at = md_JWSTokenRecord.Fields().ByName(\"issued_at\")\n\tfd_JWSTokenRecord_expires_at = md_JWSTokenRecord.Fields().ByName(\"expires_at\")\n\tfd_JWSTokenRecord_status = md_JWSTokenRecord.Fields().ByName(\"status\")\n\tfd_JWSTokenRecord_first_used_at = md_JWSTokenRecord.Fields().ByName(\"first_used_at\")\n\tfd_JWSTokenRecord_last_used_at = md_JWSTokenRecord.Fields().ByName(\"last_used_at\")\n\tfd_JWSTokenRecord_invalidated_at = md_JWSTokenRecord.Fields().ByName(\"invalidated_at\")\n\tfd_JWSTokenRecord_invalidated_by = md_JWSTokenRecord.Fields().ByName(\"invalidated_by\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_JWSTokenRecord)(nil)\n\ntype fastReflection_JWSTokenRecord JWSTokenRecord\n\nfunc (x *JWSTokenRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_JWSTokenRecord)(x)\n}\n\nfunc (x *JWSTokenRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_jws_token_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_JWSTokenRecord_messageType fastReflection_JWSTokenRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_JWSTokenRecord_messageType{}\n\ntype fastReflection_JWSTokenRecord_messageType struct{}\n\nfunc (x fastReflection_JWSTokenRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_JWSTokenRecord)(nil)\n}\nfunc (x fastReflection_JWSTokenRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_JWSTokenRecord)\n}\nfunc (x fastReflection_JWSTokenRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_JWSTokenRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_JWSTokenRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_JWSTokenRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_JWSTokenRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_JWSTokenRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_JWSTokenRecord) New() protoreflect.Message {\n\treturn new(fastReflection_JWSTokenRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_JWSTokenRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*JWSTokenRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_JWSTokenRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.TokenHash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.TokenHash)\n\t\tif !f(fd_JWSTokenRecord_token_hash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.BearerToken != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.BearerToken)\n\t\tif !f(fd_JWSTokenRecord_bearer_token, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.IssuerDid)\n\t\tif !f(fd_JWSTokenRecord_issuer_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AuthorizedAccount != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.AuthorizedAccount)\n\t\tif !f(fd_JWSTokenRecord_authorized_account, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.IssuedAt.ProtoReflect())\n\t\tif !f(fd_JWSTokenRecord_issued_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ExpiresAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ExpiresAt.ProtoReflect())\n\t\tif !f(fd_JWSTokenRecord_expires_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Status != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Status))\n\t\tif !f(fd_JWSTokenRecord_status, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.FirstUsedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.FirstUsedAt.ProtoReflect())\n\t\tif !f(fd_JWSTokenRecord_first_used_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LastUsedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.LastUsedAt.ProtoReflect())\n\t\tif !f(fd_JWSTokenRecord_last_used_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.InvalidatedAt != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.InvalidatedAt.ProtoReflect())\n\t\tif !f(fd_JWSTokenRecord_invalidated_at, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.InvalidatedBy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.InvalidatedBy)\n\t\tif !f(fd_JWSTokenRecord_invalidated_by, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_JWSTokenRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\treturn x.TokenHash != \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\treturn x.BearerToken != \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\treturn x.IssuerDid != \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\treturn x.AuthorizedAccount != \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\treturn x.IssuedAt != nil\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\treturn x.ExpiresAt != nil\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\treturn x.Status != 0\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\treturn x.FirstUsedAt != nil\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\treturn x.LastUsedAt != nil\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\treturn x.InvalidatedAt != nil\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\treturn x.InvalidatedBy != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSTokenRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\tx.TokenHash = \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\tx.BearerToken = \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\tx.IssuerDid = \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\tx.AuthorizedAccount = \"\"\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\tx.IssuedAt = nil\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\tx.ExpiresAt = nil\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\tx.Status = 0\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\tx.FirstUsedAt = nil\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\tx.LastUsedAt = nil\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\tx.InvalidatedAt = nil\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\tx.InvalidatedBy = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_JWSTokenRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\tvalue := x.TokenHash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\tvalue := x.BearerToken\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\tvalue := x.IssuerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\tvalue := x.AuthorizedAccount\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\tvalue := x.IssuedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\tvalue := x.ExpiresAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\tvalue := x.Status\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\tvalue := x.FirstUsedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\tvalue := x.LastUsedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\tvalue := x.InvalidatedAt\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\tvalue := x.InvalidatedBy\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSTokenRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\tx.TokenHash = value.Interface().(string)\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\tx.BearerToken = value.Interface().(string)\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\tx.IssuerDid = value.Interface().(string)\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\tx.AuthorizedAccount = value.Interface().(string)\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\tx.IssuedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\tx.ExpiresAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\tx.Status = (JWSTokenStatus)(value.Enum())\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\tx.FirstUsedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\tx.LastUsedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\tx.InvalidatedAt = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\tx.InvalidatedBy = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSTokenRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\tif x.IssuedAt == nil {\n\t\t\tx.IssuedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.IssuedAt.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\tif x.ExpiresAt == nil {\n\t\t\tx.ExpiresAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ExpiresAt.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\tif x.FirstUsedAt == nil {\n\t\t\tx.FirstUsedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.FirstUsedAt.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\tif x.LastUsedAt == nil {\n\t\t\tx.LastUsedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.LastUsedAt.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\tif x.InvalidatedAt == nil {\n\t\t\tx.InvalidatedAt = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.InvalidatedAt.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\tpanic(fmt.Errorf(\"field token_hash of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\tpanic(fmt.Errorf(\"field bearer_token of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\tpanic(fmt.Errorf(\"field issuer_did of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\tpanic(fmt.Errorf(\"field authorized_account of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\tpanic(fmt.Errorf(\"field status of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\tpanic(fmt.Errorf(\"field invalidated_by of message sourcehub.hub.JWSTokenRecord is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_JWSTokenRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.JWSTokenRecord.token_hash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.JWSTokenRecord.bearer_token\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.JWSTokenRecord.issuer_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.JWSTokenRecord.authorized_account\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.JWSTokenRecord.issued_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.expires_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.status\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tcase \"sourcehub.hub.JWSTokenRecord.first_used_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.last_used_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_at\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.hub.JWSTokenRecord.invalidated_by\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.JWSTokenRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.JWSTokenRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_JWSTokenRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.JWSTokenRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_JWSTokenRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_JWSTokenRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_JWSTokenRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_JWSTokenRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*JWSTokenRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.TokenHash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.BearerToken)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.IssuerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.AuthorizedAccount)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.IssuedAt != nil {\n\t\t\tl = options.Size(x.IssuedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.ExpiresAt != nil {\n\t\t\tl = options.Size(x.ExpiresAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Status != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Status))\n\t\t}\n\t\tif x.FirstUsedAt != nil {\n\t\t\tl = options.Size(x.FirstUsedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.LastUsedAt != nil {\n\t\t\tl = options.Size(x.LastUsedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.InvalidatedAt != nil {\n\t\t\tl = options.Size(x.InvalidatedAt)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.InvalidatedBy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*JWSTokenRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.InvalidatedBy) > 0 {\n\t\t\ti -= len(x.InvalidatedBy)\n\t\t\tcopy(dAtA[i:], x.InvalidatedBy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.InvalidatedBy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x5a\n\t\t}\n\t\tif x.InvalidatedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.InvalidatedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x52\n\t\t}\n\t\tif x.LastUsedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.LastUsedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x4a\n\t\t}\n\t\tif x.FirstUsedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.FirstUsedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.Status != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Status))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x38\n\t\t}\n\t\tif x.ExpiresAt != nil {\n\t\t\tencoded, err := options.Marshal(x.ExpiresAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif x.IssuedAt != nil {\n\t\t\tencoded, err := options.Marshal(x.IssuedAt)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.AuthorizedAccount) > 0 {\n\t\t\ti -= len(x.AuthorizedAccount)\n\t\t\tcopy(dAtA[i:], x.AuthorizedAccount)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.AuthorizedAccount)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.IssuerDid) > 0 {\n\t\t\ti -= len(x.IssuerDid)\n\t\t\tcopy(dAtA[i:], x.IssuerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.IssuerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.BearerToken) > 0 {\n\t\t\ti -= len(x.BearerToken)\n\t\t\tcopy(dAtA[i:], x.BearerToken)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.BearerToken)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.TokenHash) > 0 {\n\t\t\ti -= len(x.TokenHash)\n\t\t\tcopy(dAtA[i:], x.TokenHash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TokenHash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*JWSTokenRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: JWSTokenRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: JWSTokenRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.IssuerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AuthorizedAccount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.AuthorizedAccount = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.IssuedAt == nil {\n\t\t\t\t\tx.IssuedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.IssuedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ExpiresAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ExpiresAt == nil {\n\t\t\t\t\tx.ExpiresAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExpiresAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Status\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Status = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Status |= JWSTokenStatus(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field FirstUsedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.FirstUsedAt == nil {\n\t\t\t\t\tx.FirstUsedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.FirstUsedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 9:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LastUsedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.LastUsedAt == nil {\n\t\t\t\t\tx.LastUsedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.LastUsedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 10:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedAt\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.InvalidatedAt == nil {\n\t\t\t\t\tx.InvalidatedAt = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.InvalidatedAt); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 11:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedBy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.InvalidatedBy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventJWSTokenInvalidated                    protoreflect.MessageDescriptor\n\tfd_EventJWSTokenInvalidated_token_hash         protoreflect.FieldDescriptor\n\tfd_EventJWSTokenInvalidated_issuer_did         protoreflect.FieldDescriptor\n\tfd_EventJWSTokenInvalidated_authorized_account protoreflect.FieldDescriptor\n\tfd_EventJWSTokenInvalidated_invalidated_by     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_jws_token_proto_init()\n\tmd_EventJWSTokenInvalidated = File_sourcehub_hub_jws_token_proto.Messages().ByName(\"EventJWSTokenInvalidated\")\n\tfd_EventJWSTokenInvalidated_token_hash = md_EventJWSTokenInvalidated.Fields().ByName(\"token_hash\")\n\tfd_EventJWSTokenInvalidated_issuer_did = md_EventJWSTokenInvalidated.Fields().ByName(\"issuer_did\")\n\tfd_EventJWSTokenInvalidated_authorized_account = md_EventJWSTokenInvalidated.Fields().ByName(\"authorized_account\")\n\tfd_EventJWSTokenInvalidated_invalidated_by = md_EventJWSTokenInvalidated.Fields().ByName(\"invalidated_by\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventJWSTokenInvalidated)(nil)\n\ntype fastReflection_EventJWSTokenInvalidated EventJWSTokenInvalidated\n\nfunc (x *EventJWSTokenInvalidated) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventJWSTokenInvalidated)(x)\n}\n\nfunc (x *EventJWSTokenInvalidated) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_jws_token_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventJWSTokenInvalidated_messageType fastReflection_EventJWSTokenInvalidated_messageType\nvar _ protoreflect.MessageType = fastReflection_EventJWSTokenInvalidated_messageType{}\n\ntype fastReflection_EventJWSTokenInvalidated_messageType struct{}\n\nfunc (x fastReflection_EventJWSTokenInvalidated_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventJWSTokenInvalidated)(nil)\n}\nfunc (x fastReflection_EventJWSTokenInvalidated_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventJWSTokenInvalidated)\n}\nfunc (x fastReflection_EventJWSTokenInvalidated_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventJWSTokenInvalidated\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventJWSTokenInvalidated\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventJWSTokenInvalidated_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventJWSTokenInvalidated) New() protoreflect.Message {\n\treturn new(fastReflection_EventJWSTokenInvalidated)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Interface() protoreflect.ProtoMessage {\n\treturn (*EventJWSTokenInvalidated)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.TokenHash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.TokenHash)\n\t\tif !f(fd_EventJWSTokenInvalidated_token_hash, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.IssuerDid)\n\t\tif !f(fd_EventJWSTokenInvalidated_issuer_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AuthorizedAccount != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.AuthorizedAccount)\n\t\tif !f(fd_EventJWSTokenInvalidated_authorized_account, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.InvalidatedBy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.InvalidatedBy)\n\t\tif !f(fd_EventJWSTokenInvalidated_invalidated_by, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\treturn x.TokenHash != \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\treturn x.IssuerDid != \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\treturn x.AuthorizedAccount != \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\treturn x.InvalidatedBy != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\tx.TokenHash = \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\tx.IssuerDid = \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\tx.AuthorizedAccount = \"\"\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\tx.InvalidatedBy = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\tvalue := x.TokenHash\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\tvalue := x.IssuerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\tvalue := x.AuthorizedAccount\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\tvalue := x.InvalidatedBy\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\tx.TokenHash = value.Interface().(string)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\tx.IssuerDid = value.Interface().(string)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\tx.AuthorizedAccount = value.Interface().(string)\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\tx.InvalidatedBy = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventJWSTokenInvalidated) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\tpanic(fmt.Errorf(\"field token_hash of message sourcehub.hub.EventJWSTokenInvalidated is not mutable\"))\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\tpanic(fmt.Errorf(\"field issuer_did of message sourcehub.hub.EventJWSTokenInvalidated is not mutable\"))\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\tpanic(fmt.Errorf(\"field authorized_account of message sourcehub.hub.EventJWSTokenInvalidated is not mutable\"))\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\tpanic(fmt.Errorf(\"field invalidated_by of message sourcehub.hub.EventJWSTokenInvalidated is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventJWSTokenInvalidated) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.token_hash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.issuer_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.authorized_account\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.EventJWSTokenInvalidated.invalidated_by\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.EventJWSTokenInvalidated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.EventJWSTokenInvalidated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventJWSTokenInvalidated) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.EventJWSTokenInvalidated\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventJWSTokenInvalidated) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventJWSTokenInvalidated) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventJWSTokenInvalidated) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventJWSTokenInvalidated) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventJWSTokenInvalidated)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.TokenHash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.IssuerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.AuthorizedAccount)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.InvalidatedBy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventJWSTokenInvalidated)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.InvalidatedBy) > 0 {\n\t\t\ti -= len(x.InvalidatedBy)\n\t\t\tcopy(dAtA[i:], x.InvalidatedBy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.InvalidatedBy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.AuthorizedAccount) > 0 {\n\t\t\ti -= len(x.AuthorizedAccount)\n\t\t\tcopy(dAtA[i:], x.AuthorizedAccount)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.AuthorizedAccount)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.IssuerDid) > 0 {\n\t\t\ti -= len(x.IssuerDid)\n\t\t\tcopy(dAtA[i:], x.IssuerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.IssuerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.TokenHash) > 0 {\n\t\t\ti -= len(x.TokenHash)\n\t\t\tcopy(dAtA[i:], x.TokenHash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TokenHash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventJWSTokenInvalidated)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventJWSTokenInvalidated: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventJWSTokenInvalidated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.IssuerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AuthorizedAccount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.AuthorizedAccount = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedBy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.InvalidatedBy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/jws_token.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// JWSTokenStatus represents the validity status of a JWS token.\ntype JWSTokenStatus int32\n\nconst (\n\t// STATUS_UNSPECIFIED is the default/invalid status.\n\tJWSTokenStatus_STATUS_UNSPECIFIED JWSTokenStatus = 0\n\t// STATUS_VALID indicates the token is valid and can be used.\n\tJWSTokenStatus_STATUS_VALID JWSTokenStatus = 1\n\t// STATUS_INVALID indicates the token has been invalidated.\n\tJWSTokenStatus_STATUS_INVALID JWSTokenStatus = 2\n)\n\n// Enum value maps for JWSTokenStatus.\nvar (\n\tJWSTokenStatus_name = map[int32]string{\n\t\t0: \"STATUS_UNSPECIFIED\",\n\t\t1: \"STATUS_VALID\",\n\t\t2: \"STATUS_INVALID\",\n\t}\n\tJWSTokenStatus_value = map[string]int32{\n\t\t\"STATUS_UNSPECIFIED\": 0,\n\t\t\"STATUS_VALID\":       1,\n\t\t\"STATUS_INVALID\":     2,\n\t}\n)\n\nfunc (x JWSTokenStatus) Enum() *JWSTokenStatus {\n\tp := new(JWSTokenStatus)\n\t*p = x\n\treturn p\n}\n\nfunc (x JWSTokenStatus) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (JWSTokenStatus) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcehub_hub_jws_token_proto_enumTypes[0].Descriptor()\n}\n\nfunc (JWSTokenStatus) Type() protoreflect.EnumType {\n\treturn &file_sourcehub_hub_jws_token_proto_enumTypes[0]\n}\n\nfunc (x JWSTokenStatus) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use JWSTokenStatus.Descriptor instead.\nfunc (JWSTokenStatus) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_jws_token_proto_rawDescGZIP(), []int{0}\n}\n\n// JWSTokenRecord represents a stored JWS token with its metadata.\n// The bearer_token field contains sensitive credentials and should not be exposed via public endpoints.\ntype JWSTokenRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// token_hash is the unique identifier of the JWS token\n\tTokenHash string `protobuf:\"bytes,1,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n\t// bearer_token is the full JWS token string.\n\tBearerToken string `protobuf:\"bytes,2,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\"`\n\t// issuer_did is the DID that issued/signed the token.\n\tIssuerDid string `protobuf:\"bytes,3,opt,name=issuer_did,json=issuerDid,proto3\" json:\"issuer_did,omitempty\"`\n\t// authorized_account is the account authorized to use this token.\n\tAuthorizedAccount string `protobuf:\"bytes,4,opt,name=authorized_account,json=authorizedAccount,proto3\" json:\"authorized_account,omitempty\"`\n\t// issued_at is when the token was created.\n\tIssuedAt *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=issued_at,json=issuedAt,proto3\" json:\"issued_at,omitempty\"`\n\t// expires_at is when the token expires.\n\tExpiresAt *timestamppb.Timestamp `protobuf:\"bytes,6,opt,name=expires_at,json=expiresAt,proto3\" json:\"expires_at,omitempty\"`\n\t// status is the current validity status of the token.\n\tStatus JWSTokenStatus `protobuf:\"varint,7,opt,name=status,proto3,enum=sourcehub.hub.JWSTokenStatus\" json:\"status,omitempty\"`\n\t// first_used_at is when the token was first used in a transaction.\n\tFirstUsedAt *timestamppb.Timestamp `protobuf:\"bytes,8,opt,name=first_used_at,json=firstUsedAt,proto3\" json:\"first_used_at,omitempty\"`\n\t// last_used_at is when the token was last used in a transaction.\n\tLastUsedAt *timestamppb.Timestamp `protobuf:\"bytes,9,opt,name=last_used_at,json=lastUsedAt,proto3\" json:\"last_used_at,omitempty\"`\n\t// invalidated_at is when the token was manually invalidated (if applicable).\n\tInvalidatedAt *timestamppb.Timestamp `protobuf:\"bytes,10,opt,name=invalidated_at,json=invalidatedAt,proto3\" json:\"invalidated_at,omitempty\"`\n\t// invalidated_by is the account that invalidated the token (if applicable).\n\tInvalidatedBy string `protobuf:\"bytes,11,opt,name=invalidated_by,json=invalidatedBy,proto3\" json:\"invalidated_by,omitempty\"`\n}\n\nfunc (x *JWSTokenRecord) Reset() {\n\t*x = JWSTokenRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_jws_token_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *JWSTokenRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*JWSTokenRecord) ProtoMessage() {}\n\n// Deprecated: Use JWSTokenRecord.ProtoReflect.Descriptor instead.\nfunc (*JWSTokenRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_jws_token_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *JWSTokenRecord) GetTokenHash() string {\n\tif x != nil {\n\t\treturn x.TokenHash\n\t}\n\treturn \"\"\n}\n\nfunc (x *JWSTokenRecord) GetBearerToken() string {\n\tif x != nil {\n\t\treturn x.BearerToken\n\t}\n\treturn \"\"\n}\n\nfunc (x *JWSTokenRecord) GetIssuerDid() string {\n\tif x != nil {\n\t\treturn x.IssuerDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *JWSTokenRecord) GetAuthorizedAccount() string {\n\tif x != nil {\n\t\treturn x.AuthorizedAccount\n\t}\n\treturn \"\"\n}\n\nfunc (x *JWSTokenRecord) GetIssuedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.IssuedAt\n\t}\n\treturn nil\n}\n\nfunc (x *JWSTokenRecord) GetExpiresAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.ExpiresAt\n\t}\n\treturn nil\n}\n\nfunc (x *JWSTokenRecord) GetStatus() JWSTokenStatus {\n\tif x != nil {\n\t\treturn x.Status\n\t}\n\treturn JWSTokenStatus_STATUS_UNSPECIFIED\n}\n\nfunc (x *JWSTokenRecord) GetFirstUsedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.FirstUsedAt\n\t}\n\treturn nil\n}\n\nfunc (x *JWSTokenRecord) GetLastUsedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.LastUsedAt\n\t}\n\treturn nil\n}\n\nfunc (x *JWSTokenRecord) GetInvalidatedAt() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.InvalidatedAt\n\t}\n\treturn nil\n}\n\nfunc (x *JWSTokenRecord) GetInvalidatedBy() string {\n\tif x != nil {\n\t\treturn x.InvalidatedBy\n\t}\n\treturn \"\"\n}\n\n// EventJWSTokenInvalidated is emitted when a JWS token is invalidated.\ntype EventJWSTokenInvalidated struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// token_hash is the unique identifier of the invalidated token.\n\tTokenHash string `protobuf:\"bytes,1,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n\t// issuer_did is the DID that issued the token.\n\tIssuerDid string `protobuf:\"bytes,2,opt,name=issuer_did,json=issuerDid,proto3\" json:\"issuer_did,omitempty\"`\n\t// authorized_account is the account that was authorized to use this token.\n\tAuthorizedAccount string `protobuf:\"bytes,3,opt,name=authorized_account,json=authorizedAccount,proto3\" json:\"authorized_account,omitempty\"`\n\t// invalidated_by is the account that invalidated the token.\n\tInvalidatedBy string `protobuf:\"bytes,4,opt,name=invalidated_by,json=invalidatedBy,proto3\" json:\"invalidated_by,omitempty\"`\n}\n\nfunc (x *EventJWSTokenInvalidated) Reset() {\n\t*x = EventJWSTokenInvalidated{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_jws_token_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventJWSTokenInvalidated) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventJWSTokenInvalidated) ProtoMessage() {}\n\n// Deprecated: Use EventJWSTokenInvalidated.ProtoReflect.Descriptor instead.\nfunc (*EventJWSTokenInvalidated) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_jws_token_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EventJWSTokenInvalidated) GetTokenHash() string {\n\tif x != nil {\n\t\treturn x.TokenHash\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventJWSTokenInvalidated) GetIssuerDid() string {\n\tif x != nil {\n\t\treturn x.IssuerDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventJWSTokenInvalidated) GetAuthorizedAccount() string {\n\tif x != nil {\n\t\treturn x.AuthorizedAccount\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventJWSTokenInvalidated) GetInvalidatedBy() string {\n\tif x != nil {\n\t\treturn x.InvalidatedBy\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_hub_jws_token_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_jws_token_proto_rawDesc = []byte{\n\t0x0a, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x6a, 0x77, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,\n\t0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x04, 0x0a, 0x0e, 0x4a, 0x57, 0x53, 0x54, 0x6f, 0x6b,\n\t0x65, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65,\n\t0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f,\n\t0x6b, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x65, 0x61, 0x72, 0x65,\n\t0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62,\n\t0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73,\n\t0x73, 0x75, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,\n\t0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x75, 0x74,\n\t0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65,\n\t0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x73, 0x73, 0x75,\n\t0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f,\n\t0x01, 0x52, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x65,\n\t0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,\n\t0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xc8, 0xde, 0x1f,\n\t0x00, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74,\n\t0x12, 0x35, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e,\n\t0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62,\n\t0x2e, 0x4a, 0x57, 0x53, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,\n\t0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x69, 0x72, 0x73, 0x74,\n\t0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90, 0xdf, 0x1f, 0x01,\n\t0x52, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a,\n\t0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,\n\t0x04, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x41,\n\t0x74, 0x12, 0x47, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64,\n\t0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,\n\t0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x0d, 0x69, 0x6e, 0x76,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x0b, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42,\n\t0x79, 0x22, 0xae, 0x01, 0x0a, 0x18, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4a, 0x57, 0x53, 0x54, 0x6f,\n\t0x6b, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1d,\n\t0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a,\n\t0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x12,\n\t0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,\n\t0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,\n\t0x69, 0x7a, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x69,\n\t0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64,\n\t0x42, 0x79, 0x2a, 0x4e, 0x0a, 0x0e, 0x4a, 0x57, 0x53, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x74,\n\t0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55,\n\t0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c,\n\t0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x12,\n\t0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,\n\t0x10, 0x02, 0x42, 0x97, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x42, 0x0d, 0x4a, 0x77, 0x73, 0x54, 0x6f, 0x6b,\n\t0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2,\n\t0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_jws_token_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_jws_token_proto_rawDescData = file_sourcehub_hub_jws_token_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_jws_token_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_jws_token_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_jws_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_jws_token_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_jws_token_proto_rawDescData\n}\n\nvar file_sourcehub_hub_jws_token_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcehub_hub_jws_token_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_hub_jws_token_proto_goTypes = []interface{}{\n\t(JWSTokenStatus)(0),              // 0: sourcehub.hub.JWSTokenStatus\n\t(*JWSTokenRecord)(nil),           // 1: sourcehub.hub.JWSTokenRecord\n\t(*EventJWSTokenInvalidated)(nil), // 2: sourcehub.hub.EventJWSTokenInvalidated\n\t(*timestamppb.Timestamp)(nil),    // 3: google.protobuf.Timestamp\n}\nvar file_sourcehub_hub_jws_token_proto_depIdxs = []int32{\n\t3, // 0: sourcehub.hub.JWSTokenRecord.issued_at:type_name -> google.protobuf.Timestamp\n\t3, // 1: sourcehub.hub.JWSTokenRecord.expires_at:type_name -> google.protobuf.Timestamp\n\t0, // 2: sourcehub.hub.JWSTokenRecord.status:type_name -> sourcehub.hub.JWSTokenStatus\n\t3, // 3: sourcehub.hub.JWSTokenRecord.first_used_at:type_name -> google.protobuf.Timestamp\n\t3, // 4: sourcehub.hub.JWSTokenRecord.last_used_at:type_name -> google.protobuf.Timestamp\n\t3, // 5: sourcehub.hub.JWSTokenRecord.invalidated_at:type_name -> google.protobuf.Timestamp\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_jws_token_proto_init() }\nfunc file_sourcehub_hub_jws_token_proto_init() {\n\tif File_sourcehub_hub_jws_token_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_jws_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*JWSTokenRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_hub_jws_token_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventJWSTokenInvalidated); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_jws_token_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_jws_token_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_jws_token_proto_depIdxs,\n\t\tEnumInfos:         file_sourcehub_hub_jws_token_proto_enumTypes,\n\t\tMessageInfos:      file_sourcehub_hub_jws_token_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_jws_token_proto = out.File\n\tfile_sourcehub_hub_jws_token_proto_rawDesc = nil\n\tfile_sourcehub_hub_jws_token_proto_goTypes = nil\n\tfile_sourcehub_hub_jws_token_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/module/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage module\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Module           protoreflect.MessageDescriptor\n\tfd_Module_authority protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_module_module_proto_init()\n\tmd_Module = File_sourcehub_hub_module_module_proto.Messages().ByName(\"Module\")\n\tfd_Module_authority = md_Module.Fields().ByName(\"authority\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_module_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_Module_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\treturn x.Authority != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\tx.Authority = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.hub.module.Module is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.module.Module.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.module.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.module.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.module.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/module/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object for the module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority defines the custom module authority. If not set, defaults to the governance module.\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_module_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_module_module_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Module) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_hub_module_module_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_module_module_proto_rawDesc = []byte{\n\t0x0a, 0x21, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x12, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68,\n\t0x75, 0x62, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x06, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,\n\t0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,\n\t0x69, 0x74, 0x79, 0x3a, 0x30, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2a, 0x0a, 0x28, 0x67, 0x69, 0x74,\n\t0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x78, 0x2f, 0x68, 0x75, 0x62, 0x42, 0xc0, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x6d, 0x6f, 0x64, 0x75,\n\t0x6c, 0x65, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,\n\t0x01, 0x5a, 0x25, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75,\n\t0x62, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x4d, 0xaa, 0x02,\n\t0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0x2e, 0x4d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0xca, 0x02, 0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0xe2, 0x02, 0x20, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x4d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,\n\t0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x48, 0x75, 0x62,\n\t0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_module_module_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_module_module_proto_rawDescData = file_sourcehub_hub_module_module_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_module_module_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_module_module_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_module_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_module_module_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_module_module_proto_rawDescData\n}\n\nvar file_sourcehub_hub_module_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_hub_module_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: sourcehub.hub.module.Module\n}\nvar file_sourcehub_hub_module_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_module_module_proto_init() }\nfunc file_sourcehub_hub_module_module_proto_init() {\n\tif File_sourcehub_hub_module_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_module_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_module_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_module_module_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_module_module_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_module_module_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_module_module_proto = out.File\n\tfile_sourcehub_hub_module_module_proto_rawDesc = nil\n\tfile_sourcehub_hub_module_module_proto_goTypes = nil\n\tfile_sourcehub_hub_module_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/params.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Params protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_params_proto_init()\n\tmd_Params = File_sourcehub_hub_params_proto.Messages().ByName(\"Params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Params)(nil)\n\ntype fastReflection_Params Params\n\nfunc (x *Params) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Params)(x)\n}\n\nfunc (x *Params) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_params_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Params_messageType fastReflection_Params_messageType\nvar _ protoreflect.MessageType = fastReflection_Params_messageType{}\n\ntype fastReflection_Params_messageType struct{}\n\nfunc (x fastReflection_Params_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Params)(nil)\n}\nfunc (x fastReflection_Params_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\nfunc (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Params) Type() protoreflect.MessageType {\n\treturn _fastReflection_Params_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Params) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Params) Interface() protoreflect.ProtoMessage {\n\treturn (*Params)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.Params\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Params) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Params) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Params) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/params.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Params defines the parameters for the module.\ntype Params struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *Params) Reset() {\n\t*x = Params{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_params_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Params) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Params) ProtoMessage() {}\n\n// Deprecated: Use Params.ProtoReflect.Descriptor instead.\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_params_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_sourcehub_hub_params_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_params_proto_rawDesc = []byte{\n\t0x0a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x1a, 0x11, 0x61, 0x6d, 0x69,\n\t0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0x29, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x1f,\n\t0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x78, 0x2f, 0x68, 0x75, 0x62, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42,\n\t0x95, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x68, 0x75, 0x62, 0x42, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x50, 0x72, 0x6f,\n\t0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e,\n\t0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x68, 0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,\n\t0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_params_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_params_proto_rawDescData = file_sourcehub_hub_params_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_params_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_params_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_params_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_params_proto_rawDescData\n}\n\nvar file_sourcehub_hub_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_hub_params_proto_goTypes = []interface{}{\n\t(*Params)(nil), // 0: sourcehub.hub.Params\n}\nvar file_sourcehub_hub_params_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_params_proto_init() }\nfunc file_sourcehub_hub_params_proto_init() {\n\tif File_sourcehub_hub_params_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Params); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_params_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_params_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_params_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_params_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_params_proto = out.File\n\tfile_sourcehub_hub_params_proto_rawDesc = nil\n\tfile_sourcehub_hub_params_proto_goTypes = nil\n\tfile_sourcehub_hub_params_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryParamsRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_query_proto_init()\n\tmd_QueryParamsRequest = File_sourcehub_hub_query_proto.Messages().ByName(\"QueryParamsRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil)\n\ntype fastReflection_QueryParamsRequest QueryParamsRequest\n\nfunc (x *QueryParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(x)\n}\n\nfunc (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{}\n\ntype fastReflection_QueryParamsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(nil)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.QueryParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryParamsResponse        protoreflect.MessageDescriptor\n\tfd_QueryParamsResponse_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_query_proto_init()\n\tmd_QueryParamsResponse = File_sourcehub_hub_query_proto.Messages().ByName(\"QueryParamsResponse\")\n\tfd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil)\n\ntype fastReflection_QueryParamsResponse QueryParamsResponse\n\nfunc (x *QueryParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(x)\n}\n\nfunc (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{}\n\ntype fastReflection_QueryParamsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(nil)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_QueryParamsResponse_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.QueryParamsResponse.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.QueryParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryParamsRequest) Reset() {\n\t*x = QueryParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_query_proto_rawDescGZIP(), []int{0}\n}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params holds all the parameters of this module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *QueryParamsResponse) Reset() {\n\t*x = QueryParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryParamsResponse) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_hub_query_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_query_proto_rawDesc = []byte{\n\t0x0a, 0x19, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e,\n\t0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67,\n\t0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,\n\t0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62,\n\t0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a,\n\t0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x32, 0x85, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7c,\n\t0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,\n\t0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x94, 0x01, 0x0a,\n\t0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68,\n\t0x75, 0x62, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62,\n\t0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca, 0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2, 0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a,\n\t0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_query_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_query_proto_rawDescData = file_sourcehub_hub_query_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_query_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_query_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_query_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_query_proto_rawDescData\n}\n\nvar file_sourcehub_hub_query_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_hub_query_proto_goTypes = []interface{}{\n\t(*QueryParamsRequest)(nil),  // 0: sourcehub.hub.QueryParamsRequest\n\t(*QueryParamsResponse)(nil), // 1: sourcehub.hub.QueryParamsResponse\n\t(*Params)(nil),              // 2: sourcehub.hub.Params\n}\nvar file_sourcehub_hub_query_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.hub.QueryParamsResponse.params:type_name -> sourcehub.hub.Params\n\t0, // 1: sourcehub.hub.Query.Params:input_type -> sourcehub.hub.QueryParamsRequest\n\t1, // 2: sourcehub.hub.Query.Params:output_type -> sourcehub.hub.QueryParamsResponse\n\t2, // [2:3] is the sub-list for method output_type\n\t1, // [1:2] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_query_proto_init() }\nfunc file_sourcehub_hub_query_proto_init() {\n\tif File_sourcehub_hub_query_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_hub_params_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_hub_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_query_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_query_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_query_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_query_proto = out.File\n\tfile_sourcehub_hub_query_proto_rawDesc = nil\n\tfile_sourcehub_hub_query_proto_goTypes = nil\n\tfile_sourcehub_hub_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/hub/query.proto\n\npackage hub\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_Params_FullMethodName = \"/sourcehub.hub.Query/Params\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Params_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.hub.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/hub/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/hub/tx.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage hub\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_MsgUpdateParams           protoreflect.MessageDescriptor\n\tfd_MsgUpdateParams_authority protoreflect.FieldDescriptor\n\tfd_MsgUpdateParams_params    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_tx_proto_init()\n\tmd_MsgUpdateParams = File_sourcehub_hub_tx_proto.Messages().ByName(\"MsgUpdateParams\")\n\tfd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName(\"authority\")\n\tfd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil)\n\ntype fastReflection_MsgUpdateParams MsgUpdateParams\n\nfunc (x *MsgUpdateParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(x)\n}\n\nfunc (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_tx_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{}\n\ntype fastReflection_MsgUpdateParams_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(nil)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParams) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_MsgUpdateParams_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_MsgUpdateParams_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\treturn x.Authority != \"\"\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\tx.Authority = \"\"\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.hub.MsgUpdateParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgUpdateParams.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.MsgUpdateParams.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.MsgUpdateParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateParamsResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_tx_proto_init()\n\tmd_MsgUpdateParamsResponse = File_sourcehub_hub_tx_proto.Messages().ByName(\"MsgUpdateParamsResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil)\n\ntype fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse\n\nfunc (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(x)\n}\n\nfunc (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_tx_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{}\n\ntype fastReflection_MsgUpdateParamsResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.MsgUpdateParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgInvalidateJWS            protoreflect.MessageDescriptor\n\tfd_MsgInvalidateJWS_creator    protoreflect.FieldDescriptor\n\tfd_MsgInvalidateJWS_token_hash protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_tx_proto_init()\n\tmd_MsgInvalidateJWS = File_sourcehub_hub_tx_proto.Messages().ByName(\"MsgInvalidateJWS\")\n\tfd_MsgInvalidateJWS_creator = md_MsgInvalidateJWS.Fields().ByName(\"creator\")\n\tfd_MsgInvalidateJWS_token_hash = md_MsgInvalidateJWS.Fields().ByName(\"token_hash\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgInvalidateJWS)(nil)\n\ntype fastReflection_MsgInvalidateJWS MsgInvalidateJWS\n\nfunc (x *MsgInvalidateJWS) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgInvalidateJWS)(x)\n}\n\nfunc (x *MsgInvalidateJWS) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_tx_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgInvalidateJWS_messageType fastReflection_MsgInvalidateJWS_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgInvalidateJWS_messageType{}\n\ntype fastReflection_MsgInvalidateJWS_messageType struct{}\n\nfunc (x fastReflection_MsgInvalidateJWS_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgInvalidateJWS)(nil)\n}\nfunc (x fastReflection_MsgInvalidateJWS_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgInvalidateJWS)\n}\nfunc (x fastReflection_MsgInvalidateJWS_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgInvalidateJWS\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgInvalidateJWS) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgInvalidateJWS\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgInvalidateJWS) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgInvalidateJWS_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgInvalidateJWS) New() protoreflect.Message {\n\treturn new(fastReflection_MsgInvalidateJWS)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgInvalidateJWS) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgInvalidateJWS)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgInvalidateJWS) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_MsgInvalidateJWS_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TokenHash != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.TokenHash)\n\t\tif !f(fd_MsgInvalidateJWS_token_hash, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgInvalidateJWS) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\treturn x.TokenHash != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWS) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\tx.TokenHash = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgInvalidateJWS) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\tvalue := x.TokenHash\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWS) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\tx.TokenHash = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWS) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcehub.hub.MsgInvalidateJWS is not mutable\"))\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\tpanic(fmt.Errorf(\"field token_hash of message sourcehub.hub.MsgInvalidateJWS is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgInvalidateJWS) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWS.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.hub.MsgInvalidateJWS.token_hash\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWS\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWS does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgInvalidateJWS) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.MsgInvalidateJWS\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgInvalidateJWS) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWS) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgInvalidateJWS) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgInvalidateJWS) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWS)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.TokenHash)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWS)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.TokenHash) > 0 {\n\t\t\ti -= len(x.TokenHash)\n\t\t\tcopy(dAtA[i:], x.TokenHash)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.TokenHash)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWS)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgInvalidateJWS: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgInvalidateJWS: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgInvalidateJWSResponse         protoreflect.MessageDescriptor\n\tfd_MsgInvalidateJWSResponse_success protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_hub_tx_proto_init()\n\tmd_MsgInvalidateJWSResponse = File_sourcehub_hub_tx_proto.Messages().ByName(\"MsgInvalidateJWSResponse\")\n\tfd_MsgInvalidateJWSResponse_success = md_MsgInvalidateJWSResponse.Fields().ByName(\"success\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgInvalidateJWSResponse)(nil)\n\ntype fastReflection_MsgInvalidateJWSResponse MsgInvalidateJWSResponse\n\nfunc (x *MsgInvalidateJWSResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgInvalidateJWSResponse)(x)\n}\n\nfunc (x *MsgInvalidateJWSResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_hub_tx_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgInvalidateJWSResponse_messageType fastReflection_MsgInvalidateJWSResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgInvalidateJWSResponse_messageType{}\n\ntype fastReflection_MsgInvalidateJWSResponse_messageType struct{}\n\nfunc (x fastReflection_MsgInvalidateJWSResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgInvalidateJWSResponse)(nil)\n}\nfunc (x fastReflection_MsgInvalidateJWSResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgInvalidateJWSResponse)\n}\nfunc (x fastReflection_MsgInvalidateJWSResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgInvalidateJWSResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgInvalidateJWSResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgInvalidateJWSResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgInvalidateJWSResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgInvalidateJWSResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Success != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Success)\n\t\tif !f(fd_MsgInvalidateJWSResponse_success, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\treturn x.Success != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\tx.Success = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\tvalue := x.Success\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\tx.Success = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\tpanic(fmt.Errorf(\"field success of message sourcehub.hub.MsgInvalidateJWSResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.hub.MsgInvalidateJWSResponse.success\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.hub.MsgInvalidateJWSResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.hub.MsgInvalidateJWSResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.hub.MsgInvalidateJWSResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgInvalidateJWSResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWSResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Success {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWSResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Success {\n\t\t\ti--\n\t\t\tif x.Success {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgInvalidateJWSResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgInvalidateJWSResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgInvalidateJWSResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Success\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Success = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/hub/tx.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// params defines the module parameters to update.\n\t//\n\t// NOTE: All parameters must be supplied.\n\tParams *Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *MsgUpdateParams) Reset() {\n\t*x = MsgUpdateParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_tx_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParams) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_tx_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MsgUpdateParams) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateParams) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateParamsResponse) Reset() {\n\t*x = MsgUpdateParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_tx_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_tx_proto_rawDescGZIP(), []int{1}\n}\n\n// MsgInvalidateJWS is the Msg/InvalidateJWS request type.\n// This message allows a user to invalidate a JWS token:\n// - By providing a JWS extension option with matching DID.\n// - By being the creator/signer of the message with matching authorized account.\ntype MsgInvalidateJWS struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// creator is the address of the message signer.\n\tCreator string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\t// token_hash is the hash/identifier of the JWS token to invalidate.\n\tTokenHash string `protobuf:\"bytes,2,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n}\n\nfunc (x *MsgInvalidateJWS) Reset() {\n\t*x = MsgInvalidateJWS{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_tx_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgInvalidateJWS) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgInvalidateJWS) ProtoMessage() {}\n\n// Deprecated: Use MsgInvalidateJWS.ProtoReflect.Descriptor instead.\nfunc (*MsgInvalidateJWS) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_tx_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *MsgInvalidateJWS) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgInvalidateJWS) GetTokenHash() string {\n\tif x != nil {\n\t\treturn x.TokenHash\n\t}\n\treturn \"\"\n}\n\n// MsgInvalidateJWSResponse defines the response structure for executing a MsgInvalidateJWS message.\ntype MsgInvalidateJWSResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// success indicates whether the invalidation was successful.\n\tSuccess bool `protobuf:\"varint,1,opt,name=success,proto3\" json:\"success,omitempty\"`\n}\n\nfunc (x *MsgInvalidateJWSResponse) Reset() {\n\t*x = MsgInvalidateJWSResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_hub_tx_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgInvalidateJWSResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgInvalidateJWSResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgInvalidateJWSResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgInvalidateJWSResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_hub_tx_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *MsgInvalidateJWSResponse) GetSuccess() bool {\n\tif x != nil {\n\t\treturn x.Success\n\t}\n\treturn false\n}\n\nvar File_sourcehub_hub_tx_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_hub_tx_proto_rawDesc = []byte{\n\t0x0a, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61,\n\t0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14,\n\t0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x68, 0x75, 0x62, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0xb7, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,\n\t0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,\n\t0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x32, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74,\n\t0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x68, 0x75, 0x62, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73,\n\t0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x53, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x72,\n\t0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d,\n\t0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,\n\t0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1d,\n\t0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x3a, 0x31, 0x82,\n\t0xe7, 0xb0, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x20,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x68, 0x75, 0x62, 0x2f,\n\t0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x53,\n\t0x22, 0x34, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x65, 0x4a, 0x57, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,\n\t0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73,\n\t0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0xbf, 0x01, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x56,\n\t0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x4d,\n\t0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x4d,\n\t0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,\n\t0x64, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x53, 0x12, 0x1f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61, 0x6c,\n\t0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x53, 0x1a, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x2e, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x76, 0x61,\n\t0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x57, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x91, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x68, 0x75, 0x62, 0x42, 0x07,\n\t0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x68, 0x75, 0x62, 0xa2, 0x02, 0x03, 0x53, 0x48, 0x58, 0xaa,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x48, 0x75, 0x62, 0xca,\n\t0x02, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0xe2,\n\t0x02, 0x19, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x48, 0x75, 0x62, 0x5c,\n\t0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x48, 0x75, 0x62, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_hub_tx_proto_rawDescOnce sync.Once\n\tfile_sourcehub_hub_tx_proto_rawDescData = file_sourcehub_hub_tx_proto_rawDesc\n)\n\nfunc file_sourcehub_hub_tx_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_hub_tx_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_hub_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_hub_tx_proto_rawDescData)\n\t})\n\treturn file_sourcehub_hub_tx_proto_rawDescData\n}\n\nvar file_sourcehub_hub_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_sourcehub_hub_tx_proto_goTypes = []interface{}{\n\t(*MsgUpdateParams)(nil),          // 0: sourcehub.hub.MsgUpdateParams\n\t(*MsgUpdateParamsResponse)(nil),  // 1: sourcehub.hub.MsgUpdateParamsResponse\n\t(*MsgInvalidateJWS)(nil),         // 2: sourcehub.hub.MsgInvalidateJWS\n\t(*MsgInvalidateJWSResponse)(nil), // 3: sourcehub.hub.MsgInvalidateJWSResponse\n\t(*Params)(nil),                   // 4: sourcehub.hub.Params\n}\nvar file_sourcehub_hub_tx_proto_depIdxs = []int32{\n\t4, // 0: sourcehub.hub.MsgUpdateParams.params:type_name -> sourcehub.hub.Params\n\t0, // 1: sourcehub.hub.Msg.UpdateParams:input_type -> sourcehub.hub.MsgUpdateParams\n\t2, // 2: sourcehub.hub.Msg.InvalidateJWS:input_type -> sourcehub.hub.MsgInvalidateJWS\n\t1, // 3: sourcehub.hub.Msg.UpdateParams:output_type -> sourcehub.hub.MsgUpdateParamsResponse\n\t3, // 4: sourcehub.hub.Msg.InvalidateJWS:output_type -> sourcehub.hub.MsgInvalidateJWSResponse\n\t3, // [3:5] is the sub-list for method output_type\n\t1, // [1:3] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_hub_tx_proto_init() }\nfunc file_sourcehub_hub_tx_proto_init() {\n\tif File_sourcehub_hub_tx_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_hub_params_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_hub_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_hub_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_hub_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgInvalidateJWS); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_hub_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgInvalidateJWSResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_hub_tx_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_hub_tx_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_hub_tx_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_hub_tx_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_hub_tx_proto = out.File\n\tfile_sourcehub_hub_tx_proto_rawDesc = nil\n\tfile_sourcehub_hub_tx_proto_goTypes = nil\n\tfile_sourcehub_hub_tx_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/hub/tx_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/hub/tx.proto\n\npackage hub\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tMsg_UpdateParams_FullMethodName  = \"/sourcehub.hub.Msg/UpdateParams\"\n\tMsg_InvalidateJWS_FullMethodName = \"/sourcehub.hub.Msg/InvalidateJWS\"\n)\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Msg defines the Msg service.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// InvalidateJWS allows a user to manually invalidate a JWS token\n\t// that they own (same DID) or are authorized to use (same creator account).\n\tInvalidateJWS(ctx context.Context, in *MsgInvalidateJWS, opts ...grpc.CallOption) (*MsgInvalidateJWSResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewMsgClient(cc grpc.ClientConnInterface) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) InvalidateJWS(ctx context.Context, in *MsgInvalidateJWS, opts ...grpc.CallOption) (*MsgInvalidateJWSResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgInvalidateJWSResponse)\n\terr := c.cc.Invoke(ctx, Msg_InvalidateJWS_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\n// All implementations must embed UnimplementedMsgServer\n// for forward compatibility.\n//\n// Msg defines the Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// InvalidateJWS allows a user to manually invalidate a JWS token\n\t// that they own (same DID) or are authorized to use (same creator account).\n\tInvalidateJWS(context.Context, *MsgInvalidateJWS) (*MsgInvalidateJWSResponse, error)\n\tmustEmbedUnimplementedMsgServer()\n}\n\n// UnimplementedMsgServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedMsgServer struct{}\n\nfunc (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (UnimplementedMsgServer) InvalidateJWS(context.Context, *MsgInvalidateJWS) (*MsgInvalidateJWSResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method InvalidateJWS not implemented\")\n}\nfunc (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}\nfunc (UnimplementedMsgServer) testEmbeddedByValue()             {}\n\n// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to MsgServer will\n// result in compilation errors.\ntype UnsafeMsgServer interface {\n\tmustEmbedUnimplementedMsgServer()\n}\n\nfunc RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) {\n\t// If the following call pancis, it indicates UnimplementedMsgServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Msg_ServiceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_InvalidateJWS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgInvalidateJWS)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).InvalidateJWS(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_InvalidateJWS_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).InvalidateJWS(ctx, req.(*MsgInvalidateJWS))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Msg_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.hub.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"InvalidateJWS\",\n\t\t\tHandler:    _Msg_InvalidateJWS_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/hub/tx.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/tier/module/v1beta1/module.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage modulev1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Module           protoreflect.MessageDescriptor\n\tfd_Module_authority protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_module_v1beta1_module_proto_init()\n\tmd_Module = File_sourcehub_tier_module_v1beta1_module_proto.Messages().ByName(\"Module\")\n\tfd_Module_authority = md_Module.Fields().ByName(\"authority\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Module)(nil)\n\ntype fastReflection_Module Module\n\nfunc (x *Module) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Module)(x)\n}\n\nfunc (x *Module) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_module_v1beta1_module_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Module_messageType fastReflection_Module_messageType\nvar _ protoreflect.MessageType = fastReflection_Module_messageType{}\n\ntype fastReflection_Module_messageType struct{}\n\nfunc (x fastReflection_Module_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Module)(nil)\n}\nfunc (x fastReflection_Module_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\nfunc (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Module\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Module) Type() protoreflect.MessageType {\n\treturn _fastReflection_Module_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Module) New() protoreflect.Message {\n\treturn new(fastReflection_Module)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Module) Interface() protoreflect.ProtoMessage {\n\treturn (*Module)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_Module_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\treturn x.Authority != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\tx.Authority = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.tier.module.v1beta1.Module is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.module.v1beta1.Module.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.module.v1beta1.Module\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.module.v1beta1.Module does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.module.v1beta1.Module\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Module) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Module) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Module) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Module)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Module: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/module/v1beta1/module.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Module is the config object for the module.\ntype Module struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority defines the custom module authority. If not set, defaults to the governance module.\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n}\n\nfunc (x *Module) Reset() {\n\t*x = Module{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_module_v1beta1_module_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Module) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Module) ProtoMessage() {}\n\n// Deprecated: Use Module.ProtoReflect.Descriptor instead.\nfunc (*Module) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_module_v1beta1_module_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Module) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nvar File_sourcehub_tier_module_v1beta1_module_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_module_v1beta1_module_proto_rawDesc = []byte{\n\t0x0a, 0x2a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x6d, 0x6f, 0x64,\n\t0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x20, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,\n\t0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x59, 0x0a,\n\t0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f,\n\t0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68,\n\t0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x31, 0xba, 0xc0, 0x96, 0xda, 0x01, 0x2b, 0x0a, 0x29, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x78, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x42, 0x85, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e,\n\t0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0b,\n\t0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x6d,\n\t0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x6d, 0x6f,\n\t0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x54,\n\t0x4d, 0xaa, 0x02, 0x1d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x54, 0x69,\n\t0x65, 0x72, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0xca, 0x02, 0x1d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69,\n\t0x65, 0x72, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0xe2, 0x02, 0x29, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69,\n\t0x65, 0x72, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72, 0x3a,\n\t0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_module_v1beta1_module_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_module_v1beta1_module_proto_rawDescData = file_sourcehub_tier_module_v1beta1_module_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_module_v1beta1_module_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_module_v1beta1_module_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_module_v1beta1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_module_v1beta1_module_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_module_v1beta1_module_proto_rawDescData\n}\n\nvar file_sourcehub_tier_module_v1beta1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_tier_module_v1beta1_module_proto_goTypes = []interface{}{\n\t(*Module)(nil), // 0: sourcehub.tier.module.v1beta1.Module\n}\nvar file_sourcehub_tier_module_v1beta1_module_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_module_v1beta1_module_proto_init() }\nfunc file_sourcehub_tier_module_v1beta1_module_proto_init() {\n\tif File_sourcehub_tier_module_v1beta1_module_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_module_v1beta1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Module); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_module_v1beta1_module_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_module_v1beta1_module_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_module_v1beta1_module_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_module_v1beta1_module_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_module_v1beta1_module_proto = out.File\n\tfile_sourcehub_tier_module_v1beta1_module_proto_rawDesc = nil\n\tfile_sourcehub_tier_module_v1beta1_module_proto_goTypes = nil\n\tfile_sourcehub_tier_module_v1beta1_module_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/genesis.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_GenesisState_2_list)(nil)\n\ntype _GenesisState_2_list struct {\n\tlist *[]*Lockup\n}\n\nfunc (x *_GenesisState_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_2_list) AppendMutable() protoreflect.Value {\n\tv := new(Lockup)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_2_list) NewElement() protoreflect.Value {\n\tv := new(Lockup)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_3_list)(nil)\n\ntype _GenesisState_3_list struct {\n\tlist *[]*UnlockingLockup\n}\n\nfunc (x *_GenesisState_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UnlockingLockup)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UnlockingLockup)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_3_list) AppendMutable() protoreflect.Value {\n\tv := new(UnlockingLockup)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_3_list) NewElement() protoreflect.Value {\n\tv := new(UnlockingLockup)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_4_list)(nil)\n\ntype _GenesisState_4_list struct {\n\tlist *[]*Lockup\n}\n\nfunc (x *_GenesisState_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_4_list) AppendMutable() protoreflect.Value {\n\tv := new(Lockup)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_4_list) NewElement() protoreflect.Value {\n\tv := new(Lockup)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_5_list)(nil)\n\ntype _GenesisState_5_list struct {\n\tlist *[]*Developer\n}\n\nfunc (x *_GenesisState_5_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_5_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Developer)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_5_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Developer)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_5_list) AppendMutable() protoreflect.Value {\n\tv := new(Developer)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_5_list) NewElement() protoreflect.Value {\n\tv := new(Developer)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_5_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_GenesisState_6_list)(nil)\n\ntype _GenesisState_6_list struct {\n\tlist *[]*UserSubscription\n}\n\nfunc (x *_GenesisState_6_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_GenesisState_6_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_GenesisState_6_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UserSubscription)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_GenesisState_6_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UserSubscription)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_GenesisState_6_list) AppendMutable() protoreflect.Value {\n\tv := new(UserSubscription)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_6_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_GenesisState_6_list) NewElement() protoreflect.Value {\n\tv := new(UserSubscription)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_GenesisState_6_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_GenesisState                   protoreflect.MessageDescriptor\n\tfd_GenesisState_params            protoreflect.FieldDescriptor\n\tfd_GenesisState_lockups           protoreflect.FieldDescriptor\n\tfd_GenesisState_unlockingLockups  protoreflect.FieldDescriptor\n\tfd_GenesisState_insuranceLockups  protoreflect.FieldDescriptor\n\tfd_GenesisState_developers        protoreflect.FieldDescriptor\n\tfd_GenesisState_userSubscriptions protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_genesis_proto_init()\n\tmd_GenesisState = File_sourcehub_tier_v1beta1_genesis_proto.Messages().ByName(\"GenesisState\")\n\tfd_GenesisState_params = md_GenesisState.Fields().ByName(\"params\")\n\tfd_GenesisState_lockups = md_GenesisState.Fields().ByName(\"lockups\")\n\tfd_GenesisState_unlockingLockups = md_GenesisState.Fields().ByName(\"unlockingLockups\")\n\tfd_GenesisState_insuranceLockups = md_GenesisState.Fields().ByName(\"insuranceLockups\")\n\tfd_GenesisState_developers = md_GenesisState.Fields().ByName(\"developers\")\n\tfd_GenesisState_userSubscriptions = md_GenesisState.Fields().ByName(\"userSubscriptions\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GenesisState)(nil)\n\ntype fastReflection_GenesisState GenesisState\n\nfunc (x *GenesisState) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(x)\n}\n\nfunc (x *GenesisState) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_genesis_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType\nvar _ protoreflect.MessageType = fastReflection_GenesisState_messageType{}\n\ntype fastReflection_GenesisState_messageType struct{}\n\nfunc (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GenesisState)(nil)\n}\nfunc (x fastReflection_GenesisState_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\nfunc (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GenesisState\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GenesisState) Type() protoreflect.MessageType {\n\treturn _fastReflection_GenesisState_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GenesisState) New() protoreflect.Message {\n\treturn new(fastReflection_GenesisState)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage {\n\treturn (*GenesisState)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_GenesisState_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Lockups) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.Lockups})\n\t\tif !f(fd_GenesisState_lockups, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.UnlockingLockups) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.UnlockingLockups})\n\t\tif !f(fd_GenesisState_unlockingLockups, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.InsuranceLockups) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_4_list{list: &x.InsuranceLockups})\n\t\tif !f(fd_GenesisState_insuranceLockups, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Developers) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_5_list{list: &x.Developers})\n\t\tif !f(fd_GenesisState_developers, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.UserSubscriptions) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_GenesisState_6_list{list: &x.UserSubscriptions})\n\t\tif !f(fd_GenesisState_userSubscriptions, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\treturn x.Params != nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\treturn len(x.Lockups) != 0\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\treturn len(x.UnlockingLockups) != 0\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\treturn len(x.InsuranceLockups) != 0\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\treturn len(x.Developers) != 0\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\treturn len(x.UserSubscriptions) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\tx.Params = nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\tx.Lockups = nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\tx.UnlockingLockups = nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\tx.InsuranceLockups = nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\tx.Developers = nil\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\tx.UserSubscriptions = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\tif len(x.Lockups) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_2_list{list: &x.Lockups}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\tif len(x.UnlockingLockups) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_3_list{list: &x.UnlockingLockups}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\tif len(x.InsuranceLockups) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_4_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_4_list{list: &x.InsuranceLockups}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\tif len(x.Developers) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_5_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_5_list{list: &x.Developers}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\tif len(x.UserSubscriptions) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_GenesisState_6_list{})\n\t\t}\n\t\tlistValue := &_GenesisState_6_list{list: &x.UserSubscriptions}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_2_list)\n\t\tx.Lockups = *clv.list\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_3_list)\n\t\tx.UnlockingLockups = *clv.list\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_4_list)\n\t\tx.InsuranceLockups = *clv.list\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_5_list)\n\t\tx.Developers = *clv.list\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_GenesisState_6_list)\n\t\tx.UserSubscriptions = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\tif x.Lockups == nil {\n\t\t\tx.Lockups = []*Lockup{}\n\t\t}\n\t\tvalue := &_GenesisState_2_list{list: &x.Lockups}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\tif x.UnlockingLockups == nil {\n\t\t\tx.UnlockingLockups = []*UnlockingLockup{}\n\t\t}\n\t\tvalue := &_GenesisState_3_list{list: &x.UnlockingLockups}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\tif x.InsuranceLockups == nil {\n\t\t\tx.InsuranceLockups = []*Lockup{}\n\t\t}\n\t\tvalue := &_GenesisState_4_list{list: &x.InsuranceLockups}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\tif x.Developers == nil {\n\t\t\tx.Developers = []*Developer{}\n\t\t}\n\t\tvalue := &_GenesisState_5_list{list: &x.Developers}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\tif x.UserSubscriptions == nil {\n\t\t\tx.UserSubscriptions = []*UserSubscription{}\n\t\t}\n\t\tvalue := &_GenesisState_6_list{list: &x.UserSubscriptions}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.GenesisState.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.GenesisState.lockups\":\n\t\tlist := []*Lockup{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_2_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.GenesisState.unlockingLockups\":\n\t\tlist := []*UnlockingLockup{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_3_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.GenesisState.insuranceLockups\":\n\t\tlist := []*Lockup{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_4_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.GenesisState.developers\":\n\t\tlist := []*Developer{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_5_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.GenesisState.userSubscriptions\":\n\t\tlist := []*UserSubscription{}\n\t\treturn protoreflect.ValueOfList(&_GenesisState_6_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.GenesisState\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.GenesisState does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.GenesisState\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GenesisState) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Lockups) > 0 {\n\t\t\tfor _, e := range x.Lockups {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.UnlockingLockups) > 0 {\n\t\t\tfor _, e := range x.UnlockingLockups {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.InsuranceLockups) > 0 {\n\t\t\tfor _, e := range x.InsuranceLockups {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.Developers) > 0 {\n\t\t\tfor _, e := range x.Developers {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.UserSubscriptions) > 0 {\n\t\t\tfor _, e := range x.UserSubscriptions {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.UserSubscriptions) > 0 {\n\t\t\tfor iNdEx := len(x.UserSubscriptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.UserSubscriptions[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x32\n\t\t\t}\n\t\t}\n\t\tif len(x.Developers) > 0 {\n\t\t\tfor iNdEx := len(x.Developers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Developers[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t}\n\t\t}\n\t\tif len(x.InsuranceLockups) > 0 {\n\t\t\tfor iNdEx := len(x.InsuranceLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.InsuranceLockups[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.UnlockingLockups) > 0 {\n\t\t\tfor iNdEx := len(x.UnlockingLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.UnlockingLockups[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.Lockups) > 0 {\n\t\t\tfor iNdEx := len(x.Lockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Lockups[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GenesisState)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Lockups\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Lockups = append(x.Lockups, &Lockup{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Lockups[len(x.Lockups)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockups\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UnlockingLockups = append(x.UnlockingLockups, &UnlockingLockup{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UnlockingLockups[len(x.UnlockingLockups)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InsuranceLockups\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.InsuranceLockups = append(x.InsuranceLockups, &Lockup{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.InsuranceLockups[len(x.InsuranceLockups)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developers\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developers = append(x.Developers, &Developer{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Developers[len(x.Developers)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserSubscriptions\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserSubscriptions = append(x.UserSubscriptions, &UserSubscription{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UserSubscriptions[len(x.UserSubscriptions)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/genesis.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// GenesisState defines the tier module's genesis state.\ntype GenesisState struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params defines all the parameters of the module.\n\tParams            *Params             `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n\tLockups           []*Lockup           `protobuf:\"bytes,2,rep,name=lockups,proto3\" json:\"lockups,omitempty\"`\n\tUnlockingLockups  []*UnlockingLockup  `protobuf:\"bytes,3,rep,name=unlockingLockups,proto3\" json:\"unlockingLockups,omitempty\"`\n\tInsuranceLockups  []*Lockup           `protobuf:\"bytes,4,rep,name=insuranceLockups,proto3\" json:\"insuranceLockups,omitempty\"`\n\tDevelopers        []*Developer        `protobuf:\"bytes,5,rep,name=developers,proto3\" json:\"developers,omitempty\"`\n\tUserSubscriptions []*UserSubscription `protobuf:\"bytes,6,rep,name=userSubscriptions,proto3\" json:\"userSubscriptions,omitempty\"`\n}\n\nfunc (x *GenesisState) Reset() {\n\t*x = GenesisState{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_genesis_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GenesisState) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GenesisState) ProtoMessage() {}\n\n// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_genesis_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *GenesisState) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetLockups() []*Lockup {\n\tif x != nil {\n\t\treturn x.Lockups\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetUnlockingLockups() []*UnlockingLockup {\n\tif x != nil {\n\t\treturn x.UnlockingLockups\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetInsuranceLockups() []*Lockup {\n\tif x != nil {\n\t\treturn x.InsuranceLockups\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetDevelopers() []*Developer {\n\tif x != nil {\n\t\treturn x.Developers\n\t}\n\treturn nil\n}\n\nfunc (x *GenesisState) GetUserSubscriptions() []*UserSubscription {\n\tif x != nil {\n\t\treturn x.UserSubscriptions\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_tier_v1beta1_genesis_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_genesis_proto_rawDesc = []byte{\n\t0x0a, 0x24, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x11,\n\t0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67,\n\t0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65,\n\t0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x03, 0x0a,\n\t0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a,\n\t0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8,\n\t0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x12, 0x43, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75,\n\t0x70, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x6c, 0x6f,\n\t0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x5e, 0x0a, 0x10, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69,\n\t0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69,\n\t0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x10, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f,\n\t0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x55, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e,\n\t0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x42,\n\t0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75,\n\t0x72, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x4c, 0x0a, 0x0a,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,\n\t0x70, 0x65, 0x72, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x75, 0x73,\n\t0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,\n\t0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55,\n\t0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,\n\t0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72,\n\t0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0xd9, 0x01,\n\t0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x47, 0x65,\n\t0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x69, 0x65, 0x72, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0xa2, 0x02, 0x03, 0x53, 0x54, 0x58, 0xaa, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2e, 0x54, 0x69, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,\n\t0xca, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65,\n\t0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72,\n\t0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_genesis_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_genesis_proto_rawDescData = file_sourcehub_tier_v1beta1_genesis_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_genesis_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_genesis_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_genesis_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_genesis_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcehub_tier_v1beta1_genesis_proto_goTypes = []interface{}{\n\t(*GenesisState)(nil),     // 0: sourcehub.tier.v1beta1.GenesisState\n\t(*Params)(nil),           // 1: sourcehub.tier.v1beta1.Params\n\t(*Lockup)(nil),           // 2: sourcehub.tier.v1beta1.Lockup\n\t(*UnlockingLockup)(nil),  // 3: sourcehub.tier.v1beta1.UnlockingLockup\n\t(*Developer)(nil),        // 4: sourcehub.tier.v1beta1.Developer\n\t(*UserSubscription)(nil), // 5: sourcehub.tier.v1beta1.UserSubscription\n}\nvar file_sourcehub_tier_v1beta1_genesis_proto_depIdxs = []int32{\n\t1, // 0: sourcehub.tier.v1beta1.GenesisState.params:type_name -> sourcehub.tier.v1beta1.Params\n\t2, // 1: sourcehub.tier.v1beta1.GenesisState.lockups:type_name -> sourcehub.tier.v1beta1.Lockup\n\t3, // 2: sourcehub.tier.v1beta1.GenesisState.unlockingLockups:type_name -> sourcehub.tier.v1beta1.UnlockingLockup\n\t2, // 3: sourcehub.tier.v1beta1.GenesisState.insuranceLockups:type_name -> sourcehub.tier.v1beta1.Lockup\n\t4, // 4: sourcehub.tier.v1beta1.GenesisState.developers:type_name -> sourcehub.tier.v1beta1.Developer\n\t5, // 5: sourcehub.tier.v1beta1.GenesisState.userSubscriptions:type_name -> sourcehub.tier.v1beta1.UserSubscription\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_genesis_proto_init() }\nfunc file_sourcehub_tier_v1beta1_genesis_proto_init() {\n\tif File_sourcehub_tier_v1beta1_genesis_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_tier_v1beta1_lockup_proto_init()\n\tfile_sourcehub_tier_v1beta1_params_proto_init()\n\tfile_sourcehub_tier_v1beta1_subscription_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GenesisState); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_genesis_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_genesis_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_genesis_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_genesis_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_genesis_proto = out.File\n\tfile_sourcehub_tier_v1beta1_genesis_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_genesis_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_genesis_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/lockup.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Lockup                   protoreflect.MessageDescriptor\n\tfd_Lockup_delegator_address protoreflect.FieldDescriptor\n\tfd_Lockup_validator_address protoreflect.FieldDescriptor\n\tfd_Lockup_amount            protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_lockup_proto_init()\n\tmd_Lockup = File_sourcehub_tier_v1beta1_lockup_proto.Messages().ByName(\"Lockup\")\n\tfd_Lockup_delegator_address = md_Lockup.Fields().ByName(\"delegator_address\")\n\tfd_Lockup_validator_address = md_Lockup.Fields().ByName(\"validator_address\")\n\tfd_Lockup_amount = md_Lockup.Fields().ByName(\"amount\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Lockup)(nil)\n\ntype fastReflection_Lockup Lockup\n\nfunc (x *Lockup) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Lockup)(x)\n}\n\nfunc (x *Lockup) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_lockup_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Lockup_messageType fastReflection_Lockup_messageType\nvar _ protoreflect.MessageType = fastReflection_Lockup_messageType{}\n\ntype fastReflection_Lockup_messageType struct{}\n\nfunc (x fastReflection_Lockup_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Lockup)(nil)\n}\nfunc (x fastReflection_Lockup_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Lockup)\n}\nfunc (x fastReflection_Lockup_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Lockup\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Lockup) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Lockup\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Lockup) Type() protoreflect.MessageType {\n\treturn _fastReflection_Lockup_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Lockup) New() protoreflect.Message {\n\treturn new(fastReflection_Lockup)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Lockup) Interface() protoreflect.ProtoMessage {\n\treturn (*Lockup)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Lockup) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_Lockup_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_Lockup_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Amount)\n\t\tif !f(fd_Lockup_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Lockup) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\treturn x.Amount != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Lockup) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\tx.Amount = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Lockup) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Lockup) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\tx.Amount = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Lockup) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.Lockup is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.Lockup is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\tpanic(fmt.Errorf(\"field amount of message sourcehub.tier.v1beta1.Lockup is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Lockup) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Lockup.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.Lockup.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.Lockup.amount\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Lockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Lockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Lockup) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.Lockup\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Lockup) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Lockup) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Lockup) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Lockup) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Lockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Amount)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Lockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Amount) > 0 {\n\t\t\ti -= len(x.Amount)\n\t\t\tcopy(dAtA[i:], x.Amount)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Lockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Lockup: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Lockup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Amount = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnlockingLockup                   protoreflect.MessageDescriptor\n\tfd_UnlockingLockup_delegator_address protoreflect.FieldDescriptor\n\tfd_UnlockingLockup_validator_address protoreflect.FieldDescriptor\n\tfd_UnlockingLockup_creation_height   protoreflect.FieldDescriptor\n\tfd_UnlockingLockup_amount            protoreflect.FieldDescriptor\n\tfd_UnlockingLockup_completion_time   protoreflect.FieldDescriptor\n\tfd_UnlockingLockup_unlock_time       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_lockup_proto_init()\n\tmd_UnlockingLockup = File_sourcehub_tier_v1beta1_lockup_proto.Messages().ByName(\"UnlockingLockup\")\n\tfd_UnlockingLockup_delegator_address = md_UnlockingLockup.Fields().ByName(\"delegator_address\")\n\tfd_UnlockingLockup_validator_address = md_UnlockingLockup.Fields().ByName(\"validator_address\")\n\tfd_UnlockingLockup_creation_height = md_UnlockingLockup.Fields().ByName(\"creation_height\")\n\tfd_UnlockingLockup_amount = md_UnlockingLockup.Fields().ByName(\"amount\")\n\tfd_UnlockingLockup_completion_time = md_UnlockingLockup.Fields().ByName(\"completion_time\")\n\tfd_UnlockingLockup_unlock_time = md_UnlockingLockup.Fields().ByName(\"unlock_time\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnlockingLockup)(nil)\n\ntype fastReflection_UnlockingLockup UnlockingLockup\n\nfunc (x *UnlockingLockup) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockup)(x)\n}\n\nfunc (x *UnlockingLockup) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_lockup_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnlockingLockup_messageType fastReflection_UnlockingLockup_messageType\nvar _ protoreflect.MessageType = fastReflection_UnlockingLockup_messageType{}\n\ntype fastReflection_UnlockingLockup_messageType struct{}\n\nfunc (x fastReflection_UnlockingLockup_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockup)(nil)\n}\nfunc (x fastReflection_UnlockingLockup_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockup)\n}\nfunc (x fastReflection_UnlockingLockup_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockup\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnlockingLockup) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockup\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnlockingLockup) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnlockingLockup_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnlockingLockup) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockup)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnlockingLockup) Interface() protoreflect.ProtoMessage {\n\treturn (*UnlockingLockup)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnlockingLockup) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_UnlockingLockup_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_UnlockingLockup_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationHeight != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CreationHeight)\n\t\tif !f(fd_UnlockingLockup_creation_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Amount)\n\t\tif !f(fd_UnlockingLockup_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CompletionTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\t\tif !f(fd_UnlockingLockup_completion_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UnlockTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.UnlockTime.ProtoReflect())\n\t\tif !f(fd_UnlockingLockup_unlock_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnlockingLockup) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\treturn x.CreationHeight != int64(0)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\treturn x.Amount != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\treturn x.CompletionTime != nil\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\treturn x.UnlockTime != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockup) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\tx.CreationHeight = int64(0)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\tx.Amount = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\tx.CompletionTime = nil\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\tx.UnlockTime = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnlockingLockup) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\tvalue := x.CreationHeight\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\tvalue := x.CompletionTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\tvalue := x.UnlockTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockup) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\tx.CreationHeight = value.Int()\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\tx.Amount = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\tx.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\tx.UnlockTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockup) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\tif x.CompletionTime == nil {\n\t\t\tx.CompletionTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\tif x.UnlockTime == nil {\n\t\t\tx.UnlockTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.UnlockTime.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.UnlockingLockup is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.UnlockingLockup is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\tpanic(fmt.Errorf(\"field creation_height of message sourcehub.tier.v1beta1.UnlockingLockup is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\tpanic(fmt.Errorf(\"field amount of message sourcehub.tier.v1beta1.UnlockingLockup is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnlockingLockup) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.creation_height\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.amount\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.completion_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockup.unlock_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockup\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockup does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnlockingLockup) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UnlockingLockup\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnlockingLockup) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockup) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnlockingLockup) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnlockingLockup) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnlockingLockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreationHeight))\n\t\t}\n\t\tl = len(x.Amount)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CompletionTime != nil {\n\t\t\tl = options.Size(x.CompletionTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.UnlockTime != nil {\n\t\t\tl = options.Size(x.UnlockTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.UnlockTime != nil {\n\t\t\tencoded, err := options.Marshal(x.UnlockTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif x.CompletionTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CompletionTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.Amount) > 0 {\n\t\t\ti -= len(x.Amount)\n\t\t\tcopy(dAtA[i:], x.Amount)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreationHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockup)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockup: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreationHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Amount = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CompletionTime == nil {\n\t\t\t\t\tx.CompletionTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CompletionTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.UnlockTime == nil {\n\t\t\t\t\tx.UnlockTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UnlockTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/lockup.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Lockup tracks the locked stake of a delegator.\ntype Lockup struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tAmount           string `protobuf:\"bytes,3,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n}\n\nfunc (x *Lockup) Reset() {\n\t*x = Lockup{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_lockup_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Lockup) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Lockup) ProtoMessage() {}\n\n// Deprecated: Use Lockup.ProtoReflect.Descriptor instead.\nfunc (*Lockup) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_lockup_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Lockup) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *Lockup) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *Lockup) GetAmount() string {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn \"\"\n}\n\n// UnlockingLockup tracks the unlocking stake of a delegator.\ntype UnlockingLockup struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tCreationHeight   int64  `protobuf:\"varint,3,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n\tAmount           string `protobuf:\"bytes,4,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\t// The time at which the stake undelegation will be completed.\n\tCompletionTime *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=completion_time,json=completionTime,proto3\" json:\"completion_time,omitempty\"`\n\t// The time after which the unlocking lockup can be completed.\n\tUnlockTime *timestamppb.Timestamp `protobuf:\"bytes,6,opt,name=unlock_time,json=unlockTime,proto3\" json:\"unlock_time,omitempty\"`\n}\n\nfunc (x *UnlockingLockup) Reset() {\n\t*x = UnlockingLockup{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_lockup_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnlockingLockup) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnlockingLockup) ProtoMessage() {}\n\n// Deprecated: Use UnlockingLockup.ProtoReflect.Descriptor instead.\nfunc (*UnlockingLockup) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_lockup_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *UnlockingLockup) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockup) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockup) GetCreationHeight() int64 {\n\tif x != nil {\n\t\treturn x.CreationHeight\n\t}\n\treturn 0\n}\n\nfunc (x *UnlockingLockup) GetAmount() string {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockup) GetCompletionTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CompletionTime\n\t}\n\treturn nil\n}\n\nfunc (x *UnlockingLockup) GetUnlockTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.UnlockTime\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_tier_v1beta1_lockup_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_lockup_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x11, 0x61,\n\t0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67,\n\t0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x45, 0x0a,\n\t0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,\n\t0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,\n\t0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69,\n\t0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e,\n\t0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e,\n\t0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x03, 0x0a, 0x0f, 0x55, 0x6e,\n\t0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x45, 0x0a,\n\t0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,\n\t0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,\n\t0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69,\n\t0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63,\n\t0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x43, 0x0a,\n\t0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8,\n\t0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,\n\t0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f,\n\t0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69,\n\t0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,\n\t0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f,\n\t0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69,\n\t0x6d, 0x65, 0x42, 0xd8, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x42, 0x0b, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x33, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65,\n\t0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x69, 0x65, 0x72, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x54, 0x58, 0xaa, 0x02, 0x16, 0x53, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x54, 0x69, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a,\n\t0x54, 0x69, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_lockup_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_lockup_proto_rawDescData = file_sourcehub_tier_v1beta1_lockup_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_lockup_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_lockup_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_lockup_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_lockup_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_lockup_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_lockup_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_tier_v1beta1_lockup_proto_goTypes = []interface{}{\n\t(*Lockup)(nil),                // 0: sourcehub.tier.v1beta1.Lockup\n\t(*UnlockingLockup)(nil),       // 1: sourcehub.tier.v1beta1.UnlockingLockup\n\t(*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp\n}\nvar file_sourcehub_tier_v1beta1_lockup_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.tier.v1beta1.UnlockingLockup.completion_time:type_name -> google.protobuf.Timestamp\n\t2, // 1: sourcehub.tier.v1beta1.UnlockingLockup.unlock_time:type_name -> google.protobuf.Timestamp\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_lockup_proto_init() }\nfunc file_sourcehub_tier_v1beta1_lockup_proto_init() {\n\tif File_sourcehub_tier_v1beta1_lockup_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_lockup_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Lockup); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_lockup_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnlockingLockup); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_lockup_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_lockup_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_lockup_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_lockup_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_lockup_proto = out.File\n\tfile_sourcehub_tier_v1beta1_lockup_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_lockup_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_lockup_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/params.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tdurationpb \"google.golang.org/protobuf/types/known/durationpb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar _ protoreflect.List = (*_Params_7_list)(nil)\n\ntype _Params_7_list struct {\n\tlist *[]*Rate\n}\n\nfunc (x *_Params_7_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Params_7_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_Params_7_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Rate)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Params_7_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Rate)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Params_7_list) AppendMutable() protoreflect.Value {\n\tv := new(Rate)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Params_7_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Params_7_list) NewElement() protoreflect.Value {\n\tv := new(Rate)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Params_7_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_Params                          protoreflect.MessageDescriptor\n\tfd_Params_epoch_duration           protoreflect.FieldDescriptor\n\tfd_Params_unlocking_epochs         protoreflect.FieldDescriptor\n\tfd_Params_developer_pool_fee       protoreflect.FieldDescriptor\n\tfd_Params_insurance_pool_fee       protoreflect.FieldDescriptor\n\tfd_Params_insurance_pool_threshold protoreflect.FieldDescriptor\n\tfd_Params_process_rewards_interval protoreflect.FieldDescriptor\n\tfd_Params_reward_rates             protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_params_proto_init()\n\tmd_Params = File_sourcehub_tier_v1beta1_params_proto.Messages().ByName(\"Params\")\n\tfd_Params_epoch_duration = md_Params.Fields().ByName(\"epoch_duration\")\n\tfd_Params_unlocking_epochs = md_Params.Fields().ByName(\"unlocking_epochs\")\n\tfd_Params_developer_pool_fee = md_Params.Fields().ByName(\"developer_pool_fee\")\n\tfd_Params_insurance_pool_fee = md_Params.Fields().ByName(\"insurance_pool_fee\")\n\tfd_Params_insurance_pool_threshold = md_Params.Fields().ByName(\"insurance_pool_threshold\")\n\tfd_Params_process_rewards_interval = md_Params.Fields().ByName(\"process_rewards_interval\")\n\tfd_Params_reward_rates = md_Params.Fields().ByName(\"reward_rates\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Params)(nil)\n\ntype fastReflection_Params Params\n\nfunc (x *Params) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Params)(x)\n}\n\nfunc (x *Params) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_params_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Params_messageType fastReflection_Params_messageType\nvar _ protoreflect.MessageType = fastReflection_Params_messageType{}\n\ntype fastReflection_Params_messageType struct{}\n\nfunc (x fastReflection_Params_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Params)(nil)\n}\nfunc (x fastReflection_Params_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\nfunc (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Params) Type() protoreflect.MessageType {\n\treturn _fastReflection_Params_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Params) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Params) Interface() protoreflect.ProtoMessage {\n\treturn (*Params)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.EpochDuration != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.EpochDuration.ProtoReflect())\n\t\tif !f(fd_Params_epoch_duration, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UnlockingEpochs != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.UnlockingEpochs)\n\t\tif !f(fd_Params_unlocking_epochs, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.DeveloperPoolFee != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.DeveloperPoolFee)\n\t\tif !f(fd_Params_developer_pool_fee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.InsurancePoolFee != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.InsurancePoolFee)\n\t\tif !f(fd_Params_insurance_pool_fee, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.InsurancePoolThreshold != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.InsurancePoolThreshold)\n\t\tif !f(fd_Params_insurance_pool_threshold, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ProcessRewardsInterval != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.ProcessRewardsInterval)\n\t\tif !f(fd_Params_process_rewards_interval, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.RewardRates) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Params_7_list{list: &x.RewardRates})\n\t\tif !f(fd_Params_reward_rates, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\treturn x.EpochDuration != nil\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\treturn x.UnlockingEpochs != int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\treturn x.DeveloperPoolFee != int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\treturn x.InsurancePoolFee != int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\treturn x.InsurancePoolThreshold != int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\treturn x.ProcessRewardsInterval != int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\treturn len(x.RewardRates) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\tx.EpochDuration = nil\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\tx.UnlockingEpochs = int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\tx.DeveloperPoolFee = int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\tx.InsurancePoolFee = int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\tx.InsurancePoolThreshold = int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\tx.ProcessRewardsInterval = int64(0)\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\tx.RewardRates = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\tvalue := x.EpochDuration\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\tvalue := x.UnlockingEpochs\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\tvalue := x.DeveloperPoolFee\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\tvalue := x.InsurancePoolFee\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\tvalue := x.InsurancePoolThreshold\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\tvalue := x.ProcessRewardsInterval\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\tif len(x.RewardRates) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Params_7_list{})\n\t\t}\n\t\tlistValue := &_Params_7_list{list: &x.RewardRates}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\tx.EpochDuration = value.Message().Interface().(*durationpb.Duration)\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\tx.UnlockingEpochs = value.Int()\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\tx.DeveloperPoolFee = value.Int()\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\tx.InsurancePoolFee = value.Int()\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\tx.InsurancePoolThreshold = value.Int()\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\tx.ProcessRewardsInterval = value.Int()\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Params_7_list)\n\t\tx.RewardRates = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\tif x.EpochDuration == nil {\n\t\t\tx.EpochDuration = new(durationpb.Duration)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.EpochDuration.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\tif x.RewardRates == nil {\n\t\t\tx.RewardRates = []*Rate{}\n\t\t}\n\t\tvalue := &_Params_7_list{list: &x.RewardRates}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\tpanic(fmt.Errorf(\"field unlocking_epochs of message sourcehub.tier.v1beta1.Params is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\tpanic(fmt.Errorf(\"field developer_pool_fee of message sourcehub.tier.v1beta1.Params is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\tpanic(fmt.Errorf(\"field insurance_pool_fee of message sourcehub.tier.v1beta1.Params is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\tpanic(fmt.Errorf(\"field insurance_pool_threshold of message sourcehub.tier.v1beta1.Params is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\tpanic(fmt.Errorf(\"field process_rewards_interval of message sourcehub.tier.v1beta1.Params is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Params.epoch_duration\":\n\t\tm := new(durationpb.Duration)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.Params.unlocking_epochs\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.Params.developer_pool_fee\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_fee\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.Params.insurance_pool_threshold\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.Params.process_rewards_interval\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.Params.reward_rates\":\n\t\tlist := []*Rate{}\n\t\treturn protoreflect.ValueOfList(&_Params_7_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.Params\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Params) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Params) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Params) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.EpochDuration != nil {\n\t\t\tl = options.Size(x.EpochDuration)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.UnlockingEpochs != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.UnlockingEpochs))\n\t\t}\n\t\tif x.DeveloperPoolFee != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.DeveloperPoolFee))\n\t\t}\n\t\tif x.InsurancePoolFee != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.InsurancePoolFee))\n\t\t}\n\t\tif x.InsurancePoolThreshold != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.InsurancePoolThreshold))\n\t\t}\n\t\tif x.ProcessRewardsInterval != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ProcessRewardsInterval))\n\t\t}\n\t\tif len(x.RewardRates) > 0 {\n\t\t\tfor _, e := range x.RewardRates {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.RewardRates) > 0 {\n\t\t\tfor iNdEx := len(x.RewardRates) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.RewardRates[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x3a\n\t\t\t}\n\t\t}\n\t\tif x.ProcessRewardsInterval != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ProcessRewardsInterval))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x30\n\t\t}\n\t\tif x.InsurancePoolThreshold != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.InsurancePoolThreshold))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x28\n\t\t}\n\t\tif x.InsurancePoolFee != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.InsurancePoolFee))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.DeveloperPoolFee != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.DeveloperPoolFee))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif x.UnlockingEpochs != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.UnlockingEpochs))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.EpochDuration != nil {\n\t\t\tencoded, err := options.Marshal(x.EpochDuration)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field EpochDuration\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.EpochDuration == nil {\n\t\t\t\t\tx.EpochDuration = &durationpb.Duration{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EpochDuration); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingEpochs\", wireType)\n\t\t\t\t}\n\t\t\t\tx.UnlockingEpochs = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.UnlockingEpochs |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DeveloperPoolFee\", wireType)\n\t\t\t\t}\n\t\t\t\tx.DeveloperPoolFee = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.DeveloperPoolFee |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InsurancePoolFee\", wireType)\n\t\t\t\t}\n\t\t\t\tx.InsurancePoolFee = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.InsurancePoolFee |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field InsurancePoolThreshold\", wireType)\n\t\t\t\t}\n\t\t\t\tx.InsurancePoolThreshold = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.InsurancePoolThreshold |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 6:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProcessRewardsInterval\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ProcessRewardsInterval = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ProcessRewardsInterval |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RewardRates\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RewardRates = append(x.RewardRates, &Rate{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RewardRates[len(x.RewardRates)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Rate        protoreflect.MessageDescriptor\n\tfd_Rate_amount protoreflect.FieldDescriptor\n\tfd_Rate_rate   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_params_proto_init()\n\tmd_Rate = File_sourcehub_tier_v1beta1_params_proto.Messages().ByName(\"Rate\")\n\tfd_Rate_amount = md_Rate.Fields().ByName(\"amount\")\n\tfd_Rate_rate = md_Rate.Fields().ByName(\"rate\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Rate)(nil)\n\ntype fastReflection_Rate Rate\n\nfunc (x *Rate) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Rate)(x)\n}\n\nfunc (x *Rate) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_params_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Rate_messageType fastReflection_Rate_messageType\nvar _ protoreflect.MessageType = fastReflection_Rate_messageType{}\n\ntype fastReflection_Rate_messageType struct{}\n\nfunc (x fastReflection_Rate_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Rate)(nil)\n}\nfunc (x fastReflection_Rate_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Rate)\n}\nfunc (x fastReflection_Rate_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Rate\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Rate) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Rate\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Rate) Type() protoreflect.MessageType {\n\treturn _fastReflection_Rate_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Rate) New() protoreflect.Message {\n\treturn new(fastReflection_Rate)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Rate) Interface() protoreflect.ProtoMessage {\n\treturn (*Rate)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Rate) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Amount != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Amount)\n\t\tif !f(fd_Rate_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Rate != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.Rate)\n\t\tif !f(fd_Rate_rate, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Rate) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\treturn x.Amount != \"\"\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\treturn x.Rate != int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Rate) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\tx.Amount = \"\"\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\tx.Rate = int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Rate) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\tvalue := x.Rate\n\t\treturn protoreflect.ValueOfInt64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Rate) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\tx.Amount = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\tx.Rate = value.Int()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Rate) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\tpanic(fmt.Errorf(\"field amount of message sourcehub.tier.v1beta1.Rate is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\tpanic(fmt.Errorf(\"field rate of message sourcehub.tier.v1beta1.Rate is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Rate) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Rate.amount\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.Rate.rate\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Rate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Rate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Rate) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.Rate\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Rate) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Rate) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Rate) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Rate) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Rate)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Amount)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Rate != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Rate))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Rate)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Rate != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Rate))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Amount) > 0 {\n\t\t\ti -= len(x.Amount)\n\t\t\tcopy(dAtA[i:], x.Amount)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Rate)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Rate: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Rate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Amount = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Rate\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Rate = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Rate |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/params.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Params defines the parameters for the module.\ntype Params struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEpochDuration          *durationpb.Duration `protobuf:\"bytes,1,opt,name=epoch_duration,json=epochDuration,proto3\" json:\"epoch_duration,omitempty\"`\n\tUnlockingEpochs        int64                `protobuf:\"varint,2,opt,name=unlocking_epochs,json=unlockingEpochs,proto3\" json:\"unlocking_epochs,omitempty\"`\n\tDeveloperPoolFee       int64                `protobuf:\"varint,3,opt,name=developer_pool_fee,json=developerPoolFee,proto3\" json:\"developer_pool_fee,omitempty\"`\n\tInsurancePoolFee       int64                `protobuf:\"varint,4,opt,name=insurance_pool_fee,json=insurancePoolFee,proto3\" json:\"insurance_pool_fee,omitempty\"`\n\tInsurancePoolThreshold int64                `protobuf:\"varint,5,opt,name=insurance_pool_threshold,json=insurancePoolThreshold,proto3\" json:\"insurance_pool_threshold,omitempty\"`\n\tProcessRewardsInterval int64                `protobuf:\"varint,6,opt,name=process_rewards_interval,json=processRewardsInterval,proto3\" json:\"process_rewards_interval,omitempty\"`\n\tRewardRates            []*Rate              `protobuf:\"bytes,7,rep,name=reward_rates,json=rewardRates,proto3\" json:\"reward_rates,omitempty\"`\n}\n\nfunc (x *Params) Reset() {\n\t*x = Params{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_params_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Params) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Params) ProtoMessage() {}\n\n// Deprecated: Use Params.ProtoReflect.Descriptor instead.\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_params_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Params) GetEpochDuration() *durationpb.Duration {\n\tif x != nil {\n\t\treturn x.EpochDuration\n\t}\n\treturn nil\n}\n\nfunc (x *Params) GetUnlockingEpochs() int64 {\n\tif x != nil {\n\t\treturn x.UnlockingEpochs\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetDeveloperPoolFee() int64 {\n\tif x != nil {\n\t\treturn x.DeveloperPoolFee\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetInsurancePoolFee() int64 {\n\tif x != nil {\n\t\treturn x.InsurancePoolFee\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetInsurancePoolThreshold() int64 {\n\tif x != nil {\n\t\treturn x.InsurancePoolThreshold\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetProcessRewardsInterval() int64 {\n\tif x != nil {\n\t\treturn x.ProcessRewardsInterval\n\t}\n\treturn 0\n}\n\nfunc (x *Params) GetRewardRates() []*Rate {\n\tif x != nil {\n\t\treturn x.RewardRates\n\t}\n\treturn nil\n}\n\n// Rate defines the rate for a specific locked stake.\ntype Rate struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// amount of locked stake required for earning rewards at this rate.\n\tAmount string `protobuf:\"bytes,1,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\tRate   int64  `protobuf:\"varint,2,opt,name=rate,proto3\" json:\"rate,omitempty\"`\n}\n\nfunc (x *Rate) Reset() {\n\t*x = Rate{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_params_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Rate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Rate) ProtoMessage() {}\n\n// Deprecated: Use Rate.ProtoReflect.Descriptor instead.\nfunc (*Rate) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_params_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Rate) GetAmount() string {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn \"\"\n}\n\nfunc (x *Rate) GetRate() int64 {\n\tif x != nil {\n\t\treturn x.Rate\n\t}\n\treturn 0\n}\n\nvar File_sourcehub_tier_v1beta1_params_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_params_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x11, 0x61,\n\t0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67,\n\t0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,\n\t0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x22, 0xb5, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x46, 0x0a, 0x0e,\n\t0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42,\n\t0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0d, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x75, 0x72, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e,\n\t0x67, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f,\n\t0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12,\n\t0x2c, 0x0a, 0x12, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f,\n\t0x6c, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x64, 0x65, 0x76,\n\t0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x46, 0x65, 0x65, 0x12, 0x2c, 0x0a,\n\t0x12, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f,\n\t0x66, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x72,\n\t0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x46, 0x65, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69,\n\t0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x68,\n\t0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x69,\n\t0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x68, 0x72, 0x65,\n\t0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,\n\t0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,\n\t0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,\n\t0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12,\n\t0x4a, 0x0a, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18,\n\t0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52,\n\t0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b,\n\t0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x1c, 0x8a, 0xe7, 0xb0,\n\t0x2a, 0x17, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x74, 0x69,\n\t0x65, 0x72, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x5f, 0x0a, 0x04, 0x52, 0x61, 0x74,\n\t0x65, 0x12, 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f,\n\t0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74,\n\t0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06,\n\t0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x42, 0xd8, 0x01, 0x0a, 0x1a, 0x63,\n\t0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x3b, 0x74, 0x69, 0x65, 0x72, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03,\n\t0x53, 0x54, 0x58, 0xaa, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x54, 0x69, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47,\n\t0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_params_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_params_proto_rawDescData = file_sourcehub_tier_v1beta1_params_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_params_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_params_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_params_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_params_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_params_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcehub_tier_v1beta1_params_proto_goTypes = []interface{}{\n\t(*Params)(nil),              // 0: sourcehub.tier.v1beta1.Params\n\t(*Rate)(nil),                // 1: sourcehub.tier.v1beta1.Rate\n\t(*durationpb.Duration)(nil), // 2: google.protobuf.Duration\n}\nvar file_sourcehub_tier_v1beta1_params_proto_depIdxs = []int32{\n\t2, // 0: sourcehub.tier.v1beta1.Params.epoch_duration:type_name -> google.protobuf.Duration\n\t1, // 1: sourcehub.tier.v1beta1.Params.reward_rates:type_name -> sourcehub.tier.v1beta1.Rate\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_params_proto_init() }\nfunc file_sourcehub_tier_v1beta1_params_proto_init() {\n\tif File_sourcehub_tier_v1beta1_params_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Params); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_params_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Rate); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_params_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_params_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_params_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_params_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_params_proto = out.File\n\tfile_sourcehub_tier_v1beta1_params_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_params_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_params_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/query.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/query/v1beta1\"\n\tfmt \"fmt\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_QueryParamsRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_QueryParamsRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"QueryParamsRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil)\n\ntype fastReflection_QueryParamsRequest QueryParamsRequest\n\nfunc (x *QueryParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(x)\n}\n\nfunc (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{}\n\ntype fastReflection_QueryParamsRequest_messageType struct{}\n\nfunc (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsRequest)(nil)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\nfunc (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.QueryParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_QueryParamsResponse        protoreflect.MessageDescriptor\n\tfd_QueryParamsResponse_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_QueryParamsResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"QueryParamsResponse\")\n\tfd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil)\n\ntype fastReflection_QueryParamsResponse QueryParamsResponse\n\nfunc (x *QueryParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(x)\n}\n\nfunc (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{}\n\ntype fastReflection_QueryParamsResponse_messageType struct{}\n\nfunc (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_QueryParamsResponse)(nil)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\nfunc (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_QueryParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_QueryParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_QueryParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_QueryParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*QueryParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_QueryParamsResponse_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.QueryParamsResponse.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.QueryParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.QueryParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.QueryParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_QueryParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*QueryParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_LockupRequest                   protoreflect.MessageDescriptor\n\tfd_LockupRequest_delegator_address protoreflect.FieldDescriptor\n\tfd_LockupRequest_validator_address protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_LockupRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"LockupRequest\")\n\tfd_LockupRequest_delegator_address = md_LockupRequest.Fields().ByName(\"delegator_address\")\n\tfd_LockupRequest_validator_address = md_LockupRequest.Fields().ByName(\"validator_address\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_LockupRequest)(nil)\n\ntype fastReflection_LockupRequest LockupRequest\n\nfunc (x *LockupRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_LockupRequest)(x)\n}\n\nfunc (x *LockupRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_LockupRequest_messageType fastReflection_LockupRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_LockupRequest_messageType{}\n\ntype fastReflection_LockupRequest_messageType struct{}\n\nfunc (x fastReflection_LockupRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_LockupRequest)(nil)\n}\nfunc (x fastReflection_LockupRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_LockupRequest)\n}\nfunc (x fastReflection_LockupRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_LockupRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_LockupRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_LockupRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_LockupRequest) New() protoreflect.Message {\n\treturn new(fastReflection_LockupRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_LockupRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*LockupRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_LockupRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_LockupRequest_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_LockupRequest_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_LockupRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_LockupRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.LockupRequest is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.LockupRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_LockupRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.LockupRequest.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_LockupRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.LockupRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_LockupRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_LockupRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_LockupRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*LockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_LockupResponse        protoreflect.MessageDescriptor\n\tfd_LockupResponse_lockup protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_LockupResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"LockupResponse\")\n\tfd_LockupResponse_lockup = md_LockupResponse.Fields().ByName(\"lockup\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_LockupResponse)(nil)\n\ntype fastReflection_LockupResponse LockupResponse\n\nfunc (x *LockupResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_LockupResponse)(x)\n}\n\nfunc (x *LockupResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_LockupResponse_messageType fastReflection_LockupResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_LockupResponse_messageType{}\n\ntype fastReflection_LockupResponse_messageType struct{}\n\nfunc (x fastReflection_LockupResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_LockupResponse)(nil)\n}\nfunc (x fastReflection_LockupResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_LockupResponse)\n}\nfunc (x fastReflection_LockupResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_LockupResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_LockupResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_LockupResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_LockupResponse) New() protoreflect.Message {\n\treturn new(fastReflection_LockupResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_LockupResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*LockupResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_LockupResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Lockup != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Lockup.ProtoReflect())\n\t\tif !f(fd_LockupResponse_lockup, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_LockupResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\treturn x.Lockup != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\tx.Lockup = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_LockupResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\tvalue := x.Lockup\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\tx.Lockup = value.Message().Interface().(*Lockup)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\tif x.Lockup == nil {\n\t\t\tx.Lockup = new(Lockup)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Lockup.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_LockupResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupResponse.lockup\":\n\t\tm := new(Lockup)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_LockupResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.LockupResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_LockupResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_LockupResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_LockupResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*LockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Lockup != nil {\n\t\t\tl = options.Size(x.Lockup)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Lockup != nil {\n\t\t\tencoded, err := options.Marshal(x.Lockup)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Lockup\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Lockup == nil {\n\t\t\t\t\tx.Lockup = &Lockup{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Lockup); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_LockupsRequest                   protoreflect.MessageDescriptor\n\tfd_LockupsRequest_delegator_address protoreflect.FieldDescriptor\n\tfd_LockupsRequest_pagination        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_LockupsRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"LockupsRequest\")\n\tfd_LockupsRequest_delegator_address = md_LockupsRequest.Fields().ByName(\"delegator_address\")\n\tfd_LockupsRequest_pagination = md_LockupsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_LockupsRequest)(nil)\n\ntype fastReflection_LockupsRequest LockupsRequest\n\nfunc (x *LockupsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_LockupsRequest)(x)\n}\n\nfunc (x *LockupsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_LockupsRequest_messageType fastReflection_LockupsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_LockupsRequest_messageType{}\n\ntype fastReflection_LockupsRequest_messageType struct{}\n\nfunc (x fastReflection_LockupsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_LockupsRequest)(nil)\n}\nfunc (x fastReflection_LockupsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_LockupsRequest)\n}\nfunc (x fastReflection_LockupsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_LockupsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_LockupsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_LockupsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_LockupsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_LockupsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_LockupsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*LockupsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_LockupsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_LockupsRequest_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_LockupsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_LockupsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_LockupsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.LockupsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_LockupsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.LockupsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_LockupsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.LockupsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_LockupsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_LockupsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_LockupsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*LockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_LockupsResponse_1_list)(nil)\n\ntype _LockupsResponse_1_list struct {\n\tlist *[]*Lockup\n}\n\nfunc (x *_LockupsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_LockupsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_LockupsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_LockupsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Lockup)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_LockupsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Lockup)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_LockupsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_LockupsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Lockup)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_LockupsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_LockupsResponse            protoreflect.MessageDescriptor\n\tfd_LockupsResponse_lockups    protoreflect.FieldDescriptor\n\tfd_LockupsResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_LockupsResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"LockupsResponse\")\n\tfd_LockupsResponse_lockups = md_LockupsResponse.Fields().ByName(\"lockups\")\n\tfd_LockupsResponse_pagination = md_LockupsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_LockupsResponse)(nil)\n\ntype fastReflection_LockupsResponse LockupsResponse\n\nfunc (x *LockupsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_LockupsResponse)(x)\n}\n\nfunc (x *LockupsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_LockupsResponse_messageType fastReflection_LockupsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_LockupsResponse_messageType{}\n\ntype fastReflection_LockupsResponse_messageType struct{}\n\nfunc (x fastReflection_LockupsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_LockupsResponse)(nil)\n}\nfunc (x fastReflection_LockupsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_LockupsResponse)\n}\nfunc (x fastReflection_LockupsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_LockupsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_LockupsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_LockupsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_LockupsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_LockupsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_LockupsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_LockupsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*LockupsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_LockupsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Lockups) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_LockupsResponse_1_list{list: &x.Lockups})\n\t\tif !f(fd_LockupsResponse_lockups, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_LockupsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_LockupsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\treturn len(x.Lockups) != 0\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\tx.Lockups = nil\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_LockupsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\tif len(x.Lockups) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_LockupsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_LockupsResponse_1_list{list: &x.Lockups}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_LockupsResponse_1_list)\n\t\tx.Lockups = *clv.list\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\tif x.Lockups == nil {\n\t\t\tx.Lockups = []*Lockup{}\n\t\t}\n\t\tvalue := &_LockupsResponse_1_list{list: &x.Lockups}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_LockupsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.lockups\":\n\t\tlist := []*Lockup{}\n\t\treturn protoreflect.ValueOfList(&_LockupsResponse_1_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.LockupsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.LockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.LockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_LockupsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.LockupsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_LockupsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_LockupsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_LockupsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_LockupsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*LockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Lockups) > 0 {\n\t\t\tfor _, e := range x.Lockups {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Lockups) > 0 {\n\t\t\tfor iNdEx := len(x.Lockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Lockups[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*LockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: LockupsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Lockups\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Lockups = append(x.Lockups, &Lockup{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Lockups[len(x.Lockups)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnlockingLockupRequest                   protoreflect.MessageDescriptor\n\tfd_UnlockingLockupRequest_delegator_address protoreflect.FieldDescriptor\n\tfd_UnlockingLockupRequest_validator_address protoreflect.FieldDescriptor\n\tfd_UnlockingLockupRequest_creation_height   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UnlockingLockupRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UnlockingLockupRequest\")\n\tfd_UnlockingLockupRequest_delegator_address = md_UnlockingLockupRequest.Fields().ByName(\"delegator_address\")\n\tfd_UnlockingLockupRequest_validator_address = md_UnlockingLockupRequest.Fields().ByName(\"validator_address\")\n\tfd_UnlockingLockupRequest_creation_height = md_UnlockingLockupRequest.Fields().ByName(\"creation_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnlockingLockupRequest)(nil)\n\ntype fastReflection_UnlockingLockupRequest UnlockingLockupRequest\n\nfunc (x *UnlockingLockupRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupRequest)(x)\n}\n\nfunc (x *UnlockingLockupRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnlockingLockupRequest_messageType fastReflection_UnlockingLockupRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_UnlockingLockupRequest_messageType{}\n\ntype fastReflection_UnlockingLockupRequest_messageType struct{}\n\nfunc (x fastReflection_UnlockingLockupRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupRequest)(nil)\n}\nfunc (x fastReflection_UnlockingLockupRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupRequest)\n}\nfunc (x fastReflection_UnlockingLockupRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnlockingLockupRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnlockingLockupRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnlockingLockupRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnlockingLockupRequest) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnlockingLockupRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*UnlockingLockupRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnlockingLockupRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_UnlockingLockupRequest_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_UnlockingLockupRequest_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationHeight != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CreationHeight)\n\t\tif !f(fd_UnlockingLockupRequest_creation_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnlockingLockupRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\treturn x.CreationHeight != int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\tx.CreationHeight = int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnlockingLockupRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\tvalue := x.CreationHeight\n\t\treturn protoreflect.ValueOfInt64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\tx.CreationHeight = value.Int()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.UnlockingLockupRequest is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.UnlockingLockupRequest is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\tpanic(fmt.Errorf(\"field creation_height of message sourcehub.tier.v1beta1.UnlockingLockupRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnlockingLockupRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupRequest.creation_height\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnlockingLockupRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UnlockingLockupRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnlockingLockupRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnlockingLockupRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnlockingLockupRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnlockingLockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreationHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreationHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreationHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnlockingLockupResponse                 protoreflect.MessageDescriptor\n\tfd_UnlockingLockupResponse_unlockingLockup protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UnlockingLockupResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UnlockingLockupResponse\")\n\tfd_UnlockingLockupResponse_unlockingLockup = md_UnlockingLockupResponse.Fields().ByName(\"unlockingLockup\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnlockingLockupResponse)(nil)\n\ntype fastReflection_UnlockingLockupResponse UnlockingLockupResponse\n\nfunc (x *UnlockingLockupResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupResponse)(x)\n}\n\nfunc (x *UnlockingLockupResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnlockingLockupResponse_messageType fastReflection_UnlockingLockupResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_UnlockingLockupResponse_messageType{}\n\ntype fastReflection_UnlockingLockupResponse_messageType struct{}\n\nfunc (x fastReflection_UnlockingLockupResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupResponse)(nil)\n}\nfunc (x fastReflection_UnlockingLockupResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupResponse)\n}\nfunc (x fastReflection_UnlockingLockupResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnlockingLockupResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnlockingLockupResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnlockingLockupResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnlockingLockupResponse) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnlockingLockupResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*UnlockingLockupResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnlockingLockupResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.UnlockingLockup != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.UnlockingLockup.ProtoReflect())\n\t\tif !f(fd_UnlockingLockupResponse_unlockingLockup, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnlockingLockupResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\treturn x.UnlockingLockup != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\tx.UnlockingLockup = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnlockingLockupResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\tvalue := x.UnlockingLockup\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\tx.UnlockingLockup = value.Message().Interface().(*UnlockingLockup)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\tif x.UnlockingLockup == nil {\n\t\t\tx.UnlockingLockup = new(UnlockingLockup)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.UnlockingLockup.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnlockingLockupResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup\":\n\t\tm := new(UnlockingLockup)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnlockingLockupResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UnlockingLockupResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnlockingLockupResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnlockingLockupResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnlockingLockupResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnlockingLockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.UnlockingLockup != nil {\n\t\t\tl = options.Size(x.UnlockingLockup)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.UnlockingLockup != nil {\n\t\t\tencoded, err := options.Marshal(x.UnlockingLockup)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockup\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.UnlockingLockup == nil {\n\t\t\t\t\tx.UnlockingLockup = &UnlockingLockup{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UnlockingLockup); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnlockingLockupsRequest                   protoreflect.MessageDescriptor\n\tfd_UnlockingLockupsRequest_delegator_address protoreflect.FieldDescriptor\n\tfd_UnlockingLockupsRequest_pagination        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UnlockingLockupsRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UnlockingLockupsRequest\")\n\tfd_UnlockingLockupsRequest_delegator_address = md_UnlockingLockupsRequest.Fields().ByName(\"delegator_address\")\n\tfd_UnlockingLockupsRequest_pagination = md_UnlockingLockupsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnlockingLockupsRequest)(nil)\n\ntype fastReflection_UnlockingLockupsRequest UnlockingLockupsRequest\n\nfunc (x *UnlockingLockupsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupsRequest)(x)\n}\n\nfunc (x *UnlockingLockupsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnlockingLockupsRequest_messageType fastReflection_UnlockingLockupsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_UnlockingLockupsRequest_messageType{}\n\ntype fastReflection_UnlockingLockupsRequest_messageType struct{}\n\nfunc (x fastReflection_UnlockingLockupsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupsRequest)(nil)\n}\nfunc (x fastReflection_UnlockingLockupsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupsRequest)\n}\nfunc (x fastReflection_UnlockingLockupsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnlockingLockupsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnlockingLockupsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnlockingLockupsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnlockingLockupsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnlockingLockupsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*UnlockingLockupsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnlockingLockupsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_UnlockingLockupsRequest_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_UnlockingLockupsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnlockingLockupsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnlockingLockupsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.UnlockingLockupsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnlockingLockupsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnlockingLockupsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UnlockingLockupsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnlockingLockupsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnlockingLockupsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnlockingLockupsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnlockingLockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_UnlockingLockupsResponse_1_list)(nil)\n\ntype _UnlockingLockupsResponse_1_list struct {\n\tlist *[]*UnlockingLockup\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UnlockingLockup)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UnlockingLockup)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(UnlockingLockup)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(UnlockingLockup)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_UnlockingLockupsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_UnlockingLockupsResponse                  protoreflect.MessageDescriptor\n\tfd_UnlockingLockupsResponse_unlockingLockups protoreflect.FieldDescriptor\n\tfd_UnlockingLockupsResponse_pagination       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UnlockingLockupsResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UnlockingLockupsResponse\")\n\tfd_UnlockingLockupsResponse_unlockingLockups = md_UnlockingLockupsResponse.Fields().ByName(\"unlockingLockups\")\n\tfd_UnlockingLockupsResponse_pagination = md_UnlockingLockupsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnlockingLockupsResponse)(nil)\n\ntype fastReflection_UnlockingLockupsResponse UnlockingLockupsResponse\n\nfunc (x *UnlockingLockupsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupsResponse)(x)\n}\n\nfunc (x *UnlockingLockupsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnlockingLockupsResponse_messageType fastReflection_UnlockingLockupsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_UnlockingLockupsResponse_messageType{}\n\ntype fastReflection_UnlockingLockupsResponse_messageType struct{}\n\nfunc (x fastReflection_UnlockingLockupsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnlockingLockupsResponse)(nil)\n}\nfunc (x fastReflection_UnlockingLockupsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupsResponse)\n}\nfunc (x fastReflection_UnlockingLockupsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnlockingLockupsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnlockingLockupsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnlockingLockupsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnlockingLockupsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnlockingLockupsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_UnlockingLockupsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnlockingLockupsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*UnlockingLockupsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnlockingLockupsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.UnlockingLockups) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_UnlockingLockupsResponse_1_list{list: &x.UnlockingLockups})\n\t\tif !f(fd_UnlockingLockupsResponse_unlockingLockups, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_UnlockingLockupsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnlockingLockupsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\treturn len(x.UnlockingLockups) != 0\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\tx.UnlockingLockups = nil\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnlockingLockupsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\tif len(x.UnlockingLockups) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_UnlockingLockupsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_UnlockingLockupsResponse_1_list{list: &x.UnlockingLockups}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_UnlockingLockupsResponse_1_list)\n\t\tx.UnlockingLockups = *clv.list\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\tif x.UnlockingLockups == nil {\n\t\t\tx.UnlockingLockups = []*UnlockingLockup{}\n\t\t}\n\t\tvalue := &_UnlockingLockupsResponse_1_list{list: &x.UnlockingLockups}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnlockingLockupsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups\":\n\t\tlist := []*UnlockingLockup{}\n\t\treturn protoreflect.ValueOfList(&_UnlockingLockupsResponse_1_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UnlockingLockupsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UnlockingLockupsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnlockingLockupsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UnlockingLockupsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnlockingLockupsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnlockingLockupsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnlockingLockupsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnlockingLockupsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnlockingLockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.UnlockingLockups) > 0 {\n\t\t\tfor _, e := range x.UnlockingLockups {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.UnlockingLockups) > 0 {\n\t\t\tfor iNdEx := len(x.UnlockingLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.UnlockingLockups[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnlockingLockupsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnlockingLockupsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockups\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UnlockingLockups = append(x.UnlockingLockups, &UnlockingLockup{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UnlockingLockups[len(x.UnlockingLockups)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DevelopersRequest            protoreflect.MessageDescriptor\n\tfd_DevelopersRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_DevelopersRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"DevelopersRequest\")\n\tfd_DevelopersRequest_pagination = md_DevelopersRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DevelopersRequest)(nil)\n\ntype fastReflection_DevelopersRequest DevelopersRequest\n\nfunc (x *DevelopersRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DevelopersRequest)(x)\n}\n\nfunc (x *DevelopersRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DevelopersRequest_messageType fastReflection_DevelopersRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_DevelopersRequest_messageType{}\n\ntype fastReflection_DevelopersRequest_messageType struct{}\n\nfunc (x fastReflection_DevelopersRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DevelopersRequest)(nil)\n}\nfunc (x fastReflection_DevelopersRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DevelopersRequest)\n}\nfunc (x fastReflection_DevelopersRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DevelopersRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DevelopersRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DevelopersRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DevelopersRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_DevelopersRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DevelopersRequest) New() protoreflect.Message {\n\treturn new(fastReflection_DevelopersRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DevelopersRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*DevelopersRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DevelopersRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_DevelopersRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DevelopersRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DevelopersRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DevelopersRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DevelopersRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.DevelopersRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DevelopersRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DevelopersRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DevelopersRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DevelopersRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DevelopersRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DevelopersRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DevelopersRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DevelopersRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_DevelopersResponse_1_list)(nil)\n\ntype _DevelopersResponse_1_list struct {\n\tlist *[]*Developer\n}\n\nfunc (x *_DevelopersResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_DevelopersResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_DevelopersResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Developer)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_DevelopersResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Developer)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_DevelopersResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Developer)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_DevelopersResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_DevelopersResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Developer)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_DevelopersResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_DevelopersResponse            protoreflect.MessageDescriptor\n\tfd_DevelopersResponse_developers protoreflect.FieldDescriptor\n\tfd_DevelopersResponse_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_DevelopersResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"DevelopersResponse\")\n\tfd_DevelopersResponse_developers = md_DevelopersResponse.Fields().ByName(\"developers\")\n\tfd_DevelopersResponse_pagination = md_DevelopersResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DevelopersResponse)(nil)\n\ntype fastReflection_DevelopersResponse DevelopersResponse\n\nfunc (x *DevelopersResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DevelopersResponse)(x)\n}\n\nfunc (x *DevelopersResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DevelopersResponse_messageType fastReflection_DevelopersResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_DevelopersResponse_messageType{}\n\ntype fastReflection_DevelopersResponse_messageType struct{}\n\nfunc (x fastReflection_DevelopersResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DevelopersResponse)(nil)\n}\nfunc (x fastReflection_DevelopersResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DevelopersResponse)\n}\nfunc (x fastReflection_DevelopersResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DevelopersResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DevelopersResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DevelopersResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DevelopersResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_DevelopersResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DevelopersResponse) New() protoreflect.Message {\n\treturn new(fastReflection_DevelopersResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DevelopersResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*DevelopersResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DevelopersResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Developers) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_DevelopersResponse_1_list{list: &x.Developers})\n\t\tif !f(fd_DevelopersResponse_developers, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_DevelopersResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DevelopersResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\treturn len(x.Developers) != 0\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\tx.Developers = nil\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DevelopersResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\tif len(x.Developers) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_DevelopersResponse_1_list{})\n\t\t}\n\t\tlistValue := &_DevelopersResponse_1_list{list: &x.Developers}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_DevelopersResponse_1_list)\n\t\tx.Developers = *clv.list\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\tif x.Developers == nil {\n\t\t\tx.Developers = []*Developer{}\n\t\t}\n\t\tvalue := &_DevelopersResponse_1_list{list: &x.Developers}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DevelopersResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.developers\":\n\t\tlist := []*Developer{}\n\t\treturn protoreflect.ValueOfList(&_DevelopersResponse_1_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.DevelopersResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.DevelopersResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.DevelopersResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DevelopersResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.DevelopersResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DevelopersResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DevelopersResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DevelopersResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DevelopersResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DevelopersResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Developers) > 0 {\n\t\t\tfor _, e := range x.Developers {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DevelopersResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developers) > 0 {\n\t\t\tfor iNdEx := len(x.Developers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Developers[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DevelopersResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DevelopersResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DevelopersResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developers\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developers = append(x.Developers, &Developer{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Developers[len(x.Developers)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UserSubscriptionsRequest            protoreflect.MessageDescriptor\n\tfd_UserSubscriptionsRequest_developer  protoreflect.FieldDescriptor\n\tfd_UserSubscriptionsRequest_pagination protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UserSubscriptionsRequest = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UserSubscriptionsRequest\")\n\tfd_UserSubscriptionsRequest_developer = md_UserSubscriptionsRequest.Fields().ByName(\"developer\")\n\tfd_UserSubscriptionsRequest_pagination = md_UserSubscriptionsRequest.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UserSubscriptionsRequest)(nil)\n\ntype fastReflection_UserSubscriptionsRequest UserSubscriptionsRequest\n\nfunc (x *UserSubscriptionsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UserSubscriptionsRequest)(x)\n}\n\nfunc (x *UserSubscriptionsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UserSubscriptionsRequest_messageType fastReflection_UserSubscriptionsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_UserSubscriptionsRequest_messageType{}\n\ntype fastReflection_UserSubscriptionsRequest_messageType struct{}\n\nfunc (x fastReflection_UserSubscriptionsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UserSubscriptionsRequest)(nil)\n}\nfunc (x fastReflection_UserSubscriptionsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscriptionsRequest)\n}\nfunc (x fastReflection_UserSubscriptionsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscriptionsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UserSubscriptionsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscriptionsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UserSubscriptionsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_UserSubscriptionsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UserSubscriptionsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscriptionsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UserSubscriptionsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*UserSubscriptionsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UserSubscriptionsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_UserSubscriptionsRequest_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_UserSubscriptionsRequest_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UserSubscriptionsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UserSubscriptionsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.UserSubscriptionsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UserSubscriptionsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination\":\n\t\tm := new(v1beta1.PageRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UserSubscriptionsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UserSubscriptionsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UserSubscriptionsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UserSubscriptionsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UserSubscriptionsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UserSubscriptionsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscriptionsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscriptionsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscriptionsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscriptionsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_UserSubscriptionsResponse_1_list)(nil)\n\ntype _UserSubscriptionsResponse_1_list struct {\n\tlist *[]*UserSubscription\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UserSubscription)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*UserSubscription)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(UserSubscription)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(UserSubscription)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_UserSubscriptionsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_UserSubscriptionsResponse                    protoreflect.MessageDescriptor\n\tfd_UserSubscriptionsResponse_user_subscriptions protoreflect.FieldDescriptor\n\tfd_UserSubscriptionsResponse_pagination         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_query_proto_init()\n\tmd_UserSubscriptionsResponse = File_sourcehub_tier_v1beta1_query_proto.Messages().ByName(\"UserSubscriptionsResponse\")\n\tfd_UserSubscriptionsResponse_user_subscriptions = md_UserSubscriptionsResponse.Fields().ByName(\"user_subscriptions\")\n\tfd_UserSubscriptionsResponse_pagination = md_UserSubscriptionsResponse.Fields().ByName(\"pagination\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UserSubscriptionsResponse)(nil)\n\ntype fastReflection_UserSubscriptionsResponse UserSubscriptionsResponse\n\nfunc (x *UserSubscriptionsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UserSubscriptionsResponse)(x)\n}\n\nfunc (x *UserSubscriptionsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UserSubscriptionsResponse_messageType fastReflection_UserSubscriptionsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_UserSubscriptionsResponse_messageType{}\n\ntype fastReflection_UserSubscriptionsResponse_messageType struct{}\n\nfunc (x fastReflection_UserSubscriptionsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UserSubscriptionsResponse)(nil)\n}\nfunc (x fastReflection_UserSubscriptionsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscriptionsResponse)\n}\nfunc (x fastReflection_UserSubscriptionsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscriptionsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UserSubscriptionsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscriptionsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UserSubscriptionsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_UserSubscriptionsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UserSubscriptionsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscriptionsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UserSubscriptionsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*UserSubscriptionsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UserSubscriptionsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.UserSubscriptions) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_UserSubscriptionsResponse_1_list{list: &x.UserSubscriptions})\n\t\tif !f(fd_UserSubscriptionsResponse_user_subscriptions, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Pagination != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\t\tif !f(fd_UserSubscriptionsResponse_pagination, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UserSubscriptionsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\treturn len(x.UserSubscriptions) != 0\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\treturn x.Pagination != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\tx.UserSubscriptions = nil\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\tx.Pagination = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UserSubscriptionsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\tif len(x.UserSubscriptions) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_UserSubscriptionsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_UserSubscriptionsResponse_1_list{list: &x.UserSubscriptions}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\tvalue := x.Pagination\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_UserSubscriptionsResponse_1_list)\n\t\tx.UserSubscriptions = *clv.list\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\tx.Pagination = value.Message().Interface().(*v1beta1.PageResponse)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\tif x.UserSubscriptions == nil {\n\t\t\tx.UserSubscriptions = []*UserSubscription{}\n\t\t}\n\t\tvalue := &_UserSubscriptionsResponse_1_list{list: &x.UserSubscriptions}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\tif x.Pagination == nil {\n\t\t\tx.Pagination = new(v1beta1.PageResponse)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Pagination.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UserSubscriptionsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions\":\n\t\tlist := []*UserSubscription{}\n\t\treturn protoreflect.ValueOfList(&_UserSubscriptionsResponse_1_list{list: &list})\n\tcase \"sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination\":\n\t\tm := new(v1beta1.PageResponse)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscriptionsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscriptionsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UserSubscriptionsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UserSubscriptionsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UserSubscriptionsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscriptionsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UserSubscriptionsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UserSubscriptionsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UserSubscriptionsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.UserSubscriptions) > 0 {\n\t\t\tfor _, e := range x.UserSubscriptions {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tl = options.Size(x.Pagination)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscriptionsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Pagination != nil {\n\t\t\tencoded, err := options.Marshal(x.Pagination)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.UserSubscriptions) > 0 {\n\t\t\tfor iNdEx := len(x.UserSubscriptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.UserSubscriptions[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscriptionsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscriptionsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscriptionsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserSubscriptions\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserSubscriptions = append(x.UserSubscriptions, &UserSubscription{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UserSubscriptions[len(x.UserSubscriptions)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Pagination == nil {\n\t\t\t\t\tx.Pagination = &v1beta1.PageResponse{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/query.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *QueryParamsRequest) Reset() {\n\t*x = QueryParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{0}\n}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// params holds all the parameters of this module.\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *QueryParamsResponse) Reset() {\n\t*x = QueryParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *QueryParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*QueryParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *QueryParamsResponse) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\n// LockupRequest is the request type for the Query/Lockup RPC method.\ntype LockupRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n}\n\nfunc (x *LockupRequest) Reset() {\n\t*x = LockupRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LockupRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LockupRequest) ProtoMessage() {}\n\n// Deprecated: Use LockupRequest.ProtoReflect.Descriptor instead.\nfunc (*LockupRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *LockupRequest) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *LockupRequest) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\n// LockupResponse is the response type for the Query/Lockup RPC method.\ntype LockupResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tLockup *Lockup `protobuf:\"bytes,1,opt,name=lockup,proto3\" json:\"lockup,omitempty\"`\n}\n\nfunc (x *LockupResponse) Reset() {\n\t*x = LockupResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LockupResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LockupResponse) ProtoMessage() {}\n\n// Deprecated: Use LockupResponse.ProtoReflect.Descriptor instead.\nfunc (*LockupResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *LockupResponse) GetLockup() *Lockup {\n\tif x != nil {\n\t\treturn x.Lockup\n\t}\n\treturn nil\n}\n\n// LockupsRequest is the request type for the Query/Lockups RPC method.\ntype LockupsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string               `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tPagination       *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *LockupsRequest) Reset() {\n\t*x = LockupsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LockupsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LockupsRequest) ProtoMessage() {}\n\n// Deprecated: Use LockupsRequest.ProtoReflect.Descriptor instead.\nfunc (*LockupsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *LockupsRequest) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *LockupsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// LockupsResponse is the response type for the Query/Lockups RPC method.\ntype LockupsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tLockups    []*Lockup             `protobuf:\"bytes,1,rep,name=lockups,proto3\" json:\"lockups,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *LockupsResponse) Reset() {\n\t*x = LockupsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *LockupsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*LockupsResponse) ProtoMessage() {}\n\n// Deprecated: Use LockupsResponse.ProtoReflect.Descriptor instead.\nfunc (*LockupsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *LockupsResponse) GetLockups() []*Lockup {\n\tif x != nil {\n\t\treturn x.Lockups\n\t}\n\treturn nil\n}\n\nfunc (x *LockupsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// UnlockingLockupRequest is the request type for the Query/UnlockingLockup RPC method.\ntype UnlockingLockupRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tCreationHeight   int64  `protobuf:\"varint,3,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n}\n\nfunc (x *UnlockingLockupRequest) Reset() {\n\t*x = UnlockingLockupRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnlockingLockupRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnlockingLockupRequest) ProtoMessage() {}\n\n// Deprecated: Use UnlockingLockupRequest.ProtoReflect.Descriptor instead.\nfunc (*UnlockingLockupRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *UnlockingLockupRequest) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockupRequest) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockupRequest) GetCreationHeight() int64 {\n\tif x != nil {\n\t\treturn x.CreationHeight\n\t}\n\treturn 0\n}\n\n// UnlockingLockupResponse is the response type for the Query/UnlockingLockup RPC method.\ntype UnlockingLockupResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tUnlockingLockup *UnlockingLockup `protobuf:\"bytes,1,opt,name=unlockingLockup,proto3\" json:\"unlockingLockup,omitempty\"`\n}\n\nfunc (x *UnlockingLockupResponse) Reset() {\n\t*x = UnlockingLockupResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnlockingLockupResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnlockingLockupResponse) ProtoMessage() {}\n\n// Deprecated: Use UnlockingLockupResponse.ProtoReflect.Descriptor instead.\nfunc (*UnlockingLockupResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *UnlockingLockupResponse) GetUnlockingLockup() *UnlockingLockup {\n\tif x != nil {\n\t\treturn x.UnlockingLockup\n\t}\n\treturn nil\n}\n\n// UnlockingLockupsRequest is the request type for the Query/UnlockingLockups RPC method.\ntype UnlockingLockupsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string               `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tPagination       *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *UnlockingLockupsRequest) Reset() {\n\t*x = UnlockingLockupsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnlockingLockupsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnlockingLockupsRequest) ProtoMessage() {}\n\n// Deprecated: Use UnlockingLockupsRequest.ProtoReflect.Descriptor instead.\nfunc (*UnlockingLockupsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *UnlockingLockupsRequest) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnlockingLockupsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// UnlockingLockupsResponse is the response type for the Query/UnlockingLockups RPC method.\ntype UnlockingLockupsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tUnlockingLockups []*UnlockingLockup    `protobuf:\"bytes,1,rep,name=unlockingLockups,proto3\" json:\"unlockingLockups,omitempty\"`\n\tPagination       *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *UnlockingLockupsResponse) Reset() {\n\t*x = UnlockingLockupsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnlockingLockupsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnlockingLockupsResponse) ProtoMessage() {}\n\n// Deprecated: Use UnlockingLockupsResponse.ProtoReflect.Descriptor instead.\nfunc (*UnlockingLockupsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *UnlockingLockupsResponse) GetUnlockingLockups() []*UnlockingLockup {\n\tif x != nil {\n\t\treturn x.UnlockingLockups\n\t}\n\treturn nil\n}\n\nfunc (x *UnlockingLockupsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// DevelopersRequest is the request type for the Query/Developers RPC method.\ntype DevelopersRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *DevelopersRequest) Reset() {\n\t*x = DevelopersRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DevelopersRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DevelopersRequest) ProtoMessage() {}\n\n// Deprecated: Use DevelopersRequest.ProtoReflect.Descriptor instead.\nfunc (*DevelopersRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *DevelopersRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// DevelopersResponse is the response type for the Query/Developers RPC method.\ntype DevelopersResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDevelopers []*Developer          `protobuf:\"bytes,1,rep,name=developers,proto3\" json:\"developers,omitempty\"`\n\tPagination *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *DevelopersResponse) Reset() {\n\t*x = DevelopersResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DevelopersResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DevelopersResponse) ProtoMessage() {}\n\n// Deprecated: Use DevelopersResponse.ProtoReflect.Descriptor instead.\nfunc (*DevelopersResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *DevelopersResponse) GetDevelopers() []*Developer {\n\tif x != nil {\n\t\treturn x.Developers\n\t}\n\treturn nil\n}\n\nfunc (x *DevelopersResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// UserSubscriptionsRequest is the request type for the Query/UserSubscriptions RPC method.\ntype UserSubscriptionsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDeveloper  string               `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\tPagination *v1beta1.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *UserSubscriptionsRequest) Reset() {\n\t*x = UserSubscriptionsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UserSubscriptionsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UserSubscriptionsRequest) ProtoMessage() {}\n\n// Deprecated: Use UserSubscriptionsRequest.ProtoReflect.Descriptor instead.\nfunc (*UserSubscriptionsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *UserSubscriptionsRequest) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *UserSubscriptionsRequest) GetPagination() *v1beta1.PageRequest {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\n// UserSubscriptionsResponse is the response type for the Query/UserSubscriptions RPC method.\ntype UserSubscriptionsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tUserSubscriptions []*UserSubscription   `protobuf:\"bytes,1,rep,name=user_subscriptions,json=userSubscriptions,proto3\" json:\"user_subscriptions,omitempty\"`\n\tPagination        *v1beta1.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (x *UserSubscriptionsResponse) Reset() {\n\t*x = UserSubscriptionsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_query_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UserSubscriptionsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UserSubscriptionsResponse) ProtoMessage() {}\n\n// Deprecated: Use UserSubscriptionsResponse.ProtoReflect.Descriptor instead.\nfunc (*UserSubscriptionsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *UserSubscriptionsResponse) GetUserSubscriptions() []*UserSubscription {\n\tif x != nil {\n\t\treturn x.UserSubscriptions\n\t}\n\treturn nil\n}\n\nfunc (x *UserSubscriptionsResponse) GetPagination() *v1beta1.PageResponse {\n\tif x != nil {\n\t\treturn x.Pagination\n\t}\n\treturn nil\n}\n\nvar File_sourcehub_tier_v1beta1_query_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_query_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x11, 0x61, 0x6d,\n\t0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65,\n\t0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67,\n\t0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e,\n\t0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,\n\t0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x13, 0x51, 0x75,\n\t0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x22, 0x69, 0x0a, 0x0d, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65,\n\t0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,\n\t0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22,\n\t0x4e, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x3c, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75,\n\t0x70, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x22,\n\t0x85, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f,\n\t0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64,\n\t0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,\n\t0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,\n\t0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x6b,\n\t0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x6c,\n\t0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x04, 0xc8, 0xde,\n\t0x1f, 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70,\n\t0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75,\n\t0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69,\n\t0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,\n\t0x2b, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65,\n\t0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,\n\t0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67,\n\t0x68, 0x74, 0x22, 0x72, 0x0a, 0x17, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c,\n\t0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a,\n\t0x0f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x42,\n\t0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67,\n\t0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x55, 0x6e, 0x6c, 0x6f, 0x63,\n\t0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,\n\t0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f,\n\t0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64,\n\t0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,\n\t0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,\n\t0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, 0x01, 0x0a, 0x18, 0x55, 0x6e, 0x6c, 0x6f,\n\t0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e,\n\t0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e,\n\t0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x10, 0x75,\n\t0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12,\n\t0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73,\n\t0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61,\n\t0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x65,\n\t0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a,\n\t0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,\n\t0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61,\n\t0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,\n\t0x70, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,\n\t0x70, 0x65, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x65, 0x6c,\n\t0x6f, 0x70, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80,\n\t0x01, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64,\n\t0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72,\n\t0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,\n\t0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x22, 0xc3, 0x01, 0x0a, 0x19, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x5d, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x11, 0x75, 0x73, 0x65,\n\t0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47,\n\t0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65,\n\t0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,\n\t0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67,\n\t0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xaf, 0x09, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72,\n\t0x79, 0x12, 0x89, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2a, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xa7, 0x01,\n\t0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12,\n\t0x46, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x2f,\n\t0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x7d, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x96, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x63, 0x6b,\n\t0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63,\n\t0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x65,\n\t0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d,\n\t0x12, 0xd7, 0x01, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f,\n\t0x63, 0x6b, 0x75, 0x70, 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e,\n\t0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e,\n\t0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5d, 0x12, 0x5b, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67,\n\t0x2f, 0x7b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x7d, 0x2f, 0x7b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,\n\t0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x10, 0x55,\n\t0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12,\n\t0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69,\n\t0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,\n\t0x1a, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,\n\t0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x7b, 0x64,\n\t0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73,\n\t0x12, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,\n\t0x70, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12,\n\t0x22, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,\n\t0x65, 0x72, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73,\n\t0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62,\n\t0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39,\n\t0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x64,\n\t0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x7d, 0x42, 0xd7, 0x01, 0x0a, 0x1a, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64,\n\t0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b,\n\t0x74, 0x69, 0x65, 0x72, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x54,\n\t0x58, 0xaa, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x54, 0x69,\n\t0x65, 0x72, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c,\n\t0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_query_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_query_proto_rawDescData = file_sourcehub_tier_v1beta1_query_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_query_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_query_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_query_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_query_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 14)\nvar file_sourcehub_tier_v1beta1_query_proto_goTypes = []interface{}{\n\t(*QueryParamsRequest)(nil),        // 0: sourcehub.tier.v1beta1.QueryParamsRequest\n\t(*QueryParamsResponse)(nil),       // 1: sourcehub.tier.v1beta1.QueryParamsResponse\n\t(*LockupRequest)(nil),             // 2: sourcehub.tier.v1beta1.LockupRequest\n\t(*LockupResponse)(nil),            // 3: sourcehub.tier.v1beta1.LockupResponse\n\t(*LockupsRequest)(nil),            // 4: sourcehub.tier.v1beta1.LockupsRequest\n\t(*LockupsResponse)(nil),           // 5: sourcehub.tier.v1beta1.LockupsResponse\n\t(*UnlockingLockupRequest)(nil),    // 6: sourcehub.tier.v1beta1.UnlockingLockupRequest\n\t(*UnlockingLockupResponse)(nil),   // 7: sourcehub.tier.v1beta1.UnlockingLockupResponse\n\t(*UnlockingLockupsRequest)(nil),   // 8: sourcehub.tier.v1beta1.UnlockingLockupsRequest\n\t(*UnlockingLockupsResponse)(nil),  // 9: sourcehub.tier.v1beta1.UnlockingLockupsResponse\n\t(*DevelopersRequest)(nil),         // 10: sourcehub.tier.v1beta1.DevelopersRequest\n\t(*DevelopersResponse)(nil),        // 11: sourcehub.tier.v1beta1.DevelopersResponse\n\t(*UserSubscriptionsRequest)(nil),  // 12: sourcehub.tier.v1beta1.UserSubscriptionsRequest\n\t(*UserSubscriptionsResponse)(nil), // 13: sourcehub.tier.v1beta1.UserSubscriptionsResponse\n\t(*Params)(nil),                    // 14: sourcehub.tier.v1beta1.Params\n\t(*Lockup)(nil),                    // 15: sourcehub.tier.v1beta1.Lockup\n\t(*v1beta1.PageRequest)(nil),       // 16: cosmos.base.query.v1beta1.PageRequest\n\t(*v1beta1.PageResponse)(nil),      // 17: cosmos.base.query.v1beta1.PageResponse\n\t(*UnlockingLockup)(nil),           // 18: sourcehub.tier.v1beta1.UnlockingLockup\n\t(*Developer)(nil),                 // 19: sourcehub.tier.v1beta1.Developer\n\t(*UserSubscription)(nil),          // 20: sourcehub.tier.v1beta1.UserSubscription\n}\nvar file_sourcehub_tier_v1beta1_query_proto_depIdxs = []int32{\n\t14, // 0: sourcehub.tier.v1beta1.QueryParamsResponse.params:type_name -> sourcehub.tier.v1beta1.Params\n\t15, // 1: sourcehub.tier.v1beta1.LockupResponse.lockup:type_name -> sourcehub.tier.v1beta1.Lockup\n\t16, // 2: sourcehub.tier.v1beta1.LockupsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t15, // 3: sourcehub.tier.v1beta1.LockupsResponse.lockups:type_name -> sourcehub.tier.v1beta1.Lockup\n\t17, // 4: sourcehub.tier.v1beta1.LockupsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t18, // 5: sourcehub.tier.v1beta1.UnlockingLockupResponse.unlockingLockup:type_name -> sourcehub.tier.v1beta1.UnlockingLockup\n\t16, // 6: sourcehub.tier.v1beta1.UnlockingLockupsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t18, // 7: sourcehub.tier.v1beta1.UnlockingLockupsResponse.unlockingLockups:type_name -> sourcehub.tier.v1beta1.UnlockingLockup\n\t17, // 8: sourcehub.tier.v1beta1.UnlockingLockupsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t16, // 9: sourcehub.tier.v1beta1.DevelopersRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t19, // 10: sourcehub.tier.v1beta1.DevelopersResponse.developers:type_name -> sourcehub.tier.v1beta1.Developer\n\t17, // 11: sourcehub.tier.v1beta1.DevelopersResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t16, // 12: sourcehub.tier.v1beta1.UserSubscriptionsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest\n\t20, // 13: sourcehub.tier.v1beta1.UserSubscriptionsResponse.user_subscriptions:type_name -> sourcehub.tier.v1beta1.UserSubscription\n\t17, // 14: sourcehub.tier.v1beta1.UserSubscriptionsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse\n\t0,  // 15: sourcehub.tier.v1beta1.Query.Params:input_type -> sourcehub.tier.v1beta1.QueryParamsRequest\n\t2,  // 16: sourcehub.tier.v1beta1.Query.Lockup:input_type -> sourcehub.tier.v1beta1.LockupRequest\n\t4,  // 17: sourcehub.tier.v1beta1.Query.Lockups:input_type -> sourcehub.tier.v1beta1.LockupsRequest\n\t6,  // 18: sourcehub.tier.v1beta1.Query.UnlockingLockup:input_type -> sourcehub.tier.v1beta1.UnlockingLockupRequest\n\t8,  // 19: sourcehub.tier.v1beta1.Query.UnlockingLockups:input_type -> sourcehub.tier.v1beta1.UnlockingLockupsRequest\n\t10, // 20: sourcehub.tier.v1beta1.Query.Developers:input_type -> sourcehub.tier.v1beta1.DevelopersRequest\n\t12, // 21: sourcehub.tier.v1beta1.Query.UserSubscriptions:input_type -> sourcehub.tier.v1beta1.UserSubscriptionsRequest\n\t1,  // 22: sourcehub.tier.v1beta1.Query.Params:output_type -> sourcehub.tier.v1beta1.QueryParamsResponse\n\t3,  // 23: sourcehub.tier.v1beta1.Query.Lockup:output_type -> sourcehub.tier.v1beta1.LockupResponse\n\t5,  // 24: sourcehub.tier.v1beta1.Query.Lockups:output_type -> sourcehub.tier.v1beta1.LockupsResponse\n\t7,  // 25: sourcehub.tier.v1beta1.Query.UnlockingLockup:output_type -> sourcehub.tier.v1beta1.UnlockingLockupResponse\n\t9,  // 26: sourcehub.tier.v1beta1.Query.UnlockingLockups:output_type -> sourcehub.tier.v1beta1.UnlockingLockupsResponse\n\t11, // 27: sourcehub.tier.v1beta1.Query.Developers:output_type -> sourcehub.tier.v1beta1.DevelopersResponse\n\t13, // 28: sourcehub.tier.v1beta1.Query.UserSubscriptions:output_type -> sourcehub.tier.v1beta1.UserSubscriptionsResponse\n\t22, // [22:29] is the sub-list for method output_type\n\t15, // [15:22] is the sub-list for method input_type\n\t15, // [15:15] is the sub-list for extension type_name\n\t15, // [15:15] is the sub-list for extension extendee\n\t0,  // [0:15] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_query_proto_init() }\nfunc file_sourcehub_tier_v1beta1_query_proto_init() {\n\tif File_sourcehub_tier_v1beta1_query_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_tier_v1beta1_lockup_proto_init()\n\tfile_sourcehub_tier_v1beta1_params_proto_init()\n\tfile_sourcehub_tier_v1beta1_subscription_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*QueryParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LockupRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LockupResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LockupsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*LockupsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnlockingLockupRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnlockingLockupResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnlockingLockupsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnlockingLockupsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DevelopersRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DevelopersResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UserSubscriptionsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UserSubscriptionsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_query_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   14,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_query_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_query_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_query_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_query_proto = out.File\n\tfile_sourcehub_tier_v1beta1_query_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_query_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_query_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/query_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/tier/v1beta1/query.proto\n\npackage tierv1beta1\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tQuery_Params_FullMethodName            = \"/sourcehub.tier.v1beta1.Query/Params\"\n\tQuery_Lockup_FullMethodName            = \"/sourcehub.tier.v1beta1.Query/Lockup\"\n\tQuery_Lockups_FullMethodName           = \"/sourcehub.tier.v1beta1.Query/Lockups\"\n\tQuery_UnlockingLockup_FullMethodName   = \"/sourcehub.tier.v1beta1.Query/UnlockingLockup\"\n\tQuery_UnlockingLockups_FullMethodName  = \"/sourcehub.tier.v1beta1.Query/UnlockingLockups\"\n\tQuery_Developers_FullMethodName        = \"/sourcehub.tier.v1beta1.Query/Developers\"\n\tQuery_UserSubscriptions_FullMethodName = \"/sourcehub.tier.v1beta1.Query/UserSubscriptions\"\n)\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Query defines the gRPC querier service.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Lockup queries a lockup by delegator and validator address.\n\tLockup(ctx context.Context, in *LockupRequest, opts ...grpc.CallOption) (*LockupResponse, error)\n\t// Lockups queries all the lockups of a delegator.\n\tLockups(ctx context.Context, in *LockupsRequest, opts ...grpc.CallOption) (*LockupsResponse, error)\n\t// UnlockingLockup queries an unlocking lockup by delegator and validator address.\n\tUnlockingLockup(ctx context.Context, in *UnlockingLockupRequest, opts ...grpc.CallOption) (*UnlockingLockupResponse, error)\n\t// UnlockingLockups queries all the unlocking lockups of a delegator.\n\tUnlockingLockups(ctx context.Context, in *UnlockingLockupsRequest, opts ...grpc.CallOption) (*UnlockingLockupsResponse, error)\n\t// Developers queries all registered developers.\n\tDevelopers(ctx context.Context, in *DevelopersRequest, opts ...grpc.CallOption) (*DevelopersResponse, error)\n\t// UserSubscriptions queries all user subscriptions for a specific developer.\n\tUserSubscriptions(ctx context.Context, in *UserSubscriptionsRequest, opts ...grpc.CallOption) (*UserSubscriptionsResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewQueryClient(cc grpc.ClientConnInterface) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Lockup(ctx context.Context, in *LockupRequest, opts ...grpc.CallOption) (*LockupResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(LockupResponse)\n\terr := c.cc.Invoke(ctx, Query_Lockup_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Lockups(ctx context.Context, in *LockupsRequest, opts ...grpc.CallOption) (*LockupsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(LockupsResponse)\n\terr := c.cc.Invoke(ctx, Query_Lockups_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UnlockingLockup(ctx context.Context, in *UnlockingLockupRequest, opts ...grpc.CallOption) (*UnlockingLockupResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(UnlockingLockupResponse)\n\terr := c.cc.Invoke(ctx, Query_UnlockingLockup_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UnlockingLockups(ctx context.Context, in *UnlockingLockupsRequest, opts ...grpc.CallOption) (*UnlockingLockupsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(UnlockingLockupsResponse)\n\terr := c.cc.Invoke(ctx, Query_UnlockingLockups_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Developers(ctx context.Context, in *DevelopersRequest, opts ...grpc.CallOption) (*DevelopersResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(DevelopersResponse)\n\terr := c.cc.Invoke(ctx, Query_Developers_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UserSubscriptions(ctx context.Context, in *UserSubscriptionsRequest, opts ...grpc.CallOption) (*UserSubscriptionsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(UserSubscriptionsResponse)\n\terr := c.cc.Invoke(ctx, Query_UserSubscriptions_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\n// All implementations must embed UnimplementedQueryServer\n// for forward compatibility.\n//\n// Query defines the gRPC querier service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Lockup queries a lockup by delegator and validator address.\n\tLockup(context.Context, *LockupRequest) (*LockupResponse, error)\n\t// Lockups queries all the lockups of a delegator.\n\tLockups(context.Context, *LockupsRequest) (*LockupsResponse, error)\n\t// UnlockingLockup queries an unlocking lockup by delegator and validator address.\n\tUnlockingLockup(context.Context, *UnlockingLockupRequest) (*UnlockingLockupResponse, error)\n\t// UnlockingLockups queries all the unlocking lockups of a delegator.\n\tUnlockingLockups(context.Context, *UnlockingLockupsRequest) (*UnlockingLockupsResponse, error)\n\t// Developers queries all registered developers.\n\tDevelopers(context.Context, *DevelopersRequest) (*DevelopersResponse, error)\n\t// UserSubscriptions queries all user subscriptions for a specific developer.\n\tUserSubscriptions(context.Context, *UserSubscriptionsRequest) (*UserSubscriptionsResponse, error)\n\tmustEmbedUnimplementedQueryServer()\n}\n\n// UnimplementedQueryServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedQueryServer struct{}\n\nfunc (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (UnimplementedQueryServer) Lockup(context.Context, *LockupRequest) (*LockupResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lockup not implemented\")\n}\nfunc (UnimplementedQueryServer) Lockups(context.Context, *LockupsRequest) (*LockupsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lockups not implemented\")\n}\nfunc (UnimplementedQueryServer) UnlockingLockup(context.Context, *UnlockingLockupRequest) (*UnlockingLockupResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UnlockingLockup not implemented\")\n}\nfunc (UnimplementedQueryServer) UnlockingLockups(context.Context, *UnlockingLockupsRequest) (*UnlockingLockupsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UnlockingLockups not implemented\")\n}\nfunc (UnimplementedQueryServer) Developers(context.Context, *DevelopersRequest) (*DevelopersResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Developers not implemented\")\n}\nfunc (UnimplementedQueryServer) UserSubscriptions(context.Context, *UserSubscriptionsRequest) (*UserSubscriptionsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserSubscriptions not implemented\")\n}\nfunc (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {}\nfunc (UnimplementedQueryServer) testEmbeddedByValue()               {}\n\n// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to QueryServer will\n// result in compilation errors.\ntype UnsafeQueryServer interface {\n\tmustEmbedUnimplementedQueryServer()\n}\n\nfunc RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) {\n\t// If the following call pancis, it indicates UnimplementedQueryServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Query_ServiceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Params_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Lockup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LockupRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Lockup(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Lockup_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Lockup(ctx, req.(*LockupRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Lockups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LockupsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Lockups(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Lockups_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Lockups(ctx, req.(*LockupsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UnlockingLockup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UnlockingLockupRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UnlockingLockup(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_UnlockingLockup_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UnlockingLockup(ctx, req.(*UnlockingLockupRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UnlockingLockups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UnlockingLockupsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UnlockingLockups(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_UnlockingLockups_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UnlockingLockups(ctx, req.(*UnlockingLockupsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Developers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DevelopersRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Developers(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_Developers_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Developers(ctx, req.(*DevelopersRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UserSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UserSubscriptionsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UserSubscriptions(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Query_UserSubscriptions_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UserSubscriptions(ctx, req.(*UserSubscriptionsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Query_ServiceDesc is the grpc.ServiceDesc for Query service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Query_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.tier.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lockup\",\n\t\t\tHandler:    _Query_Lockup_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lockups\",\n\t\t\tHandler:    _Query_Lockups_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UnlockingLockup\",\n\t\t\tHandler:    _Query_UnlockingLockup_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UnlockingLockups\",\n\t\t\tHandler:    _Query_UnlockingLockups_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Developers\",\n\t\t\tHandler:    _Query_Developers_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserSubscriptions\",\n\t\t\tHandler:    _Query_UserSubscriptions_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/tier/v1beta1/query.proto\",\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/subscription.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_Developer                   protoreflect.MessageDescriptor\n\tfd_Developer_address           protoreflect.FieldDescriptor\n\tfd_Developer_auto_lock_enabled protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_subscription_proto_init()\n\tmd_Developer = File_sourcehub_tier_v1beta1_subscription_proto.Messages().ByName(\"Developer\")\n\tfd_Developer_address = md_Developer.Fields().ByName(\"address\")\n\tfd_Developer_auto_lock_enabled = md_Developer.Fields().ByName(\"auto_lock_enabled\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Developer)(nil)\n\ntype fastReflection_Developer Developer\n\nfunc (x *Developer) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Developer)(x)\n}\n\nfunc (x *Developer) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Developer_messageType fastReflection_Developer_messageType\nvar _ protoreflect.MessageType = fastReflection_Developer_messageType{}\n\ntype fastReflection_Developer_messageType struct{}\n\nfunc (x fastReflection_Developer_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Developer)(nil)\n}\nfunc (x fastReflection_Developer_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Developer)\n}\nfunc (x fastReflection_Developer_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Developer\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Developer) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Developer\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Developer) Type() protoreflect.MessageType {\n\treturn _fastReflection_Developer_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Developer) New() protoreflect.Message {\n\treturn new(fastReflection_Developer)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Developer) Interface() protoreflect.ProtoMessage {\n\treturn (*Developer)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Developer) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Address != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Address)\n\t\tif !f(fd_Developer_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AutoLockEnabled != false {\n\t\tvalue := protoreflect.ValueOfBool(x.AutoLockEnabled)\n\t\tif !f(fd_Developer_auto_lock_enabled, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Developer) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\treturn x.Address != \"\"\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\treturn x.AutoLockEnabled != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Developer) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\tx.Address = \"\"\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Developer) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\tvalue := x.Address\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\tvalue := x.AutoLockEnabled\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Developer) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\tx.Address = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Developer) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\tpanic(fmt.Errorf(\"field address of message sourcehub.tier.v1beta1.Developer is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\tpanic(fmt.Errorf(\"field auto_lock_enabled of message sourcehub.tier.v1beta1.Developer is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Developer) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.Developer.address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.Developer.auto_lock_enabled\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.Developer\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.Developer does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Developer) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.Developer\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Developer) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Developer) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Developer) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Developer) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Developer)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Address)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Developer)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\ti--\n\t\t\tif x.AutoLockEnabled {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Address) > 0 {\n\t\t\ti -= len(x.Address)\n\t\t\tcopy(dAtA[i:], x.Address)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Developer)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Developer: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Developer: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Address = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.AutoLockEnabled = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UserSubscription               protoreflect.MessageDescriptor\n\tfd_UserSubscription_developer     protoreflect.FieldDescriptor\n\tfd_UserSubscription_user_did      protoreflect.FieldDescriptor\n\tfd_UserSubscription_credit_amount protoreflect.FieldDescriptor\n\tfd_UserSubscription_period        protoreflect.FieldDescriptor\n\tfd_UserSubscription_start_date    protoreflect.FieldDescriptor\n\tfd_UserSubscription_last_renewed  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_subscription_proto_init()\n\tmd_UserSubscription = File_sourcehub_tier_v1beta1_subscription_proto.Messages().ByName(\"UserSubscription\")\n\tfd_UserSubscription_developer = md_UserSubscription.Fields().ByName(\"developer\")\n\tfd_UserSubscription_user_did = md_UserSubscription.Fields().ByName(\"user_did\")\n\tfd_UserSubscription_credit_amount = md_UserSubscription.Fields().ByName(\"credit_amount\")\n\tfd_UserSubscription_period = md_UserSubscription.Fields().ByName(\"period\")\n\tfd_UserSubscription_start_date = md_UserSubscription.Fields().ByName(\"start_date\")\n\tfd_UserSubscription_last_renewed = md_UserSubscription.Fields().ByName(\"last_renewed\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UserSubscription)(nil)\n\ntype fastReflection_UserSubscription UserSubscription\n\nfunc (x *UserSubscription) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UserSubscription)(x)\n}\n\nfunc (x *UserSubscription) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UserSubscription_messageType fastReflection_UserSubscription_messageType\nvar _ protoreflect.MessageType = fastReflection_UserSubscription_messageType{}\n\ntype fastReflection_UserSubscription_messageType struct{}\n\nfunc (x fastReflection_UserSubscription_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UserSubscription)(nil)\n}\nfunc (x fastReflection_UserSubscription_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscription)\n}\nfunc (x fastReflection_UserSubscription_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscription\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UserSubscription) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UserSubscription\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UserSubscription) Type() protoreflect.MessageType {\n\treturn _fastReflection_UserSubscription_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UserSubscription) New() protoreflect.Message {\n\treturn new(fastReflection_UserSubscription)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UserSubscription) Interface() protoreflect.ProtoMessage {\n\treturn (*UserSubscription)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UserSubscription) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_UserSubscription_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UserDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.UserDid)\n\t\tif !f(fd_UserSubscription_user_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreditAmount != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.CreditAmount)\n\t\tif !f(fd_UserSubscription_credit_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Period != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Period)\n\t\tif !f(fd_UserSubscription_period, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.StartDate != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.StartDate.ProtoReflect())\n\t\tif !f(fd_UserSubscription_start_date, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LastRenewed != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.LastRenewed.ProtoReflect())\n\t\tif !f(fd_UserSubscription_last_renewed, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UserSubscription) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\treturn x.UserDid != \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\treturn x.CreditAmount != uint64(0)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\treturn x.Period != uint64(0)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\treturn x.StartDate != nil\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\treturn x.LastRenewed != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscription) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\tx.UserDid = \"\"\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\tx.CreditAmount = uint64(0)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\tx.Period = uint64(0)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\tx.StartDate = nil\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\tx.LastRenewed = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UserSubscription) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\tvalue := x.UserDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\tvalue := x.CreditAmount\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\tvalue := x.Period\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\tvalue := x.StartDate\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\tvalue := x.LastRenewed\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscription) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\tx.UserDid = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\tx.CreditAmount = value.Uint()\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\tx.Period = value.Uint()\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\tx.StartDate = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\tx.LastRenewed = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscription) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\tif x.StartDate == nil {\n\t\t\tx.StartDate = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.StartDate.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\tif x.LastRenewed == nil {\n\t\t\tx.LastRenewed = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.LastRenewed.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.UserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\tpanic(fmt.Errorf(\"field user_did of message sourcehub.tier.v1beta1.UserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\tpanic(fmt.Errorf(\"field credit_amount of message sourcehub.tier.v1beta1.UserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\tpanic(fmt.Errorf(\"field period of message sourcehub.tier.v1beta1.UserSubscription is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UserSubscription) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.user_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.credit_amount\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.period\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.start_date\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.UserSubscription.last_renewed\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.UserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.UserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UserSubscription) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.UserSubscription\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UserSubscription) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UserSubscription) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UserSubscription) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UserSubscription) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.UserDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreditAmount != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreditAmount))\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Period))\n\t\t}\n\t\tif x.StartDate != nil {\n\t\t\tl = options.Size(x.StartDate)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.LastRenewed != nil {\n\t\t\tl = options.Size(x.LastRenewed)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.LastRenewed != nil {\n\t\t\tencoded, err := options.Marshal(x.LastRenewed)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif x.StartDate != nil {\n\t\t\tencoded, err := options.Marshal(x.StartDate)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Period))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.CreditAmount != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreditAmount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.UserDid) > 0 {\n\t\t\ti -= len(x.UserDid)\n\t\t\tcopy(dAtA[i:], x.UserDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.UserDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscription: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreditAmount\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreditAmount = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreditAmount |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Period = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Period |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field StartDate\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.StartDate == nil {\n\t\t\t\t\tx.StartDate = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartDate); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LastRenewed\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.LastRenewed == nil {\n\t\t\t\t\tx.LastRenewed = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.LastRenewed); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_TotalDevGranted               protoreflect.MessageDescriptor\n\tfd_TotalDevGranted_developer     protoreflect.FieldDescriptor\n\tfd_TotalDevGranted_total_granted protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_subscription_proto_init()\n\tmd_TotalDevGranted = File_sourcehub_tier_v1beta1_subscription_proto.Messages().ByName(\"TotalDevGranted\")\n\tfd_TotalDevGranted_developer = md_TotalDevGranted.Fields().ByName(\"developer\")\n\tfd_TotalDevGranted_total_granted = md_TotalDevGranted.Fields().ByName(\"total_granted\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_TotalDevGranted)(nil)\n\ntype fastReflection_TotalDevGranted TotalDevGranted\n\nfunc (x *TotalDevGranted) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_TotalDevGranted)(x)\n}\n\nfunc (x *TotalDevGranted) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_TotalDevGranted_messageType fastReflection_TotalDevGranted_messageType\nvar _ protoreflect.MessageType = fastReflection_TotalDevGranted_messageType{}\n\ntype fastReflection_TotalDevGranted_messageType struct{}\n\nfunc (x fastReflection_TotalDevGranted_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_TotalDevGranted)(nil)\n}\nfunc (x fastReflection_TotalDevGranted_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_TotalDevGranted)\n}\nfunc (x fastReflection_TotalDevGranted_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TotalDevGranted\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_TotalDevGranted) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TotalDevGranted\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_TotalDevGranted) Type() protoreflect.MessageType {\n\treturn _fastReflection_TotalDevGranted_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_TotalDevGranted) New() protoreflect.Message {\n\treturn new(fastReflection_TotalDevGranted)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_TotalDevGranted) Interface() protoreflect.ProtoMessage {\n\treturn (*TotalDevGranted)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_TotalDevGranted) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_TotalDevGranted_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TotalGranted != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.TotalGranted)\n\t\tif !f(fd_TotalDevGranted_total_granted, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_TotalDevGranted) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\treturn x.TotalGranted != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TotalDevGranted) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\tx.TotalGranted = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_TotalDevGranted) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\tvalue := x.TotalGranted\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TotalDevGranted) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\tx.TotalGranted = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TotalDevGranted) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.TotalDevGranted is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\tpanic(fmt.Errorf(\"field total_granted of message sourcehub.tier.v1beta1.TotalDevGranted is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_TotalDevGranted) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.TotalDevGranted.total_granted\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.TotalDevGranted\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.TotalDevGranted does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_TotalDevGranted) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.TotalDevGranted\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_TotalDevGranted) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TotalDevGranted) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_TotalDevGranted) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_TotalDevGranted) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*TotalDevGranted)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.TotalGranted != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.TotalGranted))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TotalDevGranted)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.TotalGranted != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.TotalGranted))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TotalDevGranted)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TotalDevGranted: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TotalDevGranted: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TotalGranted\", wireType)\n\t\t\t\t}\n\t\t\t\tx.TotalGranted = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.TotalGranted |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/subscription.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Developer represents a developer configuration.\ntype Developer struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// address is the address of the developer.\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (x *Developer) Reset() {\n\t*x = Developer{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Developer) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Developer) ProtoMessage() {}\n\n// Deprecated: Use Developer.ProtoReflect.Descriptor instead.\nfunc (*Developer) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_subscription_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Developer) GetAddress() string {\n\tif x != nil {\n\t\treturn x.Address\n\t}\n\treturn \"\"\n}\n\nfunc (x *Developer) GetAutoLockEnabled() bool {\n\tif x != nil {\n\t\treturn x.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// UserSubscription represents a user subscribed to a developer.\ntype UserSubscription struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer who registered this user.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the registered user.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// credit_amount is the credit amount allocated to this user.\n\tCreditAmount uint64 `protobuf:\"varint,3,opt,name=credit_amount,json=creditAmount,proto3\" json:\"credit_amount,omitempty\"`\n\t// period is the subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n\t// start_date is when the subscription started.\n\tStartDate *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=start_date,json=startDate,proto3\" json:\"start_date,omitempty\"`\n\t// last_renewed is when the subscription was last renewed.\n\tLastRenewed *timestamppb.Timestamp `protobuf:\"bytes,6,opt,name=last_renewed,json=lastRenewed,proto3\" json:\"last_renewed,omitempty\"`\n}\n\nfunc (x *UserSubscription) Reset() {\n\t*x = UserSubscription{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UserSubscription) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UserSubscription) ProtoMessage() {}\n\n// Deprecated: Use UserSubscription.ProtoReflect.Descriptor instead.\nfunc (*UserSubscription) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_subscription_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *UserSubscription) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *UserSubscription) GetUserDid() string {\n\tif x != nil {\n\t\treturn x.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *UserSubscription) GetCreditAmount() uint64 {\n\tif x != nil {\n\t\treturn x.CreditAmount\n\t}\n\treturn 0\n}\n\nfunc (x *UserSubscription) GetPeriod() uint64 {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn 0\n}\n\nfunc (x *UserSubscription) GetStartDate() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.StartDate\n\t}\n\treturn nil\n}\n\nfunc (x *UserSubscription) GetLastRenewed() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.LastRenewed\n\t}\n\treturn nil\n}\n\n// TotalDevGranted represents the total credit amount granted by a developer to all users.\ntype TotalDevGranted struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// total_granted is the total credit amount granted to all users.\n\tTotalGranted uint64 `protobuf:\"varint,2,opt,name=total_granted,json=totalGranted,proto3\" json:\"total_granted,omitempty\"`\n}\n\nfunc (x *TotalDevGranted) Reset() {\n\t*x = TotalDevGranted{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_subscription_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *TotalDevGranted) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TotalDevGranted) ProtoMessage() {}\n\n// Deprecated: Use TotalDevGranted.ProtoReflect.Descriptor instead.\nfunc (*TotalDevGranted) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_subscription_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *TotalDevGranted) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *TotalDevGranted) GetTotalGranted() uint64 {\n\tif x != nil {\n\t\treturn x.TotalGranted\n\t}\n\treturn 0\n}\n\nvar File_sourcehub_tier_v1beta1_subscription_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_subscription_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,\n\t0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67,\n\t0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,\n\t0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6b, 0x0a, 0x09, 0x44, 0x65, 0x76, 0x65,\n\t0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d,\n\t0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,\n\t0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x75, 0x74,\n\t0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x63, 0x6b, 0x45, 0x6e,\n\t0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xba, 0x02, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75,\n\t0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65,\n\t0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2,\n\t0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,\n\t0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,\n\t0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x23, 0x0a,\n\t0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x41, 0x6d, 0x6f, 0x75,\n\t0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01,\n\t0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x74,\n\t0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00,\n\t0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,\n\t0x44, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6e,\n\t0x65, 0x77, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,\n\t0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,\n\t0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01,\n\t0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x6e, 0x65, 0x77,\n\t0x65, 0x64, 0x22, 0x6e, 0x0a, 0x0f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x47, 0x72,\n\t0x61, 0x6e, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,\n\t0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,\n\t0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x23, 0x0a,\n\t0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x61, 0x6e, 0x74,\n\t0x65, 0x64, 0x42, 0xde, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x42, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50,\n\t0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64,\n\t0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b,\n\t0x74, 0x69, 0x65, 0x72, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x54,\n\t0x58, 0xaa, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x54, 0x69,\n\t0x65, 0x72, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c,\n\t0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_subscription_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_subscription_proto_rawDescData = file_sourcehub_tier_v1beta1_subscription_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_subscription_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_subscription_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_subscription_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_subscription_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_subscription_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_subscription_proto_msgTypes = make([]protoimpl.MessageInfo, 3)\nvar file_sourcehub_tier_v1beta1_subscription_proto_goTypes = []interface{}{\n\t(*Developer)(nil),             // 0: sourcehub.tier.v1beta1.Developer\n\t(*UserSubscription)(nil),      // 1: sourcehub.tier.v1beta1.UserSubscription\n\t(*TotalDevGranted)(nil),       // 2: sourcehub.tier.v1beta1.TotalDevGranted\n\t(*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp\n}\nvar file_sourcehub_tier_v1beta1_subscription_proto_depIdxs = []int32{\n\t3, // 0: sourcehub.tier.v1beta1.UserSubscription.start_date:type_name -> google.protobuf.Timestamp\n\t3, // 1: sourcehub.tier.v1beta1.UserSubscription.last_renewed:type_name -> google.protobuf.Timestamp\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_subscription_proto_init() }\nfunc file_sourcehub_tier_v1beta1_subscription_proto_init() {\n\tif File_sourcehub_tier_v1beta1_subscription_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_subscription_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Developer); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_subscription_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UserSubscription); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_subscription_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*TotalDevGranted); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_subscription_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   3,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_subscription_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_subscription_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_subscription_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_subscription_proto = out.File\n\tfile_sourcehub_tier_v1beta1_subscription_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_subscription_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_subscription_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/tx.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage tierv1beta1\n\nimport (\n\t_ \"cosmossdk.io/api/amino\"\n\tv1beta1 \"cosmossdk.io/api/cosmos/base/v1beta1\"\n\t_ \"cosmossdk.io/api/cosmos/msg/v1\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n)\n\nvar (\n\tmd_MsgUpdateParams           protoreflect.MessageDescriptor\n\tfd_MsgUpdateParams_authority protoreflect.FieldDescriptor\n\tfd_MsgUpdateParams_params    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateParams = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateParams\")\n\tfd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName(\"authority\")\n\tfd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil)\n\ntype fastReflection_MsgUpdateParams MsgUpdateParams\n\nfunc (x *MsgUpdateParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(x)\n}\n\nfunc (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{}\n\ntype fastReflection_MsgUpdateParams_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParams)(nil)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\nfunc (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParams) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Authority != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Authority)\n\t\tif !f(fd_MsgUpdateParams_authority, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_MsgUpdateParams_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\treturn x.Authority != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\tx.Authority = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\tvalue := x.Authority\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\tx.Authority = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\tpanic(fmt.Errorf(\"field authority of message sourcehub.tier.v1beta1.MsgUpdateParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.authority\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateParams.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Authority)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Authority) > 0 {\n\t\t\ti -= len(x.Authority)\n\t\t\tcopy(dAtA[i:], x.Authority)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateParamsResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateParamsResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateParamsResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil)\n\ntype fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse\n\nfunc (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(x)\n}\n\nfunc (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{}\n\ntype fastReflection_MsgUpdateParamsResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateParamsResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\nfunc (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgLock                   protoreflect.MessageDescriptor\n\tfd_MsgLock_delegator_address protoreflect.FieldDescriptor\n\tfd_MsgLock_validator_address protoreflect.FieldDescriptor\n\tfd_MsgLock_stake             protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgLock = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgLock\")\n\tfd_MsgLock_delegator_address = md_MsgLock.Fields().ByName(\"delegator_address\")\n\tfd_MsgLock_validator_address = md_MsgLock.Fields().ByName(\"validator_address\")\n\tfd_MsgLock_stake = md_MsgLock.Fields().ByName(\"stake\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgLock)(nil)\n\ntype fastReflection_MsgLock MsgLock\n\nfunc (x *MsgLock) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgLock)(x)\n}\n\nfunc (x *MsgLock) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgLock_messageType fastReflection_MsgLock_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgLock_messageType{}\n\ntype fastReflection_MsgLock_messageType struct{}\n\nfunc (x fastReflection_MsgLock_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgLock)(nil)\n}\nfunc (x fastReflection_MsgLock_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLock)\n}\nfunc (x fastReflection_MsgLock_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLock\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgLock) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLock\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgLock) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgLock_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgLock) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLock)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgLock) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgLock)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgLock) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_MsgLock_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_MsgLock_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Stake != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\t\tif !f(fd_MsgLock_stake, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgLock) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\treturn x.Stake != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLock) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\tx.Stake = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgLock) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\tvalue := x.Stake\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLock) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\tx.Stake = value.Message().Interface().(*v1beta1.Coin)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLock) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\tif x.Stake == nil {\n\t\t\tx.Stake = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.MsgLock is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.MsgLock is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgLock) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLock.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgLock.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgLock.stake\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgLock) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgLock\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgLock) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLock) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgLock) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgLock) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgLock)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tl = options.Size(x.Stake)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLock)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tencoded, err := options.Marshal(x.Stake)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLock)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLock: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLock: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Stake == nil {\n\t\t\t\t\tx.Stake = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Stake); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgLockResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgLockResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgLockResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgLockResponse)(nil)\n\ntype fastReflection_MsgLockResponse MsgLockResponse\n\nfunc (x *MsgLockResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgLockResponse)(x)\n}\n\nfunc (x *MsgLockResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgLockResponse_messageType fastReflection_MsgLockResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgLockResponse_messageType{}\n\ntype fastReflection_MsgLockResponse_messageType struct{}\n\nfunc (x fastReflection_MsgLockResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgLockResponse)(nil)\n}\nfunc (x fastReflection_MsgLockResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockResponse)\n}\nfunc (x fastReflection_MsgLockResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgLockResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgLockResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgLockResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgLockResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgLockResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgLockResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgLockResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgLockResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgLockResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgLockResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgLockResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgLockResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgLockResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgLockResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgLockResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgLockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgLockAuto                   protoreflect.MessageDescriptor\n\tfd_MsgLockAuto_delegator_address protoreflect.FieldDescriptor\n\tfd_MsgLockAuto_stake             protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgLockAuto = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgLockAuto\")\n\tfd_MsgLockAuto_delegator_address = md_MsgLockAuto.Fields().ByName(\"delegator_address\")\n\tfd_MsgLockAuto_stake = md_MsgLockAuto.Fields().ByName(\"stake\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgLockAuto)(nil)\n\ntype fastReflection_MsgLockAuto MsgLockAuto\n\nfunc (x *MsgLockAuto) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgLockAuto)(x)\n}\n\nfunc (x *MsgLockAuto) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgLockAuto_messageType fastReflection_MsgLockAuto_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgLockAuto_messageType{}\n\ntype fastReflection_MsgLockAuto_messageType struct{}\n\nfunc (x fastReflection_MsgLockAuto_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgLockAuto)(nil)\n}\nfunc (x fastReflection_MsgLockAuto_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockAuto)\n}\nfunc (x fastReflection_MsgLockAuto_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockAuto\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgLockAuto) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockAuto\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgLockAuto) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgLockAuto_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgLockAuto) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockAuto)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgLockAuto) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgLockAuto)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgLockAuto) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_MsgLockAuto_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Stake != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\t\tif !f(fd_MsgLockAuto_stake, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgLockAuto) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\treturn x.Stake != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAuto) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\tx.Stake = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgLockAuto) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\tvalue := x.Stake\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAuto) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\tx.Stake = value.Message().Interface().(*v1beta1.Coin)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAuto) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\tif x.Stake == nil {\n\t\t\tx.Stake = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.MsgLockAuto is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgLockAuto) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgLockAuto.stake\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAuto\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAuto does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgLockAuto) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgLockAuto\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgLockAuto) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAuto) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgLockAuto) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgLockAuto) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgLockAuto)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tl = options.Size(x.Stake)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockAuto)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tencoded, err := options.Marshal(x.Stake)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockAuto)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockAuto: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockAuto: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Stake == nil {\n\t\t\t\t\tx.Stake = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Stake); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgLockAutoResponse                   protoreflect.MessageDescriptor\n\tfd_MsgLockAutoResponse_validator_address protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgLockAutoResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgLockAutoResponse\")\n\tfd_MsgLockAutoResponse_validator_address = md_MsgLockAutoResponse.Fields().ByName(\"validator_address\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgLockAutoResponse)(nil)\n\ntype fastReflection_MsgLockAutoResponse MsgLockAutoResponse\n\nfunc (x *MsgLockAutoResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgLockAutoResponse)(x)\n}\n\nfunc (x *MsgLockAutoResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgLockAutoResponse_messageType fastReflection_MsgLockAutoResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgLockAutoResponse_messageType{}\n\ntype fastReflection_MsgLockAutoResponse_messageType struct{}\n\nfunc (x fastReflection_MsgLockAutoResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgLockAutoResponse)(nil)\n}\nfunc (x fastReflection_MsgLockAutoResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockAutoResponse)\n}\nfunc (x fastReflection_MsgLockAutoResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockAutoResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgLockAutoResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgLockAutoResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgLockAutoResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgLockAutoResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgLockAutoResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgLockAutoResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgLockAutoResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgLockAutoResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgLockAutoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_MsgLockAutoResponse_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgLockAutoResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAutoResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgLockAutoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAutoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAutoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.MsgLockAutoResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgLockAutoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgLockAutoResponse.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgLockAutoResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgLockAutoResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgLockAutoResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgLockAutoResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgLockAutoResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgLockAutoResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgLockAutoResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgLockAutoResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgLockAutoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockAutoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgLockAutoResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockAutoResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgLockAutoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUnlock                   protoreflect.MessageDescriptor\n\tfd_MsgUnlock_delegator_address protoreflect.FieldDescriptor\n\tfd_MsgUnlock_validator_address protoreflect.FieldDescriptor\n\tfd_MsgUnlock_stake             protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUnlock = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUnlock\")\n\tfd_MsgUnlock_delegator_address = md_MsgUnlock.Fields().ByName(\"delegator_address\")\n\tfd_MsgUnlock_validator_address = md_MsgUnlock.Fields().ByName(\"validator_address\")\n\tfd_MsgUnlock_stake = md_MsgUnlock.Fields().ByName(\"stake\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUnlock)(nil)\n\ntype fastReflection_MsgUnlock MsgUnlock\n\nfunc (x *MsgUnlock) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUnlock)(x)\n}\n\nfunc (x *MsgUnlock) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUnlock_messageType fastReflection_MsgUnlock_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUnlock_messageType{}\n\ntype fastReflection_MsgUnlock_messageType struct{}\n\nfunc (x fastReflection_MsgUnlock_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUnlock)(nil)\n}\nfunc (x fastReflection_MsgUnlock_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUnlock)\n}\nfunc (x fastReflection_MsgUnlock_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUnlock\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUnlock) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUnlock\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUnlock) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUnlock_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUnlock) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUnlock)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUnlock) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUnlock)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUnlock) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_MsgUnlock_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_MsgUnlock_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Stake != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\t\tif !f(fd_MsgUnlock_stake, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUnlock) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\treturn x.Stake != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlock) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\tx.Stake = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUnlock) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\tvalue := x.Stake\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlock) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\tx.Stake = value.Message().Interface().(*v1beta1.Coin)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlock) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\tif x.Stake == nil {\n\t\t\tx.Stake = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.MsgUnlock is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.MsgUnlock is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUnlock) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUnlock.stake\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlock\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlock does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUnlock) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUnlock\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUnlock) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlock) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUnlock) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUnlock) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUnlock)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tl = options.Size(x.Stake)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUnlock)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tencoded, err := options.Marshal(x.Stake)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUnlock)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUnlock: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUnlock: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Stake == nil {\n\t\t\t\t\tx.Stake = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Stake); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUnlockResponse                 protoreflect.MessageDescriptor\n\tfd_MsgUnlockResponse_creation_height protoreflect.FieldDescriptor\n\tfd_MsgUnlockResponse_completion_time protoreflect.FieldDescriptor\n\tfd_MsgUnlockResponse_unlock_time     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUnlockResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUnlockResponse\")\n\tfd_MsgUnlockResponse_creation_height = md_MsgUnlockResponse.Fields().ByName(\"creation_height\")\n\tfd_MsgUnlockResponse_completion_time = md_MsgUnlockResponse.Fields().ByName(\"completion_time\")\n\tfd_MsgUnlockResponse_unlock_time = md_MsgUnlockResponse.Fields().ByName(\"unlock_time\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUnlockResponse)(nil)\n\ntype fastReflection_MsgUnlockResponse MsgUnlockResponse\n\nfunc (x *MsgUnlockResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUnlockResponse)(x)\n}\n\nfunc (x *MsgUnlockResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUnlockResponse_messageType fastReflection_MsgUnlockResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUnlockResponse_messageType{}\n\ntype fastReflection_MsgUnlockResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUnlockResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUnlockResponse)(nil)\n}\nfunc (x fastReflection_MsgUnlockResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUnlockResponse)\n}\nfunc (x fastReflection_MsgUnlockResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUnlockResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUnlockResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUnlockResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUnlockResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUnlockResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUnlockResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUnlockResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUnlockResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUnlockResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUnlockResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CreationHeight != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CreationHeight)\n\t\tif !f(fd_MsgUnlockResponse_creation_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CompletionTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\t\tif !f(fd_MsgUnlockResponse_completion_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UnlockTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.UnlockTime.ProtoReflect())\n\t\tif !f(fd_MsgUnlockResponse_unlock_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUnlockResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\treturn x.CreationHeight != int64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\treturn x.CompletionTime != nil\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\treturn x.UnlockTime != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlockResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\tx.CreationHeight = int64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\tx.CompletionTime = nil\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\tx.UnlockTime = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUnlockResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\tvalue := x.CreationHeight\n\t\treturn protoreflect.ValueOfInt64(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\tvalue := x.CompletionTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\tvalue := x.UnlockTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlockResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\tx.CreationHeight = value.Int()\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\tx.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\tx.UnlockTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlockResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\tif x.CompletionTime == nil {\n\t\t\tx.CompletionTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\tif x.UnlockTime == nil {\n\t\t\tx.UnlockTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.UnlockTime.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\tpanic(fmt.Errorf(\"field creation_height of message sourcehub.tier.v1beta1.MsgUnlockResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUnlockResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.creation_height\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUnlockResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUnlockResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUnlockResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUnlockResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUnlockResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUnlockResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUnlockResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUnlockResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUnlockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.CreationHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreationHeight))\n\t\t}\n\t\tif x.CompletionTime != nil {\n\t\t\tl = options.Size(x.CompletionTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.UnlockTime != nil {\n\t\t\tl = options.Size(x.UnlockTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUnlockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.UnlockTime != nil {\n\t\t\tencoded, err := options.Marshal(x.UnlockTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.CompletionTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CompletionTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreationHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUnlockResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUnlockResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUnlockResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreationHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CompletionTime == nil {\n\t\t\t\t\tx.CompletionTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CompletionTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UnlockTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.UnlockTime == nil {\n\t\t\t\t\tx.UnlockTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.UnlockTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRedelegate                       protoreflect.MessageDescriptor\n\tfd_MsgRedelegate_delegator_address     protoreflect.FieldDescriptor\n\tfd_MsgRedelegate_src_validator_address protoreflect.FieldDescriptor\n\tfd_MsgRedelegate_dst_validator_address protoreflect.FieldDescriptor\n\tfd_MsgRedelegate_stake                 protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRedelegate = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRedelegate\")\n\tfd_MsgRedelegate_delegator_address = md_MsgRedelegate.Fields().ByName(\"delegator_address\")\n\tfd_MsgRedelegate_src_validator_address = md_MsgRedelegate.Fields().ByName(\"src_validator_address\")\n\tfd_MsgRedelegate_dst_validator_address = md_MsgRedelegate.Fields().ByName(\"dst_validator_address\")\n\tfd_MsgRedelegate_stake = md_MsgRedelegate.Fields().ByName(\"stake\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRedelegate)(nil)\n\ntype fastReflection_MsgRedelegate MsgRedelegate\n\nfunc (x *MsgRedelegate) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRedelegate)(x)\n}\n\nfunc (x *MsgRedelegate) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRedelegate_messageType fastReflection_MsgRedelegate_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRedelegate_messageType{}\n\ntype fastReflection_MsgRedelegate_messageType struct{}\n\nfunc (x fastReflection_MsgRedelegate_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRedelegate)(nil)\n}\nfunc (x fastReflection_MsgRedelegate_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRedelegate)\n}\nfunc (x fastReflection_MsgRedelegate_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRedelegate\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRedelegate) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRedelegate\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRedelegate) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRedelegate_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRedelegate) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRedelegate)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRedelegate) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRedelegate)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRedelegate) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_MsgRedelegate_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.SrcValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.SrcValidatorAddress)\n\t\tif !f(fd_MsgRedelegate_src_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.DstValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DstValidatorAddress)\n\t\tif !f(fd_MsgRedelegate_dst_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Stake != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\t\tif !f(fd_MsgRedelegate_stake, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRedelegate) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\treturn x.SrcValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\treturn x.DstValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\treturn x.Stake != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegate) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\tx.SrcValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\tx.DstValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\tx.Stake = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRedelegate) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\tvalue := x.SrcValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\tvalue := x.DstValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\tvalue := x.Stake\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegate) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\tx.SrcValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\tx.DstValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\tx.Stake = value.Message().Interface().(*v1beta1.Coin)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegate) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\tif x.Stake == nil {\n\t\t\tx.Stake = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.MsgRedelegate is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\tpanic(fmt.Errorf(\"field src_validator_address of message sourcehub.tier.v1beta1.MsgRedelegate is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\tpanic(fmt.Errorf(\"field dst_validator_address of message sourcehub.tier.v1beta1.MsgRedelegate is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRedelegate) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.src_validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.dst_validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegate.stake\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegate\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegate does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRedelegate) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRedelegate\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRedelegate) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegate) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRedelegate) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRedelegate) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRedelegate)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.SrcValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DstValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tl = options.Size(x.Stake)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRedelegate)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tencoded, err := options.Marshal(x.Stake)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.DstValidatorAddress) > 0 {\n\t\t\ti -= len(x.DstValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.DstValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DstValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.SrcValidatorAddress) > 0 {\n\t\t\ti -= len(x.SrcValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.SrcValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.SrcValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRedelegate)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRedelegate: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRedelegate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field SrcValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.SrcValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DstValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DstValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Stake == nil {\n\t\t\t\t\tx.Stake = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Stake); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRedelegateResponse                 protoreflect.MessageDescriptor\n\tfd_MsgRedelegateResponse_completion_time protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRedelegateResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRedelegateResponse\")\n\tfd_MsgRedelegateResponse_completion_time = md_MsgRedelegateResponse.Fields().ByName(\"completion_time\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRedelegateResponse)(nil)\n\ntype fastReflection_MsgRedelegateResponse MsgRedelegateResponse\n\nfunc (x *MsgRedelegateResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRedelegateResponse)(x)\n}\n\nfunc (x *MsgRedelegateResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRedelegateResponse_messageType fastReflection_MsgRedelegateResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRedelegateResponse_messageType{}\n\ntype fastReflection_MsgRedelegateResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRedelegateResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRedelegateResponse)(nil)\n}\nfunc (x fastReflection_MsgRedelegateResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRedelegateResponse)\n}\nfunc (x fastReflection_MsgRedelegateResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRedelegateResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRedelegateResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRedelegateResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRedelegateResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRedelegateResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRedelegateResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRedelegateResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRedelegateResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRedelegateResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRedelegateResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.CompletionTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\t\tif !f(fd_MsgRedelegateResponse_completion_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRedelegateResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\treturn x.CompletionTime != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegateResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\tx.CompletionTime = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRedelegateResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\tvalue := x.CompletionTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegateResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\tx.CompletionTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegateResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\tif x.CompletionTime == nil {\n\t\t\tx.CompletionTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CompletionTime.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRedelegateResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRedelegateResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRedelegateResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRedelegateResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRedelegateResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRedelegateResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRedelegateResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRedelegateResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRedelegateResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRedelegateResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.CompletionTime != nil {\n\t\t\tl = options.Size(x.CompletionTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRedelegateResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CompletionTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CompletionTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRedelegateResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRedelegateResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRedelegateResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CompletionTime == nil {\n\t\t\t\t\tx.CompletionTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CompletionTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCancelUnlocking                   protoreflect.MessageDescriptor\n\tfd_MsgCancelUnlocking_delegator_address protoreflect.FieldDescriptor\n\tfd_MsgCancelUnlocking_validator_address protoreflect.FieldDescriptor\n\tfd_MsgCancelUnlocking_stake             protoreflect.FieldDescriptor\n\tfd_MsgCancelUnlocking_creation_height   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgCancelUnlocking = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgCancelUnlocking\")\n\tfd_MsgCancelUnlocking_delegator_address = md_MsgCancelUnlocking.Fields().ByName(\"delegator_address\")\n\tfd_MsgCancelUnlocking_validator_address = md_MsgCancelUnlocking.Fields().ByName(\"validator_address\")\n\tfd_MsgCancelUnlocking_stake = md_MsgCancelUnlocking.Fields().ByName(\"stake\")\n\tfd_MsgCancelUnlocking_creation_height = md_MsgCancelUnlocking.Fields().ByName(\"creation_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCancelUnlocking)(nil)\n\ntype fastReflection_MsgCancelUnlocking MsgCancelUnlocking\n\nfunc (x *MsgCancelUnlocking) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCancelUnlocking)(x)\n}\n\nfunc (x *MsgCancelUnlocking) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCancelUnlocking_messageType fastReflection_MsgCancelUnlocking_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCancelUnlocking_messageType{}\n\ntype fastReflection_MsgCancelUnlocking_messageType struct{}\n\nfunc (x fastReflection_MsgCancelUnlocking_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCancelUnlocking)(nil)\n}\nfunc (x fastReflection_MsgCancelUnlocking_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCancelUnlocking)\n}\nfunc (x fastReflection_MsgCancelUnlocking_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCancelUnlocking\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCancelUnlocking) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCancelUnlocking\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCancelUnlocking) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCancelUnlocking_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCancelUnlocking) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCancelUnlocking)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCancelUnlocking) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCancelUnlocking)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCancelUnlocking) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DelegatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DelegatorAddress)\n\t\tif !f(fd_MsgCancelUnlocking_delegator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ValidatorAddress != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ValidatorAddress)\n\t\tif !f(fd_MsgCancelUnlocking_validator_address, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Stake != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\t\tif !f(fd_MsgCancelUnlocking_stake, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationHeight != int64(0) {\n\t\tvalue := protoreflect.ValueOfInt64(x.CreationHeight)\n\t\tif !f(fd_MsgCancelUnlocking_creation_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCancelUnlocking) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\treturn x.DelegatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\treturn x.ValidatorAddress != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\treturn x.Stake != nil\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\treturn x.CreationHeight != int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlocking) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\tx.DelegatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\tx.ValidatorAddress = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\tx.Stake = nil\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\tx.CreationHeight = int64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCancelUnlocking) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\tvalue := x.DelegatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\tvalue := x.ValidatorAddress\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\tvalue := x.Stake\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\tvalue := x.CreationHeight\n\t\treturn protoreflect.ValueOfInt64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlocking) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\tx.DelegatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\tx.ValidatorAddress = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\tx.Stake = value.Message().Interface().(*v1beta1.Coin)\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\tx.CreationHeight = value.Int()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlocking) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\tif x.Stake == nil {\n\t\t\tx.Stake = new(v1beta1.Coin)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Stake.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\tpanic(fmt.Errorf(\"field delegator_address of message sourcehub.tier.v1beta1.MsgCancelUnlocking is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\tpanic(fmt.Errorf(\"field validator_address of message sourcehub.tier.v1beta1.MsgCancelUnlocking is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\tpanic(fmt.Errorf(\"field creation_height of message sourcehub.tier.v1beta1.MsgCancelUnlocking is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCancelUnlocking) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.delegator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.validator_address\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.stake\":\n\t\tm := new(v1beta1.Coin)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcehub.tier.v1beta1.MsgCancelUnlocking.creation_height\":\n\t\treturn protoreflect.ValueOfInt64(int64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlocking\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlocking does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCancelUnlocking) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgCancelUnlocking\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCancelUnlocking) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlocking) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCancelUnlocking) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCancelUnlocking) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCancelUnlocking)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.DelegatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ValidatorAddress)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tl = options.Size(x.Stake)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreationHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCancelUnlocking)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.CreationHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreationHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.Stake != nil {\n\t\t\tencoded, err := options.Marshal(x.Stake)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.ValidatorAddress) > 0 {\n\t\t\ti -= len(x.ValidatorAddress)\n\t\t\tcopy(dAtA[i:], x.ValidatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ValidatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.DelegatorAddress) > 0 {\n\t\t\ti -= len(x.DelegatorAddress)\n\t\t\tcopy(dAtA[i:], x.DelegatorAddress)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DelegatorAddress)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCancelUnlocking)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCancelUnlocking: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCancelUnlocking: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Stake == nil {\n\t\t\t\t\tx.Stake = &v1beta1.Coin{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Stake); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreationHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCancelUnlockingResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgCancelUnlockingResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgCancelUnlockingResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCancelUnlockingResponse)(nil)\n\ntype fastReflection_MsgCancelUnlockingResponse MsgCancelUnlockingResponse\n\nfunc (x *MsgCancelUnlockingResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCancelUnlockingResponse)(x)\n}\n\nfunc (x *MsgCancelUnlockingResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCancelUnlockingResponse_messageType fastReflection_MsgCancelUnlockingResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCancelUnlockingResponse_messageType{}\n\ntype fastReflection_MsgCancelUnlockingResponse_messageType struct{}\n\nfunc (x fastReflection_MsgCancelUnlockingResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCancelUnlockingResponse)(nil)\n}\nfunc (x fastReflection_MsgCancelUnlockingResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCancelUnlockingResponse)\n}\nfunc (x fastReflection_MsgCancelUnlockingResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCancelUnlockingResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCancelUnlockingResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCancelUnlockingResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCancelUnlockingResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCancelUnlockingResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCancelUnlockingResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCancelUnlockingResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCancelUnlockingResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCancelUnlockingResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCancelUnlockingResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCancelUnlockingResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCancelUnlockingResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreateDeveloper                   protoreflect.MessageDescriptor\n\tfd_MsgCreateDeveloper_developer         protoreflect.FieldDescriptor\n\tfd_MsgCreateDeveloper_auto_lock_enabled protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgCreateDeveloper = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgCreateDeveloper\")\n\tfd_MsgCreateDeveloper_developer = md_MsgCreateDeveloper.Fields().ByName(\"developer\")\n\tfd_MsgCreateDeveloper_auto_lock_enabled = md_MsgCreateDeveloper.Fields().ByName(\"auto_lock_enabled\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreateDeveloper)(nil)\n\ntype fastReflection_MsgCreateDeveloper MsgCreateDeveloper\n\nfunc (x *MsgCreateDeveloper) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreateDeveloper)(x)\n}\n\nfunc (x *MsgCreateDeveloper) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreateDeveloper_messageType fastReflection_MsgCreateDeveloper_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreateDeveloper_messageType{}\n\ntype fastReflection_MsgCreateDeveloper_messageType struct{}\n\nfunc (x fastReflection_MsgCreateDeveloper_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreateDeveloper)(nil)\n}\nfunc (x fastReflection_MsgCreateDeveloper_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreateDeveloper)\n}\nfunc (x fastReflection_MsgCreateDeveloper_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreateDeveloper\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreateDeveloper) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreateDeveloper\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreateDeveloper) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreateDeveloper_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreateDeveloper) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreateDeveloper)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreateDeveloper) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreateDeveloper)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreateDeveloper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgCreateDeveloper_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AutoLockEnabled != false {\n\t\tvalue := protoreflect.ValueOfBool(x.AutoLockEnabled)\n\t\tif !f(fd_MsgCreateDeveloper_auto_lock_enabled, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreateDeveloper) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\treturn x.AutoLockEnabled != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloper) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreateDeveloper) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\tvalue := x.AutoLockEnabled\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloper) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgCreateDeveloper is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\tpanic(fmt.Errorf(\"field auto_lock_enabled of message sourcehub.tier.v1beta1.MsgCreateDeveloper is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreateDeveloper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgCreateDeveloper.auto_lock_enabled\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreateDeveloper) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgCreateDeveloper\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreateDeveloper) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloper) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreateDeveloper) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreateDeveloper) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\ti--\n\t\t\tif x.AutoLockEnabled {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreateDeveloper: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreateDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.AutoLockEnabled = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgCreateDeveloperResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgCreateDeveloperResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgCreateDeveloperResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgCreateDeveloperResponse)(nil)\n\ntype fastReflection_MsgCreateDeveloperResponse MsgCreateDeveloperResponse\n\nfunc (x *MsgCreateDeveloperResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgCreateDeveloperResponse)(x)\n}\n\nfunc (x *MsgCreateDeveloperResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgCreateDeveloperResponse_messageType fastReflection_MsgCreateDeveloperResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgCreateDeveloperResponse_messageType{}\n\ntype fastReflection_MsgCreateDeveloperResponse_messageType struct{}\n\nfunc (x fastReflection_MsgCreateDeveloperResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgCreateDeveloperResponse)(nil)\n}\nfunc (x fastReflection_MsgCreateDeveloperResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreateDeveloperResponse)\n}\nfunc (x fastReflection_MsgCreateDeveloperResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreateDeveloperResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgCreateDeveloperResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgCreateDeveloperResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgCreateDeveloperResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgCreateDeveloperResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgCreateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgCreateDeveloperResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgCreateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreateDeveloperResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgCreateDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateDeveloper                   protoreflect.MessageDescriptor\n\tfd_MsgUpdateDeveloper_developer         protoreflect.FieldDescriptor\n\tfd_MsgUpdateDeveloper_auto_lock_enabled protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateDeveloper = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateDeveloper\")\n\tfd_MsgUpdateDeveloper_developer = md_MsgUpdateDeveloper.Fields().ByName(\"developer\")\n\tfd_MsgUpdateDeveloper_auto_lock_enabled = md_MsgUpdateDeveloper.Fields().ByName(\"auto_lock_enabled\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateDeveloper)(nil)\n\ntype fastReflection_MsgUpdateDeveloper MsgUpdateDeveloper\n\nfunc (x *MsgUpdateDeveloper) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateDeveloper)(x)\n}\n\nfunc (x *MsgUpdateDeveloper) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateDeveloper_messageType fastReflection_MsgUpdateDeveloper_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateDeveloper_messageType{}\n\ntype fastReflection_MsgUpdateDeveloper_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateDeveloper_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateDeveloper)(nil)\n}\nfunc (x fastReflection_MsgUpdateDeveloper_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateDeveloper)\n}\nfunc (x fastReflection_MsgUpdateDeveloper_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateDeveloper\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateDeveloper) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateDeveloper\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateDeveloper) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateDeveloper_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateDeveloper) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateDeveloper)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateDeveloper) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateDeveloper)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateDeveloper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgUpdateDeveloper_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AutoLockEnabled != false {\n\t\tvalue := protoreflect.ValueOfBool(x.AutoLockEnabled)\n\t\tif !f(fd_MsgUpdateDeveloper_auto_lock_enabled, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateDeveloper) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\treturn x.AutoLockEnabled != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloper) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateDeveloper) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\tvalue := x.AutoLockEnabled\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloper) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\tx.AutoLockEnabled = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgUpdateDeveloper is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\tpanic(fmt.Errorf(\"field auto_lock_enabled of message sourcehub.tier.v1beta1.MsgUpdateDeveloper is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateDeveloper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateDeveloper.auto_lock_enabled\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateDeveloper) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateDeveloper\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateDeveloper) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloper) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateDeveloper) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateDeveloper) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AutoLockEnabled {\n\t\t\ti--\n\t\t\tif x.AutoLockEnabled {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateDeveloper: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.AutoLockEnabled = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateDeveloperResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateDeveloperResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateDeveloperResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateDeveloperResponse)(nil)\n\ntype fastReflection_MsgUpdateDeveloperResponse MsgUpdateDeveloperResponse\n\nfunc (x *MsgUpdateDeveloperResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateDeveloperResponse)(x)\n}\n\nfunc (x *MsgUpdateDeveloperResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateDeveloperResponse_messageType fastReflection_MsgUpdateDeveloperResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateDeveloperResponse_messageType{}\n\ntype fastReflection_MsgUpdateDeveloperResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateDeveloperResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateDeveloperResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateDeveloperResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateDeveloperResponse)\n}\nfunc (x fastReflection_MsgUpdateDeveloperResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateDeveloperResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateDeveloperResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateDeveloperResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateDeveloperResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateDeveloperResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateDeveloperResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateDeveloperResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveDeveloper           protoreflect.MessageDescriptor\n\tfd_MsgRemoveDeveloper_developer protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRemoveDeveloper = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRemoveDeveloper\")\n\tfd_MsgRemoveDeveloper_developer = md_MsgRemoveDeveloper.Fields().ByName(\"developer\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveDeveloper)(nil)\n\ntype fastReflection_MsgRemoveDeveloper MsgRemoveDeveloper\n\nfunc (x *MsgRemoveDeveloper) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveDeveloper)(x)\n}\n\nfunc (x *MsgRemoveDeveloper) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveDeveloper_messageType fastReflection_MsgRemoveDeveloper_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveDeveloper_messageType{}\n\ntype fastReflection_MsgRemoveDeveloper_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveDeveloper_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveDeveloper)(nil)\n}\nfunc (x fastReflection_MsgRemoveDeveloper_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveDeveloper)\n}\nfunc (x fastReflection_MsgRemoveDeveloper_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveDeveloper\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveDeveloper) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveDeveloper\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveDeveloper) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveDeveloper_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveDeveloper) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveDeveloper)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveDeveloper) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveDeveloper)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveDeveloper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgRemoveDeveloper_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveDeveloper) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\treturn x.Developer != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloper) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\tx.Developer = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveDeveloper) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloper) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgRemoveDeveloper is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveDeveloper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveDeveloper.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloper\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloper does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveDeveloper) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRemoveDeveloper\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveDeveloper) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloper) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveDeveloper) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveDeveloper) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloper)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveDeveloper: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveDeveloperResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRemoveDeveloperResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRemoveDeveloperResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveDeveloperResponse)(nil)\n\ntype fastReflection_MsgRemoveDeveloperResponse MsgRemoveDeveloperResponse\n\nfunc (x *MsgRemoveDeveloperResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveDeveloperResponse)(x)\n}\n\nfunc (x *MsgRemoveDeveloperResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveDeveloperResponse_messageType fastReflection_MsgRemoveDeveloperResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveDeveloperResponse_messageType{}\n\ntype fastReflection_MsgRemoveDeveloperResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveDeveloperResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveDeveloperResponse)(nil)\n}\nfunc (x fastReflection_MsgRemoveDeveloperResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveDeveloperResponse)\n}\nfunc (x fastReflection_MsgRemoveDeveloperResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveDeveloperResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveDeveloperResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveDeveloperResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveDeveloperResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveDeveloperResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveDeveloperResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveDeveloperResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveDeveloperResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgAddUserSubscription           protoreflect.MessageDescriptor\n\tfd_MsgAddUserSubscription_developer protoreflect.FieldDescriptor\n\tfd_MsgAddUserSubscription_user_did  protoreflect.FieldDescriptor\n\tfd_MsgAddUserSubscription_amount    protoreflect.FieldDescriptor\n\tfd_MsgAddUserSubscription_period    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgAddUserSubscription = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgAddUserSubscription\")\n\tfd_MsgAddUserSubscription_developer = md_MsgAddUserSubscription.Fields().ByName(\"developer\")\n\tfd_MsgAddUserSubscription_user_did = md_MsgAddUserSubscription.Fields().ByName(\"user_did\")\n\tfd_MsgAddUserSubscription_amount = md_MsgAddUserSubscription.Fields().ByName(\"amount\")\n\tfd_MsgAddUserSubscription_period = md_MsgAddUserSubscription.Fields().ByName(\"period\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgAddUserSubscription)(nil)\n\ntype fastReflection_MsgAddUserSubscription MsgAddUserSubscription\n\nfunc (x *MsgAddUserSubscription) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgAddUserSubscription)(x)\n}\n\nfunc (x *MsgAddUserSubscription) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgAddUserSubscription_messageType fastReflection_MsgAddUserSubscription_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgAddUserSubscription_messageType{}\n\ntype fastReflection_MsgAddUserSubscription_messageType struct{}\n\nfunc (x fastReflection_MsgAddUserSubscription_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgAddUserSubscription)(nil)\n}\nfunc (x fastReflection_MsgAddUserSubscription_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddUserSubscription)\n}\nfunc (x fastReflection_MsgAddUserSubscription_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddUserSubscription\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgAddUserSubscription) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddUserSubscription\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgAddUserSubscription) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgAddUserSubscription_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgAddUserSubscription) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddUserSubscription)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgAddUserSubscription) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgAddUserSubscription)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgAddUserSubscription) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgAddUserSubscription_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UserDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.UserDid)\n\t\tif !f(fd_MsgAddUserSubscription_user_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Amount)\n\t\tif !f(fd_MsgAddUserSubscription_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Period != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Period)\n\t\tif !f(fd_MsgAddUserSubscription_period, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgAddUserSubscription) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\treturn x.UserDid != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\treturn x.Amount != uint64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\treturn x.Period != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscription) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\tx.UserDid = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\tx.Amount = uint64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\tx.Period = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgAddUserSubscription) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\tvalue := x.UserDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\tvalue := x.Period\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscription) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\tx.UserDid = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\tx.Amount = value.Uint()\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\tx.Period = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscription) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgAddUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\tpanic(fmt.Errorf(\"field user_did of message sourcehub.tier.v1beta1.MsgAddUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\tpanic(fmt.Errorf(\"field amount of message sourcehub.tier.v1beta1.MsgAddUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\tpanic(fmt.Errorf(\"field period of message sourcehub.tier.v1beta1.MsgAddUserSubscription is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgAddUserSubscription) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.user_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.amount\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.tier.v1beta1.MsgAddUserSubscription.period\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgAddUserSubscription) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgAddUserSubscription\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgAddUserSubscription) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscription) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgAddUserSubscription) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgAddUserSubscription) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.UserDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Amount != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Amount))\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Period))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Period))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.Amount != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Amount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.UserDid) > 0 {\n\t\t\ti -= len(x.UserDid)\n\t\t\tcopy(dAtA[i:], x.UserDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.UserDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddUserSubscription: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Amount = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Amount |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Period = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Period |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgAddUserSubscriptionResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgAddUserSubscriptionResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgAddUserSubscriptionResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgAddUserSubscriptionResponse)(nil)\n\ntype fastReflection_MsgAddUserSubscriptionResponse MsgAddUserSubscriptionResponse\n\nfunc (x *MsgAddUserSubscriptionResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgAddUserSubscriptionResponse)(x)\n}\n\nfunc (x *MsgAddUserSubscriptionResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgAddUserSubscriptionResponse_messageType fastReflection_MsgAddUserSubscriptionResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgAddUserSubscriptionResponse_messageType{}\n\ntype fastReflection_MsgAddUserSubscriptionResponse_messageType struct{}\n\nfunc (x fastReflection_MsgAddUserSubscriptionResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgAddUserSubscriptionResponse)(nil)\n}\nfunc (x fastReflection_MsgAddUserSubscriptionResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddUserSubscriptionResponse)\n}\nfunc (x fastReflection_MsgAddUserSubscriptionResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddUserSubscriptionResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgAddUserSubscriptionResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgAddUserSubscriptionResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgAddUserSubscriptionResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgAddUserSubscriptionResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgAddUserSubscriptionResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgAddUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgAddUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateUserSubscription           protoreflect.MessageDescriptor\n\tfd_MsgUpdateUserSubscription_developer protoreflect.FieldDescriptor\n\tfd_MsgUpdateUserSubscription_user_did  protoreflect.FieldDescriptor\n\tfd_MsgUpdateUserSubscription_amount    protoreflect.FieldDescriptor\n\tfd_MsgUpdateUserSubscription_period    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateUserSubscription = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateUserSubscription\")\n\tfd_MsgUpdateUserSubscription_developer = md_MsgUpdateUserSubscription.Fields().ByName(\"developer\")\n\tfd_MsgUpdateUserSubscription_user_did = md_MsgUpdateUserSubscription.Fields().ByName(\"user_did\")\n\tfd_MsgUpdateUserSubscription_amount = md_MsgUpdateUserSubscription.Fields().ByName(\"amount\")\n\tfd_MsgUpdateUserSubscription_period = md_MsgUpdateUserSubscription.Fields().ByName(\"period\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateUserSubscription)(nil)\n\ntype fastReflection_MsgUpdateUserSubscription MsgUpdateUserSubscription\n\nfunc (x *MsgUpdateUserSubscription) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateUserSubscription)(x)\n}\n\nfunc (x *MsgUpdateUserSubscription) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateUserSubscription_messageType fastReflection_MsgUpdateUserSubscription_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateUserSubscription_messageType{}\n\ntype fastReflection_MsgUpdateUserSubscription_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateUserSubscription_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateUserSubscription)(nil)\n}\nfunc (x fastReflection_MsgUpdateUserSubscription_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateUserSubscription)\n}\nfunc (x fastReflection_MsgUpdateUserSubscription_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateUserSubscription\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateUserSubscription\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateUserSubscription_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateUserSubscription) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateUserSubscription)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateUserSubscription)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgUpdateUserSubscription_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UserDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.UserDid)\n\t\tif !f(fd_MsgUpdateUserSubscription_user_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Amount != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Amount)\n\t\tif !f(fd_MsgUpdateUserSubscription_amount, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Period != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.Period)\n\t\tif !f(fd_MsgUpdateUserSubscription_period, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\treturn x.UserDid != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\treturn x.Amount != uint64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\treturn x.Period != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\tx.UserDid = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\tx.Amount = uint64(0)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\tx.Period = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\tvalue := x.UserDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\tvalue := x.Amount\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\tvalue := x.Period\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\tx.UserDid = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\tx.Amount = value.Uint()\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\tx.Period = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscription) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgUpdateUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\tpanic(fmt.Errorf(\"field user_did of message sourcehub.tier.v1beta1.MsgUpdateUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\tpanic(fmt.Errorf(\"field amount of message sourcehub.tier.v1beta1.MsgUpdateUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\tpanic(fmt.Errorf(\"field period of message sourcehub.tier.v1beta1.MsgUpdateUserSubscription is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateUserSubscription) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.user_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.amount\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription.period\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateUserSubscription) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateUserSubscription\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateUserSubscription) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscription) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateUserSubscription) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateUserSubscription) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.UserDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Amount != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Amount))\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Period))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Period != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Period))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.Amount != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Amount))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.UserDid) > 0 {\n\t\t\ti -= len(x.UserDid)\n\t\t\tcopy(dAtA[i:], x.UserDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.UserDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateUserSubscription: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Amount = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Amount |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Period = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Period |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgUpdateUserSubscriptionResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgUpdateUserSubscriptionResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgUpdateUserSubscriptionResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgUpdateUserSubscriptionResponse)(nil)\n\ntype fastReflection_MsgUpdateUserSubscriptionResponse MsgUpdateUserSubscriptionResponse\n\nfunc (x *MsgUpdateUserSubscriptionResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateUserSubscriptionResponse)(x)\n}\n\nfunc (x *MsgUpdateUserSubscriptionResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgUpdateUserSubscriptionResponse_messageType fastReflection_MsgUpdateUserSubscriptionResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgUpdateUserSubscriptionResponse_messageType{}\n\ntype fastReflection_MsgUpdateUserSubscriptionResponse_messageType struct{}\n\nfunc (x fastReflection_MsgUpdateUserSubscriptionResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgUpdateUserSubscriptionResponse)(nil)\n}\nfunc (x fastReflection_MsgUpdateUserSubscriptionResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateUserSubscriptionResponse)\n}\nfunc (x fastReflection_MsgUpdateUserSubscriptionResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateUserSubscriptionResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgUpdateUserSubscriptionResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgUpdateUserSubscriptionResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgUpdateUserSubscriptionResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgUpdateUserSubscriptionResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgUpdateUserSubscriptionResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgUpdateUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgUpdateUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveUserSubscription           protoreflect.MessageDescriptor\n\tfd_MsgRemoveUserSubscription_developer protoreflect.FieldDescriptor\n\tfd_MsgRemoveUserSubscription_user_did  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRemoveUserSubscription = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRemoveUserSubscription\")\n\tfd_MsgRemoveUserSubscription_developer = md_MsgRemoveUserSubscription.Fields().ByName(\"developer\")\n\tfd_MsgRemoveUserSubscription_user_did = md_MsgRemoveUserSubscription.Fields().ByName(\"user_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveUserSubscription)(nil)\n\ntype fastReflection_MsgRemoveUserSubscription MsgRemoveUserSubscription\n\nfunc (x *MsgRemoveUserSubscription) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveUserSubscription)(x)\n}\n\nfunc (x *MsgRemoveUserSubscription) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveUserSubscription_messageType fastReflection_MsgRemoveUserSubscription_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveUserSubscription_messageType{}\n\ntype fastReflection_MsgRemoveUserSubscription_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveUserSubscription_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveUserSubscription)(nil)\n}\nfunc (x fastReflection_MsgRemoveUserSubscription_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveUserSubscription)\n}\nfunc (x fastReflection_MsgRemoveUserSubscription_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveUserSubscription\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveUserSubscription\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveUserSubscription_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveUserSubscription) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveUserSubscription)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveUserSubscription)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Developer != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Developer)\n\t\tif !f(fd_MsgRemoveUserSubscription_developer, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.UserDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.UserDid)\n\t\tif !f(fd_MsgRemoveUserSubscription_user_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\treturn x.Developer != \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\treturn x.UserDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\tx.Developer = \"\"\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\tx.UserDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\tvalue := x.Developer\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\tvalue := x.UserDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\tx.Developer = value.Interface().(string)\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\tx.UserDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscription) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\tpanic(fmt.Errorf(\"field developer of message sourcehub.tier.v1beta1.MsgRemoveUserSubscription is not mutable\"))\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\tpanic(fmt.Errorf(\"field user_did of message sourcehub.tier.v1beta1.MsgRemoveUserSubscription is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveUserSubscription) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.developer\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription.user_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscription does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveUserSubscription) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRemoveUserSubscription\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveUserSubscription) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscription) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveUserSubscription) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveUserSubscription) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Developer)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.UserDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.UserDid) > 0 {\n\t\t\ti -= len(x.UserDid)\n\t\t\tcopy(dAtA[i:], x.UserDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.UserDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Developer) > 0 {\n\t\t\ti -= len(x.Developer)\n\t\t\tcopy(dAtA[i:], x.Developer)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Developer)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscription)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveUserSubscription: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MsgRemoveUserSubscriptionResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcehub_tier_v1beta1_tx_proto_init()\n\tmd_MsgRemoveUserSubscriptionResponse = File_sourcehub_tier_v1beta1_tx_proto.Messages().ByName(\"MsgRemoveUserSubscriptionResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MsgRemoveUserSubscriptionResponse)(nil)\n\ntype fastReflection_MsgRemoveUserSubscriptionResponse MsgRemoveUserSubscriptionResponse\n\nfunc (x *MsgRemoveUserSubscriptionResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveUserSubscriptionResponse)(x)\n}\n\nfunc (x *MsgRemoveUserSubscriptionResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[23]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MsgRemoveUserSubscriptionResponse_messageType fastReflection_MsgRemoveUserSubscriptionResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_MsgRemoveUserSubscriptionResponse_messageType{}\n\ntype fastReflection_MsgRemoveUserSubscriptionResponse_messageType struct{}\n\nfunc (x fastReflection_MsgRemoveUserSubscriptionResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MsgRemoveUserSubscriptionResponse)(nil)\n}\nfunc (x fastReflection_MsgRemoveUserSubscriptionResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveUserSubscriptionResponse)\n}\nfunc (x fastReflection_MsgRemoveUserSubscriptionResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveUserSubscriptionResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MsgRemoveUserSubscriptionResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_MsgRemoveUserSubscriptionResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) New() protoreflect.Message {\n\treturn new(fastReflection_MsgRemoveUserSubscriptionResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*MsgRemoveUserSubscriptionResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MsgRemoveUserSubscriptionResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MsgRemoveUserSubscriptionResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MsgRemoveUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcehub/tier/v1beta1/tx.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams *Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *MsgUpdateParams) Reset() {\n\t*x = MsgUpdateParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParams) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *MsgUpdateParams) GetAuthority() string {\n\tif x != nil {\n\t\treturn x.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateParams) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateParamsResponse) Reset() {\n\t*x = MsgUpdateParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{1}\n}\n\n// MsgLock is the Msg/Lock request type.\ntype MsgLock struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string        `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string        `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tStake            *v1beta1.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake,omitempty\"`\n}\n\nfunc (x *MsgLock) Reset() {\n\t*x = MsgLock{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgLock) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgLock) ProtoMessage() {}\n\n// Deprecated: Use MsgLock.ProtoReflect.Descriptor instead.\nfunc (*MsgLock) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *MsgLock) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgLock) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgLock) GetStake() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Stake\n\t}\n\treturn nil\n}\n\n// MsgLockResponse defines the response structure for executing a MsgLock message.\ntype MsgLockResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgLockResponse) Reset() {\n\t*x = MsgLockResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgLockResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgLockResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgLockResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgLockResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{3}\n}\n\n// MsgLockAuto is the Msg/LockAuto request type.\ntype MsgLockAuto struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string        `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tStake            *v1beta1.Coin `protobuf:\"bytes,2,opt,name=stake,proto3\" json:\"stake,omitempty\"`\n}\n\nfunc (x *MsgLockAuto) Reset() {\n\t*x = MsgLockAuto{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgLockAuto) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgLockAuto) ProtoMessage() {}\n\n// Deprecated: Use MsgLockAuto.ProtoReflect.Descriptor instead.\nfunc (*MsgLockAuto) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *MsgLockAuto) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgLockAuto) GetStake() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Stake\n\t}\n\treturn nil\n}\n\n// MsgLockAutoResponse defines the response structure for executing a MsgLockAuto message.\ntype MsgLockAutoResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValidatorAddress string `protobuf:\"bytes,1,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n}\n\nfunc (x *MsgLockAutoResponse) Reset() {\n\t*x = MsgLockAutoResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgLockAutoResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgLockAutoResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgLockAutoResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgLockAutoResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *MsgLockAutoResponse) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\n// MsgUnlock is the Msg/Unlock request type.\ntype MsgUnlock struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string        `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string        `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tStake            *v1beta1.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake,omitempty\"`\n}\n\nfunc (x *MsgUnlock) Reset() {\n\t*x = MsgUnlock{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUnlock) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUnlock) ProtoMessage() {}\n\n// Deprecated: Use MsgUnlock.ProtoReflect.Descriptor instead.\nfunc (*MsgUnlock) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *MsgUnlock) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUnlock) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUnlock) GetStake() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Stake\n\t}\n\treturn nil\n}\n\n// MsgUnlockResponse defines the response structure for executing a MsgUnlock message.\ntype MsgUnlockResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreationHeight int64                  `protobuf:\"varint,1,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n\tCompletionTime *timestamppb.Timestamp `protobuf:\"bytes,2,opt,name=completion_time,json=completionTime,proto3\" json:\"completion_time,omitempty\"`\n\tUnlockTime     *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=unlock_time,json=unlockTime,proto3\" json:\"unlock_time,omitempty\"`\n}\n\nfunc (x *MsgUnlockResponse) Reset() {\n\t*x = MsgUnlockResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUnlockResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUnlockResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUnlockResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUnlockResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *MsgUnlockResponse) GetCreationHeight() int64 {\n\tif x != nil {\n\t\treturn x.CreationHeight\n\t}\n\treturn 0\n}\n\nfunc (x *MsgUnlockResponse) GetCompletionTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CompletionTime\n\t}\n\treturn nil\n}\n\nfunc (x *MsgUnlockResponse) GetUnlockTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.UnlockTime\n\t}\n\treturn nil\n}\n\n// MsgRedelegate is the Msg/Redelegate request type.\ntype MsgRedelegate struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress    string        `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tSrcValidatorAddress string        `protobuf:\"bytes,2,opt,name=src_validator_address,json=srcValidatorAddress,proto3\" json:\"src_validator_address,omitempty\"`\n\tDstValidatorAddress string        `protobuf:\"bytes,3,opt,name=dst_validator_address,json=dstValidatorAddress,proto3\" json:\"dst_validator_address,omitempty\"`\n\tStake               *v1beta1.Coin `protobuf:\"bytes,4,opt,name=stake,proto3\" json:\"stake,omitempty\"`\n}\n\nfunc (x *MsgRedelegate) Reset() {\n\t*x = MsgRedelegate{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRedelegate) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRedelegate) ProtoMessage() {}\n\n// Deprecated: Use MsgRedelegate.ProtoReflect.Descriptor instead.\nfunc (*MsgRedelegate) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *MsgRedelegate) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRedelegate) GetSrcValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.SrcValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRedelegate) GetDstValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.DstValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRedelegate) GetStake() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Stake\n\t}\n\treturn nil\n}\n\n// MsgRedelegateResponse defines the response structure for executing a MsgRedelegate message.\ntype MsgRedelegateResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCompletionTime *timestamppb.Timestamp `protobuf:\"bytes,1,opt,name=completion_time,json=completionTime,proto3\" json:\"completion_time,omitempty\"`\n}\n\nfunc (x *MsgRedelegateResponse) Reset() {\n\t*x = MsgRedelegateResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRedelegateResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRedelegateResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRedelegateResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRedelegateResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *MsgRedelegateResponse) GetCompletionTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CompletionTime\n\t}\n\treturn nil\n}\n\n// MsgCancelUnlocking is the Msg/CancelUnlocking request type.\ntype MsgCancelUnlocking struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\t// amount is always less than or equal to unlocking delegation entry balance.\n\tStake *v1beta1.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake,omitempty\"`\n\t// creation_height is the height which the unlocking took place.\n\tCreationHeight int64 `protobuf:\"varint,4,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n}\n\nfunc (x *MsgCancelUnlocking) Reset() {\n\t*x = MsgCancelUnlocking{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCancelUnlocking) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCancelUnlocking) ProtoMessage() {}\n\n// Deprecated: Use MsgCancelUnlocking.ProtoReflect.Descriptor instead.\nfunc (*MsgCancelUnlocking) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *MsgCancelUnlocking) GetDelegatorAddress() string {\n\tif x != nil {\n\t\treturn x.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCancelUnlocking) GetValidatorAddress() string {\n\tif x != nil {\n\t\treturn x.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCancelUnlocking) GetStake() *v1beta1.Coin {\n\tif x != nil {\n\t\treturn x.Stake\n\t}\n\treturn nil\n}\n\nfunc (x *MsgCancelUnlocking) GetCreationHeight() int64 {\n\tif x != nil {\n\t\treturn x.CreationHeight\n\t}\n\treturn 0\n}\n\n// MsgCancelUnlockingResponse defines the response structure for executing a MsgCancelUnlocking message.\ntype MsgCancelUnlockingResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgCancelUnlockingResponse) Reset() {\n\t*x = MsgCancelUnlockingResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCancelUnlockingResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCancelUnlockingResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgCancelUnlockingResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgCancelUnlockingResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{11}\n}\n\n// MsgCreateDeveloper is the Msg/CreateDeveloper request type.\ntype MsgCreateDeveloper struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer being created.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (x *MsgCreateDeveloper) Reset() {\n\t*x = MsgCreateDeveloper{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreateDeveloper) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreateDeveloper) ProtoMessage() {}\n\n// Deprecated: Use MsgCreateDeveloper.ProtoReflect.Descriptor instead.\nfunc (*MsgCreateDeveloper) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *MsgCreateDeveloper) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgCreateDeveloper) GetAutoLockEnabled() bool {\n\tif x != nil {\n\t\treturn x.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// MsgCreateDeveloperResponse defines the response structure for executing a MsgCreateDeveloper message.\ntype MsgCreateDeveloperResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgCreateDeveloperResponse) Reset() {\n\t*x = MsgCreateDeveloperResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgCreateDeveloperResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgCreateDeveloperResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgCreateDeveloperResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgCreateDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{13}\n}\n\n// MsgUpdateDeveloper is the Msg/UpdateDeveloper request type.\ntype MsgUpdateDeveloper struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer being updated.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (x *MsgUpdateDeveloper) Reset() {\n\t*x = MsgUpdateDeveloper{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateDeveloper) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateDeveloper) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateDeveloper.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateDeveloper) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *MsgUpdateDeveloper) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateDeveloper) GetAutoLockEnabled() bool {\n\tif x != nil {\n\t\treturn x.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// MsgUpdateDeveloperResponse defines the response structure for executing a MsgUpdateDeveloper message.\ntype MsgUpdateDeveloperResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateDeveloperResponse) Reset() {\n\t*x = MsgUpdateDeveloperResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateDeveloperResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateDeveloperResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateDeveloperResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{15}\n}\n\n// MsgRemoveDeveloper is the Msg/RemoveDeveloper request type.\ntype MsgRemoveDeveloper struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer being removed.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n}\n\nfunc (x *MsgRemoveDeveloper) Reset() {\n\t*x = MsgRemoveDeveloper{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveDeveloper) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveDeveloper) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveDeveloper.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveDeveloper) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{16}\n}\n\nfunc (x *MsgRemoveDeveloper) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\n// MsgRemoveDeveloperResponse defines the response structure for executing a MsgRemoveDeveloper message.\ntype MsgRemoveDeveloperResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgRemoveDeveloperResponse) Reset() {\n\t*x = MsgRemoveDeveloperResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveDeveloperResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveDeveloperResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveDeveloperResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{17}\n}\n\n// MsgAddUserSubscription is the Msg/AddUserSubscription request type.\ntype MsgAddUserSubscription struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer adding the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user being added to the subscription.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// amount is the credit amount to be allocated to the user per period.\n\tAmount uint64 `protobuf:\"varint,3,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\t// period is the subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n}\n\nfunc (x *MsgAddUserSubscription) Reset() {\n\t*x = MsgAddUserSubscription{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgAddUserSubscription) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgAddUserSubscription) ProtoMessage() {}\n\n// Deprecated: Use MsgAddUserSubscription.ProtoReflect.Descriptor instead.\nfunc (*MsgAddUserSubscription) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *MsgAddUserSubscription) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgAddUserSubscription) GetUserDid() string {\n\tif x != nil {\n\t\treturn x.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgAddUserSubscription) GetAmount() uint64 {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn 0\n}\n\nfunc (x *MsgAddUserSubscription) GetPeriod() uint64 {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn 0\n}\n\n// MsgAddUserSubscriptionResponse defines the response structure for executing a MsgAddUserSubscription message.\ntype MsgAddUserSubscriptionResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgAddUserSubscriptionResponse) Reset() {\n\t*x = MsgAddUserSubscriptionResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgAddUserSubscriptionResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgAddUserSubscriptionResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgAddUserSubscriptionResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgAddUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{19}\n}\n\n// MsgUpdateUserSubscription is the Msg/UpdateUserSubscription request type.\ntype MsgUpdateUserSubscription struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer updating the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user whose subscription is being updated.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// amount is the new credit amount to be allocated to the user per period.\n\tAmount uint64 `protobuf:\"varint,3,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\t// period is the new subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n}\n\nfunc (x *MsgUpdateUserSubscription) Reset() {\n\t*x = MsgUpdateUserSubscription{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateUserSubscription) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateUserSubscription) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateUserSubscription.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateUserSubscription) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *MsgUpdateUserSubscription) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateUserSubscription) GetUserDid() string {\n\tif x != nil {\n\t\treturn x.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgUpdateUserSubscription) GetAmount() uint64 {\n\tif x != nil {\n\t\treturn x.Amount\n\t}\n\treturn 0\n}\n\nfunc (x *MsgUpdateUserSubscription) GetPeriod() uint64 {\n\tif x != nil {\n\t\treturn x.Period\n\t}\n\treturn 0\n}\n\n// MsgUpdateUserSubscriptionResponse defines the response structure for executing a MsgUpdateUserSubscription message.\ntype MsgUpdateUserSubscriptionResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgUpdateUserSubscriptionResponse) Reset() {\n\t*x = MsgUpdateUserSubscriptionResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgUpdateUserSubscriptionResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgUpdateUserSubscriptionResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgUpdateUserSubscriptionResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgUpdateUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{21}\n}\n\n// MsgRemoveUserSubscription is the Msg/RemoveUserSubscription request type.\n// This message removes the user subscription and expires the associated allowance at the end of the current period.\ntype MsgRemoveUserSubscription struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// developer is the address of the developer removing the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user whose subscription is being removed.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n}\n\nfunc (x *MsgRemoveUserSubscription) Reset() {\n\t*x = MsgRemoveUserSubscription{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveUserSubscription) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveUserSubscription) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveUserSubscription.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveUserSubscription) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *MsgRemoveUserSubscription) GetDeveloper() string {\n\tif x != nil {\n\t\treturn x.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (x *MsgRemoveUserSubscription) GetUserDid() string {\n\tif x != nil {\n\t\treturn x.UserDid\n\t}\n\treturn \"\"\n}\n\n// MsgRemoveUserSubscriptionResponse defines the response structure for executing a MsgRemoveUserSubscription message.\ntype MsgRemoveUserSubscriptionResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *MsgRemoveUserSubscriptionResponse) Reset() {\n\t*x = MsgRemoveUserSubscriptionResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcehub_tier_v1beta1_tx_proto_msgTypes[23]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MsgRemoveUserSubscriptionResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MsgRemoveUserSubscriptionResponse) ProtoMessage() {}\n\n// Deprecated: Use MsgRemoveUserSubscriptionResponse.ProtoReflect.Descriptor instead.\nfunc (*MsgRemoveUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP(), []int{23}\n}\n\nvar File_sourcehub_tier_v1beta1_tx_proto protoreflect.FileDescriptor\n\nvar file_sourcehub_tier_v1beta1_tx_proto_rawDesc = []byte{\n\t0x0a, 0x1f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f,\n\t0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1, 0x01, 0x0a,\n\t0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61,\n\t0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61,\n\t0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x33, 0x82, 0xe7, 0xb0,\n\t0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x20,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x78, 0x2f, 0x74, 0x69, 0x65, 0x72,\n\t0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x07,\n\t0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67,\n\t0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65,\n\t0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e,\n\t0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61,\n\t0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a,\n\t0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x3a, 0x16, 0x82, 0xe7, 0xb0, 0x2a,\n\t0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x0b, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63,\n\t0x6b, 0x41, 0x75, 0x74, 0x6f, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65,\n\t0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x05,\n\t0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a,\n\t0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x3a, 0x16, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64,\n\t0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x22, 0x65, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64,\n\t0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,\n\t0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xf6, 0x01, 0x0a, 0x09, 0x4d, 0x73, 0x67, 0x55,\n\t0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65,\n\t0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,\n\t0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69,\n\t0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x05,\n\t0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f,\n\t0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a,\n\t0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x3a, 0x16, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64,\n\t0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x22, 0xdc, 0x01, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,\n\t0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,\n\t0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69,\n\t0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54,\n\t0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69,\n\t0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7,\n\t0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22,\n\t0xd8, 0x02, 0x0a, 0x0d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x65, 0x12, 0x45, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4,\n\t0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f,\n\t0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x15, 0x73, 0x72, 0x63, 0x5f,\n\t0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,\n\t0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73,\n\t0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64,\n\t0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x13, 0x73, 0x72, 0x63, 0x56,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,\n\t0x55, 0x0a, 0x15, 0x64, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,\n\t0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21,\n\t0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,\n\t0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,\n\t0x67, 0x52, 0x13, 0x64, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41,\n\t0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18,\n\t0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62,\n\t0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e,\n\t0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61,\n\t0x6b, 0x65, 0x3a, 0x16, 0x82, 0xe7, 0xb0, 0x2a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x6b, 0x0a, 0x15, 0x4d, 0x73,\n\t0x67, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f,\n\t0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,\n\t0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf,\n\t0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,\n\t0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa8, 0x02, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x43,\n\t0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x45,\n\t0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63,\n\t0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72,\n\t0x69, 0x6e, 0x67, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64,\n\t0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x42, 0x21, 0xd2, 0xb4, 0x2d, 0x1d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x56, 0x61, 0x6c,\n\t0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72,\n\t0x69, 0x6e, 0x67, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64,\n\t0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61,\n\t0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42,\n\t0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x6b,\n\t0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65,\n\t0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x16, 0x82, 0xe7, 0xb0, 0x2a,\n\t0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,\n\t0x73, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55,\n\t0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x22, 0x88, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65,\n\t0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c,\n\t0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14,\n\t0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74,\n\t0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12,\n\t0x2a, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61,\n\t0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f,\n\t0x4c, 0x6f, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x3a, 0x0e, 0x82, 0xe7, 0xb0,\n\t0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x22, 0x1c, 0x0a, 0x1a, 0x4d,\n\t0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65,\n\t0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x4d, 0x73,\n\t0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72,\n\t0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e,\n\t0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64,\n\t0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f,\n\t0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x63, 0x6b, 0x45, 0x6e, 0x61,\n\t0x62, 0x6c, 0x65, 0x64, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c,\n\t0x6f, 0x70, 0x65, 0x72, 0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74,\n\t0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x22, 0x5c, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,\n\t0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65,\n\t0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d,\n\t0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53,\n\t0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72,\n\t0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72,\n\t0x22, 0x1c, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76,\n\t0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xab,\n\t0x01, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62,\n\t0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76,\n\t0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4,\n\t0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,\n\t0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65,\n\t0x72, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,\n\t0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d,\n\t0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04,\n\t0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x3a, 0x0e, 0x82, 0xe7,\n\t0xb0, 0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x22, 0x20, 0x0a, 0x1e,\n\t0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae,\n\t0x01, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72,\n\t0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,\n\t0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72,\n\t0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c,\n\t0x6f, 0x70, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12,\n\t0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,\n\t0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f,\n\t0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x3a,\n\t0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x22,\n\t0x23, 0x0a, 0x21, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72,\n\t0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76,\n\t0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x12, 0x36, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,\n\t0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09,\n\t0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65,\n\t0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65,\n\t0x72, 0x44, 0x69, 0x64, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c,\n\t0x6f, 0x70, 0x65, 0x72, 0x22, 0x23, 0x0a, 0x21, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76,\n\t0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,\n\t0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xbf, 0x0a, 0x0a, 0x03, 0x4d, 0x73,\n\t0x67, 0x12, 0x68, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x12, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70,\n\t0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2f, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x04, 0x4c,\n\t0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,\n\t0x4c, 0x6f, 0x63, 0x6b, 0x1a, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73,\n\t0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a,\n\t0x08, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x12, 0x23, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x1a, 0x2b,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e,\n\t0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x6f, 0x63, 0x6b, 0x41,\n\t0x75, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x55,\n\t0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d,\n\t0x73, 0x67, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,\n\t0x65, 0x12, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65,\n\t0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x2d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,\n\t0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65,\n\t0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x6c,\n\t0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x1a, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x4d, 0x73, 0x67, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x69,\n\t0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0f, 0x43, 0x72,\n\t0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x2a, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,\n\t0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65,\n\t0x6c, 0x6f, 0x70, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a,\n\t0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72,\n\t0x12, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64,\n\t0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x1a, 0x32, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31,\n\t0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44,\n\t0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x71, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,\n\t0x70, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e,\n\t0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67,\n\t0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x1a,\n\t0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72,\n\t0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f,\n\t0x76, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,\n\t0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75,\n\t0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75,\n\t0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x36, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65,\n\t0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75,\n\t0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65,\n\t0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76,\n\t0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,\n\t0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,\n\t0x1a, 0x39, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65,\n\t0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64,\n\t0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,\n\t0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x16,\n\t0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,\n\t0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,\n\t0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62,\n\t0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72,\n\t0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xd4, 0x01, 0x0a, 0x1a,\n\t0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x74, 0x69,\n\t0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b,\n\t0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x74, 0x69, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74,\n\t0x69, 0x65, 0x72, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x54, 0x58,\n\t0xaa, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2e, 0x54, 0x69, 0x65,\n\t0x72, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54, 0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0xe2, 0x02, 0x22, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x5c, 0x54,\n\t0x69, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d,\n\t0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x3a, 0x3a, 0x54, 0x69, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74,\n\t0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcehub_tier_v1beta1_tx_proto_rawDescOnce sync.Once\n\tfile_sourcehub_tier_v1beta1_tx_proto_rawDescData = file_sourcehub_tier_v1beta1_tx_proto_rawDesc\n)\n\nfunc file_sourcehub_tier_v1beta1_tx_proto_rawDescGZIP() []byte {\n\tfile_sourcehub_tier_v1beta1_tx_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcehub_tier_v1beta1_tx_proto_rawDescData)\n\t})\n\treturn file_sourcehub_tier_v1beta1_tx_proto_rawDescData\n}\n\nvar file_sourcehub_tier_v1beta1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 24)\nvar file_sourcehub_tier_v1beta1_tx_proto_goTypes = []interface{}{\n\t(*MsgUpdateParams)(nil),                   // 0: sourcehub.tier.v1beta1.MsgUpdateParams\n\t(*MsgUpdateParamsResponse)(nil),           // 1: sourcehub.tier.v1beta1.MsgUpdateParamsResponse\n\t(*MsgLock)(nil),                           // 2: sourcehub.tier.v1beta1.MsgLock\n\t(*MsgLockResponse)(nil),                   // 3: sourcehub.tier.v1beta1.MsgLockResponse\n\t(*MsgLockAuto)(nil),                       // 4: sourcehub.tier.v1beta1.MsgLockAuto\n\t(*MsgLockAutoResponse)(nil),               // 5: sourcehub.tier.v1beta1.MsgLockAutoResponse\n\t(*MsgUnlock)(nil),                         // 6: sourcehub.tier.v1beta1.MsgUnlock\n\t(*MsgUnlockResponse)(nil),                 // 7: sourcehub.tier.v1beta1.MsgUnlockResponse\n\t(*MsgRedelegate)(nil),                     // 8: sourcehub.tier.v1beta1.MsgRedelegate\n\t(*MsgRedelegateResponse)(nil),             // 9: sourcehub.tier.v1beta1.MsgRedelegateResponse\n\t(*MsgCancelUnlocking)(nil),                // 10: sourcehub.tier.v1beta1.MsgCancelUnlocking\n\t(*MsgCancelUnlockingResponse)(nil),        // 11: sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\n\t(*MsgCreateDeveloper)(nil),                // 12: sourcehub.tier.v1beta1.MsgCreateDeveloper\n\t(*MsgCreateDeveloperResponse)(nil),        // 13: sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\n\t(*MsgUpdateDeveloper)(nil),                // 14: sourcehub.tier.v1beta1.MsgUpdateDeveloper\n\t(*MsgUpdateDeveloperResponse)(nil),        // 15: sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\n\t(*MsgRemoveDeveloper)(nil),                // 16: sourcehub.tier.v1beta1.MsgRemoveDeveloper\n\t(*MsgRemoveDeveloperResponse)(nil),        // 17: sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\n\t(*MsgAddUserSubscription)(nil),            // 18: sourcehub.tier.v1beta1.MsgAddUserSubscription\n\t(*MsgAddUserSubscriptionResponse)(nil),    // 19: sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\n\t(*MsgUpdateUserSubscription)(nil),         // 20: sourcehub.tier.v1beta1.MsgUpdateUserSubscription\n\t(*MsgUpdateUserSubscriptionResponse)(nil), // 21: sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\n\t(*MsgRemoveUserSubscription)(nil),         // 22: sourcehub.tier.v1beta1.MsgRemoveUserSubscription\n\t(*MsgRemoveUserSubscriptionResponse)(nil), // 23: sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\n\t(*Params)(nil),                            // 24: sourcehub.tier.v1beta1.Params\n\t(*v1beta1.Coin)(nil),                      // 25: cosmos.base.v1beta1.Coin\n\t(*timestamppb.Timestamp)(nil),             // 26: google.protobuf.Timestamp\n}\nvar file_sourcehub_tier_v1beta1_tx_proto_depIdxs = []int32{\n\t24, // 0: sourcehub.tier.v1beta1.MsgUpdateParams.params:type_name -> sourcehub.tier.v1beta1.Params\n\t25, // 1: sourcehub.tier.v1beta1.MsgLock.stake:type_name -> cosmos.base.v1beta1.Coin\n\t25, // 2: sourcehub.tier.v1beta1.MsgLockAuto.stake:type_name -> cosmos.base.v1beta1.Coin\n\t25, // 3: sourcehub.tier.v1beta1.MsgUnlock.stake:type_name -> cosmos.base.v1beta1.Coin\n\t26, // 4: sourcehub.tier.v1beta1.MsgUnlockResponse.completion_time:type_name -> google.protobuf.Timestamp\n\t26, // 5: sourcehub.tier.v1beta1.MsgUnlockResponse.unlock_time:type_name -> google.protobuf.Timestamp\n\t25, // 6: sourcehub.tier.v1beta1.MsgRedelegate.stake:type_name -> cosmos.base.v1beta1.Coin\n\t26, // 7: sourcehub.tier.v1beta1.MsgRedelegateResponse.completion_time:type_name -> google.protobuf.Timestamp\n\t25, // 8: sourcehub.tier.v1beta1.MsgCancelUnlocking.stake:type_name -> cosmos.base.v1beta1.Coin\n\t0,  // 9: sourcehub.tier.v1beta1.Msg.UpdateParams:input_type -> sourcehub.tier.v1beta1.MsgUpdateParams\n\t2,  // 10: sourcehub.tier.v1beta1.Msg.Lock:input_type -> sourcehub.tier.v1beta1.MsgLock\n\t4,  // 11: sourcehub.tier.v1beta1.Msg.LockAuto:input_type -> sourcehub.tier.v1beta1.MsgLockAuto\n\t6,  // 12: sourcehub.tier.v1beta1.Msg.Unlock:input_type -> sourcehub.tier.v1beta1.MsgUnlock\n\t8,  // 13: sourcehub.tier.v1beta1.Msg.Redelegate:input_type -> sourcehub.tier.v1beta1.MsgRedelegate\n\t10, // 14: sourcehub.tier.v1beta1.Msg.CancelUnlocking:input_type -> sourcehub.tier.v1beta1.MsgCancelUnlocking\n\t12, // 15: sourcehub.tier.v1beta1.Msg.CreateDeveloper:input_type -> sourcehub.tier.v1beta1.MsgCreateDeveloper\n\t14, // 16: sourcehub.tier.v1beta1.Msg.UpdateDeveloper:input_type -> sourcehub.tier.v1beta1.MsgUpdateDeveloper\n\t16, // 17: sourcehub.tier.v1beta1.Msg.RemoveDeveloper:input_type -> sourcehub.tier.v1beta1.MsgRemoveDeveloper\n\t18, // 18: sourcehub.tier.v1beta1.Msg.AddUserSubscription:input_type -> sourcehub.tier.v1beta1.MsgAddUserSubscription\n\t20, // 19: sourcehub.tier.v1beta1.Msg.UpdateUserSubscription:input_type -> sourcehub.tier.v1beta1.MsgUpdateUserSubscription\n\t22, // 20: sourcehub.tier.v1beta1.Msg.RemoveUserSubscription:input_type -> sourcehub.tier.v1beta1.MsgRemoveUserSubscription\n\t1,  // 21: sourcehub.tier.v1beta1.Msg.UpdateParams:output_type -> sourcehub.tier.v1beta1.MsgUpdateParamsResponse\n\t3,  // 22: sourcehub.tier.v1beta1.Msg.Lock:output_type -> sourcehub.tier.v1beta1.MsgLockResponse\n\t5,  // 23: sourcehub.tier.v1beta1.Msg.LockAuto:output_type -> sourcehub.tier.v1beta1.MsgLockAutoResponse\n\t7,  // 24: sourcehub.tier.v1beta1.Msg.Unlock:output_type -> sourcehub.tier.v1beta1.MsgUnlockResponse\n\t9,  // 25: sourcehub.tier.v1beta1.Msg.Redelegate:output_type -> sourcehub.tier.v1beta1.MsgRedelegateResponse\n\t11, // 26: sourcehub.tier.v1beta1.Msg.CancelUnlocking:output_type -> sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\n\t13, // 27: sourcehub.tier.v1beta1.Msg.CreateDeveloper:output_type -> sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\n\t15, // 28: sourcehub.tier.v1beta1.Msg.UpdateDeveloper:output_type -> sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\n\t17, // 29: sourcehub.tier.v1beta1.Msg.RemoveDeveloper:output_type -> sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\n\t19, // 30: sourcehub.tier.v1beta1.Msg.AddUserSubscription:output_type -> sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\n\t21, // 31: sourcehub.tier.v1beta1.Msg.UpdateUserSubscription:output_type -> sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\n\t23, // 32: sourcehub.tier.v1beta1.Msg.RemoveUserSubscription:output_type -> sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\n\t21, // [21:33] is the sub-list for method output_type\n\t9,  // [9:21] is the sub-list for method input_type\n\t9,  // [9:9] is the sub-list for extension type_name\n\t9,  // [9:9] is the sub-list for extension extendee\n\t0,  // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcehub_tier_v1beta1_tx_proto_init() }\nfunc file_sourcehub_tier_v1beta1_tx_proto_init() {\n\tif File_sourcehub_tier_v1beta1_tx_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcehub_tier_v1beta1_params_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgLock); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgLockResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgLockAuto); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgLockAutoResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUnlock); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUnlockResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRedelegate); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRedelegateResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCancelUnlocking); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCancelUnlockingResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreateDeveloper); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgCreateDeveloperResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateDeveloper); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateDeveloperResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveDeveloper); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveDeveloperResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgAddUserSubscription); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgAddUserSubscriptionResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateUserSubscription); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgUpdateUserSubscriptionResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveUserSubscription); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcehub_tier_v1beta1_tx_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MsgRemoveUserSubscriptionResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcehub_tier_v1beta1_tx_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   24,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcehub_tier_v1beta1_tx_proto_goTypes,\n\t\tDependencyIndexes: file_sourcehub_tier_v1beta1_tx_proto_depIdxs,\n\t\tMessageInfos:      file_sourcehub_tier_v1beta1_tx_proto_msgTypes,\n\t}.Build()\n\tFile_sourcehub_tier_v1beta1_tx_proto = out.File\n\tfile_sourcehub_tier_v1beta1_tx_proto_rawDesc = nil\n\tfile_sourcehub_tier_v1beta1_tx_proto_goTypes = nil\n\tfile_sourcehub_tier_v1beta1_tx_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcehub/tier/v1beta1/tx_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc             (unknown)\n// source: sourcehub/tier/v1beta1/tx.proto\n\npackage tierv1beta1\n\nimport (\n\tcontext \"context\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.64.0 or later.\nconst _ = grpc.SupportPackageIsVersion9\n\nconst (\n\tMsg_UpdateParams_FullMethodName           = \"/sourcehub.tier.v1beta1.Msg/UpdateParams\"\n\tMsg_Lock_FullMethodName                   = \"/sourcehub.tier.v1beta1.Msg/Lock\"\n\tMsg_LockAuto_FullMethodName               = \"/sourcehub.tier.v1beta1.Msg/LockAuto\"\n\tMsg_Unlock_FullMethodName                 = \"/sourcehub.tier.v1beta1.Msg/Unlock\"\n\tMsg_Redelegate_FullMethodName             = \"/sourcehub.tier.v1beta1.Msg/Redelegate\"\n\tMsg_CancelUnlocking_FullMethodName        = \"/sourcehub.tier.v1beta1.Msg/CancelUnlocking\"\n\tMsg_CreateDeveloper_FullMethodName        = \"/sourcehub.tier.v1beta1.Msg/CreateDeveloper\"\n\tMsg_UpdateDeveloper_FullMethodName        = \"/sourcehub.tier.v1beta1.Msg/UpdateDeveloper\"\n\tMsg_RemoveDeveloper_FullMethodName        = \"/sourcehub.tier.v1beta1.Msg/RemoveDeveloper\"\n\tMsg_AddUserSubscription_FullMethodName    = \"/sourcehub.tier.v1beta1.Msg/AddUserSubscription\"\n\tMsg_UpdateUserSubscription_FullMethodName = \"/sourcehub.tier.v1beta1.Msg/UpdateUserSubscription\"\n\tMsg_RemoveUserSubscription_FullMethodName = \"/sourcehub.tier.v1beta1.Msg/RemoveUserSubscription\"\n)\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\n//\n// Msg defines the Msg service.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// Lock defines a (developer) operation for locking a stake.\n\tLock(ctx context.Context, in *MsgLock, opts ...grpc.CallOption) (*MsgLockResponse, error)\n\t// LockAuto defines a (developer) operation for locking a stake with automatic validator selection.\n\tLockAuto(ctx context.Context, in *MsgLockAuto, opts ...grpc.CallOption) (*MsgLockAutoResponse, error)\n\t// Unlock defines a (developer) operation for unlocking a stake.\n\tUnlock(ctx context.Context, in *MsgUnlock, opts ...grpc.CallOption) (*MsgUnlockResponse, error)\n\t// Redelegate defines a (developer) operation for re-delegating a stake.\n\tRedelegate(ctx context.Context, in *MsgRedelegate, opts ...grpc.CallOption) (*MsgRedelegateResponse, error)\n\t// CancelUnlocking defines a (developer) operation for canceling an unlocking stake.\n\tCancelUnlocking(ctx context.Context, in *MsgCancelUnlocking, opts ...grpc.CallOption) (*MsgCancelUnlockingResponse, error)\n\t// CreateDeveloper defines a (developer) operation for creating a new developer record.\n\tCreateDeveloper(ctx context.Context, in *MsgCreateDeveloper, opts ...grpc.CallOption) (*MsgCreateDeveloperResponse, error)\n\t// UpdateDeveloper defines a (developer) operation for updating an existing developer record.\n\tUpdateDeveloper(ctx context.Context, in *MsgUpdateDeveloper, opts ...grpc.CallOption) (*MsgUpdateDeveloperResponse, error)\n\t// RemoveDeveloper defines a (developer) operation for removing a developer record.\n\tRemoveDeveloper(ctx context.Context, in *MsgRemoveDeveloper, opts ...grpc.CallOption) (*MsgRemoveDeveloperResponse, error)\n\t// AddUserSubscription defines a (developer) operation for adding a user subscription.\n\tAddUserSubscription(ctx context.Context, in *MsgAddUserSubscription, opts ...grpc.CallOption) (*MsgAddUserSubscriptionResponse, error)\n\t// UpdateUserSubscription defines a (developer) operation for updating a user subscription.\n\tUpdateUserSubscription(ctx context.Context, in *MsgUpdateUserSubscription, opts ...grpc.CallOption) (*MsgUpdateUserSubscriptionResponse, error)\n\t// RemoveUserSubscription defines a (developer) operation for removing a user subscription.\n\t// This expires the allowance at the end of the current period rather than immediately revoking it.\n\tRemoveUserSubscription(ctx context.Context, in *MsgRemoveUserSubscription, opts ...grpc.CallOption) (*MsgRemoveUserSubscriptionResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewMsgClient(cc grpc.ClientConnInterface) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Lock(ctx context.Context, in *MsgLock, opts ...grpc.CallOption) (*MsgLockResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgLockResponse)\n\terr := c.cc.Invoke(ctx, Msg_Lock_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) LockAuto(ctx context.Context, in *MsgLockAuto, opts ...grpc.CallOption) (*MsgLockAutoResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgLockAutoResponse)\n\terr := c.cc.Invoke(ctx, Msg_LockAuto_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Unlock(ctx context.Context, in *MsgUnlock, opts ...grpc.CallOption) (*MsgUnlockResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUnlockResponse)\n\terr := c.cc.Invoke(ctx, Msg_Unlock_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Redelegate(ctx context.Context, in *MsgRedelegate, opts ...grpc.CallOption) (*MsgRedelegateResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRedelegateResponse)\n\terr := c.cc.Invoke(ctx, Msg_Redelegate_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CancelUnlocking(ctx context.Context, in *MsgCancelUnlocking, opts ...grpc.CallOption) (*MsgCancelUnlockingResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgCancelUnlockingResponse)\n\terr := c.cc.Invoke(ctx, Msg_CancelUnlocking_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreateDeveloper(ctx context.Context, in *MsgCreateDeveloper, opts ...grpc.CallOption) (*MsgCreateDeveloperResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgCreateDeveloperResponse)\n\terr := c.cc.Invoke(ctx, Msg_CreateDeveloper_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) UpdateDeveloper(ctx context.Context, in *MsgUpdateDeveloper, opts ...grpc.CallOption) (*MsgUpdateDeveloperResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateDeveloperResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateDeveloper_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveDeveloper(ctx context.Context, in *MsgRemoveDeveloper, opts ...grpc.CallOption) (*MsgRemoveDeveloperResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRemoveDeveloperResponse)\n\terr := c.cc.Invoke(ctx, Msg_RemoveDeveloper_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) AddUserSubscription(ctx context.Context, in *MsgAddUserSubscription, opts ...grpc.CallOption) (*MsgAddUserSubscriptionResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgAddUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, Msg_AddUserSubscription_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) UpdateUserSubscription(ctx context.Context, in *MsgUpdateUserSubscription, opts ...grpc.CallOption) (*MsgUpdateUserSubscriptionResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgUpdateUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, Msg_UpdateUserSubscription_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveUserSubscription(ctx context.Context, in *MsgRemoveUserSubscription, opts ...grpc.CallOption) (*MsgRemoveUserSubscriptionResponse, error) {\n\tcOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)\n\tout := new(MsgRemoveUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, Msg_RemoveUserSubscription_FullMethodName, in, out, cOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\n// All implementations must embed UnimplementedMsgServer\n// for forward compatibility.\n//\n// Msg defines the Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// Lock defines a (developer) operation for locking a stake.\n\tLock(context.Context, *MsgLock) (*MsgLockResponse, error)\n\t// LockAuto defines a (developer) operation for locking a stake with automatic validator selection.\n\tLockAuto(context.Context, *MsgLockAuto) (*MsgLockAutoResponse, error)\n\t// Unlock defines a (developer) operation for unlocking a stake.\n\tUnlock(context.Context, *MsgUnlock) (*MsgUnlockResponse, error)\n\t// Redelegate defines a (developer) operation for re-delegating a stake.\n\tRedelegate(context.Context, *MsgRedelegate) (*MsgRedelegateResponse, error)\n\t// CancelUnlocking defines a (developer) operation for canceling an unlocking stake.\n\tCancelUnlocking(context.Context, *MsgCancelUnlocking) (*MsgCancelUnlockingResponse, error)\n\t// CreateDeveloper defines a (developer) operation for creating a new developer record.\n\tCreateDeveloper(context.Context, *MsgCreateDeveloper) (*MsgCreateDeveloperResponse, error)\n\t// UpdateDeveloper defines a (developer) operation for updating an existing developer record.\n\tUpdateDeveloper(context.Context, *MsgUpdateDeveloper) (*MsgUpdateDeveloperResponse, error)\n\t// RemoveDeveloper defines a (developer) operation for removing a developer record.\n\tRemoveDeveloper(context.Context, *MsgRemoveDeveloper) (*MsgRemoveDeveloperResponse, error)\n\t// AddUserSubscription defines a (developer) operation for adding a user subscription.\n\tAddUserSubscription(context.Context, *MsgAddUserSubscription) (*MsgAddUserSubscriptionResponse, error)\n\t// UpdateUserSubscription defines a (developer) operation for updating a user subscription.\n\tUpdateUserSubscription(context.Context, *MsgUpdateUserSubscription) (*MsgUpdateUserSubscriptionResponse, error)\n\t// RemoveUserSubscription defines a (developer) operation for removing a user subscription.\n\t// This expires the allowance at the end of the current period rather than immediately revoking it.\n\tRemoveUserSubscription(context.Context, *MsgRemoveUserSubscription) (*MsgRemoveUserSubscriptionResponse, error)\n\tmustEmbedUnimplementedMsgServer()\n}\n\n// UnimplementedMsgServer must be embedded to have\n// forward compatible implementations.\n//\n// NOTE: this should be embedded by value instead of pointer to avoid a nil\n// pointer dereference when methods are called.\ntype UnimplementedMsgServer struct{}\n\nfunc (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (UnimplementedMsgServer) Lock(context.Context, *MsgLock) (*MsgLockResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lock not implemented\")\n}\nfunc (UnimplementedMsgServer) LockAuto(context.Context, *MsgLockAuto) (*MsgLockAutoResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LockAuto not implemented\")\n}\nfunc (UnimplementedMsgServer) Unlock(context.Context, *MsgUnlock) (*MsgUnlockResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Unlock not implemented\")\n}\nfunc (UnimplementedMsgServer) Redelegate(context.Context, *MsgRedelegate) (*MsgRedelegateResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Redelegate not implemented\")\n}\nfunc (UnimplementedMsgServer) CancelUnlocking(context.Context, *MsgCancelUnlocking) (*MsgCancelUnlockingResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CancelUnlocking not implemented\")\n}\nfunc (UnimplementedMsgServer) CreateDeveloper(context.Context, *MsgCreateDeveloper) (*MsgCreateDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreateDeveloper not implemented\")\n}\nfunc (UnimplementedMsgServer) UpdateDeveloper(context.Context, *MsgUpdateDeveloper) (*MsgUpdateDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateDeveloper not implemented\")\n}\nfunc (UnimplementedMsgServer) RemoveDeveloper(context.Context, *MsgRemoveDeveloper) (*MsgRemoveDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveDeveloper not implemented\")\n}\nfunc (UnimplementedMsgServer) AddUserSubscription(context.Context, *MsgAddUserSubscription) (*MsgAddUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AddUserSubscription not implemented\")\n}\nfunc (UnimplementedMsgServer) UpdateUserSubscription(context.Context, *MsgUpdateUserSubscription) (*MsgUpdateUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateUserSubscription not implemented\")\n}\nfunc (UnimplementedMsgServer) RemoveUserSubscription(context.Context, *MsgRemoveUserSubscription) (*MsgRemoveUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveUserSubscription not implemented\")\n}\nfunc (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}\nfunc (UnimplementedMsgServer) testEmbeddedByValue()             {}\n\n// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to MsgServer will\n// result in compilation errors.\ntype UnsafeMsgServer interface {\n\tmustEmbedUnimplementedMsgServer()\n}\n\nfunc RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) {\n\t// If the following call pancis, it indicates UnimplementedMsgServer was\n\t// embedded by pointer and is nil.  This will cause panics if an\n\t// unimplemented method is ever invoked, so we test this at initialization\n\t// time to prevent it from happening at runtime later due to I/O.\n\tif t, ok := srv.(interface{ testEmbeddedByValue() }); ok {\n\t\tt.testEmbeddedByValue()\n\t}\n\ts.RegisterService(&Msg_ServiceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgLock)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Lock(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_Lock_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Lock(ctx, req.(*MsgLock))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_LockAuto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgLockAuto)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).LockAuto(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_LockAuto_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).LockAuto(ctx, req.(*MsgLockAuto))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUnlock)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Unlock(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_Unlock_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Unlock(ctx, req.(*MsgUnlock))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Redelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRedelegate)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Redelegate(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_Redelegate_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Redelegate(ctx, req.(*MsgRedelegate))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CancelUnlocking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCancelUnlocking)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CancelUnlocking(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_CancelUnlocking_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CancelUnlocking(ctx, req.(*MsgCancelUnlocking))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreateDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreateDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreateDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_CreateDeveloper_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreateDeveloper(ctx, req.(*MsgCreateDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_UpdateDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateDeveloper_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateDeveloper(ctx, req.(*MsgUpdateDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_RemoveDeveloper_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveDeveloper(ctx, req.(*MsgRemoveDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_AddUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgAddUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).AddUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_AddUserSubscription_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).AddUserSubscription(ctx, req.(*MsgAddUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_UpdateUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_UpdateUserSubscription_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateUserSubscription(ctx, req.(*MsgUpdateUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: Msg_RemoveUserSubscription_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveUserSubscription(ctx, req.(*MsgRemoveUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar Msg_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.tier.v1beta1.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lock\",\n\t\t\tHandler:    _Msg_Lock_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"LockAuto\",\n\t\t\tHandler:    _Msg_LockAuto_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Unlock\",\n\t\t\tHandler:    _Msg_Unlock_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Redelegate\",\n\t\t\tHandler:    _Msg_Redelegate_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CancelUnlocking\",\n\t\t\tHandler:    _Msg_CancelUnlocking_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreateDeveloper\",\n\t\t\tHandler:    _Msg_CreateDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UpdateDeveloper\",\n\t\t\tHandler:    _Msg_UpdateDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveDeveloper\",\n\t\t\tHandler:    _Msg_RemoveDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AddUserSubscription\",\n\t\t\tHandler:    _Msg_AddUserSubscription_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UpdateUserSubscription\",\n\t\t\tHandler:    _Msg_UpdateUserSubscription_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveUserSubscription\",\n\t\t\tHandler:    _Msg_RemoveUserSubscription_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/tier/v1beta1/tx.proto\",\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/access_decision.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar _ protoreflect.List = (*_AccessDecision_5_list)(nil)\n\ntype _AccessDecision_5_list struct {\n\tlist *[]*Operation\n}\n\nfunc (x *_AccessDecision_5_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_AccessDecision_5_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Operation)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_AccessDecision_5_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Operation)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_AccessDecision_5_list) AppendMutable() protoreflect.Value {\n\tv := new(Operation)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_AccessDecision_5_list) NewElement() protoreflect.Value {\n\tv := new(Operation)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessDecision_5_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_AccessDecision                      protoreflect.MessageDescriptor\n\tfd_AccessDecision_id                   protoreflect.FieldDescriptor\n\tfd_AccessDecision_policy_id            protoreflect.FieldDescriptor\n\tfd_AccessDecision_creator              protoreflect.FieldDescriptor\n\tfd_AccessDecision_creator_acc_sequence protoreflect.FieldDescriptor\n\tfd_AccessDecision_operations           protoreflect.FieldDescriptor\n\tfd_AccessDecision_actor                protoreflect.FieldDescriptor\n\tfd_AccessDecision_params               protoreflect.FieldDescriptor\n\tfd_AccessDecision_creation_time        protoreflect.FieldDescriptor\n\tfd_AccessDecision_issued_height        protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tmd_AccessDecision = File_sourcenetwork_acp_core_access_decision_proto.Messages().ByName(\"AccessDecision\")\n\tfd_AccessDecision_id = md_AccessDecision.Fields().ByName(\"id\")\n\tfd_AccessDecision_policy_id = md_AccessDecision.Fields().ByName(\"policy_id\")\n\tfd_AccessDecision_creator = md_AccessDecision.Fields().ByName(\"creator\")\n\tfd_AccessDecision_creator_acc_sequence = md_AccessDecision.Fields().ByName(\"creator_acc_sequence\")\n\tfd_AccessDecision_operations = md_AccessDecision.Fields().ByName(\"operations\")\n\tfd_AccessDecision_actor = md_AccessDecision.Fields().ByName(\"actor\")\n\tfd_AccessDecision_params = md_AccessDecision.Fields().ByName(\"params\")\n\tfd_AccessDecision_creation_time = md_AccessDecision.Fields().ByName(\"creation_time\")\n\tfd_AccessDecision_issued_height = md_AccessDecision.Fields().ByName(\"issued_height\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AccessDecision)(nil)\n\ntype fastReflection_AccessDecision AccessDecision\n\nfunc (x *AccessDecision) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AccessDecision)(x)\n}\n\nfunc (x *AccessDecision) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AccessDecision_messageType fastReflection_AccessDecision_messageType\nvar _ protoreflect.MessageType = fastReflection_AccessDecision_messageType{}\n\ntype fastReflection_AccessDecision_messageType struct{}\n\nfunc (x fastReflection_AccessDecision_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AccessDecision)(nil)\n}\nfunc (x fastReflection_AccessDecision_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AccessDecision)\n}\nfunc (x fastReflection_AccessDecision_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessDecision\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AccessDecision) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessDecision\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AccessDecision) Type() protoreflect.MessageType {\n\treturn _fastReflection_AccessDecision_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AccessDecision) New() protoreflect.Message {\n\treturn new(fastReflection_AccessDecision)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AccessDecision) Interface() protoreflect.ProtoMessage {\n\treturn (*AccessDecision)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AccessDecision) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_AccessDecision_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_AccessDecision_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_AccessDecision_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreatorAccSequence != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.CreatorAccSequence)\n\t\tif !f(fd_AccessDecision_creator_acc_sequence, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Operations) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_AccessDecision_5_list{list: &x.Operations})\n\t\tif !f(fd_AccessDecision_operations, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_AccessDecision_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_AccessDecision_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_AccessDecision_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.IssuedHeight != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.IssuedHeight)\n\t\tif !f(fd_AccessDecision_issued_height, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AccessDecision) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\treturn x.CreatorAccSequence != uint64(0)\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\treturn len(x.Operations) != 0\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\treturn x.Params != nil\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\treturn x.IssuedHeight != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\tx.CreatorAccSequence = uint64(0)\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\tx.Operations = nil\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\tx.Params = nil\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\tx.IssuedHeight = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AccessDecision) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\tvalue := x.CreatorAccSequence\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\tif len(x.Operations) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_AccessDecision_5_list{})\n\t\t}\n\t\tlistValue := &_AccessDecision_5_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\tvalue := x.IssuedHeight\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\tx.CreatorAccSequence = value.Uint()\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_AccessDecision_5_list)\n\t\tx.Operations = *clv.list\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\tx.Params = value.Message().Interface().(*DecisionParams)\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\tx.IssuedHeight = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\tif x.Operations == nil {\n\t\t\tx.Operations = []*Operation{}\n\t\t}\n\t\tvalue := &_AccessDecision_5_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(DecisionParams)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\tpanic(fmt.Errorf(\"field creator_acc_sequence of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\tpanic(fmt.Errorf(\"field issued_height of message sourcenetwork.acp_core.AccessDecision is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AccessDecision) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessDecision.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessDecision.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessDecision.creator_acc_sequence\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.AccessDecision.operations\":\n\t\tlist := []*Operation{}\n\t\treturn protoreflect.ValueOfList(&_AccessDecision_5_list{list: &list})\n\tcase \"sourcenetwork.acp_core.AccessDecision.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessDecision.params\":\n\t\tm := new(DecisionParams)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessDecision.issued_height\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessDecision\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessDecision does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AccessDecision) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.AccessDecision\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AccessDecision) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessDecision) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AccessDecision) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AccessDecision) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreatorAccSequence != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.CreatorAccSequence))\n\t\t}\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor _, e := range x.Operations {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.IssuedHeight))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.IssuedHeight != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.IssuedHeight))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x48\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x42\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor iNdEx := len(x.Operations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Operations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t}\n\t\t}\n\t\tif x.CreatorAccSequence != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.CreatorAccSequence))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessDecision)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessDecision: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessDecision: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreatorAccSequence\", wireType)\n\t\t\t\t}\n\t\t\t\tx.CreatorAccSequence = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.CreatorAccSequence |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Operations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Operations = append(x.Operations, &Operation{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Operations[len(x.Operations)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &DecisionParams{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 8:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 9:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IssuedHeight\", wireType)\n\t\t\t\t}\n\t\t\t\tx.IssuedHeight = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.IssuedHeight |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DecisionParams                           protoreflect.MessageDescriptor\n\tfd_DecisionParams_decision_expiration_delta protoreflect.FieldDescriptor\n\tfd_DecisionParams_proof_expiration_delta    protoreflect.FieldDescriptor\n\tfd_DecisionParams_ticket_expiration_delta   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tmd_DecisionParams = File_sourcenetwork_acp_core_access_decision_proto.Messages().ByName(\"DecisionParams\")\n\tfd_DecisionParams_decision_expiration_delta = md_DecisionParams.Fields().ByName(\"decision_expiration_delta\")\n\tfd_DecisionParams_proof_expiration_delta = md_DecisionParams.Fields().ByName(\"proof_expiration_delta\")\n\tfd_DecisionParams_ticket_expiration_delta = md_DecisionParams.Fields().ByName(\"ticket_expiration_delta\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DecisionParams)(nil)\n\ntype fastReflection_DecisionParams DecisionParams\n\nfunc (x *DecisionParams) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DecisionParams)(x)\n}\n\nfunc (x *DecisionParams) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DecisionParams_messageType fastReflection_DecisionParams_messageType\nvar _ protoreflect.MessageType = fastReflection_DecisionParams_messageType{}\n\ntype fastReflection_DecisionParams_messageType struct{}\n\nfunc (x fastReflection_DecisionParams_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DecisionParams)(nil)\n}\nfunc (x fastReflection_DecisionParams_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DecisionParams)\n}\nfunc (x fastReflection_DecisionParams_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DecisionParams\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DecisionParams) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DecisionParams\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DecisionParams) Type() protoreflect.MessageType {\n\treturn _fastReflection_DecisionParams_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DecisionParams) New() protoreflect.Message {\n\treturn new(fastReflection_DecisionParams)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DecisionParams) Interface() protoreflect.ProtoMessage {\n\treturn (*DecisionParams)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DecisionParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.DecisionExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.DecisionExpirationDelta)\n\t\tif !f(fd_DecisionParams_decision_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ProofExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.ProofExpirationDelta)\n\t\tif !f(fd_DecisionParams_proof_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.TicketExpirationDelta != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.TicketExpirationDelta)\n\t\tif !f(fd_DecisionParams_ticket_expiration_delta, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DecisionParams) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\treturn x.DecisionExpirationDelta != uint64(0)\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\treturn x.ProofExpirationDelta != uint64(0)\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\treturn x.TicketExpirationDelta != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\tx.DecisionExpirationDelta = uint64(0)\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\tx.ProofExpirationDelta = uint64(0)\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\tx.TicketExpirationDelta = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DecisionParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\tvalue := x.DecisionExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\tvalue := x.ProofExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\tvalue := x.TicketExpirationDelta\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\tx.DecisionExpirationDelta = value.Uint()\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\tx.ProofExpirationDelta = value.Uint()\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\tx.TicketExpirationDelta = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field decision_expiration_delta of message sourcenetwork.acp_core.DecisionParams is not mutable\"))\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field proof_expiration_delta of message sourcenetwork.acp_core.DecisionParams is not mutable\"))\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\tpanic(fmt.Errorf(\"field ticket_expiration_delta of message sourcenetwork.acp_core.DecisionParams is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DecisionParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DecisionParams.decision_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.DecisionParams.proof_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.DecisionParams.ticket_expiration_delta\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DecisionParams\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DecisionParams does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DecisionParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.DecisionParams\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DecisionParams) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DecisionParams) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DecisionParams) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DecisionParams) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.DecisionExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.DecisionExpirationDelta))\n\t\t}\n\t\tif x.ProofExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ProofExpirationDelta))\n\t\t}\n\t\tif x.TicketExpirationDelta != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.TicketExpirationDelta))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.TicketExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.TicketExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif x.ProofExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ProofExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.DecisionExpirationDelta != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.DecisionExpirationDelta))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DecisionParams)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DecisionParams: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DecisionParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.DecisionExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.DecisionExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ProofExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ProofExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ProofExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field TicketExpirationDelta\", wireType)\n\t\t\t\t}\n\t\t\t\tx.TicketExpirationDelta = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.TicketExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_AccessRequest_1_list)(nil)\n\ntype _AccessRequest_1_list struct {\n\tlist *[]*Operation\n}\n\nfunc (x *_AccessRequest_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_AccessRequest_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_AccessRequest_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Operation)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_AccessRequest_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Operation)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_AccessRequest_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Operation)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessRequest_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_AccessRequest_1_list) NewElement() protoreflect.Value {\n\tv := new(Operation)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_AccessRequest_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_AccessRequest            protoreflect.MessageDescriptor\n\tfd_AccessRequest_operations protoreflect.FieldDescriptor\n\tfd_AccessRequest_actor      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tmd_AccessRequest = File_sourcenetwork_acp_core_access_decision_proto.Messages().ByName(\"AccessRequest\")\n\tfd_AccessRequest_operations = md_AccessRequest.Fields().ByName(\"operations\")\n\tfd_AccessRequest_actor = md_AccessRequest.Fields().ByName(\"actor\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AccessRequest)(nil)\n\ntype fastReflection_AccessRequest AccessRequest\n\nfunc (x *AccessRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AccessRequest)(x)\n}\n\nfunc (x *AccessRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AccessRequest_messageType fastReflection_AccessRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_AccessRequest_messageType{}\n\ntype fastReflection_AccessRequest_messageType struct{}\n\nfunc (x fastReflection_AccessRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AccessRequest)(nil)\n}\nfunc (x fastReflection_AccessRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AccessRequest)\n}\nfunc (x fastReflection_AccessRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AccessRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AccessRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_AccessRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AccessRequest) New() protoreflect.Message {\n\treturn new(fastReflection_AccessRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AccessRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*AccessRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AccessRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Operations) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_AccessRequest_1_list{list: &x.Operations})\n\t\tif !f(fd_AccessRequest_operations, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\t\tif !f(fd_AccessRequest_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AccessRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\treturn len(x.Operations) != 0\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\treturn x.Actor != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\tx.Operations = nil\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\tx.Actor = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AccessRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\tif len(x.Operations) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_AccessRequest_1_list{})\n\t\t}\n\t\tlistValue := &_AccessRequest_1_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_AccessRequest_1_list)\n\t\tx.Operations = *clv.list\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\tx.Actor = value.Message().Interface().(*Actor)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\tif x.Operations == nil {\n\t\t\tx.Operations = []*Operation{}\n\t\t}\n\t\tvalue := &_AccessRequest_1_list{list: &x.Operations}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\tif x.Actor == nil {\n\t\t\tx.Actor = new(Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AccessRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessRequest.operations\":\n\t\tlist := []*Operation{}\n\t\treturn protoreflect.ValueOfList(&_AccessRequest_1_list{list: &list})\n\tcase \"sourcenetwork.acp_core.AccessRequest.actor\":\n\t\tm := new(Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AccessRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.AccessRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AccessRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AccessRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AccessRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AccessRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor _, e := range x.Operations {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tl = options.Size(x.Actor)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tencoded, err := options.Marshal(x.Actor)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Operations) > 0 {\n\t\t\tfor iNdEx := len(x.Operations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Operations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Operations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Operations = append(x.Operations, &Operation{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Operations[len(x.Operations)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Actor == nil {\n\t\t\t\t\tx.Actor = &Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Actor); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Operation            protoreflect.MessageDescriptor\n\tfd_Operation_object     protoreflect.FieldDescriptor\n\tfd_Operation_permission protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tmd_Operation = File_sourcenetwork_acp_core_access_decision_proto.Messages().ByName(\"Operation\")\n\tfd_Operation_object = md_Operation.Fields().ByName(\"object\")\n\tfd_Operation_permission = md_Operation.Fields().ByName(\"permission\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Operation)(nil)\n\ntype fastReflection_Operation Operation\n\nfunc (x *Operation) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Operation)(x)\n}\n\nfunc (x *Operation) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Operation_messageType fastReflection_Operation_messageType\nvar _ protoreflect.MessageType = fastReflection_Operation_messageType{}\n\ntype fastReflection_Operation_messageType struct{}\n\nfunc (x fastReflection_Operation_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Operation)(nil)\n}\nfunc (x fastReflection_Operation_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Operation)\n}\nfunc (x fastReflection_Operation_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Operation\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Operation) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Operation\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Operation) Type() protoreflect.MessageType {\n\treturn _fastReflection_Operation_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Operation) New() protoreflect.Message {\n\treturn new(fastReflection_Operation)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Operation) Interface() protoreflect.ProtoMessage {\n\treturn (*Operation)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Operation) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_Operation_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Permission != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Permission)\n\t\tif !f(fd_Operation_permission, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Operation) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\treturn x.Permission != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Operation) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\tx.Permission = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Operation) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\tvalue := x.Permission\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Operation) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\tx.Permission = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Operation) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\tpanic(fmt.Errorf(\"field permission of message sourcenetwork.acp_core.Operation is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Operation) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Operation.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Operation.permission\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Operation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Operation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Operation) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Operation\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Operation) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Operation) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Operation) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Operation) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Operation)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Permission)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Operation)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Permission) > 0 {\n\t\t\ti -= len(x.Permission)\n\t\t\tcopy(dAtA[i:], x.Permission)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Permission)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Operation)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Operation: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Operation: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Permission\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Permission = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/access_decision.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// AccessDecision models the result of evaluating a set of AccessRequests for an Actor\ntype AccessDecision struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId                 string                 `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPolicyId           string                 `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`                                  // used as part of id generation\n\tCreator            string                 `protobuf:\"bytes,3,opt,name=creator,proto3\" json:\"creator,omitempty\"`                                                    // used as part of id generation\n\tCreatorAccSequence uint64                 `protobuf:\"varint,4,opt,name=creator_acc_sequence,json=creatorAccSequence,proto3\" json:\"creator_acc_sequence,omitempty\"` // used as part of id generation\n\tOperations         []*Operation           `protobuf:\"bytes,5,rep,name=operations,proto3\" json:\"operations,omitempty\"`                                              // used as part of id generation\n\tActor              string                 `protobuf:\"bytes,6,opt,name=actor,proto3\" json:\"actor,omitempty\"`                                                        // used as part of id generation\n\tParams             *DecisionParams        `protobuf:\"bytes,7,opt,name=params,proto3\" json:\"params,omitempty\"`                                                      // used as part of id generation\n\tCreationTime       *timestamppb.Timestamp `protobuf:\"bytes,8,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// issued_height stores the block height when the Decision was evaluated\n\tIssuedHeight uint64 `protobuf:\"varint,9,opt,name=issued_height,json=issuedHeight,proto3\" json:\"issued_height,omitempty\"`\n}\n\nfunc (x *AccessDecision) Reset() {\n\t*x = AccessDecision{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AccessDecision) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AccessDecision) ProtoMessage() {}\n\n// Deprecated: Use AccessDecision.ProtoReflect.Descriptor instead.\nfunc (*AccessDecision) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_access_decision_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AccessDecision) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetCreatorAccSequence() uint64 {\n\tif x != nil {\n\t\treturn x.CreatorAccSequence\n\t}\n\treturn 0\n}\n\nfunc (x *AccessDecision) GetOperations() []*Operation {\n\tif x != nil {\n\t\treturn x.Operations\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessDecision) GetParams() *DecisionParams {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *AccessDecision) GetIssuedHeight() uint64 {\n\tif x != nil {\n\t\treturn x.IssuedHeight\n\t}\n\treturn 0\n}\n\n// DecisionParams stores auxiliary information regarding the validity of a decision\ntype DecisionParams struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// number of blocks a Decision is valid for\n\tDecisionExpirationDelta uint64 `protobuf:\"varint,1,opt,name=decision_expiration_delta,json=decisionExpirationDelta,proto3\" json:\"decision_expiration_delta,omitempty\"`\n\t// number of blocks a DecisionProof is valid for\n\tProofExpirationDelta uint64 `protobuf:\"varint,2,opt,name=proof_expiration_delta,json=proofExpirationDelta,proto3\" json:\"proof_expiration_delta,omitempty\"`\n\t// number of blocks an AccessTicket is valid for\n\tTicketExpirationDelta uint64 `protobuf:\"varint,3,opt,name=ticket_expiration_delta,json=ticketExpirationDelta,proto3\" json:\"ticket_expiration_delta,omitempty\"`\n}\n\nfunc (x *DecisionParams) Reset() {\n\t*x = DecisionParams{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DecisionParams) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DecisionParams) ProtoMessage() {}\n\n// Deprecated: Use DecisionParams.ProtoReflect.Descriptor instead.\nfunc (*DecisionParams) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_access_decision_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *DecisionParams) GetDecisionExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.DecisionExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *DecisionParams) GetProofExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.ProofExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (x *DecisionParams) GetTicketExpirationDelta() uint64 {\n\tif x != nil {\n\t\treturn x.TicketExpirationDelta\n\t}\n\treturn 0\n}\n\n// AccessRequest represents the wish to perform a set of operations by an actor\ntype AccessRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tOperations []*Operation `protobuf:\"bytes,1,rep,name=operations,proto3\" json:\"operations,omitempty\"`\n\t// actor requesting operations\n\tActor *Actor `protobuf:\"bytes,2,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n}\n\nfunc (x *AccessRequest) Reset() {\n\t*x = AccessRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AccessRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AccessRequest) ProtoMessage() {}\n\n// Deprecated: Use AccessRequest.ProtoReflect.Descriptor instead.\nfunc (*AccessRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_access_decision_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *AccessRequest) GetOperations() []*Operation {\n\tif x != nil {\n\t\treturn x.Operations\n\t}\n\treturn nil\n}\n\nfunc (x *AccessRequest) GetActor() *Actor {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn nil\n}\n\n// Operation represents an action over an object.\ntype Operation struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// target object for operation\n\tObject *Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\t// permission required to perform operation\n\tPermission string `protobuf:\"bytes,2,opt,name=permission,proto3\" json:\"permission,omitempty\"`\n}\n\nfunc (x *Operation) Reset() {\n\t*x = Operation{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_access_decision_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Operation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Operation) ProtoMessage() {}\n\n// Deprecated: Use Operation.ProtoReflect.Descriptor instead.\nfunc (*Operation) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_access_decision_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Operation) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *Operation) GetPermission() string {\n\tif x != nil {\n\t\treturn x.Permission\n\t}\n\treturn \"\"\n}\n\nvar File_sourcenetwork_acp_core_access_decision_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_access_decision_proto_rawDesc = []byte{\n\t0x0a, 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,\n\t0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x22, 0x88, 0x03, 0x0a, 0x0e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x63,\n\t0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,\n\t0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x14,\n\t0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x5f, 0x73, 0x65, 0x71, 0x75,\n\t0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x41,\n\t0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03,\n\t0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,\n\t0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52,\n\t0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,\n\t0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,\n\t0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75,\n\t0x65, 0x64, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52,\n\t0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xba, 0x01,\n\t0x0a, 0x0e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x12, 0x3a, 0x0a, 0x19, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70,\n\t0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x04, 0x52, 0x17, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70,\n\t0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x16,\n\t0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x70, 0x72,\n\t0x6f, 0x6f, 0x66, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c,\n\t0x74, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70,\n\t0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x04, 0x52, 0x15, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x69, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0x87, 0x01, 0x0a, 0x0d, 0x41,\n\t0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0a,\n\t0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,\n\t0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,\n\t0x33, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x61,\n\t0x63, 0x74, 0x6f, 0x72, 0x22, 0x63, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72,\n\t0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70,\n\t0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0xe5, 0x01, 0x0a, 0x1a, 0x63, 0x6f,\n\t0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x13, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,\n\t0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02,\n\t0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70,\n\t0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72,\n\t0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_access_decision_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_access_decision_proto_rawDescData = file_sourcenetwork_acp_core_access_decision_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_access_decision_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_access_decision_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_access_decision_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_access_decision_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_access_decision_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_access_decision_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_sourcenetwork_acp_core_access_decision_proto_goTypes = []interface{}{\n\t(*AccessDecision)(nil),        // 0: sourcenetwork.acp_core.AccessDecision\n\t(*DecisionParams)(nil),        // 1: sourcenetwork.acp_core.DecisionParams\n\t(*AccessRequest)(nil),         // 2: sourcenetwork.acp_core.AccessRequest\n\t(*Operation)(nil),             // 3: sourcenetwork.acp_core.Operation\n\t(*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp\n\t(*Actor)(nil),                 // 5: sourcenetwork.acp_core.Actor\n\t(*Object)(nil),                // 6: sourcenetwork.acp_core.Object\n}\nvar file_sourcenetwork_acp_core_access_decision_proto_depIdxs = []int32{\n\t3, // 0: sourcenetwork.acp_core.AccessDecision.operations:type_name -> sourcenetwork.acp_core.Operation\n\t1, // 1: sourcenetwork.acp_core.AccessDecision.params:type_name -> sourcenetwork.acp_core.DecisionParams\n\t4, // 2: sourcenetwork.acp_core.AccessDecision.creation_time:type_name -> google.protobuf.Timestamp\n\t3, // 3: sourcenetwork.acp_core.AccessRequest.operations:type_name -> sourcenetwork.acp_core.Operation\n\t5, // 4: sourcenetwork.acp_core.AccessRequest.actor:type_name -> sourcenetwork.acp_core.Actor\n\t6, // 5: sourcenetwork.acp_core.Operation.object:type_name -> sourcenetwork.acp_core.Object\n\t6, // [6:6] is the sub-list for method output_type\n\t6, // [6:6] is the sub-list for method input_type\n\t6, // [6:6] is the sub-list for extension type_name\n\t6, // [6:6] is the sub-list for extension extendee\n\t0, // [0:6] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_access_decision_proto_init() }\nfunc file_sourcenetwork_acp_core_access_decision_proto_init() {\n\tif File_sourcenetwork_acp_core_access_decision_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_access_decision_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AccessDecision); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_access_decision_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DecisionParams); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_access_decision_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AccessRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_access_decision_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Operation); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_access_decision_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_access_decision_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_access_decision_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_access_decision_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_access_decision_proto = out.File\n\tfile_sourcenetwork_acp_core_access_decision_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_access_decision_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_access_decision_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/access_ticket.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar (\n\tmd_AccessTicket                     protoreflect.MessageDescriptor\n\tfd_AccessTicket_version_denominator protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision_id         protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision            protoreflect.FieldDescriptor\n\tfd_AccessTicket_decision_proof      protoreflect.FieldDescriptor\n\tfd_AccessTicket_signature           protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_access_ticket_proto_init()\n\tmd_AccessTicket = File_sourcenetwork_acp_core_access_ticket_proto.Messages().ByName(\"AccessTicket\")\n\tfd_AccessTicket_version_denominator = md_AccessTicket.Fields().ByName(\"version_denominator\")\n\tfd_AccessTicket_decision_id = md_AccessTicket.Fields().ByName(\"decision_id\")\n\tfd_AccessTicket_decision = md_AccessTicket.Fields().ByName(\"decision\")\n\tfd_AccessTicket_decision_proof = md_AccessTicket.Fields().ByName(\"decision_proof\")\n\tfd_AccessTicket_signature = md_AccessTicket.Fields().ByName(\"signature\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AccessTicket)(nil)\n\ntype fastReflection_AccessTicket AccessTicket\n\nfunc (x *AccessTicket) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AccessTicket)(x)\n}\n\nfunc (x *AccessTicket) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_access_ticket_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AccessTicket_messageType fastReflection_AccessTicket_messageType\nvar _ protoreflect.MessageType = fastReflection_AccessTicket_messageType{}\n\ntype fastReflection_AccessTicket_messageType struct{}\n\nfunc (x fastReflection_AccessTicket_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AccessTicket)(nil)\n}\nfunc (x fastReflection_AccessTicket_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AccessTicket)\n}\nfunc (x fastReflection_AccessTicket_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessTicket\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AccessTicket) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AccessTicket\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AccessTicket) Type() protoreflect.MessageType {\n\treturn _fastReflection_AccessTicket_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AccessTicket) New() protoreflect.Message {\n\treturn new(fastReflection_AccessTicket)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AccessTicket) Interface() protoreflect.ProtoMessage {\n\treturn (*AccessTicket)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AccessTicket) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.VersionDenominator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.VersionDenominator)\n\t\tif !f(fd_AccessTicket_version_denominator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.DecisionId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DecisionId)\n\t\tif !f(fd_AccessTicket_decision_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Decision != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\t\tif !f(fd_AccessTicket_decision, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.DecisionProof) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.DecisionProof)\n\t\tif !f(fd_AccessTicket_decision_proof, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Signature) != 0 {\n\t\tvalue := protoreflect.ValueOfBytes(x.Signature)\n\t\tif !f(fd_AccessTicket_signature, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AccessTicket) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\treturn x.VersionDenominator != \"\"\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\treturn x.DecisionId != \"\"\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\treturn x.Decision != nil\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\treturn len(x.DecisionProof) != 0\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\treturn len(x.Signature) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\tx.VersionDenominator = \"\"\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\tx.DecisionId = \"\"\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\tx.Decision = nil\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\tx.DecisionProof = nil\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\tx.Signature = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AccessTicket) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\tvalue := x.VersionDenominator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\tvalue := x.DecisionId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\tvalue := x.Decision\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\tvalue := x.DecisionProof\n\t\treturn protoreflect.ValueOfBytes(value)\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\tvalue := x.Signature\n\t\treturn protoreflect.ValueOfBytes(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\tx.VersionDenominator = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\tx.DecisionId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\tx.Decision = value.Message().Interface().(*AccessDecision)\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\tx.DecisionProof = value.Bytes()\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\tx.Signature = value.Bytes()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\tif x.Decision == nil {\n\t\t\tx.Decision = new(AccessDecision)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Decision.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\tpanic(fmt.Errorf(\"field version_denominator of message sourcenetwork.acp_core.AccessTicket is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\tpanic(fmt.Errorf(\"field decision_id of message sourcenetwork.acp_core.AccessTicket is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\tpanic(fmt.Errorf(\"field decision_proof of message sourcenetwork.acp_core.AccessTicket is not mutable\"))\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\tpanic(fmt.Errorf(\"field signature of message sourcenetwork.acp_core.AccessTicket is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AccessTicket) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.AccessTicket.version_denominator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision\":\n\t\tm := new(AccessDecision)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.AccessTicket.decision_proof\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tcase \"sourcenetwork.acp_core.AccessTicket.signature\":\n\t\treturn protoreflect.ValueOfBytes(nil)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AccessTicket\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AccessTicket does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AccessTicket) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.AccessTicket\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AccessTicket) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AccessTicket) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AccessTicket) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AccessTicket) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.VersionDenominator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DecisionId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tl = options.Size(x.Decision)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DecisionProof)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Signature)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Signature) > 0 {\n\t\t\ti -= len(x.Signature)\n\t\t\tcopy(dAtA[i:], x.Signature)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Signature)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.DecisionProof) > 0 {\n\t\t\ti -= len(x.DecisionProof)\n\t\t\tcopy(dAtA[i:], x.DecisionProof)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DecisionProof)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif x.Decision != nil {\n\t\t\tencoded, err := options.Marshal(x.Decision)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.DecisionId) > 0 {\n\t\t\ti -= len(x.DecisionId)\n\t\t\tcopy(dAtA[i:], x.DecisionId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DecisionId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.VersionDenominator) > 0 {\n\t\t\ti -= len(x.VersionDenominator)\n\t\t\tcopy(dAtA[i:], x.VersionDenominator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.VersionDenominator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AccessTicket)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessTicket: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AccessTicket: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field VersionDenominator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.VersionDenominator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DecisionId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Decision == nil {\n\t\t\t\t\tx.Decision = &AccessDecision{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Decision); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionProof\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DecisionProof = append(x.DecisionProof[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.DecisionProof == nil {\n\t\t\t\t\tx.DecisionProof = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Signature\", wireType)\n\t\t\t\t}\n\t\t\t\tvar byteLen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif byteLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + byteLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Signature = append(x.Signature[:0], dAtA[iNdEx:postIndex]...)\n\t\t\t\tif x.Signature == nil {\n\t\t\t\t\tx.Signature = []byte{}\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/access_ticket.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Represents a Capability token containing an opaque proof and a set of Operations\n// the Actor is allowed to perform.\n// Tickets should be verified by a Reference Monitor before granting access to the requested operations.\ntype AccessTicket struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// identified the ticket version\n\tVersionDenominator string          `protobuf:\"bytes,1,opt,name=version_denominator,json=versionDenominator,proto3\" json:\"version_denominator,omitempty\"`\n\tDecisionId         string          `protobuf:\"bytes,2,opt,name=decision_id,json=decisionId,proto3\" json:\"decision_id,omitempty\"`\n\tDecision           *AccessDecision `protobuf:\"bytes,3,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n\t// proof of existance that the given decision exists in the chain\n\t// validation strategy is dependent on ticket version\n\tDecisionProof []byte `protobuf:\"bytes,4,opt,name=decision_proof,json=decisionProof,proto3\" json:\"decision_proof,omitempty\"`\n\t// signature of ticket which must match actor pkey in the access decision\n\tSignature []byte `protobuf:\"bytes,5,opt,name=signature,proto3\" json:\"signature,omitempty\"`\n}\n\nfunc (x *AccessTicket) Reset() {\n\t*x = AccessTicket{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_access_ticket_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AccessTicket) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AccessTicket) ProtoMessage() {}\n\n// Deprecated: Use AccessTicket.ProtoReflect.Descriptor instead.\nfunc (*AccessTicket) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_access_ticket_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *AccessTicket) GetVersionDenominator() string {\n\tif x != nil {\n\t\treturn x.VersionDenominator\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessTicket) GetDecisionId() string {\n\tif x != nil {\n\t\treturn x.DecisionId\n\t}\n\treturn \"\"\n}\n\nfunc (x *AccessTicket) GetDecision() *AccessDecision {\n\tif x != nil {\n\t\treturn x.Decision\n\t}\n\treturn nil\n}\n\nfunc (x *AccessTicket) GetDecisionProof() []byte {\n\tif x != nil {\n\t\treturn x.DecisionProof\n\t}\n\treturn nil\n}\n\nfunc (x *AccessTicket) GetSignature() []byte {\n\tif x != nil {\n\t\treturn x.Signature\n\t}\n\treturn nil\n}\n\nvar File_sourcenetwork_acp_core_access_ticket_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_access_ticket_proto_rawDesc = []byte{\n\t0x0a, 0x2a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,\n\t0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x63,\n\t0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69,\n\t0x63, 0x6b, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f,\n\t0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x69,\n\t0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f,\n\t0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x63, 0x69,\n\t0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69,\n\t0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e,\n\t0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65,\n\t0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x01,\n\t0x28, 0x0c, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6f,\n\t0x66, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05,\n\t0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42,\n\t0xe3, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x11,\n\t0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63,\n\t0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_access_ticket_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_access_ticket_proto_rawDescData = file_sourcenetwork_acp_core_access_ticket_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_access_ticket_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_access_ticket_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_access_ticket_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_access_ticket_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_access_ticket_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_access_ticket_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcenetwork_acp_core_access_ticket_proto_goTypes = []interface{}{\n\t(*AccessTicket)(nil),   // 0: sourcenetwork.acp_core.AccessTicket\n\t(*AccessDecision)(nil), // 1: sourcenetwork.acp_core.AccessDecision\n}\nvar file_sourcenetwork_acp_core_access_ticket_proto_depIdxs = []int32{\n\t1, // 0: sourcenetwork.acp_core.AccessTicket.decision:type_name -> sourcenetwork.acp_core.AccessDecision\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_access_ticket_proto_init() }\nfunc file_sourcenetwork_acp_core_access_ticket_proto_init() {\n\tif File_sourcenetwork_acp_core_access_ticket_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_access_ticket_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AccessTicket); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_access_ticket_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_access_ticket_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_access_ticket_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_access_ticket_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_access_ticket_proto = out.File\n\tfile_sourcenetwork_acp_core_access_ticket_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_access_ticket_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_access_ticket_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/engine.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar _ protoreflect.Map = (*_CreatePolicyRequest_4_map)(nil)\n\ntype _CreatePolicyRequest_4_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_CreatePolicyRequest_4_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_CreatePolicyRequest_4_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_CreatePolicyRequest_4_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_CreatePolicyRequest               protoreflect.MessageDescriptor\n\tfd_CreatePolicyRequest_policy        protoreflect.FieldDescriptor\n\tfd_CreatePolicyRequest_marshal_type  protoreflect.FieldDescriptor\n\tfd_CreatePolicyRequest_creation_time protoreflect.FieldDescriptor\n\tfd_CreatePolicyRequest_metadata      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_CreatePolicyRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"CreatePolicyRequest\")\n\tfd_CreatePolicyRequest_policy = md_CreatePolicyRequest.Fields().ByName(\"policy\")\n\tfd_CreatePolicyRequest_marshal_type = md_CreatePolicyRequest.Fields().ByName(\"marshal_type\")\n\tfd_CreatePolicyRequest_creation_time = md_CreatePolicyRequest.Fields().ByName(\"creation_time\")\n\tfd_CreatePolicyRequest_metadata = md_CreatePolicyRequest.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_CreatePolicyRequest)(nil)\n\ntype fastReflection_CreatePolicyRequest CreatePolicyRequest\n\nfunc (x *CreatePolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_CreatePolicyRequest)(x)\n}\n\nfunc (x *CreatePolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_CreatePolicyRequest_messageType fastReflection_CreatePolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_CreatePolicyRequest_messageType{}\n\ntype fastReflection_CreatePolicyRequest_messageType struct{}\n\nfunc (x fastReflection_CreatePolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_CreatePolicyRequest)(nil)\n}\nfunc (x fastReflection_CreatePolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_CreatePolicyRequest)\n}\nfunc (x fastReflection_CreatePolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CreatePolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_CreatePolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CreatePolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_CreatePolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_CreatePolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_CreatePolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_CreatePolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_CreatePolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*CreatePolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_CreatePolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_CreatePolicyRequest_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_CreatePolicyRequest_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_CreatePolicyRequest_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_CreatePolicyRequest_4_map{m: &x.Metadata})\n\t\tif !f(fd_CreatePolicyRequest_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_CreatePolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = 0\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_CreatePolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_CreatePolicyRequest_4_map{})\n\t\t}\n\t\tmapValue := &_CreatePolicyRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = (PolicyMarshalingType)(value.Enum())\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_CreatePolicyRequest_4_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_CreatePolicyRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcenetwork.acp_core.CreatePolicyRequest is not mutable\"))\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcenetwork.acp_core.CreatePolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_CreatePolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyRequest.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_CreatePolicyRequest_4_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_CreatePolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.CreatePolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_CreatePolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_CreatePolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_CreatePolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*CreatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CreatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CreatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CreatePolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CreatePolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_CreatePolicyResponse_2_map)(nil)\n\ntype _CreatePolicyResponse_2_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_CreatePolicyResponse_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_CreatePolicyResponse_2_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_CreatePolicyResponse_2_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_CreatePolicyResponse          protoreflect.MessageDescriptor\n\tfd_CreatePolicyResponse_policy   protoreflect.FieldDescriptor\n\tfd_CreatePolicyResponse_metadata protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_CreatePolicyResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"CreatePolicyResponse\")\n\tfd_CreatePolicyResponse_policy = md_CreatePolicyResponse.Fields().ByName(\"policy\")\n\tfd_CreatePolicyResponse_metadata = md_CreatePolicyResponse.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_CreatePolicyResponse)(nil)\n\ntype fastReflection_CreatePolicyResponse CreatePolicyResponse\n\nfunc (x *CreatePolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_CreatePolicyResponse)(x)\n}\n\nfunc (x *CreatePolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_CreatePolicyResponse_messageType fastReflection_CreatePolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_CreatePolicyResponse_messageType{}\n\ntype fastReflection_CreatePolicyResponse_messageType struct{}\n\nfunc (x fastReflection_CreatePolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_CreatePolicyResponse)(nil)\n}\nfunc (x fastReflection_CreatePolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_CreatePolicyResponse)\n}\nfunc (x fastReflection_CreatePolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CreatePolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_CreatePolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_CreatePolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_CreatePolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_CreatePolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_CreatePolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_CreatePolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_CreatePolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*CreatePolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_CreatePolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\t\tif !f(fd_CreatePolicyResponse_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_CreatePolicyResponse_2_map{m: &x.Metadata})\n\t\tif !f(fd_CreatePolicyResponse_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_CreatePolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\treturn x.Policy != nil\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\tx.Policy = nil\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_CreatePolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_CreatePolicyResponse_2_map{})\n\t\t}\n\t\tmapValue := &_CreatePolicyResponse_2_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\tx.Policy = value.Message().Interface().(*Policy)\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_CreatePolicyResponse_2_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\tif x.Policy == nil {\n\t\t\tx.Policy = new(Policy)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_CreatePolicyResponse_2_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_CreatePolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.policy\":\n\t\tm := new(Policy)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.CreatePolicyResponse.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_CreatePolicyResponse_2_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.CreatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.CreatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_CreatePolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.CreatePolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_CreatePolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_CreatePolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_CreatePolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_CreatePolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*CreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Policy != nil {\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*CreatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CreatePolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: CreatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Policy == nil {\n\t\t\t\t\tx.Policy = &Policy{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policy); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_SetRelationshipRequest_4_map)(nil)\n\ntype _SetRelationshipRequest_4_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_SetRelationshipRequest_4_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_SetRelationshipRequest_4_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_SetRelationshipRequest_4_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_SetRelationshipRequest               protoreflect.MessageDescriptor\n\tfd_SetRelationshipRequest_policy_id     protoreflect.FieldDescriptor\n\tfd_SetRelationshipRequest_creation_time protoreflect.FieldDescriptor\n\tfd_SetRelationshipRequest_relationship  protoreflect.FieldDescriptor\n\tfd_SetRelationshipRequest_metadata      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_SetRelationshipRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"SetRelationshipRequest\")\n\tfd_SetRelationshipRequest_policy_id = md_SetRelationshipRequest.Fields().ByName(\"policy_id\")\n\tfd_SetRelationshipRequest_creation_time = md_SetRelationshipRequest.Fields().ByName(\"creation_time\")\n\tfd_SetRelationshipRequest_relationship = md_SetRelationshipRequest.Fields().ByName(\"relationship\")\n\tfd_SetRelationshipRequest_metadata = md_SetRelationshipRequest.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetRelationshipRequest)(nil)\n\ntype fastReflection_SetRelationshipRequest SetRelationshipRequest\n\nfunc (x *SetRelationshipRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipRequest)(x)\n}\n\nfunc (x *SetRelationshipRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetRelationshipRequest_messageType fastReflection_SetRelationshipRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_SetRelationshipRequest_messageType{}\n\ntype fastReflection_SetRelationshipRequest_messageType struct{}\n\nfunc (x fastReflection_SetRelationshipRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipRequest)(nil)\n}\nfunc (x fastReflection_SetRelationshipRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipRequest)\n}\nfunc (x fastReflection_SetRelationshipRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetRelationshipRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetRelationshipRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetRelationshipRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetRelationshipRequest) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetRelationshipRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*SetRelationshipRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetRelationshipRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_SetRelationshipRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_SetRelationshipRequest_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_SetRelationshipRequest_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_SetRelationshipRequest_4_map{m: &x.Metadata})\n\t\tif !f(fd_SetRelationshipRequest_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetRelationshipRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\treturn x.Relationship != nil\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\tx.Relationship = nil\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetRelationshipRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_SetRelationshipRequest_4_map{})\n\t\t}\n\t\tmapValue := &_SetRelationshipRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*Relationship)\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_SetRelationshipRequest_4_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_SetRelationshipRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.SetRelationshipRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetRelationshipRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.relationship\":\n\t\tm := new(Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipRequest.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_SetRelationshipRequest_4_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetRelationshipRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.SetRelationshipRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetRelationshipRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetRelationshipRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetRelationshipRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SetRelationshipResponse                protoreflect.MessageDescriptor\n\tfd_SetRelationshipResponse_record_existed protoreflect.FieldDescriptor\n\tfd_SetRelationshipResponse_record         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_SetRelationshipResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"SetRelationshipResponse\")\n\tfd_SetRelationshipResponse_record_existed = md_SetRelationshipResponse.Fields().ByName(\"record_existed\")\n\tfd_SetRelationshipResponse_record = md_SetRelationshipResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetRelationshipResponse)(nil)\n\ntype fastReflection_SetRelationshipResponse SetRelationshipResponse\n\nfunc (x *SetRelationshipResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipResponse)(x)\n}\n\nfunc (x *SetRelationshipResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetRelationshipResponse_messageType fastReflection_SetRelationshipResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_SetRelationshipResponse_messageType{}\n\ntype fastReflection_SetRelationshipResponse_messageType struct{}\n\nfunc (x fastReflection_SetRelationshipResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetRelationshipResponse)(nil)\n}\nfunc (x fastReflection_SetRelationshipResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipResponse)\n}\nfunc (x fastReflection_SetRelationshipResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetRelationshipResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetRelationshipResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetRelationshipResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetRelationshipResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetRelationshipResponse) New() protoreflect.Message {\n\treturn new(fastReflection_SetRelationshipResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetRelationshipResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*SetRelationshipResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetRelationshipResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RecordExisted != false {\n\t\tvalue := protoreflect.ValueOfBool(x.RecordExisted)\n\t\tif !f(fd_SetRelationshipResponse_record_existed, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_SetRelationshipResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetRelationshipResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\treturn x.RecordExisted != false\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\tx.RecordExisted = false\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetRelationshipResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\tvalue := x.RecordExisted\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\tx.RecordExisted = value.Bool()\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\tpanic(fmt.Errorf(\"field record_existed of message sourcenetwork.acp_core.SetRelationshipResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetRelationshipResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record_existed\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcenetwork.acp_core.SetRelationshipResponse.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetRelationshipResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.SetRelationshipResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetRelationshipResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetRelationshipResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetRelationshipResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetRelationshipResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RecordExisted {\n\t\t\tn += 2\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.RecordExisted {\n\t\t\ti--\n\t\t\tif x.RecordExisted {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetRelationshipResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RecordExisted\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.RecordExisted = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeleteRelationshipRequest              protoreflect.MessageDescriptor\n\tfd_DeleteRelationshipRequest_policy_id    protoreflect.FieldDescriptor\n\tfd_DeleteRelationshipRequest_relationship protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_DeleteRelationshipRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"DeleteRelationshipRequest\")\n\tfd_DeleteRelationshipRequest_policy_id = md_DeleteRelationshipRequest.Fields().ByName(\"policy_id\")\n\tfd_DeleteRelationshipRequest_relationship = md_DeleteRelationshipRequest.Fields().ByName(\"relationship\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeleteRelationshipRequest)(nil)\n\ntype fastReflection_DeleteRelationshipRequest DeleteRelationshipRequest\n\nfunc (x *DeleteRelationshipRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipRequest)(x)\n}\n\nfunc (x *DeleteRelationshipRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeleteRelationshipRequest_messageType fastReflection_DeleteRelationshipRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_DeleteRelationshipRequest_messageType{}\n\ntype fastReflection_DeleteRelationshipRequest_messageType struct{}\n\nfunc (x fastReflection_DeleteRelationshipRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipRequest)(nil)\n}\nfunc (x fastReflection_DeleteRelationshipRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipRequest)\n}\nfunc (x fastReflection_DeleteRelationshipRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeleteRelationshipRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeleteRelationshipRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeleteRelationshipRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeleteRelationshipRequest) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeleteRelationshipRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*DeleteRelationshipRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeleteRelationshipRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_DeleteRelationshipRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_DeleteRelationshipRequest_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeleteRelationshipRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\treturn x.Relationship != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\tx.Relationship = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeleteRelationshipRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*Relationship)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.DeleteRelationshipRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeleteRelationshipRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipRequest.relationship\":\n\t\tm := new(Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeleteRelationshipRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.DeleteRelationshipRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeleteRelationshipRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeleteRelationshipRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeleteRelationshipRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeleteRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeleteRelationshipResponse              protoreflect.MessageDescriptor\n\tfd_DeleteRelationshipResponse_record_found protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_DeleteRelationshipResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"DeleteRelationshipResponse\")\n\tfd_DeleteRelationshipResponse_record_found = md_DeleteRelationshipResponse.Fields().ByName(\"record_found\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeleteRelationshipResponse)(nil)\n\ntype fastReflection_DeleteRelationshipResponse DeleteRelationshipResponse\n\nfunc (x *DeleteRelationshipResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipResponse)(x)\n}\n\nfunc (x *DeleteRelationshipResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeleteRelationshipResponse_messageType fastReflection_DeleteRelationshipResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_DeleteRelationshipResponse_messageType{}\n\ntype fastReflection_DeleteRelationshipResponse_messageType struct{}\n\nfunc (x fastReflection_DeleteRelationshipResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeleteRelationshipResponse)(nil)\n}\nfunc (x fastReflection_DeleteRelationshipResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipResponse)\n}\nfunc (x fastReflection_DeleteRelationshipResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeleteRelationshipResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeleteRelationshipResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeleteRelationshipResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeleteRelationshipResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeleteRelationshipResponse) New() protoreflect.Message {\n\treturn new(fastReflection_DeleteRelationshipResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeleteRelationshipResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*DeleteRelationshipResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeleteRelationshipResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.RecordFound != false {\n\t\tvalue := protoreflect.ValueOfBool(x.RecordFound)\n\t\tif !f(fd_DeleteRelationshipResponse_record_found, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeleteRelationshipResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\treturn x.RecordFound != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\tx.RecordFound = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeleteRelationshipResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\tvalue := x.RecordFound\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\tx.RecordFound = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\tpanic(fmt.Errorf(\"field record_found of message sourcenetwork.acp_core.DeleteRelationshipResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeleteRelationshipResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeleteRelationshipResponse.record_found\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeleteRelationshipResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeleteRelationshipResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeleteRelationshipResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.DeleteRelationshipResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeleteRelationshipResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeleteRelationshipResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeleteRelationshipResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeleteRelationshipResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeleteRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.RecordFound {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RecordFound {\n\t\t\ti--\n\t\t\tif x.RecordFound {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeleteRelationshipResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeleteRelationshipResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RecordFound\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.RecordFound = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_RegisterObjectRequest_4_map)(nil)\n\ntype _RegisterObjectRequest_4_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_RegisterObjectRequest_4_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_RegisterObjectRequest_4_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RegisterObjectRequest_4_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_RegisterObjectRequest               protoreflect.MessageDescriptor\n\tfd_RegisterObjectRequest_policy_id     protoreflect.FieldDescriptor\n\tfd_RegisterObjectRequest_object        protoreflect.FieldDescriptor\n\tfd_RegisterObjectRequest_creation_time protoreflect.FieldDescriptor\n\tfd_RegisterObjectRequest_metadata      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_RegisterObjectRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"RegisterObjectRequest\")\n\tfd_RegisterObjectRequest_policy_id = md_RegisterObjectRequest.Fields().ByName(\"policy_id\")\n\tfd_RegisterObjectRequest_object = md_RegisterObjectRequest.Fields().ByName(\"object\")\n\tfd_RegisterObjectRequest_creation_time = md_RegisterObjectRequest.Fields().ByName(\"creation_time\")\n\tfd_RegisterObjectRequest_metadata = md_RegisterObjectRequest.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegisterObjectRequest)(nil)\n\ntype fastReflection_RegisterObjectRequest RegisterObjectRequest\n\nfunc (x *RegisterObjectRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectRequest)(x)\n}\n\nfunc (x *RegisterObjectRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegisterObjectRequest_messageType fastReflection_RegisterObjectRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_RegisterObjectRequest_messageType{}\n\ntype fastReflection_RegisterObjectRequest_messageType struct{}\n\nfunc (x fastReflection_RegisterObjectRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectRequest)(nil)\n}\nfunc (x fastReflection_RegisterObjectRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectRequest)\n}\nfunc (x fastReflection_RegisterObjectRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegisterObjectRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegisterObjectRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegisterObjectRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegisterObjectRequest) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegisterObjectRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*RegisterObjectRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegisterObjectRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_RegisterObjectRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_RegisterObjectRequest_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_RegisterObjectRequest_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_RegisterObjectRequest_4_map{m: &x.Metadata})\n\t\tif !f(fd_RegisterObjectRequest_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegisterObjectRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegisterObjectRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_RegisterObjectRequest_4_map{})\n\t\t}\n\t\tmapValue := &_RegisterObjectRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_RegisterObjectRequest_4_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_RegisterObjectRequest_4_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.RegisterObjectRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegisterObjectRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectRequest.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_RegisterObjectRequest_4_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegisterObjectRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RegisterObjectRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegisterObjectRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegisterObjectRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegisterObjectRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RegisterObjectResponse        protoreflect.MessageDescriptor\n\tfd_RegisterObjectResponse_result protoreflect.FieldDescriptor\n\tfd_RegisterObjectResponse_record protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_RegisterObjectResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"RegisterObjectResponse\")\n\tfd_RegisterObjectResponse_result = md_RegisterObjectResponse.Fields().ByName(\"result\")\n\tfd_RegisterObjectResponse_record = md_RegisterObjectResponse.Fields().ByName(\"record\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RegisterObjectResponse)(nil)\n\ntype fastReflection_RegisterObjectResponse RegisterObjectResponse\n\nfunc (x *RegisterObjectResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectResponse)(x)\n}\n\nfunc (x *RegisterObjectResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RegisterObjectResponse_messageType fastReflection_RegisterObjectResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_RegisterObjectResponse_messageType{}\n\ntype fastReflection_RegisterObjectResponse_messageType struct{}\n\nfunc (x fastReflection_RegisterObjectResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RegisterObjectResponse)(nil)\n}\nfunc (x fastReflection_RegisterObjectResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectResponse)\n}\nfunc (x fastReflection_RegisterObjectResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RegisterObjectResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RegisterObjectResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RegisterObjectResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_RegisterObjectResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RegisterObjectResponse) New() protoreflect.Message {\n\treturn new(fastReflection_RegisterObjectResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RegisterObjectResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*RegisterObjectResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RegisterObjectResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Result != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Result))\n\t\tif !f(fd_RegisterObjectResponse_result, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Record != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\t\tif !f(fd_RegisterObjectResponse_record, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RegisterObjectResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\treturn x.Result != 0\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\treturn x.Record != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\tx.Result = 0\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\tx.Record = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RegisterObjectResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\tvalue := x.Result\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\tvalue := x.Record\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\tx.Result = (RegistrationResult)(value.Enum())\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\tx.Record = value.Message().Interface().(*RelationshipRecord)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\tif x.Record == nil {\n\t\t\tx.Record = new(RelationshipRecord)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Record.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\tpanic(fmt.Errorf(\"field result of message sourcenetwork.acp_core.RegisterObjectResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RegisterObjectResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.result\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tcase \"sourcenetwork.acp_core.RegisterObjectResponse.record\":\n\t\tm := new(RelationshipRecord)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RegisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RegisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RegisterObjectResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RegisterObjectResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RegisterObjectResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RegisterObjectResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RegisterObjectResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RegisterObjectResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RegisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Result != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Result))\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tl = options.Size(x.Record)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Record != nil {\n\t\t\tencoded, err := options.Marshal(x.Record)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Result != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Result))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RegisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RegisterObjectResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Result = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Result |= RegistrationResult(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Record == nil {\n\t\t\t\t\tx.Record = &RelationshipRecord{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Record); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnregisterObjectRequest           protoreflect.MessageDescriptor\n\tfd_UnregisterObjectRequest_policy_id protoreflect.FieldDescriptor\n\tfd_UnregisterObjectRequest_object    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_UnregisterObjectRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"UnregisterObjectRequest\")\n\tfd_UnregisterObjectRequest_policy_id = md_UnregisterObjectRequest.Fields().ByName(\"policy_id\")\n\tfd_UnregisterObjectRequest_object = md_UnregisterObjectRequest.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnregisterObjectRequest)(nil)\n\ntype fastReflection_UnregisterObjectRequest UnregisterObjectRequest\n\nfunc (x *UnregisterObjectRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnregisterObjectRequest)(x)\n}\n\nfunc (x *UnregisterObjectRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[8]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnregisterObjectRequest_messageType fastReflection_UnregisterObjectRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_UnregisterObjectRequest_messageType{}\n\ntype fastReflection_UnregisterObjectRequest_messageType struct{}\n\nfunc (x fastReflection_UnregisterObjectRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnregisterObjectRequest)(nil)\n}\nfunc (x fastReflection_UnregisterObjectRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnregisterObjectRequest)\n}\nfunc (x fastReflection_UnregisterObjectRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnregisterObjectRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnregisterObjectRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnregisterObjectRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnregisterObjectRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnregisterObjectRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnregisterObjectRequest) New() protoreflect.Message {\n\treturn new(fastReflection_UnregisterObjectRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnregisterObjectRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*UnregisterObjectRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnregisterObjectRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_UnregisterObjectRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_UnregisterObjectRequest_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnregisterObjectRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnregisterObjectRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.UnregisterObjectRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnregisterObjectRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.UnregisterObjectRequest.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnregisterObjectRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.UnregisterObjectRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnregisterObjectRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnregisterObjectRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnregisterObjectRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnregisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnregisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnregisterObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnregisterObjectRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnregisterObjectRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_UnregisterObjectResponse                       protoreflect.MessageDescriptor\n\tfd_UnregisterObjectResponse_found                 protoreflect.FieldDescriptor\n\tfd_UnregisterObjectResponse_relationships_removed protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_UnregisterObjectResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"UnregisterObjectResponse\")\n\tfd_UnregisterObjectResponse_found = md_UnregisterObjectResponse.Fields().ByName(\"found\")\n\tfd_UnregisterObjectResponse_relationships_removed = md_UnregisterObjectResponse.Fields().ByName(\"relationships_removed\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_UnregisterObjectResponse)(nil)\n\ntype fastReflection_UnregisterObjectResponse UnregisterObjectResponse\n\nfunc (x *UnregisterObjectResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_UnregisterObjectResponse)(x)\n}\n\nfunc (x *UnregisterObjectResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[9]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_UnregisterObjectResponse_messageType fastReflection_UnregisterObjectResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_UnregisterObjectResponse_messageType{}\n\ntype fastReflection_UnregisterObjectResponse_messageType struct{}\n\nfunc (x fastReflection_UnregisterObjectResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_UnregisterObjectResponse)(nil)\n}\nfunc (x fastReflection_UnregisterObjectResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_UnregisterObjectResponse)\n}\nfunc (x fastReflection_UnregisterObjectResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnregisterObjectResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_UnregisterObjectResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_UnregisterObjectResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_UnregisterObjectResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_UnregisterObjectResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_UnregisterObjectResponse) New() protoreflect.Message {\n\treturn new(fastReflection_UnregisterObjectResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_UnregisterObjectResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*UnregisterObjectResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_UnregisterObjectResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Found != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Found)\n\t\tif !f(fd_UnregisterObjectResponse_found, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RelationshipsRemoved != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.RelationshipsRemoved)\n\t\tif !f(fd_UnregisterObjectResponse_relationships_removed, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_UnregisterObjectResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\treturn x.Found != false\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\treturn x.RelationshipsRemoved != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\tx.Found = false\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\tx.RelationshipsRemoved = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_UnregisterObjectResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\tvalue := x.Found\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\tvalue := x.RelationshipsRemoved\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\tx.Found = value.Bool()\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\tx.RelationshipsRemoved = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\tpanic(fmt.Errorf(\"field found of message sourcenetwork.acp_core.UnregisterObjectResponse is not mutable\"))\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\tpanic(fmt.Errorf(\"field relationships_removed of message sourcenetwork.acp_core.UnregisterObjectResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_UnregisterObjectResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.found\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcenetwork.acp_core.UnregisterObjectResponse.relationships_removed\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.UnregisterObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.UnregisterObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_UnregisterObjectResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.UnregisterObjectResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_UnregisterObjectResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_UnregisterObjectResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_UnregisterObjectResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_UnregisterObjectResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*UnregisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Found {\n\t\t\tn += 2\n\t\t}\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.RelationshipsRemoved))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnregisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.RelationshipsRemoved != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.RelationshipsRemoved))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif x.Found {\n\t\t\ti--\n\t\t\tif x.Found {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*UnregisterObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnregisterObjectResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: UnregisterObjectResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Found\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Found = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipsRemoved\", wireType)\n\t\t\t\t}\n\t\t\t\tx.RelationshipsRemoved = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.RelationshipsRemoved |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetObjectRegistrationRequest           protoreflect.MessageDescriptor\n\tfd_GetObjectRegistrationRequest_policy_id protoreflect.FieldDescriptor\n\tfd_GetObjectRegistrationRequest_object    protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetObjectRegistrationRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetObjectRegistrationRequest\")\n\tfd_GetObjectRegistrationRequest_policy_id = md_GetObjectRegistrationRequest.Fields().ByName(\"policy_id\")\n\tfd_GetObjectRegistrationRequest_object = md_GetObjectRegistrationRequest.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetObjectRegistrationRequest)(nil)\n\ntype fastReflection_GetObjectRegistrationRequest GetObjectRegistrationRequest\n\nfunc (x *GetObjectRegistrationRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetObjectRegistrationRequest)(x)\n}\n\nfunc (x *GetObjectRegistrationRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[10]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetObjectRegistrationRequest_messageType fastReflection_GetObjectRegistrationRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_GetObjectRegistrationRequest_messageType{}\n\ntype fastReflection_GetObjectRegistrationRequest_messageType struct{}\n\nfunc (x fastReflection_GetObjectRegistrationRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetObjectRegistrationRequest)(nil)\n}\nfunc (x fastReflection_GetObjectRegistrationRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetObjectRegistrationRequest)\n}\nfunc (x fastReflection_GetObjectRegistrationRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetObjectRegistrationRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetObjectRegistrationRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetObjectRegistrationRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetObjectRegistrationRequest) New() protoreflect.Message {\n\treturn new(fastReflection_GetObjectRegistrationRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*GetObjectRegistrationRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_GetObjectRegistrationRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_GetObjectRegistrationRequest_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\treturn x.Object != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\tx.Object = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.GetObjectRegistrationRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetObjectRegistrationRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationRequest.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetObjectRegistrationRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetObjectRegistrationRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetObjectRegistrationRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetObjectRegistrationRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetObjectRegistrationRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetObjectRegistrationRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetObjectRegistrationRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetObjectRegistrationResponse               protoreflect.MessageDescriptor\n\tfd_GetObjectRegistrationResponse_is_registered protoreflect.FieldDescriptor\n\tfd_GetObjectRegistrationResponse_owner_id      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetObjectRegistrationResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetObjectRegistrationResponse\")\n\tfd_GetObjectRegistrationResponse_is_registered = md_GetObjectRegistrationResponse.Fields().ByName(\"is_registered\")\n\tfd_GetObjectRegistrationResponse_owner_id = md_GetObjectRegistrationResponse.Fields().ByName(\"owner_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetObjectRegistrationResponse)(nil)\n\ntype fastReflection_GetObjectRegistrationResponse GetObjectRegistrationResponse\n\nfunc (x *GetObjectRegistrationResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetObjectRegistrationResponse)(x)\n}\n\nfunc (x *GetObjectRegistrationResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[11]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetObjectRegistrationResponse_messageType fastReflection_GetObjectRegistrationResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_GetObjectRegistrationResponse_messageType{}\n\ntype fastReflection_GetObjectRegistrationResponse_messageType struct{}\n\nfunc (x fastReflection_GetObjectRegistrationResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetObjectRegistrationResponse)(nil)\n}\nfunc (x fastReflection_GetObjectRegistrationResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetObjectRegistrationResponse)\n}\nfunc (x fastReflection_GetObjectRegistrationResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetObjectRegistrationResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetObjectRegistrationResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetObjectRegistrationResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetObjectRegistrationResponse) New() protoreflect.Message {\n\treturn new(fastReflection_GetObjectRegistrationResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*GetObjectRegistrationResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.IsRegistered != false {\n\t\tvalue := protoreflect.ValueOfBool(x.IsRegistered)\n\t\tif !f(fd_GetObjectRegistrationResponse_is_registered, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.OwnerId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.OwnerId)\n\t\tif !f(fd_GetObjectRegistrationResponse_owner_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\treturn x.IsRegistered != false\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\treturn x.OwnerId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\tx.IsRegistered = false\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\tx.OwnerId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\tvalue := x.IsRegistered\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\tvalue := x.OwnerId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\tx.IsRegistered = value.Bool()\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\tx.OwnerId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\tpanic(fmt.Errorf(\"field is_registered of message sourcenetwork.acp_core.GetObjectRegistrationResponse is not mutable\"))\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\tpanic(fmt.Errorf(\"field owner_id of message sourcenetwork.acp_core.GetObjectRegistrationResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetObjectRegistrationResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.is_registered\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcenetwork.acp_core.GetObjectRegistrationResponse.owner_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetObjectRegistrationResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetObjectRegistrationResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetObjectRegistrationResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetObjectRegistrationResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetObjectRegistrationResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetObjectRegistrationResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetObjectRegistrationResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetObjectRegistrationResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.IsRegistered {\n\t\t\tn += 2\n\t\t}\n\t\tl = len(x.OwnerId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.OwnerId) > 0 {\n\t\t\ti -= len(x.OwnerId)\n\t\t\tcopy(dAtA[i:], x.OwnerId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.IsRegistered {\n\t\t\ti--\n\t\t\tif x.IsRegistered {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetObjectRegistrationResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetObjectRegistrationResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetObjectRegistrationResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field IsRegistered\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.IsRegistered = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field OwnerId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.OwnerId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_FilterRelationshipsRequest           protoreflect.MessageDescriptor\n\tfd_FilterRelationshipsRequest_policy_id protoreflect.FieldDescriptor\n\tfd_FilterRelationshipsRequest_selector  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_FilterRelationshipsRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"FilterRelationshipsRequest\")\n\tfd_FilterRelationshipsRequest_policy_id = md_FilterRelationshipsRequest.Fields().ByName(\"policy_id\")\n\tfd_FilterRelationshipsRequest_selector = md_FilterRelationshipsRequest.Fields().ByName(\"selector\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FilterRelationshipsRequest)(nil)\n\ntype fastReflection_FilterRelationshipsRequest FilterRelationshipsRequest\n\nfunc (x *FilterRelationshipsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FilterRelationshipsRequest)(x)\n}\n\nfunc (x *FilterRelationshipsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[12]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FilterRelationshipsRequest_messageType fastReflection_FilterRelationshipsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_FilterRelationshipsRequest_messageType{}\n\ntype fastReflection_FilterRelationshipsRequest_messageType struct{}\n\nfunc (x fastReflection_FilterRelationshipsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FilterRelationshipsRequest)(nil)\n}\nfunc (x fastReflection_FilterRelationshipsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FilterRelationshipsRequest)\n}\nfunc (x fastReflection_FilterRelationshipsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FilterRelationshipsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FilterRelationshipsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FilterRelationshipsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FilterRelationshipsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_FilterRelationshipsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FilterRelationshipsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_FilterRelationshipsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FilterRelationshipsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*FilterRelationshipsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FilterRelationshipsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_FilterRelationshipsRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Selector != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Selector.ProtoReflect())\n\t\tif !f(fd_FilterRelationshipsRequest_selector, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FilterRelationshipsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\treturn x.Selector != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\tx.Selector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FilterRelationshipsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\tvalue := x.Selector\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\tx.Selector = value.Message().Interface().(*RelationshipSelector)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\tif x.Selector == nil {\n\t\t\tx.Selector = new(RelationshipSelector)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Selector.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.FilterRelationshipsRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FilterRelationshipsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsRequest.selector\":\n\t\tm := new(RelationshipSelector)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FilterRelationshipsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.FilterRelationshipsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FilterRelationshipsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FilterRelationshipsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FilterRelationshipsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Selector != nil {\n\t\t\tl = options.Size(x.Selector)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Selector != nil {\n\t\t\tencoded, err := options.Marshal(x.Selector)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FilterRelationshipsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FilterRelationshipsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FilterRelationshipsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Selector\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Selector == nil {\n\t\t\t\t\tx.Selector = &RelationshipSelector{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Selector); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_FilterRelationshipsResponse_1_list)(nil)\n\ntype _FilterRelationshipsResponse_1_list struct {\n\tlist *[]*RelationshipRecord\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RelationshipRecord)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RelationshipRecord)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(RelationshipRecord)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(RelationshipRecord)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_FilterRelationshipsResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_FilterRelationshipsResponse         protoreflect.MessageDescriptor\n\tfd_FilterRelationshipsResponse_records protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_FilterRelationshipsResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"FilterRelationshipsResponse\")\n\tfd_FilterRelationshipsResponse_records = md_FilterRelationshipsResponse.Fields().ByName(\"records\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_FilterRelationshipsResponse)(nil)\n\ntype fastReflection_FilterRelationshipsResponse FilterRelationshipsResponse\n\nfunc (x *FilterRelationshipsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_FilterRelationshipsResponse)(x)\n}\n\nfunc (x *FilterRelationshipsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[13]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_FilterRelationshipsResponse_messageType fastReflection_FilterRelationshipsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_FilterRelationshipsResponse_messageType{}\n\ntype fastReflection_FilterRelationshipsResponse_messageType struct{}\n\nfunc (x fastReflection_FilterRelationshipsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_FilterRelationshipsResponse)(nil)\n}\nfunc (x fastReflection_FilterRelationshipsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_FilterRelationshipsResponse)\n}\nfunc (x fastReflection_FilterRelationshipsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FilterRelationshipsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_FilterRelationshipsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_FilterRelationshipsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_FilterRelationshipsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_FilterRelationshipsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_FilterRelationshipsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_FilterRelationshipsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_FilterRelationshipsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*FilterRelationshipsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_FilterRelationshipsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Records) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_FilterRelationshipsResponse_1_list{list: &x.Records})\n\t\tif !f(fd_FilterRelationshipsResponse_records, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_FilterRelationshipsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\treturn len(x.Records) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\tx.Records = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_FilterRelationshipsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\tif len(x.Records) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_FilterRelationshipsResponse_1_list{})\n\t\t}\n\t\tlistValue := &_FilterRelationshipsResponse_1_list{list: &x.Records}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_FilterRelationshipsResponse_1_list)\n\t\tx.Records = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\tif x.Records == nil {\n\t\t\tx.Records = []*RelationshipRecord{}\n\t\t}\n\t\tvalue := &_FilterRelationshipsResponse_1_list{list: &x.Records}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_FilterRelationshipsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.FilterRelationshipsResponse.records\":\n\t\tlist := []*RelationshipRecord{}\n\t\treturn protoreflect.ValueOfList(&_FilterRelationshipsResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.FilterRelationshipsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.FilterRelationshipsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_FilterRelationshipsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.FilterRelationshipsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_FilterRelationshipsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_FilterRelationshipsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_FilterRelationshipsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_FilterRelationshipsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*FilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Records) > 0 {\n\t\t\tfor _, e := range x.Records {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Records) > 0 {\n\t\t\tfor iNdEx := len(x.Records) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Records[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*FilterRelationshipsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FilterRelationshipsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: FilterRelationshipsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Records\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Records = append(x.Records, &RelationshipRecord{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Records[len(x.Records)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetPolicyRequest    protoreflect.MessageDescriptor\n\tfd_GetPolicyRequest_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetPolicyRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetPolicyRequest\")\n\tfd_GetPolicyRequest_id = md_GetPolicyRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetPolicyRequest)(nil)\n\ntype fastReflection_GetPolicyRequest GetPolicyRequest\n\nfunc (x *GetPolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetPolicyRequest)(x)\n}\n\nfunc (x *GetPolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[14]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetPolicyRequest_messageType fastReflection_GetPolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_GetPolicyRequest_messageType{}\n\ntype fastReflection_GetPolicyRequest_messageType struct{}\n\nfunc (x fastReflection_GetPolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetPolicyRequest)(nil)\n}\nfunc (x fastReflection_GetPolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetPolicyRequest)\n}\nfunc (x fastReflection_GetPolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetPolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetPolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetPolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetPolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetPolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetPolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_GetPolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetPolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*GetPolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetPolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_GetPolicyRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetPolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetPolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.GetPolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetPolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyRequest.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetPolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetPolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetPolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetPolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetPolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetPolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetPolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetPolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetPolicyResponse        protoreflect.MessageDescriptor\n\tfd_GetPolicyResponse_policy protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetPolicyResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetPolicyResponse\")\n\tfd_GetPolicyResponse_policy = md_GetPolicyResponse.Fields().ByName(\"policy\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetPolicyResponse)(nil)\n\ntype fastReflection_GetPolicyResponse GetPolicyResponse\n\nfunc (x *GetPolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetPolicyResponse)(x)\n}\n\nfunc (x *GetPolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[15]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetPolicyResponse_messageType fastReflection_GetPolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_GetPolicyResponse_messageType{}\n\ntype fastReflection_GetPolicyResponse_messageType struct{}\n\nfunc (x fastReflection_GetPolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetPolicyResponse)(nil)\n}\nfunc (x fastReflection_GetPolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetPolicyResponse)\n}\nfunc (x fastReflection_GetPolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetPolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetPolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetPolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetPolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetPolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetPolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_GetPolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetPolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*GetPolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetPolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\t\tif !f(fd_GetPolicyResponse_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetPolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\treturn x.Policy != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\tx.Policy = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetPolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\tx.Policy = value.Message().Interface().(*Policy)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\tif x.Policy == nil {\n\t\t\tx.Policy = new(Policy)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetPolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetPolicyResponse.policy\":\n\t\tm := new(Policy)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetPolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetPolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetPolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetPolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetPolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetPolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetPolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetPolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Policy != nil {\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetPolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetPolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Policy == nil {\n\t\t\t\t\tx.Policy = &Policy{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policy); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ListPoliciesRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_ListPoliciesRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"ListPoliciesRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ListPoliciesRequest)(nil)\n\ntype fastReflection_ListPoliciesRequest ListPoliciesRequest\n\nfunc (x *ListPoliciesRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ListPoliciesRequest)(x)\n}\n\nfunc (x *ListPoliciesRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[16]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ListPoliciesRequest_messageType fastReflection_ListPoliciesRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_ListPoliciesRequest_messageType{}\n\ntype fastReflection_ListPoliciesRequest_messageType struct{}\n\nfunc (x fastReflection_ListPoliciesRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ListPoliciesRequest)(nil)\n}\nfunc (x fastReflection_ListPoliciesRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ListPoliciesRequest)\n}\nfunc (x fastReflection_ListPoliciesRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ListPoliciesRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ListPoliciesRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ListPoliciesRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ListPoliciesRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_ListPoliciesRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ListPoliciesRequest) New() protoreflect.Message {\n\treturn new(fastReflection_ListPoliciesRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ListPoliciesRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*ListPoliciesRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ListPoliciesRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ListPoliciesRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ListPoliciesRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ListPoliciesRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ListPoliciesRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ListPoliciesRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ListPoliciesRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ListPoliciesRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ListPoliciesRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ListPoliciesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ListPoliciesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ListPoliciesRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ListPoliciesRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ListPoliciesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_ListPoliciesResponse_1_list)(nil)\n\ntype _ListPoliciesResponse_1_list struct {\n\tlist *[]*Policy\n}\n\nfunc (x *_ListPoliciesResponse_1_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_ListPoliciesResponse_1_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_ListPoliciesResponse_1_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Policy)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_ListPoliciesResponse_1_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Policy)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_ListPoliciesResponse_1_list) AppendMutable() protoreflect.Value {\n\tv := new(Policy)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ListPoliciesResponse_1_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_ListPoliciesResponse_1_list) NewElement() protoreflect.Value {\n\tv := new(Policy)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ListPoliciesResponse_1_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_ListPoliciesResponse          protoreflect.MessageDescriptor\n\tfd_ListPoliciesResponse_policies protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_ListPoliciesResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"ListPoliciesResponse\")\n\tfd_ListPoliciesResponse_policies = md_ListPoliciesResponse.Fields().ByName(\"policies\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ListPoliciesResponse)(nil)\n\ntype fastReflection_ListPoliciesResponse ListPoliciesResponse\n\nfunc (x *ListPoliciesResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ListPoliciesResponse)(x)\n}\n\nfunc (x *ListPoliciesResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[17]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ListPoliciesResponse_messageType fastReflection_ListPoliciesResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_ListPoliciesResponse_messageType{}\n\ntype fastReflection_ListPoliciesResponse_messageType struct{}\n\nfunc (x fastReflection_ListPoliciesResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ListPoliciesResponse)(nil)\n}\nfunc (x fastReflection_ListPoliciesResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ListPoliciesResponse)\n}\nfunc (x fastReflection_ListPoliciesResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ListPoliciesResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ListPoliciesResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ListPoliciesResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ListPoliciesResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_ListPoliciesResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ListPoliciesResponse) New() protoreflect.Message {\n\treturn new(fastReflection_ListPoliciesResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ListPoliciesResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*ListPoliciesResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ListPoliciesResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Policies) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_ListPoliciesResponse_1_list{list: &x.Policies})\n\t\tif !f(fd_ListPoliciesResponse_policies, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ListPoliciesResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\treturn len(x.Policies) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\tx.Policies = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ListPoliciesResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\tif len(x.Policies) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_ListPoliciesResponse_1_list{})\n\t\t}\n\t\tlistValue := &_ListPoliciesResponse_1_list{list: &x.Policies}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_ListPoliciesResponse_1_list)\n\t\tx.Policies = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\tif x.Policies == nil {\n\t\t\tx.Policies = []*Policy{}\n\t\t}\n\t\tvalue := &_ListPoliciesResponse_1_list{list: &x.Policies}\n\t\treturn protoreflect.ValueOfList(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ListPoliciesResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ListPoliciesResponse.policies\":\n\t\tlist := []*Policy{}\n\t\treturn protoreflect.ValueOfList(&_ListPoliciesResponse_1_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ListPoliciesResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ListPoliciesResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ListPoliciesResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ListPoliciesResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ListPoliciesResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ListPoliciesResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ListPoliciesResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ListPoliciesResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ListPoliciesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Policies) > 0 {\n\t\t\tfor _, e := range x.Policies {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ListPoliciesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Policies) > 0 {\n\t\t\tfor iNdEx := len(x.Policies) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Policies[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ListPoliciesResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ListPoliciesResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ListPoliciesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policies\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policies = append(x.Policies, &Policy{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policies[len(x.Policies)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeletePolicyRequest    protoreflect.MessageDescriptor\n\tfd_DeletePolicyRequest_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_DeletePolicyRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"DeletePolicyRequest\")\n\tfd_DeletePolicyRequest_id = md_DeletePolicyRequest.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeletePolicyRequest)(nil)\n\ntype fastReflection_DeletePolicyRequest DeletePolicyRequest\n\nfunc (x *DeletePolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeletePolicyRequest)(x)\n}\n\nfunc (x *DeletePolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[18]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeletePolicyRequest_messageType fastReflection_DeletePolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_DeletePolicyRequest_messageType{}\n\ntype fastReflection_DeletePolicyRequest_messageType struct{}\n\nfunc (x fastReflection_DeletePolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeletePolicyRequest)(nil)\n}\nfunc (x fastReflection_DeletePolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeletePolicyRequest)\n}\nfunc (x fastReflection_DeletePolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeletePolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeletePolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeletePolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeletePolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeletePolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeletePolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_DeletePolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeletePolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*DeletePolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeletePolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_DeletePolicyRequest_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeletePolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeletePolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.DeletePolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeletePolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyRequest.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeletePolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.DeletePolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeletePolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeletePolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeletePolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeletePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeletePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeletePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeletePolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeletePolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_DeletePolicyResponse       protoreflect.MessageDescriptor\n\tfd_DeletePolicyResponse_found protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_DeletePolicyResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"DeletePolicyResponse\")\n\tfd_DeletePolicyResponse_found = md_DeletePolicyResponse.Fields().ByName(\"found\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_DeletePolicyResponse)(nil)\n\ntype fastReflection_DeletePolicyResponse DeletePolicyResponse\n\nfunc (x *DeletePolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_DeletePolicyResponse)(x)\n}\n\nfunc (x *DeletePolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[19]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_DeletePolicyResponse_messageType fastReflection_DeletePolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_DeletePolicyResponse_messageType{}\n\ntype fastReflection_DeletePolicyResponse_messageType struct{}\n\nfunc (x fastReflection_DeletePolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_DeletePolicyResponse)(nil)\n}\nfunc (x fastReflection_DeletePolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_DeletePolicyResponse)\n}\nfunc (x fastReflection_DeletePolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeletePolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_DeletePolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_DeletePolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_DeletePolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_DeletePolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_DeletePolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_DeletePolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_DeletePolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*DeletePolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_DeletePolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Found != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Found)\n\t\tif !f(fd_DeletePolicyResponse_found, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_DeletePolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\treturn x.Found != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\tx.Found = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_DeletePolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\tvalue := x.Found\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\tx.Found = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\tpanic(fmt.Errorf(\"field found of message sourcenetwork.acp_core.DeletePolicyResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_DeletePolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.DeletePolicyResponse.found\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.DeletePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.DeletePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_DeletePolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.DeletePolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_DeletePolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_DeletePolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_DeletePolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_DeletePolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*DeletePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Found {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeletePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Found {\n\t\t\ti--\n\t\t\tif x.Found {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*DeletePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeletePolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: DeletePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Found\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Found = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_TransferObjectRequest           protoreflect.MessageDescriptor\n\tfd_TransferObjectRequest_policy_id protoreflect.FieldDescriptor\n\tfd_TransferObjectRequest_object    protoreflect.FieldDescriptor\n\tfd_TransferObjectRequest_new_owner protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_TransferObjectRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"TransferObjectRequest\")\n\tfd_TransferObjectRequest_policy_id = md_TransferObjectRequest.Fields().ByName(\"policy_id\")\n\tfd_TransferObjectRequest_object = md_TransferObjectRequest.Fields().ByName(\"object\")\n\tfd_TransferObjectRequest_new_owner = md_TransferObjectRequest.Fields().ByName(\"new_owner\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_TransferObjectRequest)(nil)\n\ntype fastReflection_TransferObjectRequest TransferObjectRequest\n\nfunc (x *TransferObjectRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_TransferObjectRequest)(x)\n}\n\nfunc (x *TransferObjectRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[20]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_TransferObjectRequest_messageType fastReflection_TransferObjectRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_TransferObjectRequest_messageType{}\n\ntype fastReflection_TransferObjectRequest_messageType struct{}\n\nfunc (x fastReflection_TransferObjectRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_TransferObjectRequest)(nil)\n}\nfunc (x fastReflection_TransferObjectRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_TransferObjectRequest)\n}\nfunc (x fastReflection_TransferObjectRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TransferObjectRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_TransferObjectRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TransferObjectRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_TransferObjectRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_TransferObjectRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_TransferObjectRequest) New() protoreflect.Message {\n\treturn new(fastReflection_TransferObjectRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_TransferObjectRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*TransferObjectRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_TransferObjectRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_TransferObjectRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_TransferObjectRequest_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.NewOwner != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.NewOwner.ProtoReflect())\n\t\tif !f(fd_TransferObjectRequest_new_owner, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_TransferObjectRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\treturn x.NewOwner != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\tx.NewOwner = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_TransferObjectRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\tvalue := x.NewOwner\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\tx.NewOwner = value.Message().Interface().(*Actor)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\tif x.NewOwner == nil {\n\t\t\tx.NewOwner = new(Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.NewOwner.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.TransferObjectRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_TransferObjectRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.TransferObjectRequest.new_owner\":\n\t\tm := new(Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_TransferObjectRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.TransferObjectRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_TransferObjectRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_TransferObjectRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_TransferObjectRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*TransferObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.NewOwner != nil {\n\t\t\tl = options.Size(x.NewOwner)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TransferObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.NewOwner != nil {\n\t\t\tencoded, err := options.Marshal(x.NewOwner)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TransferObjectRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TransferObjectRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TransferObjectRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field NewOwner\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.NewOwner == nil {\n\t\t\t\t\tx.NewOwner = &Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.NewOwner); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_TransferObjectResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_TransferObjectResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"TransferObjectResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_TransferObjectResponse)(nil)\n\ntype fastReflection_TransferObjectResponse TransferObjectResponse\n\nfunc (x *TransferObjectResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_TransferObjectResponse)(x)\n}\n\nfunc (x *TransferObjectResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[21]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_TransferObjectResponse_messageType fastReflection_TransferObjectResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_TransferObjectResponse_messageType{}\n\ntype fastReflection_TransferObjectResponse_messageType struct{}\n\nfunc (x fastReflection_TransferObjectResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_TransferObjectResponse)(nil)\n}\nfunc (x fastReflection_TransferObjectResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_TransferObjectResponse)\n}\nfunc (x fastReflection_TransferObjectResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TransferObjectResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_TransferObjectResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_TransferObjectResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_TransferObjectResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_TransferObjectResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_TransferObjectResponse) New() protoreflect.Message {\n\treturn new(fastReflection_TransferObjectResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_TransferObjectResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*TransferObjectResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_TransferObjectResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_TransferObjectResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_TransferObjectResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_TransferObjectResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.TransferObjectResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.TransferObjectResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_TransferObjectResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.TransferObjectResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_TransferObjectResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_TransferObjectResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_TransferObjectResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_TransferObjectResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*TransferObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TransferObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*TransferObjectResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TransferObjectResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: TransferObjectResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ValidatePolicyRequest              protoreflect.MessageDescriptor\n\tfd_ValidatePolicyRequest_policy       protoreflect.FieldDescriptor\n\tfd_ValidatePolicyRequest_marshal_type protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_ValidatePolicyRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"ValidatePolicyRequest\")\n\tfd_ValidatePolicyRequest_policy = md_ValidatePolicyRequest.Fields().ByName(\"policy\")\n\tfd_ValidatePolicyRequest_marshal_type = md_ValidatePolicyRequest.Fields().ByName(\"marshal_type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ValidatePolicyRequest)(nil)\n\ntype fastReflection_ValidatePolicyRequest ValidatePolicyRequest\n\nfunc (x *ValidatePolicyRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ValidatePolicyRequest)(x)\n}\n\nfunc (x *ValidatePolicyRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[22]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ValidatePolicyRequest_messageType fastReflection_ValidatePolicyRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_ValidatePolicyRequest_messageType{}\n\ntype fastReflection_ValidatePolicyRequest_messageType struct{}\n\nfunc (x fastReflection_ValidatePolicyRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ValidatePolicyRequest)(nil)\n}\nfunc (x fastReflection_ValidatePolicyRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ValidatePolicyRequest)\n}\nfunc (x fastReflection_ValidatePolicyRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ValidatePolicyRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ValidatePolicyRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ValidatePolicyRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ValidatePolicyRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_ValidatePolicyRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ValidatePolicyRequest) New() protoreflect.Message {\n\treturn new(fastReflection_ValidatePolicyRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ValidatePolicyRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*ValidatePolicyRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ValidatePolicyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_ValidatePolicyRequest_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.MarshalType != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.MarshalType))\n\t\tif !f(fd_ValidatePolicyRequest_marshal_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ValidatePolicyRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\treturn x.MarshalType != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ValidatePolicyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\tvalue := x.MarshalType\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\tx.MarshalType = (PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcenetwork.acp_core.ValidatePolicyRequest is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\tpanic(fmt.Errorf(\"field marshal_type of message sourcenetwork.acp_core.ValidatePolicyRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ValidatePolicyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ValidatePolicyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ValidatePolicyRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ValidatePolicyRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ValidatePolicyRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ValidatePolicyRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.MarshalType))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.MarshalType != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.MarshalType))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ValidatePolicyRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ValidatePolicyRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ValidatePolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t\t}\n\t\t\t\tx.MarshalType = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.MarshalType |= PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ValidatePolicyResponse           protoreflect.MessageDescriptor\n\tfd_ValidatePolicyResponse_valid     protoreflect.FieldDescriptor\n\tfd_ValidatePolicyResponse_error_msg protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_ValidatePolicyResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"ValidatePolicyResponse\")\n\tfd_ValidatePolicyResponse_valid = md_ValidatePolicyResponse.Fields().ByName(\"valid\")\n\tfd_ValidatePolicyResponse_error_msg = md_ValidatePolicyResponse.Fields().ByName(\"error_msg\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ValidatePolicyResponse)(nil)\n\ntype fastReflection_ValidatePolicyResponse ValidatePolicyResponse\n\nfunc (x *ValidatePolicyResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ValidatePolicyResponse)(x)\n}\n\nfunc (x *ValidatePolicyResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[23]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ValidatePolicyResponse_messageType fastReflection_ValidatePolicyResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_ValidatePolicyResponse_messageType{}\n\ntype fastReflection_ValidatePolicyResponse_messageType struct{}\n\nfunc (x fastReflection_ValidatePolicyResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ValidatePolicyResponse)(nil)\n}\nfunc (x fastReflection_ValidatePolicyResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ValidatePolicyResponse)\n}\nfunc (x fastReflection_ValidatePolicyResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ValidatePolicyResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ValidatePolicyResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ValidatePolicyResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ValidatePolicyResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_ValidatePolicyResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ValidatePolicyResponse) New() protoreflect.Message {\n\treturn new(fastReflection_ValidatePolicyResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ValidatePolicyResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*ValidatePolicyResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ValidatePolicyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Valid != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Valid)\n\t\tif !f(fd_ValidatePolicyResponse_valid, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ErrorMsg != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ErrorMsg)\n\t\tif !f(fd_ValidatePolicyResponse_error_msg, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ValidatePolicyResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\treturn x.Valid != false\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\treturn x.ErrorMsg != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\tx.Valid = false\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\tx.ErrorMsg = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ValidatePolicyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\tvalue := x.Valid\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\tvalue := x.ErrorMsg\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\tx.Valid = value.Bool()\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\tx.ErrorMsg = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\tpanic(fmt.Errorf(\"field valid of message sourcenetwork.acp_core.ValidatePolicyResponse is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\tpanic(fmt.Errorf(\"field error_msg of message sourcenetwork.acp_core.ValidatePolicyResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ValidatePolicyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.valid\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcenetwork.acp_core.ValidatePolicyResponse.error_msg\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ValidatePolicyResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ValidatePolicyResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ValidatePolicyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ValidatePolicyResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ValidatePolicyResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ValidatePolicyResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ValidatePolicyResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ValidatePolicyResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Valid {\n\t\t\tn += 2\n\t\t}\n\t\tl = len(x.ErrorMsg)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ErrorMsg) > 0 {\n\t\t\ti -= len(x.ErrorMsg)\n\t\t\tcopy(dAtA[i:], x.ErrorMsg)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ErrorMsg)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Valid {\n\t\t\ti--\n\t\t\tif x.Valid {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ValidatePolicyResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ValidatePolicyResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ValidatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Valid = bool(v != 0)\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ErrorMsg\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ErrorMsg = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SetParamsRequest        protoreflect.MessageDescriptor\n\tfd_SetParamsRequest_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_SetParamsRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"SetParamsRequest\")\n\tfd_SetParamsRequest_params = md_SetParamsRequest.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetParamsRequest)(nil)\n\ntype fastReflection_SetParamsRequest SetParamsRequest\n\nfunc (x *SetParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetParamsRequest)(x)\n}\n\nfunc (x *SetParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[24]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetParamsRequest_messageType fastReflection_SetParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_SetParamsRequest_messageType{}\n\ntype fastReflection_SetParamsRequest_messageType struct{}\n\nfunc (x fastReflection_SetParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetParamsRequest)(nil)\n}\nfunc (x fastReflection_SetParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetParamsRequest)\n}\nfunc (x fastReflection_SetParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_SetParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*SetParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_SetParamsRequest_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SetParamsRequest.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.SetParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SetParamsResponse protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_SetParamsResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"SetParamsResponse\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SetParamsResponse)(nil)\n\ntype fastReflection_SetParamsResponse SetParamsResponse\n\nfunc (x *SetParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SetParamsResponse)(x)\n}\n\nfunc (x *SetParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[25]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SetParamsResponse_messageType fastReflection_SetParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_SetParamsResponse_messageType{}\n\ntype fastReflection_SetParamsResponse_messageType struct{}\n\nfunc (x fastReflection_SetParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SetParamsResponse)(nil)\n}\nfunc (x fastReflection_SetParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SetParamsResponse)\n}\nfunc (x fastReflection_SetParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SetParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SetParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SetParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_SetParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SetParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_SetParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SetParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*SetParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SetParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SetParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SetParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SetParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SetParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.SetParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SetParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SetParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SetParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SetParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SetParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetParamsRequest protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetParamsRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetParamsRequest\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetParamsRequest)(nil)\n\ntype fastReflection_GetParamsRequest GetParamsRequest\n\nfunc (x *GetParamsRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetParamsRequest)(x)\n}\n\nfunc (x *GetParamsRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[26]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetParamsRequest_messageType fastReflection_GetParamsRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_GetParamsRequest_messageType{}\n\ntype fastReflection_GetParamsRequest_messageType struct{}\n\nfunc (x fastReflection_GetParamsRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetParamsRequest)(nil)\n}\nfunc (x fastReflection_GetParamsRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetParamsRequest)\n}\nfunc (x fastReflection_GetParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetParamsRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetParamsRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetParamsRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetParamsRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetParamsRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetParamsRequest) New() protoreflect.Message {\n\treturn new(fastReflection_GetParamsRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetParamsRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*GetParamsRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetParamsRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetParamsRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetParamsRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetParamsRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetParamsRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetParamsRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetParamsRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_GetParamsResponse        protoreflect.MessageDescriptor\n\tfd_GetParamsResponse_params protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_GetParamsResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"GetParamsResponse\")\n\tfd_GetParamsResponse_params = md_GetParamsResponse.Fields().ByName(\"params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_GetParamsResponse)(nil)\n\ntype fastReflection_GetParamsResponse GetParamsResponse\n\nfunc (x *GetParamsResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_GetParamsResponse)(x)\n}\n\nfunc (x *GetParamsResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[27]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_GetParamsResponse_messageType fastReflection_GetParamsResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_GetParamsResponse_messageType{}\n\ntype fastReflection_GetParamsResponse_messageType struct{}\n\nfunc (x fastReflection_GetParamsResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_GetParamsResponse)(nil)\n}\nfunc (x fastReflection_GetParamsResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_GetParamsResponse)\n}\nfunc (x fastReflection_GetParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetParamsResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_GetParamsResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_GetParamsResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_GetParamsResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_GetParamsResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_GetParamsResponse) New() protoreflect.Message {\n\treturn new(fastReflection_GetParamsResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_GetParamsResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*GetParamsResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_GetParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Params != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\t\tif !f(fd_GetParamsResponse_params, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_GetParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\treturn x.Params != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\tx.Params = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_GetParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\tvalue := x.Params\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\tx.Params = value.Message().Interface().(*Params)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\tif x.Params == nil {\n\t\t\tx.Params = new(Params)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Params.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_GetParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.GetParamsResponse.params\":\n\t\tm := new(Params)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.GetParamsResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.GetParamsResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_GetParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.GetParamsResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_GetParamsResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_GetParamsResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_GetParamsResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_GetParamsResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*GetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Params != nil {\n\t\t\tl = options.Size(x.Params)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Params != nil {\n\t\t\tencoded, err := options.Marshal(x.Params)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*GetParamsResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetParamsResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: GetParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Params == nil {\n\t\t\t\t\tx.Params = &Params{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_VerifyAccessRequestRequest                protoreflect.MessageDescriptor\n\tfd_VerifyAccessRequestRequest_policy_id      protoreflect.FieldDescriptor\n\tfd_VerifyAccessRequestRequest_access_request protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_VerifyAccessRequestRequest = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"VerifyAccessRequestRequest\")\n\tfd_VerifyAccessRequestRequest_policy_id = md_VerifyAccessRequestRequest.Fields().ByName(\"policy_id\")\n\tfd_VerifyAccessRequestRequest_access_request = md_VerifyAccessRequestRequest.Fields().ByName(\"access_request\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_VerifyAccessRequestRequest)(nil)\n\ntype fastReflection_VerifyAccessRequestRequest VerifyAccessRequestRequest\n\nfunc (x *VerifyAccessRequestRequest) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_VerifyAccessRequestRequest)(x)\n}\n\nfunc (x *VerifyAccessRequestRequest) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[28]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_VerifyAccessRequestRequest_messageType fastReflection_VerifyAccessRequestRequest_messageType\nvar _ protoreflect.MessageType = fastReflection_VerifyAccessRequestRequest_messageType{}\n\ntype fastReflection_VerifyAccessRequestRequest_messageType struct{}\n\nfunc (x fastReflection_VerifyAccessRequestRequest_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_VerifyAccessRequestRequest)(nil)\n}\nfunc (x fastReflection_VerifyAccessRequestRequest_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_VerifyAccessRequestRequest)\n}\nfunc (x fastReflection_VerifyAccessRequestRequest_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_VerifyAccessRequestRequest\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_VerifyAccessRequestRequest\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Type() protoreflect.MessageType {\n\treturn _fastReflection_VerifyAccessRequestRequest_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_VerifyAccessRequestRequest) New() protoreflect.Message {\n\treturn new(fastReflection_VerifyAccessRequestRequest)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Interface() protoreflect.ProtoMessage {\n\treturn (*VerifyAccessRequestRequest)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_VerifyAccessRequestRequest_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.AccessRequest != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\t\tif !f(fd_VerifyAccessRequestRequest_access_request, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\treturn x.AccessRequest != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\tx.AccessRequest = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\tvalue := x.AccessRequest\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\tx.AccessRequest = value.Message().Interface().(*AccessRequest)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\tif x.AccessRequest == nil {\n\t\t\tx.AccessRequest = new(AccessRequest)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.AccessRequest.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.VerifyAccessRequestRequest is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_VerifyAccessRequestRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request\":\n\t\tm := new(AccessRequest)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestRequest\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestRequest does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_VerifyAccessRequestRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.VerifyAccessRequestRequest\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_VerifyAccessRequestRequest) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestRequest) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_VerifyAccessRequestRequest) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_VerifyAccessRequestRequest) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tl = options.Size(x.AccessRequest)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.AccessRequest != nil {\n\t\t\tencoded, err := options.Marshal(x.AccessRequest)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestRequest)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: VerifyAccessRequestRequest: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: VerifyAccessRequestRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AccessRequest\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.AccessRequest == nil {\n\t\t\t\t\tx.AccessRequest = &AccessRequest{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessRequest); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_VerifyAccessRequestResponse       protoreflect.MessageDescriptor\n\tfd_VerifyAccessRequestResponse_valid protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_engine_proto_init()\n\tmd_VerifyAccessRequestResponse = File_sourcenetwork_acp_core_engine_proto.Messages().ByName(\"VerifyAccessRequestResponse\")\n\tfd_VerifyAccessRequestResponse_valid = md_VerifyAccessRequestResponse.Fields().ByName(\"valid\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_VerifyAccessRequestResponse)(nil)\n\ntype fastReflection_VerifyAccessRequestResponse VerifyAccessRequestResponse\n\nfunc (x *VerifyAccessRequestResponse) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_VerifyAccessRequestResponse)(x)\n}\n\nfunc (x *VerifyAccessRequestResponse) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[29]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_VerifyAccessRequestResponse_messageType fastReflection_VerifyAccessRequestResponse_messageType\nvar _ protoreflect.MessageType = fastReflection_VerifyAccessRequestResponse_messageType{}\n\ntype fastReflection_VerifyAccessRequestResponse_messageType struct{}\n\nfunc (x fastReflection_VerifyAccessRequestResponse_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_VerifyAccessRequestResponse)(nil)\n}\nfunc (x fastReflection_VerifyAccessRequestResponse_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_VerifyAccessRequestResponse)\n}\nfunc (x fastReflection_VerifyAccessRequestResponse_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_VerifyAccessRequestResponse\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_VerifyAccessRequestResponse\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Type() protoreflect.MessageType {\n\treturn _fastReflection_VerifyAccessRequestResponse_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_VerifyAccessRequestResponse) New() protoreflect.Message {\n\treturn new(fastReflection_VerifyAccessRequestResponse)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Interface() protoreflect.ProtoMessage {\n\treturn (*VerifyAccessRequestResponse)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Valid != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Valid)\n\t\tif !f(fd_VerifyAccessRequestResponse_valid, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\treturn x.Valid != false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\tx.Valid = false\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\tvalue := x.Valid\n\t\treturn protoreflect.ValueOfBool(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\tx.Valid = value.Bool()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\tpanic(fmt.Errorf(\"field valid of message sourcenetwork.acp_core.VerifyAccessRequestResponse is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_VerifyAccessRequestResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.VerifyAccessRequestResponse.valid\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.VerifyAccessRequestResponse\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.VerifyAccessRequestResponse does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_VerifyAccessRequestResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.VerifyAccessRequestResponse\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_VerifyAccessRequestResponse) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_VerifyAccessRequestResponse) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_VerifyAccessRequestResponse) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_VerifyAccessRequestResponse) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Valid {\n\t\t\tn += 2\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Valid {\n\t\t\ti--\n\t\t\tif x.Valid {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x8\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*VerifyAccessRequestResponse)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: VerifyAccessRequestResponse: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: VerifyAccessRequestResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Valid = bool(v != 0)\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/engine.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype CreatePolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy       string                 `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType  PolicyMarshalingType   `protobuf:\"varint,2,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n\tCreationTime *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// metadata is a map of attributes which can be used to store\n\t// caller supplied satellite data\n\tMetadata map[string]string `protobuf:\"bytes,4,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *CreatePolicyRequest) Reset() {\n\t*x = CreatePolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CreatePolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CreatePolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use CreatePolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*CreatePolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *CreatePolicyRequest) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *CreatePolicyRequest) GetMarshalType() PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn PolicyMarshalingType_UNKNOWN\n}\n\nfunc (x *CreatePolicyRequest) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *CreatePolicyRequest) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype CreatePolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy   *Policy           `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMetadata map[string]string `protobuf:\"bytes,2,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *CreatePolicyResponse) Reset() {\n\t*x = CreatePolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *CreatePolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*CreatePolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use CreatePolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*CreatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *CreatePolicyResponse) GetPolicy() *Policy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\nfunc (x *CreatePolicyResponse) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype SetRelationshipRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId     string                 `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCreationTime *timestamppb.Timestamp `protobuf:\"bytes,2,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\tRelationship *Relationship          `protobuf:\"bytes,3,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n\t// metadata is a map of attributes which can be used to store\n\t// caller supplied satellite data\n\tMetadata map[string]string `protobuf:\"bytes,4,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *SetRelationshipRequest) Reset() {\n\t*x = SetRelationshipRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetRelationshipRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetRelationshipRequest) ProtoMessage() {}\n\n// Deprecated: Use SetRelationshipRequest.ProtoReflect.Descriptor instead.\nfunc (*SetRelationshipRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *SetRelationshipRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *SetRelationshipRequest) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *SetRelationshipRequest) GetRelationship() *Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\nfunc (x *SetRelationshipRequest) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype SetRelationshipResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Indicates whether the given Relationship previously existed, ie the Tx was a no op\n\tRecordExisted bool                `protobuf:\"varint,1,opt,name=record_existed,json=recordExisted,proto3\" json:\"record_existed,omitempty\"`\n\tRecord        *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *SetRelationshipResponse) Reset() {\n\t*x = SetRelationshipResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetRelationshipResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetRelationshipResponse) ProtoMessage() {}\n\n// Deprecated: Use SetRelationshipResponse.ProtoReflect.Descriptor instead.\nfunc (*SetRelationshipResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *SetRelationshipResponse) GetRecordExisted() bool {\n\tif x != nil {\n\t\treturn x.RecordExisted\n\t}\n\treturn false\n}\n\nfunc (x *SetRelationshipResponse) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype DeleteRelationshipRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId     string        `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tRelationship *Relationship `protobuf:\"bytes,2,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n}\n\nfunc (x *DeleteRelationshipRequest) Reset() {\n\t*x = DeleteRelationshipRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeleteRelationshipRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeleteRelationshipRequest) ProtoMessage() {}\n\n// Deprecated: Use DeleteRelationshipRequest.ProtoReflect.Descriptor instead.\nfunc (*DeleteRelationshipRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *DeleteRelationshipRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *DeleteRelationshipRequest) GetRelationship() *Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\ntype DeleteRelationshipResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecordFound bool `protobuf:\"varint,1,opt,name=record_found,json=recordFound,proto3\" json:\"record_found,omitempty\"`\n}\n\nfunc (x *DeleteRelationshipResponse) Reset() {\n\t*x = DeleteRelationshipResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeleteRelationshipResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeleteRelationshipResponse) ProtoMessage() {}\n\n// Deprecated: Use DeleteRelationshipResponse.ProtoReflect.Descriptor instead.\nfunc (*DeleteRelationshipResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *DeleteRelationshipResponse) GetRecordFound() bool {\n\tif x != nil {\n\t\treturn x.RecordFound\n\t}\n\treturn false\n}\n\ntype RegisterObjectRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId     string                 `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject       *Object                `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n\tCreationTime *timestamppb.Timestamp `protobuf:\"bytes,3,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// metadata is a map of attributes which can be used to store\n\t// caller supplied satellite data\n\tMetadata map[string]string `protobuf:\"bytes,4,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *RegisterObjectRequest) Reset() {\n\t*x = RegisterObjectRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegisterObjectRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegisterObjectRequest) ProtoMessage() {}\n\n// Deprecated: Use RegisterObjectRequest.ProtoReflect.Descriptor instead.\nfunc (*RegisterObjectRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *RegisterObjectRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *RegisterObjectRequest) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *RegisterObjectRequest) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *RegisterObjectRequest) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\ntype RegisterObjectResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResult RegistrationResult  `protobuf:\"varint,1,opt,name=result,proto3,enum=sourcenetwork.acp_core.RegistrationResult\" json:\"result,omitempty\"`\n\tRecord *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (x *RegisterObjectResponse) Reset() {\n\t*x = RegisterObjectResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RegisterObjectResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RegisterObjectResponse) ProtoMessage() {}\n\n// Deprecated: Use RegisterObjectResponse.ProtoReflect.Descriptor instead.\nfunc (*RegisterObjectResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *RegisterObjectResponse) GetResult() RegistrationResult {\n\tif x != nil {\n\t\treturn x.Result\n\t}\n\treturn RegistrationResult_NoOp\n}\n\nfunc (x *RegisterObjectResponse) GetRecord() *RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Record\n\t}\n\treturn nil\n}\n\ntype UnregisterObjectRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string  `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject   *Object `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *UnregisterObjectRequest) Reset() {\n\t*x = UnregisterObjectRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[8]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnregisterObjectRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnregisterObjectRequest) ProtoMessage() {}\n\n// Deprecated: Use UnregisterObjectRequest.ProtoReflect.Descriptor instead.\nfunc (*UnregisterObjectRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{8}\n}\n\nfunc (x *UnregisterObjectRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *UnregisterObjectRequest) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\ntype UnregisterObjectResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tFound                bool   `protobuf:\"varint,1,opt,name=found,proto3\" json:\"found,omitempty\"`\n\tRelationshipsRemoved uint64 `protobuf:\"varint,2,opt,name=relationships_removed,json=relationshipsRemoved,proto3\" json:\"relationships_removed,omitempty\"`\n}\n\nfunc (x *UnregisterObjectResponse) Reset() {\n\t*x = UnregisterObjectResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[9]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *UnregisterObjectResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*UnregisterObjectResponse) ProtoMessage() {}\n\n// Deprecated: Use UnregisterObjectResponse.ProtoReflect.Descriptor instead.\nfunc (*UnregisterObjectResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{9}\n}\n\nfunc (x *UnregisterObjectResponse) GetFound() bool {\n\tif x != nil {\n\t\treturn x.Found\n\t}\n\treturn false\n}\n\nfunc (x *UnregisterObjectResponse) GetRelationshipsRemoved() uint64 {\n\tif x != nil {\n\t\treturn x.RelationshipsRemoved\n\t}\n\treturn 0\n}\n\ntype GetObjectRegistrationRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string  `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject   *Object `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (x *GetObjectRegistrationRequest) Reset() {\n\t*x = GetObjectRegistrationRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[10]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetObjectRegistrationRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetObjectRegistrationRequest) ProtoMessage() {}\n\n// Deprecated: Use GetObjectRegistrationRequest.ProtoReflect.Descriptor instead.\nfunc (*GetObjectRegistrationRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{10}\n}\n\nfunc (x *GetObjectRegistrationRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *GetObjectRegistrationRequest) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\ntype GetObjectRegistrationResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tIsRegistered bool   `protobuf:\"varint,1,opt,name=is_registered,json=isRegistered,proto3\" json:\"is_registered,omitempty\"`\n\tOwnerId      string `protobuf:\"bytes,2,opt,name=owner_id,json=ownerId,proto3\" json:\"owner_id,omitempty\"`\n}\n\nfunc (x *GetObjectRegistrationResponse) Reset() {\n\t*x = GetObjectRegistrationResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[11]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetObjectRegistrationResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetObjectRegistrationResponse) ProtoMessage() {}\n\n// Deprecated: Use GetObjectRegistrationResponse.ProtoReflect.Descriptor instead.\nfunc (*GetObjectRegistrationResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{11}\n}\n\nfunc (x *GetObjectRegistrationResponse) GetIsRegistered() bool {\n\tif x != nil {\n\t\treturn x.IsRegistered\n\t}\n\treturn false\n}\n\nfunc (x *GetObjectRegistrationResponse) GetOwnerId() string {\n\tif x != nil {\n\t\treturn x.OwnerId\n\t}\n\treturn \"\"\n}\n\ntype FilterRelationshipsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string                `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tSelector *RelationshipSelector `protobuf:\"bytes,2,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n}\n\nfunc (x *FilterRelationshipsRequest) Reset() {\n\t*x = FilterRelationshipsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[12]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FilterRelationshipsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FilterRelationshipsRequest) ProtoMessage() {}\n\n// Deprecated: Use FilterRelationshipsRequest.ProtoReflect.Descriptor instead.\nfunc (*FilterRelationshipsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{12}\n}\n\nfunc (x *FilterRelationshipsRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *FilterRelationshipsRequest) GetSelector() *RelationshipSelector {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn nil\n}\n\ntype FilterRelationshipsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tRecords []*RelationshipRecord `protobuf:\"bytes,1,rep,name=records,proto3\" json:\"records,omitempty\"`\n}\n\nfunc (x *FilterRelationshipsResponse) Reset() {\n\t*x = FilterRelationshipsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[13]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *FilterRelationshipsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*FilterRelationshipsResponse) ProtoMessage() {}\n\n// Deprecated: Use FilterRelationshipsResponse.ProtoReflect.Descriptor instead.\nfunc (*FilterRelationshipsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{13}\n}\n\nfunc (x *FilterRelationshipsResponse) GetRecords() []*RelationshipRecord {\n\tif x != nil {\n\t\treturn x.Records\n\t}\n\treturn nil\n}\n\ntype GetPolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// id of the Policy to be fetched\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *GetPolicyRequest) Reset() {\n\t*x = GetPolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[14]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetPolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetPolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use GetPolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*GetPolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{14}\n}\n\nfunc (x *GetPolicyRequest) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\ntype GetPolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy *Policy `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n}\n\nfunc (x *GetPolicyResponse) Reset() {\n\t*x = GetPolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[15]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetPolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetPolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use GetPolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*GetPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{15}\n}\n\nfunc (x *GetPolicyResponse) GetPolicy() *Policy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\ntype ListPoliciesRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *ListPoliciesRequest) Reset() {\n\t*x = ListPoliciesRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[16]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ListPoliciesRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListPoliciesRequest) ProtoMessage() {}\n\n// Deprecated: Use ListPoliciesRequest.ProtoReflect.Descriptor instead.\nfunc (*ListPoliciesRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{16}\n}\n\ntype ListPoliciesResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicies []*Policy `protobuf:\"bytes,1,rep,name=policies,proto3\" json:\"policies,omitempty\"`\n}\n\nfunc (x *ListPoliciesResponse) Reset() {\n\t*x = ListPoliciesResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[17]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ListPoliciesResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ListPoliciesResponse) ProtoMessage() {}\n\n// Deprecated: Use ListPoliciesResponse.ProtoReflect.Descriptor instead.\nfunc (*ListPoliciesResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{17}\n}\n\nfunc (x *ListPoliciesResponse) GetPolicies() []*Policy {\n\tif x != nil {\n\t\treturn x.Policies\n\t}\n\treturn nil\n}\n\ntype DeletePolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *DeletePolicyRequest) Reset() {\n\t*x = DeletePolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[18]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeletePolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeletePolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use DeletePolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*DeletePolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{18}\n}\n\nfunc (x *DeletePolicyRequest) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\ntype DeletePolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tFound bool `protobuf:\"varint,1,opt,name=found,proto3\" json:\"found,omitempty\"`\n}\n\nfunc (x *DeletePolicyResponse) Reset() {\n\t*x = DeletePolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[19]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *DeletePolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*DeletePolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use DeletePolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*DeletePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{19}\n}\n\nfunc (x *DeletePolicyResponse) GetFound() bool {\n\tif x != nil {\n\t\treturn x.Found\n\t}\n\treturn false\n}\n\ntype TransferObjectRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string  `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject   *Object `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n\tNewOwner *Actor  `protobuf:\"bytes,3,opt,name=new_owner,json=newOwner,proto3\" json:\"new_owner,omitempty\"`\n}\n\nfunc (x *TransferObjectRequest) Reset() {\n\t*x = TransferObjectRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[20]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *TransferObjectRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TransferObjectRequest) ProtoMessage() {}\n\n// Deprecated: Use TransferObjectRequest.ProtoReflect.Descriptor instead.\nfunc (*TransferObjectRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{20}\n}\n\nfunc (x *TransferObjectRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *TransferObjectRequest) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *TransferObjectRequest) GetNewOwner() *Actor {\n\tif x != nil {\n\t\treturn x.NewOwner\n\t}\n\treturn nil\n}\n\ntype TransferObjectResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *TransferObjectResponse) Reset() {\n\t*x = TransferObjectResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[21]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *TransferObjectResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*TransferObjectResponse) ProtoMessage() {}\n\n// Deprecated: Use TransferObjectResponse.ProtoReflect.Descriptor instead.\nfunc (*TransferObjectResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{21}\n}\n\ntype ValidatePolicyRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy      string               `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType PolicyMarshalingType `protobuf:\"varint,2,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (x *ValidatePolicyRequest) Reset() {\n\t*x = ValidatePolicyRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[22]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ValidatePolicyRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValidatePolicyRequest) ProtoMessage() {}\n\n// Deprecated: Use ValidatePolicyRequest.ProtoReflect.Descriptor instead.\nfunc (*ValidatePolicyRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{22}\n}\n\nfunc (x *ValidatePolicyRequest) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *ValidatePolicyRequest) GetMarshalType() PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.MarshalType\n\t}\n\treturn PolicyMarshalingType_UNKNOWN\n}\n\ntype ValidatePolicyResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValid    bool   `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n\tErrorMsg string `protobuf:\"bytes,2,opt,name=error_msg,json=errorMsg,proto3\" json:\"error_msg,omitempty\"`\n}\n\nfunc (x *ValidatePolicyResponse) Reset() {\n\t*x = ValidatePolicyResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[23]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ValidatePolicyResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ValidatePolicyResponse) ProtoMessage() {}\n\n// Deprecated: Use ValidatePolicyResponse.ProtoReflect.Descriptor instead.\nfunc (*ValidatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{23}\n}\n\nfunc (x *ValidatePolicyResponse) GetValid() bool {\n\tif x != nil {\n\t\treturn x.Valid\n\t}\n\treturn false\n}\n\nfunc (x *ValidatePolicyResponse) GetErrorMsg() string {\n\tif x != nil {\n\t\treturn x.ErrorMsg\n\t}\n\treturn \"\"\n}\n\ntype SetParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *SetParamsRequest) Reset() {\n\t*x = SetParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[24]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use SetParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*SetParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{24}\n}\n\nfunc (x *SetParamsRequest) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\ntype SetParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *SetParamsResponse) Reset() {\n\t*x = SetParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[25]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SetParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SetParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use SetParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*SetParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{25}\n}\n\ntype GetParamsRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *GetParamsRequest) Reset() {\n\t*x = GetParamsRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[26]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetParamsRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetParamsRequest) ProtoMessage() {}\n\n// Deprecated: Use GetParamsRequest.ProtoReflect.Descriptor instead.\nfunc (*GetParamsRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{26}\n}\n\ntype GetParamsResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tParams *Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params,omitempty\"`\n}\n\nfunc (x *GetParamsResponse) Reset() {\n\t*x = GetParamsResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[27]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *GetParamsResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*GetParamsResponse) ProtoMessage() {}\n\n// Deprecated: Use GetParamsResponse.ProtoReflect.Descriptor instead.\nfunc (*GetParamsResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{27}\n}\n\nfunc (x *GetParamsResponse) GetParams() *Params {\n\tif x != nil {\n\t\treturn x.Params\n\t}\n\treturn nil\n}\n\ntype VerifyAccessRequestRequest struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId      string         `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tAccessRequest *AccessRequest `protobuf:\"bytes,2,opt,name=access_request,json=accessRequest,proto3\" json:\"access_request,omitempty\"`\n}\n\nfunc (x *VerifyAccessRequestRequest) Reset() {\n\t*x = VerifyAccessRequestRequest{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[28]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *VerifyAccessRequestRequest) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VerifyAccessRequestRequest) ProtoMessage() {}\n\n// Deprecated: Use VerifyAccessRequestRequest.ProtoReflect.Descriptor instead.\nfunc (*VerifyAccessRequestRequest) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{28}\n}\n\nfunc (x *VerifyAccessRequestRequest) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *VerifyAccessRequestRequest) GetAccessRequest() *AccessRequest {\n\tif x != nil {\n\t\treturn x.AccessRequest\n\t}\n\treturn nil\n}\n\ntype VerifyAccessRequestResponse struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tValid bool `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n}\n\nfunc (x *VerifyAccessRequestResponse) Reset() {\n\t*x = VerifyAccessRequestResponse{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_engine_proto_msgTypes[29]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *VerifyAccessRequestResponse) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*VerifyAccessRequestResponse) ProtoMessage() {}\n\n// Deprecated: Use VerifyAccessRequestResponse.ProtoReflect.Descriptor instead.\nfunc (*VerifyAccessRequestResponse) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescGZIP(), []int{29}\n}\n\nfunc (x *VerifyAccessRequestResponse) GetValid() bool {\n\tif x != nil {\n\t\treturn x.Valid\n\t}\n\treturn false\n}\n\nvar File_sourcenetwork_acp_core_engine_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_engine_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,\n\t0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x65,\n\t0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x1a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x65, 0x6c,\n\t0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x22, 0xd3, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x67,\n\t0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x54, 0x79, 0x70,\n\t0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69,\n\t0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,\n\t0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,\n\t0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,\n\t0x6d, 0x65, 0x12, 0x55, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72,\n\t0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,\n\t0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74,\n\t0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,\n\t0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x36, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a,\n\t0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,\n\t0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,\n\t0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, 0x02, 0x0a,\n\t0x16, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69,\n\t0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12,\n\t0x58, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,\n\t0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,\n\t0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74,\n\t0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,\n\t0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x52, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x69,\n\t0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x6f,\n\t0x72, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65, 0x63,\n\t0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x82, 0x01,\n\t0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x68, 0x69, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x22, 0x3f, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x6f,\n\t0x75, 0x6e, 0x64, 0x22, 0xc3, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,\n\t0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a,\n\t0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,\n\t0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,\n\t0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,\n\t0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,\n\t0x69, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52,\n\t0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,\n\t0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,\n\t0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,\n\t0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,\n\t0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x52, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,\n\t0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f,\n\t0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65,\n\t0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x6e, 0x0a, 0x17,\n\t0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x65, 0x0a, 0x18,\n\t0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x33,\n\t0x0a, 0x15, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x5f,\n\t0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x72,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x6d, 0x6f,\n\t0x76, 0x65, 0x64, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,\n\t0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f,\n\t0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f,\n\t0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,\n\t0x52, 0x0c, 0x69, 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x19,\n\t0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x1a, 0x46, 0x69,\n\t0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70,\n\t0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,\n\t0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x6c,\n\t0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22,\n\t0x63, 0x0a, 0x1b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44,\n\t0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,\n\t0x2a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x63,\n\t0x6f, 0x72, 0x64, 0x73, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a,\n\t0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x52, 0x0a, 0x14,\n\t0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,\n\t0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73,\n\t0x22, 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,\n\t0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,\n\t0x66, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,\n\t0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,\n\t0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06,\n\t0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65,\n\t0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72,\n\t0x22, 0x18, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x15, 0x56,\n\t0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x0c,\n\t0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65,\n\t0x52, 0x0b, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a,\n\t0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1b, 0x0a,\n\t0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x10, 0x53, 0x65,\n\t0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36,\n\t0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06,\n\t0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72,\n\t0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x47,\n\t0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,\n\t0x4b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,\n\t0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a,\n\t0x1a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71,\n\t0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,\n\t0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x65,\n\t0x73, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,\n\t0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x33, 0x0a, 0x1b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,\n\t0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x32, 0xb4, 0x0d, 0x0a, 0x09,\n\t0x41, 0x43, 0x50, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65,\n\t0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70,\n\t0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x12, 0x28, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4c, 0x69, 0x73,\n\t0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,\n\t0x65, 0x12, 0x69, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x12, 0x2b, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0f,\n\t0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12,\n\t0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,\n\t0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x7b, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x31, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a,\n\t0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12,\n\t0x2d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,\n\t0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,\n\t0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75,\n\t0x0a, 0x10, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x12, 0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x72, 0x65,\n\t0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75,\n\t0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x6e, 0x72,\n\t0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73,\n\t0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,\n\t0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65,\n\t0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x12, 0x34, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x47, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7e, 0x0a,\n\t0x13, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x68, 0x69, 0x70, 0x73, 0x12, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x46, 0x69,\n\t0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70,\n\t0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a,\n\t0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,\n\t0x2d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,\n\t0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,\n\t0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60,\n\t0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65,\n\t0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53,\n\t0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,\n\t0x12, 0x60, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,\n\t0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x12, 0x7e, 0x0a, 0x13, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65,\n\t0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52,\n\t0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x63, 0x63,\n\t0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,\n\t0x73, 0x65, 0x42, 0xdd, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x42, 0x0b, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,\n\t0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2,\n\t0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15,\n\t0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63,\n\t0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50,\n\t0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_engine_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_engine_proto_rawDescData = file_sourcenetwork_acp_core_engine_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_engine_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_engine_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_engine_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_engine_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_engine_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_engine_proto_msgTypes = make([]protoimpl.MessageInfo, 34)\nvar file_sourcenetwork_acp_core_engine_proto_goTypes = []interface{}{\n\t(*CreatePolicyRequest)(nil),           // 0: sourcenetwork.acp_core.CreatePolicyRequest\n\t(*CreatePolicyResponse)(nil),          // 1: sourcenetwork.acp_core.CreatePolicyResponse\n\t(*SetRelationshipRequest)(nil),        // 2: sourcenetwork.acp_core.SetRelationshipRequest\n\t(*SetRelationshipResponse)(nil),       // 3: sourcenetwork.acp_core.SetRelationshipResponse\n\t(*DeleteRelationshipRequest)(nil),     // 4: sourcenetwork.acp_core.DeleteRelationshipRequest\n\t(*DeleteRelationshipResponse)(nil),    // 5: sourcenetwork.acp_core.DeleteRelationshipResponse\n\t(*RegisterObjectRequest)(nil),         // 6: sourcenetwork.acp_core.RegisterObjectRequest\n\t(*RegisterObjectResponse)(nil),        // 7: sourcenetwork.acp_core.RegisterObjectResponse\n\t(*UnregisterObjectRequest)(nil),       // 8: sourcenetwork.acp_core.UnregisterObjectRequest\n\t(*UnregisterObjectResponse)(nil),      // 9: sourcenetwork.acp_core.UnregisterObjectResponse\n\t(*GetObjectRegistrationRequest)(nil),  // 10: sourcenetwork.acp_core.GetObjectRegistrationRequest\n\t(*GetObjectRegistrationResponse)(nil), // 11: sourcenetwork.acp_core.GetObjectRegistrationResponse\n\t(*FilterRelationshipsRequest)(nil),    // 12: sourcenetwork.acp_core.FilterRelationshipsRequest\n\t(*FilterRelationshipsResponse)(nil),   // 13: sourcenetwork.acp_core.FilterRelationshipsResponse\n\t(*GetPolicyRequest)(nil),              // 14: sourcenetwork.acp_core.GetPolicyRequest\n\t(*GetPolicyResponse)(nil),             // 15: sourcenetwork.acp_core.GetPolicyResponse\n\t(*ListPoliciesRequest)(nil),           // 16: sourcenetwork.acp_core.ListPoliciesRequest\n\t(*ListPoliciesResponse)(nil),          // 17: sourcenetwork.acp_core.ListPoliciesResponse\n\t(*DeletePolicyRequest)(nil),           // 18: sourcenetwork.acp_core.DeletePolicyRequest\n\t(*DeletePolicyResponse)(nil),          // 19: sourcenetwork.acp_core.DeletePolicyResponse\n\t(*TransferObjectRequest)(nil),         // 20: sourcenetwork.acp_core.TransferObjectRequest\n\t(*TransferObjectResponse)(nil),        // 21: sourcenetwork.acp_core.TransferObjectResponse\n\t(*ValidatePolicyRequest)(nil),         // 22: sourcenetwork.acp_core.ValidatePolicyRequest\n\t(*ValidatePolicyResponse)(nil),        // 23: sourcenetwork.acp_core.ValidatePolicyResponse\n\t(*SetParamsRequest)(nil),              // 24: sourcenetwork.acp_core.SetParamsRequest\n\t(*SetParamsResponse)(nil),             // 25: sourcenetwork.acp_core.SetParamsResponse\n\t(*GetParamsRequest)(nil),              // 26: sourcenetwork.acp_core.GetParamsRequest\n\t(*GetParamsResponse)(nil),             // 27: sourcenetwork.acp_core.GetParamsResponse\n\t(*VerifyAccessRequestRequest)(nil),    // 28: sourcenetwork.acp_core.VerifyAccessRequestRequest\n\t(*VerifyAccessRequestResponse)(nil),   // 29: sourcenetwork.acp_core.VerifyAccessRequestResponse\n\tnil,                                   // 30: sourcenetwork.acp_core.CreatePolicyRequest.MetadataEntry\n\tnil,                                   // 31: sourcenetwork.acp_core.CreatePolicyResponse.MetadataEntry\n\tnil,                                   // 32: sourcenetwork.acp_core.SetRelationshipRequest.MetadataEntry\n\tnil,                                   // 33: sourcenetwork.acp_core.RegisterObjectRequest.MetadataEntry\n\t(PolicyMarshalingType)(0),             // 34: sourcenetwork.acp_core.PolicyMarshalingType\n\t(*timestamppb.Timestamp)(nil),         // 35: google.protobuf.Timestamp\n\t(*Policy)(nil),                        // 36: sourcenetwork.acp_core.Policy\n\t(*Relationship)(nil),                  // 37: sourcenetwork.acp_core.Relationship\n\t(*RelationshipRecord)(nil),            // 38: sourcenetwork.acp_core.RelationshipRecord\n\t(*Object)(nil),                        // 39: sourcenetwork.acp_core.Object\n\t(RegistrationResult)(0),               // 40: sourcenetwork.acp_core.RegistrationResult\n\t(*RelationshipSelector)(nil),          // 41: sourcenetwork.acp_core.RelationshipSelector\n\t(*Actor)(nil),                         // 42: sourcenetwork.acp_core.Actor\n\t(*Params)(nil),                        // 43: sourcenetwork.acp_core.Params\n\t(*AccessRequest)(nil),                 // 44: sourcenetwork.acp_core.AccessRequest\n}\nvar file_sourcenetwork_acp_core_engine_proto_depIdxs = []int32{\n\t34, // 0: sourcenetwork.acp_core.CreatePolicyRequest.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t35, // 1: sourcenetwork.acp_core.CreatePolicyRequest.creation_time:type_name -> google.protobuf.Timestamp\n\t30, // 2: sourcenetwork.acp_core.CreatePolicyRequest.metadata:type_name -> sourcenetwork.acp_core.CreatePolicyRequest.MetadataEntry\n\t36, // 3: sourcenetwork.acp_core.CreatePolicyResponse.policy:type_name -> sourcenetwork.acp_core.Policy\n\t31, // 4: sourcenetwork.acp_core.CreatePolicyResponse.metadata:type_name -> sourcenetwork.acp_core.CreatePolicyResponse.MetadataEntry\n\t35, // 5: sourcenetwork.acp_core.SetRelationshipRequest.creation_time:type_name -> google.protobuf.Timestamp\n\t37, // 6: sourcenetwork.acp_core.SetRelationshipRequest.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t32, // 7: sourcenetwork.acp_core.SetRelationshipRequest.metadata:type_name -> sourcenetwork.acp_core.SetRelationshipRequest.MetadataEntry\n\t38, // 8: sourcenetwork.acp_core.SetRelationshipResponse.record:type_name -> sourcenetwork.acp_core.RelationshipRecord\n\t37, // 9: sourcenetwork.acp_core.DeleteRelationshipRequest.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t39, // 10: sourcenetwork.acp_core.RegisterObjectRequest.object:type_name -> sourcenetwork.acp_core.Object\n\t35, // 11: sourcenetwork.acp_core.RegisterObjectRequest.creation_time:type_name -> google.protobuf.Timestamp\n\t33, // 12: sourcenetwork.acp_core.RegisterObjectRequest.metadata:type_name -> sourcenetwork.acp_core.RegisterObjectRequest.MetadataEntry\n\t40, // 13: sourcenetwork.acp_core.RegisterObjectResponse.result:type_name -> sourcenetwork.acp_core.RegistrationResult\n\t38, // 14: sourcenetwork.acp_core.RegisterObjectResponse.record:type_name -> sourcenetwork.acp_core.RelationshipRecord\n\t39, // 15: sourcenetwork.acp_core.UnregisterObjectRequest.object:type_name -> sourcenetwork.acp_core.Object\n\t39, // 16: sourcenetwork.acp_core.GetObjectRegistrationRequest.object:type_name -> sourcenetwork.acp_core.Object\n\t41, // 17: sourcenetwork.acp_core.FilterRelationshipsRequest.selector:type_name -> sourcenetwork.acp_core.RelationshipSelector\n\t38, // 18: sourcenetwork.acp_core.FilterRelationshipsResponse.records:type_name -> sourcenetwork.acp_core.RelationshipRecord\n\t36, // 19: sourcenetwork.acp_core.GetPolicyResponse.policy:type_name -> sourcenetwork.acp_core.Policy\n\t36, // 20: sourcenetwork.acp_core.ListPoliciesResponse.policies:type_name -> sourcenetwork.acp_core.Policy\n\t39, // 21: sourcenetwork.acp_core.TransferObjectRequest.object:type_name -> sourcenetwork.acp_core.Object\n\t42, // 22: sourcenetwork.acp_core.TransferObjectRequest.new_owner:type_name -> sourcenetwork.acp_core.Actor\n\t34, // 23: sourcenetwork.acp_core.ValidatePolicyRequest.marshal_type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t43, // 24: sourcenetwork.acp_core.SetParamsRequest.params:type_name -> sourcenetwork.acp_core.Params\n\t43, // 25: sourcenetwork.acp_core.GetParamsResponse.params:type_name -> sourcenetwork.acp_core.Params\n\t44, // 26: sourcenetwork.acp_core.VerifyAccessRequestRequest.access_request:type_name -> sourcenetwork.acp_core.AccessRequest\n\t0,  // 27: sourcenetwork.acp_core.ACPEngine.CreatePolicy:input_type -> sourcenetwork.acp_core.CreatePolicyRequest\n\t14, // 28: sourcenetwork.acp_core.ACPEngine.GetPolicy:input_type -> sourcenetwork.acp_core.GetPolicyRequest\n\t16, // 29: sourcenetwork.acp_core.ACPEngine.ListPolicies:input_type -> sourcenetwork.acp_core.ListPoliciesRequest\n\t18, // 30: sourcenetwork.acp_core.ACPEngine.DeletePolicy:input_type -> sourcenetwork.acp_core.DeletePolicyRequest\n\t2,  // 31: sourcenetwork.acp_core.ACPEngine.SetRelationship:input_type -> sourcenetwork.acp_core.SetRelationshipRequest\n\t4,  // 32: sourcenetwork.acp_core.ACPEngine.DeleteRelationship:input_type -> sourcenetwork.acp_core.DeleteRelationshipRequest\n\t6,  // 33: sourcenetwork.acp_core.ACPEngine.RegisterObject:input_type -> sourcenetwork.acp_core.RegisterObjectRequest\n\t8,  // 34: sourcenetwork.acp_core.ACPEngine.UnregisterObject:input_type -> sourcenetwork.acp_core.UnregisterObjectRequest\n\t20, // 35: sourcenetwork.acp_core.ACPEngine.TransferObject:input_type -> sourcenetwork.acp_core.TransferObjectRequest\n\t10, // 36: sourcenetwork.acp_core.ACPEngine.GetObjectRegistration:input_type -> sourcenetwork.acp_core.GetObjectRegistrationRequest\n\t12, // 37: sourcenetwork.acp_core.ACPEngine.FilterRelationships:input_type -> sourcenetwork.acp_core.FilterRelationshipsRequest\n\t22, // 38: sourcenetwork.acp_core.ACPEngine.ValidatePolicy:input_type -> sourcenetwork.acp_core.ValidatePolicyRequest\n\t24, // 39: sourcenetwork.acp_core.ACPEngine.SetParams:input_type -> sourcenetwork.acp_core.SetParamsRequest\n\t26, // 40: sourcenetwork.acp_core.ACPEngine.GetParams:input_type -> sourcenetwork.acp_core.GetParamsRequest\n\t28, // 41: sourcenetwork.acp_core.ACPEngine.VerifyAccessRequest:input_type -> sourcenetwork.acp_core.VerifyAccessRequestRequest\n\t1,  // 42: sourcenetwork.acp_core.ACPEngine.CreatePolicy:output_type -> sourcenetwork.acp_core.CreatePolicyResponse\n\t15, // 43: sourcenetwork.acp_core.ACPEngine.GetPolicy:output_type -> sourcenetwork.acp_core.GetPolicyResponse\n\t17, // 44: sourcenetwork.acp_core.ACPEngine.ListPolicies:output_type -> sourcenetwork.acp_core.ListPoliciesResponse\n\t19, // 45: sourcenetwork.acp_core.ACPEngine.DeletePolicy:output_type -> sourcenetwork.acp_core.DeletePolicyResponse\n\t3,  // 46: sourcenetwork.acp_core.ACPEngine.SetRelationship:output_type -> sourcenetwork.acp_core.SetRelationshipResponse\n\t5,  // 47: sourcenetwork.acp_core.ACPEngine.DeleteRelationship:output_type -> sourcenetwork.acp_core.DeleteRelationshipResponse\n\t7,  // 48: sourcenetwork.acp_core.ACPEngine.RegisterObject:output_type -> sourcenetwork.acp_core.RegisterObjectResponse\n\t9,  // 49: sourcenetwork.acp_core.ACPEngine.UnregisterObject:output_type -> sourcenetwork.acp_core.UnregisterObjectResponse\n\t21, // 50: sourcenetwork.acp_core.ACPEngine.TransferObject:output_type -> sourcenetwork.acp_core.TransferObjectResponse\n\t11, // 51: sourcenetwork.acp_core.ACPEngine.GetObjectRegistration:output_type -> sourcenetwork.acp_core.GetObjectRegistrationResponse\n\t13, // 52: sourcenetwork.acp_core.ACPEngine.FilterRelationships:output_type -> sourcenetwork.acp_core.FilterRelationshipsResponse\n\t23, // 53: sourcenetwork.acp_core.ACPEngine.ValidatePolicy:output_type -> sourcenetwork.acp_core.ValidatePolicyResponse\n\t25, // 54: sourcenetwork.acp_core.ACPEngine.SetParams:output_type -> sourcenetwork.acp_core.SetParamsResponse\n\t27, // 55: sourcenetwork.acp_core.ACPEngine.GetParams:output_type -> sourcenetwork.acp_core.GetParamsResponse\n\t29, // 56: sourcenetwork.acp_core.ACPEngine.VerifyAccessRequest:output_type -> sourcenetwork.acp_core.VerifyAccessRequestResponse\n\t42, // [42:57] is the sub-list for method output_type\n\t27, // [27:42] is the sub-list for method input_type\n\t27, // [27:27] is the sub-list for extension type_name\n\t27, // [27:27] is the sub-list for extension extendee\n\t0,  // [0:27] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_engine_proto_init() }\nfunc file_sourcenetwork_acp_core_engine_proto_init() {\n\tif File_sourcenetwork_acp_core_engine_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_access_decision_proto_init()\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tfile_sourcenetwork_acp_core_system_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CreatePolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*CreatePolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetRelationshipRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetRelationshipResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeleteRelationshipRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeleteRelationshipResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegisterObjectRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RegisterObjectResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnregisterObjectRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*UnregisterObjectResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetObjectRegistrationRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetObjectRegistrationResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FilterRelationshipsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*FilterRelationshipsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetPolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetPolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ListPoliciesRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ListPoliciesResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeletePolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*DeletePolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*TransferObjectRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*TransferObjectResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ValidatePolicyRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ValidatePolicyResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SetParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetParamsRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*GetParamsResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*VerifyAccessRequestRequest); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_engine_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*VerifyAccessRequestResponse); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_engine_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   34,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   1,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_engine_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_engine_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_engine_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_engine_proto = out.File\n\tfile_sourcenetwork_acp_core_engine_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_engine_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_engine_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/engine_grpc.pb.go",
    "content": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.3.0\n// - protoc             (unknown)\n// source: sourcenetwork/acp_core/engine.proto\n\npackage acp_core\n\nimport (\n\tcontext \"context\"\n\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n)\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\n// Requires gRPC-Go v1.32.0 or later.\nconst _ = grpc.SupportPackageIsVersion7\n\nconst (\n\tACPEngine_CreatePolicy_FullMethodName          = \"/sourcenetwork.acp_core.ACPEngine/CreatePolicy\"\n\tACPEngine_GetPolicy_FullMethodName             = \"/sourcenetwork.acp_core.ACPEngine/GetPolicy\"\n\tACPEngine_ListPolicies_FullMethodName          = \"/sourcenetwork.acp_core.ACPEngine/ListPolicies\"\n\tACPEngine_DeletePolicy_FullMethodName          = \"/sourcenetwork.acp_core.ACPEngine/DeletePolicy\"\n\tACPEngine_SetRelationship_FullMethodName       = \"/sourcenetwork.acp_core.ACPEngine/SetRelationship\"\n\tACPEngine_DeleteRelationship_FullMethodName    = \"/sourcenetwork.acp_core.ACPEngine/DeleteRelationship\"\n\tACPEngine_RegisterObject_FullMethodName        = \"/sourcenetwork.acp_core.ACPEngine/RegisterObject\"\n\tACPEngine_UnregisterObject_FullMethodName      = \"/sourcenetwork.acp_core.ACPEngine/UnregisterObject\"\n\tACPEngine_TransferObject_FullMethodName        = \"/sourcenetwork.acp_core.ACPEngine/TransferObject\"\n\tACPEngine_GetObjectRegistration_FullMethodName = \"/sourcenetwork.acp_core.ACPEngine/GetObjectRegistration\"\n\tACPEngine_FilterRelationships_FullMethodName   = \"/sourcenetwork.acp_core.ACPEngine/FilterRelationships\"\n\tACPEngine_ValidatePolicy_FullMethodName        = \"/sourcenetwork.acp_core.ACPEngine/ValidatePolicy\"\n\tACPEngine_SetParams_FullMethodName             = \"/sourcenetwork.acp_core.ACPEngine/SetParams\"\n\tACPEngine_GetParams_FullMethodName             = \"/sourcenetwork.acp_core.ACPEngine/GetParams\"\n\tACPEngine_VerifyAccessRequest_FullMethodName   = \"/sourcenetwork.acp_core.ACPEngine/VerifyAccessRequest\"\n)\n\n// ACPEngineClient is the client API for ACPEngine service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.\ntype ACPEngineClient interface {\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*CreatePolicyResponse, error)\n\t// GetPolicy returns a Policy with the given ID\n\tGetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error)\n\t// ListPolicies returns a set of Policies registered in the system\n\tListPolicies(ctx context.Context, in *ListPoliciesRequest, opts ...grpc.CallOption) (*ListPoliciesResponse, error)\n\t// DeletePolicy removes a Policy and all relationships and objects registered within it.\n\tDeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*DeletePolicyResponse, error)\n\t// SetRelationship creates or updates a Relationship within a Policy\n\t// A Relationship is a statement which ties together an object and a subject with a \"relation\",\n\t// which means the set of high level rules defined in the Policy will apply to these entities.\n\tSetRelationship(ctx context.Context, in *SetRelationshipRequest, opts ...grpc.CallOption) (*SetRelationshipResponse, error)\n\t// DelereRelationship removes a Relationship from a Policy.\n\t// If the Relationship was not found in a Policy, this Cmd is a no-op.\n\tDeleteRelationship(ctx context.Context, in *DeleteRelationshipRequest, opts ...grpc.CallOption) (*DeleteRelationshipResponse, error)\n\t// RegisterObject creates a special kind of Relationship within a Policy which ties\n\t// the msg's Actor as the owner of the msg's Object.\n\t// The Owner has complete control over the set of subjects that are related to their Object,\n\t// giving them autonomy to share the object and revoke acces to the object,\n\t// much like owners in a Discretionary Access Control model.\n\t//\n\t// Attempting to register a previously registered Object is an error,\n\t// Object IDs are therefore assumed to be unique within a Policy.\n\tRegisterObject(ctx context.Context, in *RegisterObjectRequest, opts ...grpc.CallOption) (*RegisterObjectResponse, error)\n\t// UnregisterObject let's an Object's Owner effectively \"unshare\" their Object.\n\t// This method wipes all Relationships referencing the given Object.\n\t//\n\t// A caveat is that after removing the Relationships, a record of the original Object owner\n\t// is maintained to prevent an \"ownership hijack\" attack.\n\t//\n\t// Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n\t// Eve wants to access Foo but was not given permission to, they could \"hijack\" Bob's object by waiting for Bob to Unregister Foo,\n\t// then submitting a RegisterObject Cmd, effectively becoming Foo's new owner.\n\t// If Charlie has a copy of the object, Eve could convince Charlie to share his copy, granting Eve access to Foo.\n\t// The previous scenario where an unauthorized user is able to claim ownership to data previously unaccessible to them\n\t// is an \"ownership hijack\".\n\tUnregisterObject(ctx context.Context, in *UnregisterObjectRequest, opts ...grpc.CallOption) (*UnregisterObjectResponse, error)\n\t// TransferObject updates an Object's Owner to some other actor in the system, after which the original owner\n\t// loses autonomy over the object and cannot create or modify relationships.\n\tTransferObject(ctx context.Context, in *TransferObjectRequest, opts ...grpc.CallOption) (*TransferObjectResponse, error)\n\t// GetObjectRegistration returns the registration status of an Object\n\tGetObjectRegistration(ctx context.Context, in *GetObjectRegistrationRequest, opts ...grpc.CallOption) (*GetObjectRegistrationResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(ctx context.Context, in *FilterRelationshipsRequest, opts ...grpc.CallOption) (*FilterRelationshipsResponse, error)\n\tValidatePolicy(ctx context.Context, in *ValidatePolicyRequest, opts ...grpc.CallOption) (*ValidatePolicyResponse, error)\n\tSetParams(ctx context.Context, in *SetParamsRequest, opts ...grpc.CallOption) (*SetParamsResponse, error)\n\tGetParams(ctx context.Context, in *GetParamsRequest, opts ...grpc.CallOption) (*GetParamsResponse, error)\n\tVerifyAccessRequest(ctx context.Context, in *VerifyAccessRequestRequest, opts ...grpc.CallOption) (*VerifyAccessRequestResponse, error)\n}\n\ntype aCPEngineClient struct {\n\tcc grpc.ClientConnInterface\n}\n\nfunc NewACPEngineClient(cc grpc.ClientConnInterface) ACPEngineClient {\n\treturn &aCPEngineClient{cc}\n}\n\nfunc (c *aCPEngineClient) CreatePolicy(ctx context.Context, in *CreatePolicyRequest, opts ...grpc.CallOption) (*CreatePolicyResponse, error) {\n\tout := new(CreatePolicyResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_CreatePolicy_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) GetPolicy(ctx context.Context, in *GetPolicyRequest, opts ...grpc.CallOption) (*GetPolicyResponse, error) {\n\tout := new(GetPolicyResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_GetPolicy_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) ListPolicies(ctx context.Context, in *ListPoliciesRequest, opts ...grpc.CallOption) (*ListPoliciesResponse, error) {\n\tout := new(ListPoliciesResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_ListPolicies_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) DeletePolicy(ctx context.Context, in *DeletePolicyRequest, opts ...grpc.CallOption) (*DeletePolicyResponse, error) {\n\tout := new(DeletePolicyResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_DeletePolicy_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) SetRelationship(ctx context.Context, in *SetRelationshipRequest, opts ...grpc.CallOption) (*SetRelationshipResponse, error) {\n\tout := new(SetRelationshipResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_SetRelationship_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) DeleteRelationship(ctx context.Context, in *DeleteRelationshipRequest, opts ...grpc.CallOption) (*DeleteRelationshipResponse, error) {\n\tout := new(DeleteRelationshipResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_DeleteRelationship_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) RegisterObject(ctx context.Context, in *RegisterObjectRequest, opts ...grpc.CallOption) (*RegisterObjectResponse, error) {\n\tout := new(RegisterObjectResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_RegisterObject_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) UnregisterObject(ctx context.Context, in *UnregisterObjectRequest, opts ...grpc.CallOption) (*UnregisterObjectResponse, error) {\n\tout := new(UnregisterObjectResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_UnregisterObject_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) TransferObject(ctx context.Context, in *TransferObjectRequest, opts ...grpc.CallOption) (*TransferObjectResponse, error) {\n\tout := new(TransferObjectResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_TransferObject_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) GetObjectRegistration(ctx context.Context, in *GetObjectRegistrationRequest, opts ...grpc.CallOption) (*GetObjectRegistrationResponse, error) {\n\tout := new(GetObjectRegistrationResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_GetObjectRegistration_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) FilterRelationships(ctx context.Context, in *FilterRelationshipsRequest, opts ...grpc.CallOption) (*FilterRelationshipsResponse, error) {\n\tout := new(FilterRelationshipsResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_FilterRelationships_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) ValidatePolicy(ctx context.Context, in *ValidatePolicyRequest, opts ...grpc.CallOption) (*ValidatePolicyResponse, error) {\n\tout := new(ValidatePolicyResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_ValidatePolicy_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) SetParams(ctx context.Context, in *SetParamsRequest, opts ...grpc.CallOption) (*SetParamsResponse, error) {\n\tout := new(SetParamsResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_SetParams_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) GetParams(ctx context.Context, in *GetParamsRequest, opts ...grpc.CallOption) (*GetParamsResponse, error) {\n\tout := new(GetParamsResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_GetParams_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *aCPEngineClient) VerifyAccessRequest(ctx context.Context, in *VerifyAccessRequestRequest, opts ...grpc.CallOption) (*VerifyAccessRequestResponse, error) {\n\tout := new(VerifyAccessRequestResponse)\n\terr := c.cc.Invoke(ctx, ACPEngine_VerifyAccessRequest_FullMethodName, in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// ACPEngineServer is the server API for ACPEngine service.\n// All implementations must embed UnimplementedACPEngineServer\n// for forward compatibility\ntype ACPEngineServer interface {\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(context.Context, *CreatePolicyRequest) (*CreatePolicyResponse, error)\n\t// GetPolicy returns a Policy with the given ID\n\tGetPolicy(context.Context, *GetPolicyRequest) (*GetPolicyResponse, error)\n\t// ListPolicies returns a set of Policies registered in the system\n\tListPolicies(context.Context, *ListPoliciesRequest) (*ListPoliciesResponse, error)\n\t// DeletePolicy removes a Policy and all relationships and objects registered within it.\n\tDeletePolicy(context.Context, *DeletePolicyRequest) (*DeletePolicyResponse, error)\n\t// SetRelationship creates or updates a Relationship within a Policy\n\t// A Relationship is a statement which ties together an object and a subject with a \"relation\",\n\t// which means the set of high level rules defined in the Policy will apply to these entities.\n\tSetRelationship(context.Context, *SetRelationshipRequest) (*SetRelationshipResponse, error)\n\t// DelereRelationship removes a Relationship from a Policy.\n\t// If the Relationship was not found in a Policy, this Cmd is a no-op.\n\tDeleteRelationship(context.Context, *DeleteRelationshipRequest) (*DeleteRelationshipResponse, error)\n\t// RegisterObject creates a special kind of Relationship within a Policy which ties\n\t// the msg's Actor as the owner of the msg's Object.\n\t// The Owner has complete control over the set of subjects that are related to their Object,\n\t// giving them autonomy to share the object and revoke acces to the object,\n\t// much like owners in a Discretionary Access Control model.\n\t//\n\t// Attempting to register a previously registered Object is an error,\n\t// Object IDs are therefore assumed to be unique within a Policy.\n\tRegisterObject(context.Context, *RegisterObjectRequest) (*RegisterObjectResponse, error)\n\t// UnregisterObject let's an Object's Owner effectively \"unshare\" their Object.\n\t// This method wipes all Relationships referencing the given Object.\n\t//\n\t// A caveat is that after removing the Relationships, a record of the original Object owner\n\t// is maintained to prevent an \"ownership hijack\" attack.\n\t//\n\t// Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n\t// Eve wants to access Foo but was not given permission to, they could \"hijack\" Bob's object by waiting for Bob to Unregister Foo,\n\t// then submitting a RegisterObject Cmd, effectively becoming Foo's new owner.\n\t// If Charlie has a copy of the object, Eve could convince Charlie to share his copy, granting Eve access to Foo.\n\t// The previous scenario where an unauthorized user is able to claim ownership to data previously unaccessible to them\n\t// is an \"ownership hijack\".\n\tUnregisterObject(context.Context, *UnregisterObjectRequest) (*UnregisterObjectResponse, error)\n\t// TransferObject updates an Object's Owner to some other actor in the system, after which the original owner\n\t// loses autonomy over the object and cannot create or modify relationships.\n\tTransferObject(context.Context, *TransferObjectRequest) (*TransferObjectResponse, error)\n\t// GetObjectRegistration returns the registration status of an Object\n\tGetObjectRegistration(context.Context, *GetObjectRegistrationRequest) (*GetObjectRegistrationResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(context.Context, *FilterRelationshipsRequest) (*FilterRelationshipsResponse, error)\n\tValidatePolicy(context.Context, *ValidatePolicyRequest) (*ValidatePolicyResponse, error)\n\tSetParams(context.Context, *SetParamsRequest) (*SetParamsResponse, error)\n\tGetParams(context.Context, *GetParamsRequest) (*GetParamsResponse, error)\n\tVerifyAccessRequest(context.Context, *VerifyAccessRequestRequest) (*VerifyAccessRequestResponse, error)\n\tmustEmbedUnimplementedACPEngineServer()\n}\n\n// UnimplementedACPEngineServer must be embedded to have forward compatible implementations.\ntype UnimplementedACPEngineServer struct {\n}\n\nfunc (UnimplementedACPEngineServer) CreatePolicy(context.Context, *CreatePolicyRequest) (*CreatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreatePolicy not implemented\")\n}\nfunc (UnimplementedACPEngineServer) GetPolicy(context.Context, *GetPolicyRequest) (*GetPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GetPolicy not implemented\")\n}\nfunc (UnimplementedACPEngineServer) ListPolicies(context.Context, *ListPoliciesRequest) (*ListPoliciesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ListPolicies not implemented\")\n}\nfunc (UnimplementedACPEngineServer) DeletePolicy(context.Context, *DeletePolicyRequest) (*DeletePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DeletePolicy not implemented\")\n}\nfunc (UnimplementedACPEngineServer) SetRelationship(context.Context, *SetRelationshipRequest) (*SetRelationshipResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method SetRelationship not implemented\")\n}\nfunc (UnimplementedACPEngineServer) DeleteRelationship(context.Context, *DeleteRelationshipRequest) (*DeleteRelationshipResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DeleteRelationship not implemented\")\n}\nfunc (UnimplementedACPEngineServer) RegisterObject(context.Context, *RegisterObjectRequest) (*RegisterObjectResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegisterObject not implemented\")\n}\nfunc (UnimplementedACPEngineServer) UnregisterObject(context.Context, *UnregisterObjectRequest) (*UnregisterObjectResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UnregisterObject not implemented\")\n}\nfunc (UnimplementedACPEngineServer) TransferObject(context.Context, *TransferObjectRequest) (*TransferObjectResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method TransferObject not implemented\")\n}\nfunc (UnimplementedACPEngineServer) GetObjectRegistration(context.Context, *GetObjectRegistrationRequest) (*GetObjectRegistrationResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GetObjectRegistration not implemented\")\n}\nfunc (UnimplementedACPEngineServer) FilterRelationships(context.Context, *FilterRelationshipsRequest) (*FilterRelationshipsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method FilterRelationships not implemented\")\n}\nfunc (UnimplementedACPEngineServer) ValidatePolicy(context.Context, *ValidatePolicyRequest) (*ValidatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ValidatePolicy not implemented\")\n}\nfunc (UnimplementedACPEngineServer) SetParams(context.Context, *SetParamsRequest) (*SetParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method SetParams not implemented\")\n}\nfunc (UnimplementedACPEngineServer) GetParams(context.Context, *GetParamsRequest) (*GetParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GetParams not implemented\")\n}\nfunc (UnimplementedACPEngineServer) VerifyAccessRequest(context.Context, *VerifyAccessRequestRequest) (*VerifyAccessRequestResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method VerifyAccessRequest not implemented\")\n}\nfunc (UnimplementedACPEngineServer) mustEmbedUnimplementedACPEngineServer() {}\n\n// UnsafeACPEngineServer may be embedded to opt out of forward compatibility for this service.\n// Use of this interface is not recommended, as added methods to ACPEngineServer will\n// result in compilation errors.\ntype UnsafeACPEngineServer interface {\n\tmustEmbedUnimplementedACPEngineServer()\n}\n\nfunc RegisterACPEngineServer(s grpc.ServiceRegistrar, srv ACPEngineServer) {\n\ts.RegisterService(&ACPEngine_ServiceDesc, srv)\n}\n\nfunc _ACPEngine_CreatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(CreatePolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).CreatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_CreatePolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).CreatePolicy(ctx, req.(*CreatePolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_GetPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(GetPolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).GetPolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_GetPolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).GetPolicy(ctx, req.(*GetPolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_ListPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(ListPoliciesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).ListPolicies(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_ListPolicies_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).ListPolicies(ctx, req.(*ListPoliciesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_DeletePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DeletePolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).DeletePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_DeletePolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).DeletePolicy(ctx, req.(*DeletePolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_SetRelationship_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(SetRelationshipRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).SetRelationship(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_SetRelationship_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).SetRelationship(ctx, req.(*SetRelationshipRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_DeleteRelationship_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DeleteRelationshipRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).DeleteRelationship(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_DeleteRelationship_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).DeleteRelationship(ctx, req.(*DeleteRelationshipRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_RegisterObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(RegisterObjectRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).RegisterObject(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_RegisterObject_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).RegisterObject(ctx, req.(*RegisterObjectRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_UnregisterObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UnregisterObjectRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).UnregisterObject(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_UnregisterObject_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).UnregisterObject(ctx, req.(*UnregisterObjectRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_TransferObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(TransferObjectRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).TransferObject(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_TransferObject_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).TransferObject(ctx, req.(*TransferObjectRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_GetObjectRegistration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(GetObjectRegistrationRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).GetObjectRegistration(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_GetObjectRegistration_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).GetObjectRegistration(ctx, req.(*GetObjectRegistrationRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_FilterRelationships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(FilterRelationshipsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).FilterRelationships(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_FilterRelationships_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).FilterRelationships(ctx, req.(*FilterRelationshipsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_ValidatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(ValidatePolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).ValidatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_ValidatePolicy_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).ValidatePolicy(ctx, req.(*ValidatePolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_SetParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(SetParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).SetParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_SetParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).SetParams(ctx, req.(*SetParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_GetParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(GetParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).GetParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_GetParams_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).GetParams(ctx, req.(*GetParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _ACPEngine_VerifyAccessRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(VerifyAccessRequestRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(ACPEngineServer).VerifyAccessRequest(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: ACPEngine_VerifyAccessRequest_FullMethodName,\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(ACPEngineServer).VerifyAccessRequest(ctx, req.(*VerifyAccessRequestRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\n// ACPEngine_ServiceDesc is the grpc.ServiceDesc for ACPEngine service.\n// It's only intended for direct use with grpc.RegisterService,\n// and not to be introspected or modified (even as a copy)\nvar ACPEngine_ServiceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcenetwork.acp_core.ACPEngine\",\n\tHandlerType: (*ACPEngineServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"CreatePolicy\",\n\t\t\tHandler:    _ACPEngine_CreatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GetPolicy\",\n\t\t\tHandler:    _ACPEngine_GetPolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ListPolicies\",\n\t\t\tHandler:    _ACPEngine_ListPolicies_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DeletePolicy\",\n\t\t\tHandler:    _ACPEngine_DeletePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"SetRelationship\",\n\t\t\tHandler:    _ACPEngine_SetRelationship_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DeleteRelationship\",\n\t\t\tHandler:    _ACPEngine_DeleteRelationship_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegisterObject\",\n\t\t\tHandler:    _ACPEngine_RegisterObject_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UnregisterObject\",\n\t\t\tHandler:    _ACPEngine_UnregisterObject_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"TransferObject\",\n\t\t\tHandler:    _ACPEngine_TransferObject_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GetObjectRegistration\",\n\t\t\tHandler:    _ACPEngine_GetObjectRegistration_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"FilterRelationships\",\n\t\t\tHandler:    _ACPEngine_FilterRelationships_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ValidatePolicy\",\n\t\t\tHandler:    _ACPEngine_ValidatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"SetParams\",\n\t\t\tHandler:    _ACPEngine_SetParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GetParams\",\n\t\t\tHandler:    _ACPEngine_GetParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"VerifyAccessRequest\",\n\t\t\tHandler:    _ACPEngine_VerifyAccessRequest_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcenetwork/acp_core/engine.proto\",\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/errors/error_type.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage errors\n\nimport (\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/errors/error_type.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// ErrorType represent families of errors which acp_core can throw.\n// Concrete errors are refined with additional context data and explanatory messages\ntype ErrorType int32\n\nconst (\n\t// UNKNOWN is a catch all bucket for unspecified errors (represents an internal error)\n\tErrorType_UNKNOWN ErrorType = 0\n\t// INTERNAL is a general base error for IO or unexpected system errors\n\tErrorType_INTERNAL ErrorType = 1\n\t// UNAUTHENTICATED signals caller was not authenticated while it was required\n\tErrorType_UNAUTHENTICATED ErrorType = 2\n\t// UNAUTHORIZED is a general error for operations that were\n\t// rejected due to insufficient permission unauthorized\n\tErrorType_UNAUTHORIZED ErrorType = 3\n\t// BAD_INPUT is a general base error for input errors\n\tErrorType_BAD_INPUT ErrorType = 4\n\t// OPERATION_FORBIDDEN signals that the operation was not executed\n\t// as that would violate part of the Access Control system\n\tErrorType_OPERATION_FORBIDDEN ErrorType = 5\n\t// NOT_FOUND signals that the requested entity was not found in the system\n\tErrorType_NOT_FOUND ErrorType = 6\n)\n\n// Enum value maps for ErrorType.\nvar (\n\tErrorType_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"INTERNAL\",\n\t\t2: \"UNAUTHENTICATED\",\n\t\t3: \"UNAUTHORIZED\",\n\t\t4: \"BAD_INPUT\",\n\t\t5: \"OPERATION_FORBIDDEN\",\n\t\t6: \"NOT_FOUND\",\n\t}\n\tErrorType_value = map[string]int32{\n\t\t\"UNKNOWN\":             0,\n\t\t\"INTERNAL\":            1,\n\t\t\"UNAUTHENTICATED\":     2,\n\t\t\"UNAUTHORIZED\":        3,\n\t\t\"BAD_INPUT\":           4,\n\t\t\"OPERATION_FORBIDDEN\": 5,\n\t\t\"NOT_FOUND\":           6,\n\t}\n)\n\nfunc (x ErrorType) Enum() *ErrorType {\n\tp := new(ErrorType)\n\t*p = x\n\treturn p\n}\n\nfunc (x ErrorType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (ErrorType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcenetwork_acp_core_errors_error_type_proto_enumTypes[0].Descriptor()\n}\n\nfunc (ErrorType) Type() protoreflect.EnumType {\n\treturn &file_sourcenetwork_acp_core_errors_error_type_proto_enumTypes[0]\n}\n\nfunc (x ErrorType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use ErrorType.Descriptor instead.\nfunc (ErrorType) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_errors_error_type_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_sourcenetwork_acp_core_errors_error_type_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_errors_error_type_proto_rawDesc = []byte{\n\t0x0a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2f,\n\t0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x1d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2a,\n\t0x84, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a,\n\t0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e,\n\t0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x41, 0x55,\n\t0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a,\n\t0x0c, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x03, 0x12,\n\t0x0d, 0x0a, 0x09, 0x42, 0x41, 0x44, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x17,\n\t0x0a, 0x13, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x42,\n\t0x49, 0x44, 0x44, 0x45, 0x4e, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46,\n\t0x4f, 0x55, 0x4e, 0x44, 0x10, 0x06, 0x42, 0x8b, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x0e, 0x45, 0x72,\n\t0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44,\n\t0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68,\n\t0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x72,\n\t0x72, 0x6f, 0x72, 0x73, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x45, 0xaa, 0x02, 0x1c, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xca, 0x02, 0x1c, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72,\n\t0x65, 0x5c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xe2, 0x02, 0x28, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0x5c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0xea, 0x02, 0x1e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x45, 0x72,\n\t0x72, 0x6f, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_rawDescData = file_sourcenetwork_acp_core_errors_error_type_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_errors_error_type_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_errors_error_type_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_errors_error_type_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_errors_error_type_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_errors_error_type_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcenetwork_acp_core_errors_error_type_proto_goTypes = []interface{}{\n\t(ErrorType)(0), // 0: sourcenetwork.acp_core.errors.ErrorType\n}\nvar file_sourcenetwork_acp_core_errors_error_type_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_errors_error_type_proto_init() }\nfunc file_sourcenetwork_acp_core_errors_error_type_proto_init() {\n\tif File_sourcenetwork_acp_core_errors_error_type_proto != nil {\n\t\treturn\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_errors_error_type_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   0,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_errors_error_type_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_errors_error_type_proto_depIdxs,\n\t\tEnumInfos:         file_sourcenetwork_acp_core_errors_error_type_proto_enumTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_errors_error_type_proto = out.File\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_errors_error_type_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/event.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar (\n\tmd_EventPolicyCreated             protoreflect.MessageDescriptor\n\tfd_EventPolicyCreated_policy_id   protoreflect.FieldDescriptor\n\tfd_EventPolicyCreated_policy_name protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_event_proto_init()\n\tmd_EventPolicyCreated = File_sourcenetwork_acp_core_event_proto.Messages().ByName(\"EventPolicyCreated\")\n\tfd_EventPolicyCreated_policy_id = md_EventPolicyCreated.Fields().ByName(\"policy_id\")\n\tfd_EventPolicyCreated_policy_name = md_EventPolicyCreated.Fields().ByName(\"policy_name\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventPolicyCreated)(nil)\n\ntype fastReflection_EventPolicyCreated EventPolicyCreated\n\nfunc (x *EventPolicyCreated) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventPolicyCreated)(x)\n}\n\nfunc (x *EventPolicyCreated) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventPolicyCreated_messageType fastReflection_EventPolicyCreated_messageType\nvar _ protoreflect.MessageType = fastReflection_EventPolicyCreated_messageType{}\n\ntype fastReflection_EventPolicyCreated_messageType struct{}\n\nfunc (x fastReflection_EventPolicyCreated_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventPolicyCreated)(nil)\n}\nfunc (x fastReflection_EventPolicyCreated_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventPolicyCreated)\n}\nfunc (x fastReflection_EventPolicyCreated_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventPolicyCreated\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventPolicyCreated) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventPolicyCreated\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventPolicyCreated) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventPolicyCreated_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventPolicyCreated) New() protoreflect.Message {\n\treturn new(fastReflection_EventPolicyCreated)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventPolicyCreated) Interface() protoreflect.ProtoMessage {\n\treturn (*EventPolicyCreated)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventPolicyCreated) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_EventPolicyCreated_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyName != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyName)\n\t\tif !f(fd_EventPolicyCreated_policy_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventPolicyCreated) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\treturn x.PolicyName != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPolicyCreated) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\tx.PolicyName = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventPolicyCreated) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\tvalue := x.PolicyName\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPolicyCreated) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\tx.PolicyName = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPolicyCreated) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.EventPolicyCreated is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\tpanic(fmt.Errorf(\"field policy_name of message sourcenetwork.acp_core.EventPolicyCreated is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventPolicyCreated) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventPolicyCreated.policy_name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventPolicyCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventPolicyCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventPolicyCreated) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.EventPolicyCreated\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventPolicyCreated) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventPolicyCreated) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventPolicyCreated) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventPolicyCreated) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventPolicyCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyName)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventPolicyCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.PolicyName) > 0 {\n\t\t\ti -= len(x.PolicyName)\n\t\t\tcopy(dAtA[i:], x.PolicyName)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyName)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventPolicyCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventPolicyCreated: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventPolicyCreated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyName\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyName = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventAccessDecisionCreated             protoreflect.MessageDescriptor\n\tfd_EventAccessDecisionCreated_creator     protoreflect.FieldDescriptor\n\tfd_EventAccessDecisionCreated_policy_id   protoreflect.FieldDescriptor\n\tfd_EventAccessDecisionCreated_decision_id protoreflect.FieldDescriptor\n\tfd_EventAccessDecisionCreated_actor       protoreflect.FieldDescriptor\n\tfd_EventAccessDecisionCreated_actor_did   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_event_proto_init()\n\tmd_EventAccessDecisionCreated = File_sourcenetwork_acp_core_event_proto.Messages().ByName(\"EventAccessDecisionCreated\")\n\tfd_EventAccessDecisionCreated_creator = md_EventAccessDecisionCreated.Fields().ByName(\"creator\")\n\tfd_EventAccessDecisionCreated_policy_id = md_EventAccessDecisionCreated.Fields().ByName(\"policy_id\")\n\tfd_EventAccessDecisionCreated_decision_id = md_EventAccessDecisionCreated.Fields().ByName(\"decision_id\")\n\tfd_EventAccessDecisionCreated_actor = md_EventAccessDecisionCreated.Fields().ByName(\"actor\")\n\tfd_EventAccessDecisionCreated_actor_did = md_EventAccessDecisionCreated.Fields().ByName(\"actor_did\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventAccessDecisionCreated)(nil)\n\ntype fastReflection_EventAccessDecisionCreated EventAccessDecisionCreated\n\nfunc (x *EventAccessDecisionCreated) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventAccessDecisionCreated)(x)\n}\n\nfunc (x *EventAccessDecisionCreated) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventAccessDecisionCreated_messageType fastReflection_EventAccessDecisionCreated_messageType\nvar _ protoreflect.MessageType = fastReflection_EventAccessDecisionCreated_messageType{}\n\ntype fastReflection_EventAccessDecisionCreated_messageType struct{}\n\nfunc (x fastReflection_EventAccessDecisionCreated_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventAccessDecisionCreated)(nil)\n}\nfunc (x fastReflection_EventAccessDecisionCreated_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventAccessDecisionCreated)\n}\nfunc (x fastReflection_EventAccessDecisionCreated_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventAccessDecisionCreated\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventAccessDecisionCreated) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventAccessDecisionCreated\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventAccessDecisionCreated) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventAccessDecisionCreated_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventAccessDecisionCreated) New() protoreflect.Message {\n\treturn new(fastReflection_EventAccessDecisionCreated)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventAccessDecisionCreated) Interface() protoreflect.ProtoMessage {\n\treturn (*EventAccessDecisionCreated)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventAccessDecisionCreated) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Creator != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Creator)\n\t\tif !f(fd_EventAccessDecisionCreated_creator, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_EventAccessDecisionCreated_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.DecisionId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.DecisionId)\n\t\tif !f(fd_EventAccessDecisionCreated_decision_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_EventAccessDecisionCreated_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ActorDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ActorDid)\n\t\tif !f(fd_EventAccessDecisionCreated_actor_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventAccessDecisionCreated) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\treturn x.Creator != \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\treturn x.DecisionId != \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\treturn x.ActorDid != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventAccessDecisionCreated) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\tx.Creator = \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\tx.DecisionId = \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\tx.ActorDid = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventAccessDecisionCreated) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\tvalue := x.Creator\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\tvalue := x.DecisionId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\tvalue := x.ActorDid\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventAccessDecisionCreated) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\tx.Creator = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\tx.DecisionId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\tx.ActorDid = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventAccessDecisionCreated) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\tpanic(fmt.Errorf(\"field creator of message sourcenetwork.acp_core.EventAccessDecisionCreated is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.EventAccessDecisionCreated is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\tpanic(fmt.Errorf(\"field decision_id of message sourcenetwork.acp_core.EventAccessDecisionCreated is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcenetwork.acp_core.EventAccessDecisionCreated is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\tpanic(fmt.Errorf(\"field actor_did of message sourcenetwork.acp_core.EventAccessDecisionCreated is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventAccessDecisionCreated) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.creator\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.decision_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventAccessDecisionCreated.actor_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventAccessDecisionCreated\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventAccessDecisionCreated does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventAccessDecisionCreated) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.EventAccessDecisionCreated\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventAccessDecisionCreated) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventAccessDecisionCreated) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventAccessDecisionCreated) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventAccessDecisionCreated) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventAccessDecisionCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Creator)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.DecisionId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ActorDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventAccessDecisionCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ActorDid) > 0 {\n\t\t\ti -= len(x.ActorDid)\n\t\t\tcopy(dAtA[i:], x.ActorDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ActorDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.DecisionId) > 0 {\n\t\t\ti -= len(x.DecisionId)\n\t\t\tcopy(dAtA[i:], x.DecisionId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.DecisionId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Creator) > 0 {\n\t\t\ti -= len(x.Creator)\n\t\t\tcopy(dAtA[i:], x.Creator)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Creator)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventAccessDecisionCreated)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventAccessDecisionCreated: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventAccessDecisionCreated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field DecisionId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.DecisionId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ActorDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ActorDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventObjectRegistered                 protoreflect.MessageDescriptor\n\tfd_EventObjectRegistered_actor           protoreflect.FieldDescriptor\n\tfd_EventObjectRegistered_policy_id       protoreflect.FieldDescriptor\n\tfd_EventObjectRegistered_object_resource protoreflect.FieldDescriptor\n\tfd_EventObjectRegistered_object_id       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_event_proto_init()\n\tmd_EventObjectRegistered = File_sourcenetwork_acp_core_event_proto.Messages().ByName(\"EventObjectRegistered\")\n\tfd_EventObjectRegistered_actor = md_EventObjectRegistered.Fields().ByName(\"actor\")\n\tfd_EventObjectRegistered_policy_id = md_EventObjectRegistered.Fields().ByName(\"policy_id\")\n\tfd_EventObjectRegistered_object_resource = md_EventObjectRegistered.Fields().ByName(\"object_resource\")\n\tfd_EventObjectRegistered_object_id = md_EventObjectRegistered.Fields().ByName(\"object_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventObjectRegistered)(nil)\n\ntype fastReflection_EventObjectRegistered EventObjectRegistered\n\nfunc (x *EventObjectRegistered) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventObjectRegistered)(x)\n}\n\nfunc (x *EventObjectRegistered) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventObjectRegistered_messageType fastReflection_EventObjectRegistered_messageType\nvar _ protoreflect.MessageType = fastReflection_EventObjectRegistered_messageType{}\n\ntype fastReflection_EventObjectRegistered_messageType struct{}\n\nfunc (x fastReflection_EventObjectRegistered_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventObjectRegistered)(nil)\n}\nfunc (x fastReflection_EventObjectRegistered_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventObjectRegistered)\n}\nfunc (x fastReflection_EventObjectRegistered_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventObjectRegistered\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventObjectRegistered) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventObjectRegistered\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventObjectRegistered) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventObjectRegistered_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventObjectRegistered) New() protoreflect.Message {\n\treturn new(fastReflection_EventObjectRegistered)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventObjectRegistered) Interface() protoreflect.ProtoMessage {\n\treturn (*EventObjectRegistered)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventObjectRegistered) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_EventObjectRegistered_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_EventObjectRegistered_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ObjectResource != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ObjectResource)\n\t\tif !f(fd_EventObjectRegistered_object_resource, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ObjectId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ObjectId)\n\t\tif !f(fd_EventObjectRegistered_object_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventObjectRegistered) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\treturn x.ObjectResource != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\treturn x.ObjectId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectRegistered) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\tx.ObjectResource = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\tx.ObjectId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventObjectRegistered) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\tvalue := x.ObjectResource\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\tvalue := x.ObjectId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectRegistered) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\tx.ObjectResource = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\tx.ObjectId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectRegistered) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcenetwork.acp_core.EventObjectRegistered is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.EventObjectRegistered is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\tpanic(fmt.Errorf(\"field object_resource of message sourcenetwork.acp_core.EventObjectRegistered is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\tpanic(fmt.Errorf(\"field object_id of message sourcenetwork.acp_core.EventObjectRegistered is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventObjectRegistered) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_resource\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectRegistered.object_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectRegistered\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectRegistered does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventObjectRegistered) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.EventObjectRegistered\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventObjectRegistered) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectRegistered) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventObjectRegistered) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventObjectRegistered) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventObjectRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ObjectResource)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ObjectId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventObjectRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ObjectId) > 0 {\n\t\t\ti -= len(x.ObjectId)\n\t\t\tcopy(dAtA[i:], x.ObjectId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ObjectId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.ObjectResource) > 0 {\n\t\t\ti -= len(x.ObjectResource)\n\t\t\tcopy(dAtA[i:], x.ObjectResource)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ObjectResource)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventObjectRegistered)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventObjectRegistered: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventObjectRegistered: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ObjectResource\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ObjectResource = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ObjectId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ObjectId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_EventObjectUnarchived                 protoreflect.MessageDescriptor\n\tfd_EventObjectUnarchived_actor           protoreflect.FieldDescriptor\n\tfd_EventObjectUnarchived_policy_id       protoreflect.FieldDescriptor\n\tfd_EventObjectUnarchived_object_resource protoreflect.FieldDescriptor\n\tfd_EventObjectUnarchived_object_id       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_event_proto_init()\n\tmd_EventObjectUnarchived = File_sourcenetwork_acp_core_event_proto.Messages().ByName(\"EventObjectUnarchived\")\n\tfd_EventObjectUnarchived_actor = md_EventObjectUnarchived.Fields().ByName(\"actor\")\n\tfd_EventObjectUnarchived_policy_id = md_EventObjectUnarchived.Fields().ByName(\"policy_id\")\n\tfd_EventObjectUnarchived_object_resource = md_EventObjectUnarchived.Fields().ByName(\"object_resource\")\n\tfd_EventObjectUnarchived_object_id = md_EventObjectUnarchived.Fields().ByName(\"object_id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_EventObjectUnarchived)(nil)\n\ntype fastReflection_EventObjectUnarchived EventObjectUnarchived\n\nfunc (x *EventObjectUnarchived) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_EventObjectUnarchived)(x)\n}\n\nfunc (x *EventObjectUnarchived) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_EventObjectUnarchived_messageType fastReflection_EventObjectUnarchived_messageType\nvar _ protoreflect.MessageType = fastReflection_EventObjectUnarchived_messageType{}\n\ntype fastReflection_EventObjectUnarchived_messageType struct{}\n\nfunc (x fastReflection_EventObjectUnarchived_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_EventObjectUnarchived)(nil)\n}\nfunc (x fastReflection_EventObjectUnarchived_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_EventObjectUnarchived)\n}\nfunc (x fastReflection_EventObjectUnarchived_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventObjectUnarchived\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_EventObjectUnarchived) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_EventObjectUnarchived\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_EventObjectUnarchived) Type() protoreflect.MessageType {\n\treturn _fastReflection_EventObjectUnarchived_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_EventObjectUnarchived) New() protoreflect.Message {\n\treturn new(fastReflection_EventObjectUnarchived)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_EventObjectUnarchived) Interface() protoreflect.ProtoMessage {\n\treturn (*EventObjectUnarchived)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_EventObjectUnarchived) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Actor != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Actor)\n\t\tif !f(fd_EventObjectUnarchived_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_EventObjectUnarchived_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ObjectResource != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ObjectResource)\n\t\tif !f(fd_EventObjectUnarchived_object_resource, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ObjectId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ObjectId)\n\t\tif !f(fd_EventObjectUnarchived_object_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_EventObjectUnarchived) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\treturn x.Actor != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\treturn x.ObjectResource != \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\treturn x.ObjectId != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectUnarchived) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\tx.Actor = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\tx.ObjectResource = \"\"\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\tx.ObjectId = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_EventObjectUnarchived) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\tvalue := x.ObjectResource\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\tvalue := x.ObjectId\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectUnarchived) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\tx.Actor = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\tx.ObjectResource = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\tx.ObjectId = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectUnarchived) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\tpanic(fmt.Errorf(\"field actor of message sourcenetwork.acp_core.EventObjectUnarchived is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.EventObjectUnarchived is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\tpanic(fmt.Errorf(\"field object_resource of message sourcenetwork.acp_core.EventObjectUnarchived is not mutable\"))\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\tpanic(fmt.Errorf(\"field object_id of message sourcenetwork.acp_core.EventObjectUnarchived is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_EventObjectUnarchived) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.actor\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_resource\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.EventObjectUnarchived.object_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.EventObjectUnarchived\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.EventObjectUnarchived does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_EventObjectUnarchived) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.EventObjectUnarchived\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_EventObjectUnarchived) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_EventObjectUnarchived) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_EventObjectUnarchived) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_EventObjectUnarchived) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*EventObjectUnarchived)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Actor)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ObjectResource)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.ObjectId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventObjectUnarchived)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.ObjectId) > 0 {\n\t\t\ti -= len(x.ObjectId)\n\t\t\tcopy(dAtA[i:], x.ObjectId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ObjectId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.ObjectResource) > 0 {\n\t\t\ti -= len(x.ObjectResource)\n\t\t\tcopy(dAtA[i:], x.ObjectResource)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ObjectResource)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Actor) > 0 {\n\t\t\ti -= len(x.Actor)\n\t\t\tcopy(dAtA[i:], x.Actor)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Actor)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*EventObjectUnarchived)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventObjectUnarchived: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: EventObjectUnarchived: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ObjectResource\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ObjectResource = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ObjectId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ObjectId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/event.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype EventPolicyCreated struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId   string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tPolicyName string `protobuf:\"bytes,3,opt,name=policy_name,json=policyName,proto3\" json:\"policy_name,omitempty\"`\n}\n\nfunc (x *EventPolicyCreated) Reset() {\n\t*x = EventPolicyCreated{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventPolicyCreated) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventPolicyCreated) ProtoMessage() {}\n\n// Deprecated: Use EventPolicyCreated.ProtoReflect.Descriptor instead.\nfunc (*EventPolicyCreated) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_event_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *EventPolicyCreated) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventPolicyCreated) GetPolicyName() string {\n\tif x != nil {\n\t\treturn x.PolicyName\n\t}\n\treturn \"\"\n}\n\ntype EventAccessDecisionCreated struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tCreator    string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId   string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tDecisionId string `protobuf:\"bytes,3,opt,name=decision_id,json=decisionId,proto3\" json:\"decision_id,omitempty\"`\n\tActor      string `protobuf:\"bytes,4,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\tActorDid   string `protobuf:\"bytes,5,opt,name=actor_did,json=actorDid,proto3\" json:\"actor_did,omitempty\"`\n}\n\nfunc (x *EventAccessDecisionCreated) Reset() {\n\t*x = EventAccessDecisionCreated{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventAccessDecisionCreated) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventAccessDecisionCreated) ProtoMessage() {}\n\n// Deprecated: Use EventAccessDecisionCreated.ProtoReflect.Descriptor instead.\nfunc (*EventAccessDecisionCreated) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_event_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *EventAccessDecisionCreated) GetCreator() string {\n\tif x != nil {\n\t\treturn x.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventAccessDecisionCreated) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventAccessDecisionCreated) GetDecisionId() string {\n\tif x != nil {\n\t\treturn x.DecisionId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventAccessDecisionCreated) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventAccessDecisionCreated) GetActorDid() string {\n\tif x != nil {\n\t\treturn x.ActorDid\n\t}\n\treturn \"\"\n}\n\ntype EventObjectRegistered struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tActor          string `protobuf:\"bytes,1,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\tPolicyId       string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObjectResource string `protobuf:\"bytes,3,opt,name=object_resource,json=objectResource,proto3\" json:\"object_resource,omitempty\"`\n\tObjectId       string `protobuf:\"bytes,4,opt,name=object_id,json=objectId,proto3\" json:\"object_id,omitempty\"`\n}\n\nfunc (x *EventObjectRegistered) Reset() {\n\t*x = EventObjectRegistered{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventObjectRegistered) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventObjectRegistered) ProtoMessage() {}\n\n// Deprecated: Use EventObjectRegistered.ProtoReflect.Descriptor instead.\nfunc (*EventObjectRegistered) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_event_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *EventObjectRegistered) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectRegistered) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectRegistered) GetObjectResource() string {\n\tif x != nil {\n\t\treturn x.ObjectResource\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectRegistered) GetObjectId() string {\n\tif x != nil {\n\t\treturn x.ObjectId\n\t}\n\treturn \"\"\n}\n\ntype EventObjectUnarchived struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tActor          string `protobuf:\"bytes,1,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\tPolicyId       string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObjectResource string `protobuf:\"bytes,3,opt,name=object_resource,json=objectResource,proto3\" json:\"object_resource,omitempty\"`\n\tObjectId       string `protobuf:\"bytes,4,opt,name=object_id,json=objectId,proto3\" json:\"object_id,omitempty\"`\n}\n\nfunc (x *EventObjectUnarchived) Reset() {\n\t*x = EventObjectUnarchived{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_event_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *EventObjectUnarchived) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*EventObjectUnarchived) ProtoMessage() {}\n\n// Deprecated: Use EventObjectUnarchived.ProtoReflect.Descriptor instead.\nfunc (*EventObjectUnarchived) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_event_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *EventObjectUnarchived) GetActor() string {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectUnarchived) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectUnarchived) GetObjectResource() string {\n\tif x != nil {\n\t\treturn x.ObjectResource\n\t}\n\treturn \"\"\n}\n\nfunc (x *EventObjectUnarchived) GetObjectId() string {\n\tif x != nil {\n\t\treturn x.ObjectId\n\t}\n\treturn \"\"\n}\n\nvar File_sourcenetwork_acp_core_event_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_event_proto_rawDesc = []byte{\n\t0x0a, 0x22, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x52, 0x0a, 0x12,\n\t0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74,\n\t0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18,\n\t0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12,\n\t0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65,\n\t0x22, 0xa7, 0x01, 0x0a, 0x1a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,\n\t0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12,\n\t0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69,\n\t0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x63,\n\t0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a,\n\t0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x15, 0x45,\n\t0x76, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,\n\t0x65, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x90, 0x01,\n\t0x0a, 0x15, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x61,\n\t0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a,\n\t0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64,\n\t0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42,\n\t0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67,\n\t0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75,\n\t0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53,\n\t0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,\n\t0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62,\n\t0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_event_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_event_proto_rawDescData = file_sourcenetwork_acp_core_event_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_event_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_event_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_event_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_event_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4)\nvar file_sourcenetwork_acp_core_event_proto_goTypes = []interface{}{\n\t(*EventPolicyCreated)(nil),         // 0: sourcenetwork.acp_core.EventPolicyCreated\n\t(*EventAccessDecisionCreated)(nil), // 1: sourcenetwork.acp_core.EventAccessDecisionCreated\n\t(*EventObjectRegistered)(nil),      // 2: sourcenetwork.acp_core.EventObjectRegistered\n\t(*EventObjectUnarchived)(nil),      // 3: sourcenetwork.acp_core.EventObjectUnarchived\n}\nvar file_sourcenetwork_acp_core_event_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_event_proto_init() }\nfunc file_sourcenetwork_acp_core_event_proto_init() {\n\tif File_sourcenetwork_acp_core_event_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventPolicyCreated); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventAccessDecisionCreated); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventObjectRegistered); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*EventObjectUnarchived); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_event_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   4,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_event_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_event_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_event_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_event_proto = out.File\n\tfile_sourcenetwork_acp_core_event_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_event_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_event_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/parsing.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar (\n\tmd_ParserMessage              protoreflect.MessageDescriptor\n\tfd_ParserMessage_message      protoreflect.FieldDescriptor\n\tfd_ParserMessage_sevirity     protoreflect.FieldDescriptor\n\tfd_ParserMessage_line_start   protoreflect.FieldDescriptor\n\tfd_ParserMessage_column_start protoreflect.FieldDescriptor\n\tfd_ParserMessage_line_end     protoreflect.FieldDescriptor\n\tfd_ParserMessage_column_end   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_parsing_proto_init()\n\tmd_ParserMessage = File_sourcenetwork_acp_core_parsing_proto.Messages().ByName(\"ParserMessage\")\n\tfd_ParserMessage_message = md_ParserMessage.Fields().ByName(\"message\")\n\tfd_ParserMessage_sevirity = md_ParserMessage.Fields().ByName(\"sevirity\")\n\tfd_ParserMessage_line_start = md_ParserMessage.Fields().ByName(\"line_start\")\n\tfd_ParserMessage_column_start = md_ParserMessage.Fields().ByName(\"column_start\")\n\tfd_ParserMessage_line_end = md_ParserMessage.Fields().ByName(\"line_end\")\n\tfd_ParserMessage_column_end = md_ParserMessage.Fields().ByName(\"column_end\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ParserMessage)(nil)\n\ntype fastReflection_ParserMessage ParserMessage\n\nfunc (x *ParserMessage) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ParserMessage)(x)\n}\n\nfunc (x *ParserMessage) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_parsing_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ParserMessage_messageType fastReflection_ParserMessage_messageType\nvar _ protoreflect.MessageType = fastReflection_ParserMessage_messageType{}\n\ntype fastReflection_ParserMessage_messageType struct{}\n\nfunc (x fastReflection_ParserMessage_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ParserMessage)(nil)\n}\nfunc (x fastReflection_ParserMessage_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ParserMessage)\n}\nfunc (x fastReflection_ParserMessage_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ParserMessage\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ParserMessage) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ParserMessage\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ParserMessage) Type() protoreflect.MessageType {\n\treturn _fastReflection_ParserMessage_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ParserMessage) New() protoreflect.Message {\n\treturn new(fastReflection_ParserMessage)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ParserMessage) Interface() protoreflect.ProtoMessage {\n\treturn (*ParserMessage)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ParserMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Message != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Message)\n\t\tif !f(fd_ParserMessage_message, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Sevirity != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Sevirity)\n\t\tif !f(fd_ParserMessage_sevirity, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LineStart != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.LineStart)\n\t\tif !f(fd_ParserMessage_line_start, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ColumnStart != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.ColumnStart)\n\t\tif !f(fd_ParserMessage_column_start, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.LineEnd != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.LineEnd)\n\t\tif !f(fd_ParserMessage_line_end, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ColumnEnd != uint64(0) {\n\t\tvalue := protoreflect.ValueOfUint64(x.ColumnEnd)\n\t\tif !f(fd_ParserMessage_column_end, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ParserMessage) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\treturn x.Message != \"\"\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\treturn x.Sevirity != \"\"\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\treturn x.LineStart != uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\treturn x.ColumnStart != uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\treturn x.LineEnd != uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\treturn x.ColumnEnd != uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserMessage) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\tx.Message = \"\"\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\tx.Sevirity = \"\"\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\tx.LineStart = uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\tx.ColumnStart = uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\tx.LineEnd = uint64(0)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\tx.ColumnEnd = uint64(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ParserMessage) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\tvalue := x.Message\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\tvalue := x.Sevirity\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\tvalue := x.LineStart\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\tvalue := x.ColumnStart\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\tvalue := x.LineEnd\n\t\treturn protoreflect.ValueOfUint64(value)\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\tvalue := x.ColumnEnd\n\t\treturn protoreflect.ValueOfUint64(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserMessage) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\tx.Message = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\tx.Sevirity = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\tx.LineStart = value.Uint()\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\tx.ColumnStart = value.Uint()\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\tx.LineEnd = value.Uint()\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\tx.ColumnEnd = value.Uint()\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserMessage) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\tpanic(fmt.Errorf(\"field message of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\tpanic(fmt.Errorf(\"field sevirity of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\tpanic(fmt.Errorf(\"field line_start of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\tpanic(fmt.Errorf(\"field column_start of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\tpanic(fmt.Errorf(\"field line_end of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\tpanic(fmt.Errorf(\"field column_end of message sourcenetwork.acp_core.ParserMessage is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ParserMessage) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserMessage.message\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ParserMessage.sevirity\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_start\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_start\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.ParserMessage.line_end\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tcase \"sourcenetwork.acp_core.ParserMessage.column_end\":\n\t\treturn protoreflect.ValueOfUint64(uint64(0))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserMessage\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserMessage does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ParserMessage) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ParserMessage\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ParserMessage) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserMessage) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ParserMessage) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ParserMessage) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ParserMessage)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Message)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Sevirity)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.LineStart != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.LineStart))\n\t\t}\n\t\tif x.ColumnStart != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ColumnStart))\n\t\t}\n\t\tif x.LineEnd != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.LineEnd))\n\t\t}\n\t\tif x.ColumnEnd != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.ColumnEnd))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ParserMessage)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.ColumnEnd != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ColumnEnd))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x30\n\t\t}\n\t\tif x.LineEnd != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.LineEnd))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x28\n\t\t}\n\t\tif x.ColumnStart != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.ColumnStart))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.LineStart != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.LineStart))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x18\n\t\t}\n\t\tif len(x.Sevirity) > 0 {\n\t\t\ti -= len(x.Sevirity)\n\t\t\tcopy(dAtA[i:], x.Sevirity)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sevirity)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Message) > 0 {\n\t\t\ti -= len(x.Message)\n\t\t\tcopy(dAtA[i:], x.Message)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Message)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ParserMessage)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ParserMessage: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ParserMessage: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Message = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Sevirity\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Sevirity = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LineStart\", wireType)\n\t\t\t\t}\n\t\t\t\tx.LineStart = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.LineStart |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ColumnStart\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ColumnStart = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ColumnStart |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 5:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field LineEnd\", wireType)\n\t\t\t\t}\n\t\t\t\tx.LineEnd = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.LineEnd |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase 6:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ColumnEnd\", wireType)\n\t\t\t\t}\n\t\t\t\tx.ColumnEnd = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.ColumnEnd |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_ParserReport_2_list)(nil)\n\ntype _ParserReport_2_list struct {\n\tlist *[]*ParserMessage\n}\n\nfunc (x *_ParserReport_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_ParserReport_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_ParserReport_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ParserMessage)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_ParserReport_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ParserMessage)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_ParserReport_2_list) AppendMutable() protoreflect.Value {\n\tv := new(ParserMessage)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ParserReport_2_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_ParserReport_2_list) NewElement() protoreflect.Value {\n\tv := new(ParserMessage)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ParserReport_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_ParserReport              protoreflect.MessageDescriptor\n\tfd_ParserReport_parser_input protoreflect.FieldDescriptor\n\tfd_ParserReport_messages     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_parsing_proto_init()\n\tmd_ParserReport = File_sourcenetwork_acp_core_parsing_proto.Messages().ByName(\"ParserReport\")\n\tfd_ParserReport_parser_input = md_ParserReport.Fields().ByName(\"parser_input\")\n\tfd_ParserReport_messages = md_ParserReport.Fields().ByName(\"messages\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ParserReport)(nil)\n\ntype fastReflection_ParserReport ParserReport\n\nfunc (x *ParserReport) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ParserReport)(x)\n}\n\nfunc (x *ParserReport) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_parsing_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ParserReport_messageType fastReflection_ParserReport_messageType\nvar _ protoreflect.MessageType = fastReflection_ParserReport_messageType{}\n\ntype fastReflection_ParserReport_messageType struct{}\n\nfunc (x fastReflection_ParserReport_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ParserReport)(nil)\n}\nfunc (x fastReflection_ParserReport_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ParserReport)\n}\nfunc (x fastReflection_ParserReport_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ParserReport\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ParserReport) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ParserReport\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ParserReport) Type() protoreflect.MessageType {\n\treturn _fastReflection_ParserReport_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ParserReport) New() protoreflect.Message {\n\treturn new(fastReflection_ParserReport)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ParserReport) Interface() protoreflect.ProtoMessage {\n\treturn (*ParserReport)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ParserReport) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.ParserInput != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ParserInput)\n\t\tif !f(fd_ParserReport_parser_input, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Messages) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_ParserReport_2_list{list: &x.Messages})\n\t\tif !f(fd_ParserReport_messages, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ParserReport) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\treturn x.ParserInput != \"\"\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\treturn len(x.Messages) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserReport) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\tx.ParserInput = \"\"\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\tx.Messages = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ParserReport) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\tvalue := x.ParserInput\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\tif len(x.Messages) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_ParserReport_2_list{})\n\t\t}\n\t\tlistValue := &_ParserReport_2_list{list: &x.Messages}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserReport) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\tx.ParserInput = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_ParserReport_2_list)\n\t\tx.Messages = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserReport) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\tif x.Messages == nil {\n\t\t\tx.Messages = []*ParserMessage{}\n\t\t}\n\t\tvalue := &_ParserReport_2_list{list: &x.Messages}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\tpanic(fmt.Errorf(\"field parser_input of message sourcenetwork.acp_core.ParserReport is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ParserReport) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ParserReport.parser_input\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ParserReport.messages\":\n\t\tlist := []*ParserMessage{}\n\t\treturn protoreflect.ValueOfList(&_ParserReport_2_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ParserReport\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ParserReport does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ParserReport) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ParserReport\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ParserReport) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ParserReport) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ParserReport) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ParserReport) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ParserReport)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.ParserInput)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Messages) > 0 {\n\t\t\tfor _, e := range x.Messages {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ParserReport)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Messages) > 0 {\n\t\t\tfor iNdEx := len(x.Messages) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Messages[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif len(x.ParserInput) > 0 {\n\t\t\ti -= len(x.ParserInput)\n\t\t\tcopy(dAtA[i:], x.ParserInput)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ParserInput)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ParserReport)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ParserReport: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ParserReport: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ParserInput\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ParserInput = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Messages\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Messages = append(x.Messages, &ParserMessage{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Messages[len(x.Messages)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/parsing.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\ntype Severity int32\n\nconst (\n\tSeverity_WARNING Severity = 0\n\tSeverity_ERROR   Severity = 1\n)\n\n// Enum value maps for Severity.\nvar (\n\tSeverity_name = map[int32]string{\n\t\t0: \"WARNING\",\n\t\t1: \"ERROR\",\n\t}\n\tSeverity_value = map[string]int32{\n\t\t\"WARNING\": 0,\n\t\t\"ERROR\":   1,\n\t}\n)\n\nfunc (x Severity) Enum() *Severity {\n\tp := new(Severity)\n\t*p = x\n\treturn p\n}\n\nfunc (x Severity) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (Severity) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcenetwork_acp_core_parsing_proto_enumTypes[0].Descriptor()\n}\n\nfunc (Severity) Type() protoreflect.EnumType {\n\treturn &file_sourcenetwork_acp_core_parsing_proto_enumTypes[0]\n}\n\nfunc (x Severity) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use Severity.Descriptor instead.\nfunc (Severity) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_parsing_proto_rawDescGZIP(), []int{0}\n}\n\n// ParserMessage models a message returned by a parser, which points\n// to a position in the given text input\ntype ParserMessage struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tMessage     string `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tSevirity    string `protobuf:\"bytes,2,opt,name=sevirity,proto3\" json:\"sevirity,omitempty\"`\n\tLineStart   uint64 `protobuf:\"varint,3,opt,name=line_start,json=lineStart,proto3\" json:\"line_start,omitempty\"`\n\tColumnStart uint64 `protobuf:\"varint,4,opt,name=column_start,json=columnStart,proto3\" json:\"column_start,omitempty\"`\n\tLineEnd     uint64 `protobuf:\"varint,5,opt,name=line_end,json=lineEnd,proto3\" json:\"line_end,omitempty\"`\n\tColumnEnd   uint64 `protobuf:\"varint,6,opt,name=column_end,json=columnEnd,proto3\" json:\"column_end,omitempty\"`\n}\n\nfunc (x *ParserMessage) Reset() {\n\t*x = ParserMessage{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_parsing_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ParserMessage) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ParserMessage) ProtoMessage() {}\n\n// Deprecated: Use ParserMessage.ProtoReflect.Descriptor instead.\nfunc (*ParserMessage) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_parsing_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *ParserMessage) GetMessage() string {\n\tif x != nil {\n\t\treturn x.Message\n\t}\n\treturn \"\"\n}\n\nfunc (x *ParserMessage) GetSevirity() string {\n\tif x != nil {\n\t\treturn x.Sevirity\n\t}\n\treturn \"\"\n}\n\nfunc (x *ParserMessage) GetLineStart() uint64 {\n\tif x != nil {\n\t\treturn x.LineStart\n\t}\n\treturn 0\n}\n\nfunc (x *ParserMessage) GetColumnStart() uint64 {\n\tif x != nil {\n\t\treturn x.ColumnStart\n\t}\n\treturn 0\n}\n\nfunc (x *ParserMessage) GetLineEnd() uint64 {\n\tif x != nil {\n\t\treturn x.LineEnd\n\t}\n\treturn 0\n}\n\nfunc (x *ParserMessage) GetColumnEnd() uint64 {\n\tif x != nil {\n\t\treturn x.ColumnEnd\n\t}\n\treturn 0\n}\n\n// ParserReport contains a set of messages returned while parsing some input\ntype ParserReport struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tParserInput string           `protobuf:\"bytes,1,opt,name=parser_input,json=parserInput,proto3\" json:\"parser_input,omitempty\"`\n\tMessages    []*ParserMessage `protobuf:\"bytes,2,rep,name=messages,proto3\" json:\"messages,omitempty\"`\n}\n\nfunc (x *ParserReport) Reset() {\n\t*x = ParserReport{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_parsing_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ParserReport) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ParserReport) ProtoMessage() {}\n\n// Deprecated: Use ParserReport.ProtoReflect.Descriptor instead.\nfunc (*ParserReport) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_parsing_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ParserReport) GetParserInput() string {\n\tif x != nil {\n\t\treturn x.ParserInput\n\t}\n\treturn \"\"\n}\n\nfunc (x *ParserReport) GetMessages() []*ParserMessage {\n\tif x != nil {\n\t\treturn x.Messages\n\t}\n\treturn nil\n}\n\nvar File_sourcenetwork_acp_core_parsing_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_parsing_proto_rawDesc = []byte{\n\t0x0a, 0x24, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67,\n\t0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xc1,\n\t0x01, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,\n\t0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65,\n\t0x76, 0x69, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65,\n\t0x76, 0x69, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73,\n\t0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x69, 0x6e, 0x65,\n\t0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f,\n\t0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x6f, 0x6c,\n\t0x75, 0x6d, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x65,\n\t0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x65,\n\t0x45, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x65, 0x6e,\n\t0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45,\n\t0x6e, 0x64, 0x22, 0x74, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f,\n\t0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x70,\n\t0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72,\n\t0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,\n\t0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08,\n\t0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2a, 0x22, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65,\n\t0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10,\n\t0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x42, 0xde, 0x01, 0x0a,\n\t0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0c, 0x50, 0x61, 0x72,\n\t0x73, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74,\n\t0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f,\n\t0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58,\n\t0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61,\n\t0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_parsing_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_parsing_proto_rawDescData = file_sourcenetwork_acp_core_parsing_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_parsing_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_parsing_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_parsing_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_parsing_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_parsing_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_parsing_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcenetwork_acp_core_parsing_proto_msgTypes = make([]protoimpl.MessageInfo, 2)\nvar file_sourcenetwork_acp_core_parsing_proto_goTypes = []interface{}{\n\t(Severity)(0),         // 0: sourcenetwork.acp_core.Severity\n\t(*ParserMessage)(nil), // 1: sourcenetwork.acp_core.ParserMessage\n\t(*ParserReport)(nil),  // 2: sourcenetwork.acp_core.ParserReport\n}\nvar file_sourcenetwork_acp_core_parsing_proto_depIdxs = []int32{\n\t1, // 0: sourcenetwork.acp_core.ParserReport.messages:type_name -> sourcenetwork.acp_core.ParserMessage\n\t1, // [1:1] is the sub-list for method output_type\n\t1, // [1:1] is the sub-list for method input_type\n\t1, // [1:1] is the sub-list for extension type_name\n\t1, // [1:1] is the sub-list for extension extendee\n\t0, // [0:1] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_parsing_proto_init() }\nfunc file_sourcenetwork_acp_core_parsing_proto_init() {\n\tif File_sourcenetwork_acp_core_parsing_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_parsing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ParserMessage); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_parsing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ParserReport); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_parsing_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   2,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_parsing_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_parsing_proto_depIdxs,\n\t\tEnumInfos:         file_sourcenetwork_acp_core_parsing_proto_enumTypes,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_parsing_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_parsing_proto = out.File\n\tfile_sourcenetwork_acp_core_parsing_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_parsing_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_parsing_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/policy.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar _ protoreflect.Map = (*_Policy_5_map)(nil)\n\ntype _Policy_5_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_Policy_5_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_Policy_5_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_Policy_5_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_Policy_5_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_Policy_5_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_Policy_5_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_Policy_5_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_Policy_5_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_Policy_5_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar _ protoreflect.List = (*_Policy_6_list)(nil)\n\ntype _Policy_6_list struct {\n\tlist *[]*Resource\n}\n\nfunc (x *_Policy_6_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Policy_6_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_Policy_6_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Resource)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Policy_6_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Resource)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Policy_6_list) AppendMutable() protoreflect.Value {\n\tv := new(Resource)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Policy_6_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Policy_6_list) NewElement() protoreflect.Value {\n\tv := new(Resource)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Policy_6_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_Policy                protoreflect.MessageDescriptor\n\tfd_Policy_id             protoreflect.FieldDescriptor\n\tfd_Policy_name           protoreflect.FieldDescriptor\n\tfd_Policy_description    protoreflect.FieldDescriptor\n\tfd_Policy_creation_time  protoreflect.FieldDescriptor\n\tfd_Policy_attributes     protoreflect.FieldDescriptor\n\tfd_Policy_resources      protoreflect.FieldDescriptor\n\tfd_Policy_actor_resource protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_Policy = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"Policy\")\n\tfd_Policy_id = md_Policy.Fields().ByName(\"id\")\n\tfd_Policy_name = md_Policy.Fields().ByName(\"name\")\n\tfd_Policy_description = md_Policy.Fields().ByName(\"description\")\n\tfd_Policy_creation_time = md_Policy.Fields().ByName(\"creation_time\")\n\tfd_Policy_attributes = md_Policy.Fields().ByName(\"attributes\")\n\tfd_Policy_resources = md_Policy.Fields().ByName(\"resources\")\n\tfd_Policy_actor_resource = md_Policy.Fields().ByName(\"actor_resource\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Policy)(nil)\n\ntype fastReflection_Policy Policy\n\nfunc (x *Policy) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Policy)(x)\n}\n\nfunc (x *Policy) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Policy_messageType fastReflection_Policy_messageType\nvar _ protoreflect.MessageType = fastReflection_Policy_messageType{}\n\ntype fastReflection_Policy_messageType struct{}\n\nfunc (x fastReflection_Policy_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Policy)(nil)\n}\nfunc (x fastReflection_Policy_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Policy)\n}\nfunc (x fastReflection_Policy_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Policy\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Policy) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Policy\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Policy) Type() protoreflect.MessageType {\n\treturn _fastReflection_Policy_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Policy) New() protoreflect.Message {\n\treturn new(fastReflection_Policy)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Policy) Interface() protoreflect.ProtoMessage {\n\treturn (*Policy)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Policy) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_Policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_Policy_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Description != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Description)\n\t\tif !f(fd_Policy_description, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_Policy_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Attributes) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_Policy_5_map{m: &x.Attributes})\n\t\tif !f(fd_Policy_attributes, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Resources) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Policy_6_list{list: &x.Resources})\n\t\tif !f(fd_Policy_resources, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ActorResource != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ActorResource.ProtoReflect())\n\t\tif !f(fd_Policy_actor_resource, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Policy) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\treturn x.Description != \"\"\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\treturn len(x.Attributes) != 0\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\treturn len(x.Resources) != 0\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\treturn x.ActorResource != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Policy) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\tx.Description = \"\"\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\tx.Attributes = nil\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\tx.Resources = nil\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\tx.ActorResource = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Policy) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\tvalue := x.Description\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\tif len(x.Attributes) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_Policy_5_map{})\n\t\t}\n\t\tmapValue := &_Policy_5_map{m: &x.Attributes}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\tif len(x.Resources) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Policy_6_list{})\n\t\t}\n\t\tlistValue := &_Policy_6_list{list: &x.Resources}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\tvalue := x.ActorResource\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Policy) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\tx.Description = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_Policy_5_map)\n\t\tx.Attributes = *cmv.m\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Policy_6_list)\n\t\tx.Resources = *clv.list\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\tx.ActorResource = value.Message().Interface().(*ActorResource)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Policy) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\tif x.Attributes == nil {\n\t\t\tx.Attributes = make(map[string]string)\n\t\t}\n\t\tvalue := &_Policy_5_map{m: &x.Attributes}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\tif x.Resources == nil {\n\t\t\tx.Resources = []*Resource{}\n\t\t}\n\t\tvalue := &_Policy_6_list{list: &x.Resources}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\tif x.ActorResource == nil {\n\t\t\tx.ActorResource = new(ActorResource)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ActorResource.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.Policy is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.Policy is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\tpanic(fmt.Errorf(\"field description of message sourcenetwork.acp_core.Policy is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Policy) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Policy.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Policy.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Policy.description\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Policy.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Policy.attributes\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_Policy_5_map{m: &m})\n\tcase \"sourcenetwork.acp_core.Policy.resources\":\n\t\tlist := []*Resource{}\n\t\treturn protoreflect.ValueOfList(&_Policy_6_list{list: &list})\n\tcase \"sourcenetwork.acp_core.Policy.actor_resource\":\n\t\tm := new(ActorResource)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Policy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Policy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Policy) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Policy\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Policy) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Policy) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Policy) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Policy) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Policy)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Description)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Attributes) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Attributes))\n\t\t\t\tfor k := range x.Attributes {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Attributes[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Attributes {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Resources) > 0 {\n\t\t\tfor _, e := range x.Resources {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.ActorResource != nil {\n\t\t\tl = options.Size(x.ActorResource)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Policy)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.ActorResource != nil {\n\t\t\tencoded, err := options.Marshal(x.ActorResource)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif len(x.Resources) > 0 {\n\t\t\tfor iNdEx := len(x.Resources) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Resources[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x32\n\t\t\t}\n\t\t}\n\t\tif len(x.Attributes) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForAttributes := make([]string, 0, len(x.Attributes))\n\t\t\t\tfor k := range x.Attributes {\n\t\t\t\t\tkeysForAttributes = append(keysForAttributes, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForAttributes, func(i, j int) bool {\n\t\t\t\t\treturn keysForAttributes[i] < keysForAttributes[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForAttributes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Attributes[string(keysForAttributes[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForAttributes[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Attributes {\n\t\t\t\t\tv := x.Attributes[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif len(x.Description) > 0 {\n\t\t\ti -= len(x.Description)\n\t\t\tcopy(dAtA[i:], x.Description)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Policy)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Policy: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Policy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Description\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Description = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Attributes\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Attributes == nil {\n\t\t\t\t\tx.Attributes = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Attributes[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Resources = append(x.Resources, &Resource{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Resources[len(x.Resources)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ActorResource\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ActorResource == nil {\n\t\t\t\t\tx.ActorResource = &ActorResource{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ActorResource); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_Resource_3_list)(nil)\n\ntype _Resource_3_list struct {\n\tlist *[]*Permission\n}\n\nfunc (x *_Resource_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Resource_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_Resource_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Permission)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Resource_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Permission)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Resource_3_list) AppendMutable() protoreflect.Value {\n\tv := new(Permission)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Resource_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Resource_3_list) NewElement() protoreflect.Value {\n\tv := new(Permission)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Resource_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_Resource_4_list)(nil)\n\ntype _Resource_4_list struct {\n\tlist *[]*Relation\n}\n\nfunc (x *_Resource_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Resource_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_Resource_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Relation)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Resource_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Relation)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Resource_4_list) AppendMutable() protoreflect.Value {\n\tv := new(Relation)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Resource_4_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Resource_4_list) NewElement() protoreflect.Value {\n\tv := new(Relation)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Resource_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_Resource             protoreflect.MessageDescriptor\n\tfd_Resource_name        protoreflect.FieldDescriptor\n\tfd_Resource_doc         protoreflect.FieldDescriptor\n\tfd_Resource_permissions protoreflect.FieldDescriptor\n\tfd_Resource_relations   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_Resource = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"Resource\")\n\tfd_Resource_name = md_Resource.Fields().ByName(\"name\")\n\tfd_Resource_doc = md_Resource.Fields().ByName(\"doc\")\n\tfd_Resource_permissions = md_Resource.Fields().ByName(\"permissions\")\n\tfd_Resource_relations = md_Resource.Fields().ByName(\"relations\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Resource)(nil)\n\ntype fastReflection_Resource Resource\n\nfunc (x *Resource) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Resource)(x)\n}\n\nfunc (x *Resource) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Resource_messageType fastReflection_Resource_messageType\nvar _ protoreflect.MessageType = fastReflection_Resource_messageType{}\n\ntype fastReflection_Resource_messageType struct{}\n\nfunc (x fastReflection_Resource_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Resource)(nil)\n}\nfunc (x fastReflection_Resource_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Resource)\n}\nfunc (x fastReflection_Resource_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Resource\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Resource) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Resource\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Resource) Type() protoreflect.MessageType {\n\treturn _fastReflection_Resource_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Resource) New() protoreflect.Message {\n\treturn new(fastReflection_Resource)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Resource) Interface() protoreflect.ProtoMessage {\n\treturn (*Resource)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Resource) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_Resource_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_Resource_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Permissions) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Resource_3_list{list: &x.Permissions})\n\t\tif !f(fd_Resource_permissions, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Relations) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Resource_4_list{list: &x.Relations})\n\t\tif !f(fd_Resource_relations, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Resource) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\treturn len(x.Permissions) != 0\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\treturn len(x.Relations) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Resource) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\tx.Permissions = nil\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\tx.Relations = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Resource) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\tif len(x.Permissions) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Resource_3_list{})\n\t\t}\n\t\tlistValue := &_Resource_3_list{list: &x.Permissions}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\tif len(x.Relations) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Resource_4_list{})\n\t\t}\n\t\tlistValue := &_Resource_4_list{list: &x.Relations}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Resource) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Resource_3_list)\n\t\tx.Permissions = *clv.list\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Resource_4_list)\n\t\tx.Relations = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Resource) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\tif x.Permissions == nil {\n\t\t\tx.Permissions = []*Permission{}\n\t\t}\n\t\tvalue := &_Resource_3_list{list: &x.Permissions}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\tif x.Relations == nil {\n\t\t\tx.Relations = []*Relation{}\n\t\t}\n\t\tvalue := &_Resource_4_list{list: &x.Relations}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.Resource is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.Resource is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Resource) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Resource.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Resource.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Resource.permissions\":\n\t\tlist := []*Permission{}\n\t\treturn protoreflect.ValueOfList(&_Resource_3_list{list: &list})\n\tcase \"sourcenetwork.acp_core.Resource.relations\":\n\t\tlist := []*Relation{}\n\t\treturn protoreflect.ValueOfList(&_Resource_4_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Resource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Resource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Resource) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Resource\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Resource) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Resource) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Resource) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Resource) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Resource)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Permissions) > 0 {\n\t\t\tfor _, e := range x.Permissions {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tfor _, e := range x.Relations {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Resource)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tfor iNdEx := len(x.Relations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Relations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.Permissions) > 0 {\n\t\t\tfor iNdEx := len(x.Permissions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Permissions[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Resource)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Resource: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Resource: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Permissions\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Permissions = append(x.Permissions, &Permission{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Permissions[len(x.Permissions)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Relations = append(x.Relations, &Relation{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relations[len(x.Relations)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_Relation_3_list)(nil)\n\ntype _Relation_3_list struct {\n\tlist *[]string\n}\n\nfunc (x *_Relation_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Relation_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_Relation_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Relation_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Relation_3_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message Relation at list field Manages as it is not of Message kind\"))\n}\n\nfunc (x *_Relation_3_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Relation_3_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_Relation_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_Relation_4_list)(nil)\n\ntype _Relation_4_list struct {\n\tlist *[]*Restriction\n}\n\nfunc (x *_Relation_4_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_Relation_4_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_Relation_4_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Restriction)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_Relation_4_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Restriction)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_Relation_4_list) AppendMutable() protoreflect.Value {\n\tv := new(Restriction)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Relation_4_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_Relation_4_list) NewElement() protoreflect.Value {\n\tv := new(Restriction)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_Relation_4_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_Relation          protoreflect.MessageDescriptor\n\tfd_Relation_name     protoreflect.FieldDescriptor\n\tfd_Relation_doc      protoreflect.FieldDescriptor\n\tfd_Relation_manages  protoreflect.FieldDescriptor\n\tfd_Relation_vr_types protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_Relation = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"Relation\")\n\tfd_Relation_name = md_Relation.Fields().ByName(\"name\")\n\tfd_Relation_doc = md_Relation.Fields().ByName(\"doc\")\n\tfd_Relation_manages = md_Relation.Fields().ByName(\"manages\")\n\tfd_Relation_vr_types = md_Relation.Fields().ByName(\"vr_types\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Relation)(nil)\n\ntype fastReflection_Relation Relation\n\nfunc (x *Relation) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Relation)(x)\n}\n\nfunc (x *Relation) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Relation_messageType fastReflection_Relation_messageType\nvar _ protoreflect.MessageType = fastReflection_Relation_messageType{}\n\ntype fastReflection_Relation_messageType struct{}\n\nfunc (x fastReflection_Relation_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Relation)(nil)\n}\nfunc (x fastReflection_Relation_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Relation)\n}\nfunc (x fastReflection_Relation_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Relation\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Relation) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Relation\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Relation) Type() protoreflect.MessageType {\n\treturn _fastReflection_Relation_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Relation) New() protoreflect.Message {\n\treturn new(fastReflection_Relation)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Relation) Interface() protoreflect.ProtoMessage {\n\treturn (*Relation)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Relation) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_Relation_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_Relation_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Manages) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Relation_3_list{list: &x.Manages})\n\t\tif !f(fd_Relation_manages, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.VrTypes) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_Relation_4_list{list: &x.VrTypes})\n\t\tif !f(fd_Relation_vr_types, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Relation) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\treturn len(x.Manages) != 0\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\treturn len(x.VrTypes) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relation) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\tx.Manages = nil\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\tx.VrTypes = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Relation) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\tif len(x.Manages) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Relation_3_list{})\n\t\t}\n\t\tlistValue := &_Relation_3_list{list: &x.Manages}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\tif len(x.VrTypes) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_Relation_4_list{})\n\t\t}\n\t\tlistValue := &_Relation_4_list{list: &x.VrTypes}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relation) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Relation_3_list)\n\t\tx.Manages = *clv.list\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_Relation_4_list)\n\t\tx.VrTypes = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relation) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\tif x.Manages == nil {\n\t\t\tx.Manages = []string{}\n\t\t}\n\t\tvalue := &_Relation_3_list{list: &x.Manages}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\tif x.VrTypes == nil {\n\t\t\tx.VrTypes = []*Restriction{}\n\t\t}\n\t\tvalue := &_Relation_4_list{list: &x.VrTypes}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.Relation is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.Relation is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Relation) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relation.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Relation.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Relation.manages\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_Relation_3_list{list: &list})\n\tcase \"sourcenetwork.acp_core.Relation.vr_types\":\n\t\tlist := []*Restriction{}\n\t\treturn protoreflect.ValueOfList(&_Relation_4_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relation\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relation does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Relation) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Relation\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Relation) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relation) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Relation) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Relation) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Relation)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Manages) > 0 {\n\t\t\tfor _, s := range x.Manages {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.VrTypes) > 0 {\n\t\t\tfor _, e := range x.VrTypes {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Relation)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.VrTypes) > 0 {\n\t\t\tfor iNdEx := len(x.VrTypes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.VrTypes[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t}\n\t\t}\n\t\tif len(x.Manages) > 0 {\n\t\t\tfor iNdEx := len(x.Manages) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.Manages[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.Manages[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Manages[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Relation)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Relation: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Relation: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Manages\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Manages = append(x.Manages, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field VrTypes\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.VrTypes = append(x.VrTypes, &Restriction{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.VrTypes[len(x.VrTypes)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Restriction               protoreflect.MessageDescriptor\n\tfd_Restriction_resource_name protoreflect.FieldDescriptor\n\tfd_Restriction_relation_name protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_Restriction = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"Restriction\")\n\tfd_Restriction_resource_name = md_Restriction.Fields().ByName(\"resource_name\")\n\tfd_Restriction_relation_name = md_Restriction.Fields().ByName(\"relation_name\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Restriction)(nil)\n\ntype fastReflection_Restriction Restriction\n\nfunc (x *Restriction) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Restriction)(x)\n}\n\nfunc (x *Restriction) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Restriction_messageType fastReflection_Restriction_messageType\nvar _ protoreflect.MessageType = fastReflection_Restriction_messageType{}\n\ntype fastReflection_Restriction_messageType struct{}\n\nfunc (x fastReflection_Restriction_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Restriction)(nil)\n}\nfunc (x fastReflection_Restriction_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Restriction)\n}\nfunc (x fastReflection_Restriction_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Restriction\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Restriction) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Restriction\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Restriction) Type() protoreflect.MessageType {\n\treturn _fastReflection_Restriction_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Restriction) New() protoreflect.Message {\n\treturn new(fastReflection_Restriction)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Restriction) Interface() protoreflect.ProtoMessage {\n\treturn (*Restriction)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Restriction) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.ResourceName != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.ResourceName)\n\t\tif !f(fd_Restriction_resource_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RelationName != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.RelationName)\n\t\tif !f(fd_Restriction_relation_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Restriction) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\treturn x.ResourceName != \"\"\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\treturn x.RelationName != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Restriction) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\tx.ResourceName = \"\"\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\tx.RelationName = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Restriction) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\tvalue := x.ResourceName\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\tvalue := x.RelationName\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Restriction) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\tx.ResourceName = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\tx.RelationName = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Restriction) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\tpanic(fmt.Errorf(\"field resource_name of message sourcenetwork.acp_core.Restriction is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\tpanic(fmt.Errorf(\"field relation_name of message sourcenetwork.acp_core.Restriction is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Restriction) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Restriction.resource_name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Restriction.relation_name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Restriction\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Restriction does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Restriction) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Restriction\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Restriction) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Restriction) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Restriction) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Restriction) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Restriction)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.ResourceName)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.RelationName)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Restriction)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.RelationName) > 0 {\n\t\t\ti -= len(x.RelationName)\n\t\t\tcopy(dAtA[i:], x.RelationName)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.RelationName)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.ResourceName) > 0 {\n\t\t\ti -= len(x.ResourceName)\n\t\t\tcopy(dAtA[i:], x.ResourceName)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ResourceName)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Restriction)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Restriction: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Restriction: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ResourceName\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.ResourceName = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationName\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.RelationName = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Permission            protoreflect.MessageDescriptor\n\tfd_Permission_name       protoreflect.FieldDescriptor\n\tfd_Permission_doc        protoreflect.FieldDescriptor\n\tfd_Permission_expression protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_Permission = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"Permission\")\n\tfd_Permission_name = md_Permission.Fields().ByName(\"name\")\n\tfd_Permission_doc = md_Permission.Fields().ByName(\"doc\")\n\tfd_Permission_expression = md_Permission.Fields().ByName(\"expression\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Permission)(nil)\n\ntype fastReflection_Permission Permission\n\nfunc (x *Permission) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Permission)(x)\n}\n\nfunc (x *Permission) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Permission_messageType fastReflection_Permission_messageType\nvar _ protoreflect.MessageType = fastReflection_Permission_messageType{}\n\ntype fastReflection_Permission_messageType struct{}\n\nfunc (x fastReflection_Permission_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Permission)(nil)\n}\nfunc (x fastReflection_Permission_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Permission)\n}\nfunc (x fastReflection_Permission_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Permission\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Permission) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Permission\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Permission) Type() protoreflect.MessageType {\n\treturn _fastReflection_Permission_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Permission) New() protoreflect.Message {\n\treturn new(fastReflection_Permission)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Permission) Interface() protoreflect.ProtoMessage {\n\treturn (*Permission)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Permission) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_Permission_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_Permission_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expression != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Expression)\n\t\tif !f(fd_Permission_expression, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Permission) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\treturn x.Expression != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Permission) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\tx.Expression = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Permission) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\tvalue := x.Expression\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Permission) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\tx.Expression = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Permission) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.Permission is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.Permission is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\tpanic(fmt.Errorf(\"field expression of message sourcenetwork.acp_core.Permission is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Permission) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Permission.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Permission.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Permission.expression\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Permission\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Permission does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Permission) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Permission\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Permission) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Permission) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Permission) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Permission) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Permission)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Expression)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Permission)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Expression) > 0 {\n\t\t\ti -= len(x.Expression)\n\t\t\tcopy(dAtA[i:], x.Expression)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Expression)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Permission)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Permission: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Permission: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expression\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Expression = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_ActorResource_3_list)(nil)\n\ntype _ActorResource_3_list struct {\n\tlist *[]*Relation\n}\n\nfunc (x *_ActorResource_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_ActorResource_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())\n}\n\nfunc (x *_ActorResource_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Relation)\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_ActorResource_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*Relation)\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_ActorResource_3_list) AppendMutable() protoreflect.Value {\n\tv := new(Relation)\n\t*x.list = append(*x.list, v)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ActorResource_3_list) Truncate(n int) {\n\tfor i := n; i < len(*x.list); i++ {\n\t\t(*x.list)[i] = nil\n\t}\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_ActorResource_3_list) NewElement() protoreflect.Value {\n\tv := new(Relation)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ActorResource_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_ActorResource           protoreflect.MessageDescriptor\n\tfd_ActorResource_name      protoreflect.FieldDescriptor\n\tfd_ActorResource_doc       protoreflect.FieldDescriptor\n\tfd_ActorResource_relations protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tmd_ActorResource = File_sourcenetwork_acp_core_policy_proto.Messages().ByName(\"ActorResource\")\n\tfd_ActorResource_name = md_ActorResource.Fields().ByName(\"name\")\n\tfd_ActorResource_doc = md_ActorResource.Fields().ByName(\"doc\")\n\tfd_ActorResource_relations = md_ActorResource.Fields().ByName(\"relations\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ActorResource)(nil)\n\ntype fastReflection_ActorResource ActorResource\n\nfunc (x *ActorResource) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ActorResource)(x)\n}\n\nfunc (x *ActorResource) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ActorResource_messageType fastReflection_ActorResource_messageType\nvar _ protoreflect.MessageType = fastReflection_ActorResource_messageType{}\n\ntype fastReflection_ActorResource_messageType struct{}\n\nfunc (x fastReflection_ActorResource_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ActorResource)(nil)\n}\nfunc (x fastReflection_ActorResource_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ActorResource)\n}\nfunc (x fastReflection_ActorResource_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ActorResource\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ActorResource) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ActorResource\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ActorResource) Type() protoreflect.MessageType {\n\treturn _fastReflection_ActorResource_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ActorResource) New() protoreflect.Message {\n\treturn new(fastReflection_ActorResource)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ActorResource) Interface() protoreflect.ProtoMessage {\n\treturn (*ActorResource)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ActorResource) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_ActorResource_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_ActorResource_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Relations) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_ActorResource_3_list{list: &x.Relations})\n\t\tif !f(fd_ActorResource_relations, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ActorResource) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\treturn len(x.Relations) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorResource) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\tx.Relations = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ActorResource) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\tif len(x.Relations) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_ActorResource_3_list{})\n\t\t}\n\t\tlistValue := &_ActorResource_3_list{list: &x.Relations}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorResource) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_ActorResource_3_list)\n\t\tx.Relations = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorResource) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\tif x.Relations == nil {\n\t\t\tx.Relations = []*Relation{}\n\t\t}\n\t\tvalue := &_ActorResource_3_list{list: &x.Relations}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.ActorResource is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.ActorResource is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ActorResource) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorResource.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ActorResource.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ActorResource.relations\":\n\t\tlist := []*Relation{}\n\t\treturn protoreflect.ValueOfList(&_ActorResource_3_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorResource\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorResource does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ActorResource) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ActorResource\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ActorResource) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorResource) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ActorResource) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ActorResource) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ActorResource)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tfor _, e := range x.Relations {\n\t\t\t\tl = options.Size(e)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ActorResource)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tfor iNdEx := len(x.Relations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\tencoded, err := options.Marshal(x.Relations[iNdEx])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ActorResource)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ActorResource: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ActorResource: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Relations = append(x.Relations, &Relation{})\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relations[len(x.Relations)-1]); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/policy.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Policy represents an ACP module Policy definition.\n// Each Policy defines a set of high level rules over how the acces control system\n// should behave.\ntype Policy struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId            string                 `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tName          string                 `protobuf:\"bytes,2,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDescription   string                 `protobuf:\"bytes,3,opt,name=description,proto3\" json:\"description,omitempty\"`\n\tCreationTime  *timestamppb.Timestamp `protobuf:\"bytes,4,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\tAttributes    map[string]string      `protobuf:\"bytes,5,rep,name=attributes,proto3\" json:\"attributes,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tResources     []*Resource            `protobuf:\"bytes,6,rep,name=resources,proto3\" json:\"resources,omitempty\"`\n\tActorResource *ActorResource         `protobuf:\"bytes,7,opt,name=actor_resource,json=actorResource,proto3\" json:\"actor_resource,omitempty\"`\n}\n\nfunc (x *Policy) Reset() {\n\t*x = Policy{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Policy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Policy) ProtoMessage() {}\n\n// Deprecated: Use Policy.ProtoReflect.Descriptor instead.\nfunc (*Policy) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Policy) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *Policy) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Policy) GetDescription() string {\n\tif x != nil {\n\t\treturn x.Description\n\t}\n\treturn \"\"\n}\n\nfunc (x *Policy) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *Policy) GetAttributes() map[string]string {\n\tif x != nil {\n\t\treturn x.Attributes\n\t}\n\treturn nil\n}\n\nfunc (x *Policy) GetResources() []*Resource {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *Policy) GetActorResource() *ActorResource {\n\tif x != nil {\n\t\treturn x.ActorResource\n\t}\n\treturn nil\n}\n\n// Resource models a namespace for objects in a Policy.\n// Appications will have multiple entities which they must manage such as files or groups.\n// A Resource represents a set of entities of a certain type.\ntype Resource struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName        string        `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDoc         string        `protobuf:\"bytes,2,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tPermissions []*Permission `protobuf:\"bytes,3,rep,name=permissions,proto3\" json:\"permissions,omitempty\"`\n\tRelations   []*Relation   `protobuf:\"bytes,4,rep,name=relations,proto3\" json:\"relations,omitempty\"`\n}\n\nfunc (x *Resource) Reset() {\n\t*x = Resource{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Resource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Resource) ProtoMessage() {}\n\n// Deprecated: Use Resource.ProtoReflect.Descriptor instead.\nfunc (*Resource) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Resource) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Resource) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *Resource) GetPermissions() []*Permission {\n\tif x != nil {\n\t\treturn x.Permissions\n\t}\n\treturn nil\n}\n\nfunc (x *Resource) GetRelations() []*Relation {\n\tif x != nil {\n\t\treturn x.Relations\n\t}\n\treturn nil\n}\n\ntype Relation struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDoc  string `protobuf:\"bytes,2,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\t// list of relations managed by the current relation\n\tManages []string `protobuf:\"bytes,3,rep,name=manages,proto3\" json:\"manages,omitempty\"`\n\t// value restriction types\n\tVrTypes []*Restriction `protobuf:\"bytes,4,rep,name=vr_types,json=vrTypes,proto3\" json:\"vr_types,omitempty\"`\n}\n\nfunc (x *Relation) Reset() {\n\t*x = Relation{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Relation) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Relation) ProtoMessage() {}\n\n// Deprecated: Use Relation.ProtoReflect.Descriptor instead.\nfunc (*Relation) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *Relation) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Relation) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *Relation) GetManages() []string {\n\tif x != nil {\n\t\treturn x.Manages\n\t}\n\treturn nil\n}\n\nfunc (x *Relation) GetVrTypes() []*Restriction {\n\tif x != nil {\n\t\treturn x.VrTypes\n\t}\n\treturn nil\n}\n\n// Restriction models a specification which a Relationship's actor\n// should meet.\ntype Restriction struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// resource_name scopes permissible actors resource\n\tResourceName string `protobuf:\"bytes,1,opt,name=resource_name,json=resourceName,proto3\" json:\"resource_name,omitempty\"`\n\t// relation_name scopes permissible actors relation\n\tRelationName string `protobuf:\"bytes,2,opt,name=relation_name,json=relationName,proto3\" json:\"relation_name,omitempty\"`\n}\n\nfunc (x *Restriction) Reset() {\n\t*x = Restriction{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Restriction) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Restriction) ProtoMessage() {}\n\n// Deprecated: Use Restriction.ProtoReflect.Descriptor instead.\nfunc (*Restriction) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *Restriction) GetResourceName() string {\n\tif x != nil {\n\t\treturn x.ResourceName\n\t}\n\treturn \"\"\n}\n\nfunc (x *Restriction) GetRelationName() string {\n\tif x != nil {\n\t\treturn x.RelationName\n\t}\n\treturn \"\"\n}\n\n// Permission models a special type of Relation which is evaluated at runtime.\n// A permission often maps to an operation defined for a resource which an actor may attempt.\ntype Permission struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName       string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDoc        string `protobuf:\"bytes,2,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tExpression string `protobuf:\"bytes,3,opt,name=expression,proto3\" json:\"expression,omitempty\"`\n}\n\nfunc (x *Permission) Reset() {\n\t*x = Permission{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Permission) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Permission) ProtoMessage() {}\n\n// Deprecated: Use Permission.ProtoReflect.Descriptor instead.\nfunc (*Permission) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Permission) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *Permission) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *Permission) GetExpression() string {\n\tif x != nil {\n\t\treturn x.Expression\n\t}\n\treturn \"\"\n}\n\n// ActorResource represents a special Resource which is reserved for Policy actors.\ntype ActorResource struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName      string      `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDoc       string      `protobuf:\"bytes,2,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tRelations []*Relation `protobuf:\"bytes,3,rep,name=relations,proto3\" json:\"relations,omitempty\"`\n}\n\nfunc (x *ActorResource) Reset() {\n\t*x = ActorResource{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ActorResource) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ActorResource) ProtoMessage() {}\n\n// Deprecated: Use ActorResource.ProtoReflect.Descriptor instead.\nfunc (*ActorResource) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *ActorResource) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *ActorResource) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *ActorResource) GetRelations() []*Relation {\n\tif x != nil {\n\t\treturn x.Relations\n\t}\n\treturn nil\n}\n\nvar File_sourcenetwork_acp_core_policy_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_policy_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67,\n\t0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,\n\t0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac,\n\t0x03, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,\n\t0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,\n\t0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,\n\t0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,\n\t0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,\n\t0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,\n\t0x12, 0x4e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45,\n\t0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,\n\t0x12, 0x3e, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20,\n\t0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,\n\t0x12, 0x4c, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,\n\t0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3d,\n\t0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,\n\t0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01,\n\t0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,\n\t0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63,\n\t0x12, 0x44, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,\n\t0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,\n\t0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69,\n\t0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x6c,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6e,\n\t0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61,\n\t0x67, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x76, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,\n\t0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52,\n\t0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x72, 0x54, 0x79,\n\t0x70, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69,\n\t0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e,\n\t0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,\n\t0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x0a,\n\t0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,\n\t0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,\n\t0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63,\n\t0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,\n\t0x22, 0x75, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x3e, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0xdd, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,\n\t0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a,\n\t0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_policy_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_policy_proto_rawDescData = file_sourcenetwork_acp_core_policy_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_policy_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_policy_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_policy_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_policy_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_policy_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_policy_proto_msgTypes = make([]protoimpl.MessageInfo, 7)\nvar file_sourcenetwork_acp_core_policy_proto_goTypes = []interface{}{\n\t(*Policy)(nil),                // 0: sourcenetwork.acp_core.Policy\n\t(*Resource)(nil),              // 1: sourcenetwork.acp_core.Resource\n\t(*Relation)(nil),              // 2: sourcenetwork.acp_core.Relation\n\t(*Restriction)(nil),           // 3: sourcenetwork.acp_core.Restriction\n\t(*Permission)(nil),            // 4: sourcenetwork.acp_core.Permission\n\t(*ActorResource)(nil),         // 5: sourcenetwork.acp_core.ActorResource\n\tnil,                           // 6: sourcenetwork.acp_core.Policy.AttributesEntry\n\t(*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp\n}\nvar file_sourcenetwork_acp_core_policy_proto_depIdxs = []int32{\n\t7, // 0: sourcenetwork.acp_core.Policy.creation_time:type_name -> google.protobuf.Timestamp\n\t6, // 1: sourcenetwork.acp_core.Policy.attributes:type_name -> sourcenetwork.acp_core.Policy.AttributesEntry\n\t1, // 2: sourcenetwork.acp_core.Policy.resources:type_name -> sourcenetwork.acp_core.Resource\n\t5, // 3: sourcenetwork.acp_core.Policy.actor_resource:type_name -> sourcenetwork.acp_core.ActorResource\n\t4, // 4: sourcenetwork.acp_core.Resource.permissions:type_name -> sourcenetwork.acp_core.Permission\n\t2, // 5: sourcenetwork.acp_core.Resource.relations:type_name -> sourcenetwork.acp_core.Relation\n\t3, // 6: sourcenetwork.acp_core.Relation.vr_types:type_name -> sourcenetwork.acp_core.Restriction\n\t2, // 7: sourcenetwork.acp_core.ActorResource.relations:type_name -> sourcenetwork.acp_core.Relation\n\t8, // [8:8] is the sub-list for method output_type\n\t8, // [8:8] is the sub-list for method input_type\n\t8, // [8:8] is the sub-list for extension type_name\n\t8, // [8:8] is the sub-list for extension extendee\n\t0, // [0:8] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_policy_proto_init() }\nfunc file_sourcenetwork_acp_core_policy_proto_init() {\n\tif File_sourcenetwork_acp_core_policy_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Policy); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Resource); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Relation); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Restriction); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Permission); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ActorResource); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_policy_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   7,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_policy_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_policy_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_policy_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_policy_proto = out.File\n\tfile_sourcenetwork_acp_core_policy_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_policy_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_policy_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/policy_definition.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar (\n\tmd_PolicyDefinition                  protoreflect.MessageDescriptor\n\tfd_PolicyDefinition_marshaled_policy protoreflect.FieldDescriptor\n\tfd_PolicyDefinition_policy           protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_definition_proto_init()\n\tmd_PolicyDefinition = File_sourcenetwork_acp_core_policy_definition_proto.Messages().ByName(\"PolicyDefinition\")\n\tfd_PolicyDefinition_marshaled_policy = md_PolicyDefinition.Fields().ByName(\"marshaled_policy\")\n\tfd_PolicyDefinition_policy = md_PolicyDefinition.Fields().ByName(\"policy\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyDefinition)(nil)\n\ntype fastReflection_PolicyDefinition PolicyDefinition\n\nfunc (x *PolicyDefinition) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyDefinition)(x)\n}\n\nfunc (x *PolicyDefinition) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_definition_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyDefinition_messageType fastReflection_PolicyDefinition_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyDefinition_messageType{}\n\ntype fastReflection_PolicyDefinition_messageType struct{}\n\nfunc (x fastReflection_PolicyDefinition_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyDefinition)(nil)\n}\nfunc (x fastReflection_PolicyDefinition_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyDefinition)\n}\nfunc (x fastReflection_PolicyDefinition_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyDefinition\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyDefinition) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyDefinition\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyDefinition) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyDefinition_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyDefinition) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyDefinition)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyDefinition) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyDefinition)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyDefinition) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Definition != nil {\n\t\tswitch o := x.Definition.(type) {\n\t\tcase *PolicyDefinition_MarshaledPolicy:\n\t\t\tv := o.MarshaledPolicy\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyDefinition_marshaled_policy, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *PolicyDefinition_Policy:\n\t\t\tv := o.Policy\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_PolicyDefinition_policy, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyDefinition) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tif x.Definition == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Definition.(*PolicyDefinition_MarshaledPolicy); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tif x.Definition == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Definition.(*PolicyDefinition_Policy); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyDefinition) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tx.Definition = nil\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tx.Definition = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyDefinition) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tif x.Definition == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*MarshaledPolicy)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Definition.(*PolicyDefinition_MarshaledPolicy); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.MarshaledPolicy.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*MarshaledPolicy)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tif x.Definition == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*Policy)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Definition.(*PolicyDefinition_Policy); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Policy.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*Policy)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyDefinition) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tcv := value.Message().Interface().(*MarshaledPolicy)\n\t\tx.Definition = &PolicyDefinition_MarshaledPolicy{MarshaledPolicy: cv}\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tcv := value.Message().Interface().(*Policy)\n\t\tx.Definition = &PolicyDefinition_Policy{Policy: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyDefinition) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tif x.Definition == nil {\n\t\t\tvalue := &MarshaledPolicy{}\n\t\t\toneofValue := &PolicyDefinition_MarshaledPolicy{MarshaledPolicy: value}\n\t\t\tx.Definition = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Definition.(type) {\n\t\tcase *PolicyDefinition_MarshaledPolicy:\n\t\t\treturn protoreflect.ValueOfMessage(m.MarshaledPolicy.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &MarshaledPolicy{}\n\t\t\toneofValue := &PolicyDefinition_MarshaledPolicy{MarshaledPolicy: value}\n\t\t\tx.Definition = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tif x.Definition == nil {\n\t\t\tvalue := &Policy{}\n\t\t\toneofValue := &PolicyDefinition_Policy{Policy: value}\n\t\t\tx.Definition = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Definition.(type) {\n\t\tcase *PolicyDefinition_Policy:\n\t\t\treturn protoreflect.ValueOfMessage(m.Policy.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &Policy{}\n\t\t\toneofValue := &PolicyDefinition_Policy{Policy: value}\n\t\t\tx.Definition = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyDefinition) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.marshaled_policy\":\n\t\tvalue := &MarshaledPolicy{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.policy\":\n\t\tvalue := &Policy{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyDefinition\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyDefinition does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyDefinition) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyDefinition.definition\":\n\t\tif x.Definition == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Definition.(type) {\n\t\tcase *PolicyDefinition_MarshaledPolicy:\n\t\t\treturn x.Descriptor().Fields().ByName(\"marshaled_policy\")\n\t\tcase *PolicyDefinition_Policy:\n\t\t\treturn x.Descriptor().Fields().ByName(\"policy\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.PolicyDefinition\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyDefinition) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyDefinition) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyDefinition) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyDefinition) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyDefinition)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Definition.(type) {\n\t\tcase *PolicyDefinition_MarshaledPolicy:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.MarshaledPolicy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *PolicyDefinition_Policy:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyDefinition)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Definition.(type) {\n\t\tcase *PolicyDefinition_MarshaledPolicy:\n\t\t\tencoded, err := options.Marshal(x.MarshaledPolicy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *PolicyDefinition_Policy:\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyDefinition)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyDefinition: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyDefinition: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field MarshaledPolicy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &MarshaledPolicy{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Definition = &PolicyDefinition_MarshaledPolicy{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &Policy{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Definition = &PolicyDefinition_Policy{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/policy_definition.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// PolicyDefinition represents a Policy defined either as a raw\n// Policy type or a shortened and marshaled version\ntype PolicyDefinition struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Definition:\n\t//\n\t//\t*PolicyDefinition_MarshaledPolicy\n\t//\t*PolicyDefinition_Policy\n\tDefinition isPolicyDefinition_Definition `protobuf_oneof:\"definition\"`\n}\n\nfunc (x *PolicyDefinition) Reset() {\n\t*x = PolicyDefinition{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_definition_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyDefinition) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyDefinition) ProtoMessage() {}\n\n// Deprecated: Use PolicyDefinition.ProtoReflect.Descriptor instead.\nfunc (*PolicyDefinition) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_definition_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *PolicyDefinition) GetDefinition() isPolicyDefinition_Definition {\n\tif x != nil {\n\t\treturn x.Definition\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyDefinition) GetMarshaledPolicy() *MarshaledPolicy {\n\tif x, ok := x.GetDefinition().(*PolicyDefinition_MarshaledPolicy); ok {\n\t\treturn x.MarshaledPolicy\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyDefinition) GetPolicy() *Policy {\n\tif x, ok := x.GetDefinition().(*PolicyDefinition_Policy); ok {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\ntype isPolicyDefinition_Definition interface {\n\tisPolicyDefinition_Definition()\n}\n\ntype PolicyDefinition_MarshaledPolicy struct {\n\tMarshaledPolicy *MarshaledPolicy `protobuf:\"bytes,1,opt,name=marshaled_policy,json=marshaledPolicy,proto3,oneof\"`\n}\n\ntype PolicyDefinition_Policy struct {\n\tPolicy *Policy `protobuf:\"bytes,2,opt,name=policy,proto3,oneof\"`\n}\n\nfunc (*PolicyDefinition_MarshaledPolicy) isPolicyDefinition_Definition() {}\n\nfunc (*PolicyDefinition_Policy) isPolicyDefinition_Definition() {}\n\nvar File_sourcenetwork_acp_core_policy_definition_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_policy_definition_proto_rawDesc = []byte{\n\t0x0a, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,\n\t0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,\n\t0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x68, 0x6f,\n\t0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a,\n\t0x10, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,\n\t0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0c, 0x0a,\n\t0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xe7, 0x01, 0x0a, 0x1a,\n\t0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x50, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74,\n\t0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65,\n\t0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63,\n\t0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_policy_definition_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_policy_definition_proto_rawDescData = file_sourcenetwork_acp_core_policy_definition_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_policy_definition_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_policy_definition_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_policy_definition_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_policy_definition_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_policy_definition_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_policy_definition_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcenetwork_acp_core_policy_definition_proto_goTypes = []interface{}{\n\t(*PolicyDefinition)(nil), // 0: sourcenetwork.acp_core.PolicyDefinition\n\t(*MarshaledPolicy)(nil),  // 1: sourcenetwork.acp_core.MarshaledPolicy\n\t(*Policy)(nil),           // 2: sourcenetwork.acp_core.Policy\n}\nvar file_sourcenetwork_acp_core_policy_definition_proto_depIdxs = []int32{\n\t1, // 0: sourcenetwork.acp_core.PolicyDefinition.marshaled_policy:type_name -> sourcenetwork.acp_core.MarshaledPolicy\n\t2, // 1: sourcenetwork.acp_core.PolicyDefinition.policy:type_name -> sourcenetwork.acp_core.Policy\n\t2, // [2:2] is the sub-list for method output_type\n\t2, // [2:2] is the sub-list for method input_type\n\t2, // [2:2] is the sub-list for extension type_name\n\t2, // [2:2] is the sub-list for extension extendee\n\t0, // [0:2] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_policy_definition_proto_init() }\nfunc file_sourcenetwork_acp_core_policy_definition_proto_init() {\n\tif File_sourcenetwork_acp_core_policy_definition_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_policy_definition_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyDefinition); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_sourcenetwork_acp_core_policy_definition_proto_msgTypes[0].OneofWrappers = []interface{}{\n\t\t(*PolicyDefinition_MarshaledPolicy)(nil),\n\t\t(*PolicyDefinition_Policy)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_policy_definition_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_policy_definition_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_policy_definition_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_policy_definition_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_policy_definition_proto = out.File\n\tfile_sourcenetwork_acp_core_policy_definition_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_policy_definition_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_policy_definition_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/policy_record.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\t_ \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar _ protoreflect.Map = (*_PolicyRecord_3_map)(nil)\n\ntype _PolicyRecord_3_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_PolicyRecord_3_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_PolicyRecord_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_PolicyRecord_3_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_PolicyRecord_3_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_PolicyRecord_3_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_PolicyRecord_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_PolicyRecord_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_PolicyRecord_3_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_PolicyRecord_3_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_PolicyRecord                  protoreflect.MessageDescriptor\n\tfd_PolicyRecord_policy           protoreflect.FieldDescriptor\n\tfd_PolicyRecord_management_graph protoreflect.FieldDescriptor\n\tfd_PolicyRecord_metadata         protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_record_proto_init()\n\tmd_PolicyRecord = File_sourcenetwork_acp_core_policy_record_proto.Messages().ByName(\"PolicyRecord\")\n\tfd_PolicyRecord_policy = md_PolicyRecord.Fields().ByName(\"policy\")\n\tfd_PolicyRecord_management_graph = md_PolicyRecord.Fields().ByName(\"management_graph\")\n\tfd_PolicyRecord_metadata = md_PolicyRecord.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyRecord)(nil)\n\ntype fastReflection_PolicyRecord PolicyRecord\n\nfunc (x *PolicyRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyRecord)(x)\n}\n\nfunc (x *PolicyRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyRecord_messageType fastReflection_PolicyRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyRecord_messageType{}\n\ntype fastReflection_PolicyRecord_messageType struct{}\n\nfunc (x fastReflection_PolicyRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyRecord)(nil)\n}\nfunc (x fastReflection_PolicyRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyRecord)\n}\nfunc (x fastReflection_PolicyRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyRecord) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\t\tif !f(fd_PolicyRecord_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.ManagementGraph != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ManagementGraph.ProtoReflect())\n\t\tif !f(fd_PolicyRecord_management_graph, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_PolicyRecord_3_map{m: &x.Metadata})\n\t\tif !f(fd_PolicyRecord_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\treturn x.Policy != nil\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\treturn x.ManagementGraph != nil\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\tx.Policy = nil\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\tx.ManagementGraph = nil\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\tvalue := x.ManagementGraph\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_PolicyRecord_3_map{})\n\t\t}\n\t\tmapValue := &_PolicyRecord_3_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\tx.Policy = value.Message().Interface().(*Policy)\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\tx.ManagementGraph = value.Message().Interface().(*ManagementGraph)\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_PolicyRecord_3_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\tif x.Policy == nil {\n\t\t\tx.Policy = new(Policy)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Policy.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\tif x.ManagementGraph == nil {\n\t\t\tx.ManagementGraph = new(ManagementGraph)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ManagementGraph.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_PolicyRecord_3_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyRecord.policy\":\n\t\tm := new(Policy)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.management_graph\":\n\t\tm := new(ManagementGraph)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyRecord.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_PolicyRecord_3_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.PolicyRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Policy != nil {\n\t\t\tl = options.Size(x.Policy)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.ManagementGraph != nil {\n\t\t\tl = options.Size(x.ManagementGraph)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.ManagementGraph != nil {\n\t\t\tencoded, err := options.Marshal(x.ManagementGraph)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Policy != nil {\n\t\t\tencoded, err := options.Marshal(x.Policy)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Policy == nil {\n\t\t\t\t\tx.Policy = &Policy{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Policy); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ManagementGraph\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ManagementGraph == nil {\n\t\t\t\t\tx.ManagementGraph = &ManagementGraph{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ManagementGraph); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_ManagementGraph_1_map)(nil)\n\ntype _ManagementGraph_1_map struct {\n\tm *map[string]*ManagerNode\n}\n\nfunc (x *_ManagementGraph_1_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ManagementGraph_1_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ManagementGraph_1_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ManagementGraph_1_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ManagementGraph_1_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_1_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ManagerNode)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ManagementGraph_1_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(ManagerNode)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_1_map) NewValue() protoreflect.Value {\n\tv := new(ManagerNode)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_1_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar _ protoreflect.Map = (*_ManagementGraph_2_map)(nil)\n\ntype _ManagementGraph_2_map struct {\n\tm *map[string]*ManagerEdges\n}\n\nfunc (x *_ManagementGraph_2_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ManagementGraph_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ManagementGraph_2_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ManagementGraph_2_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ManagementGraph_2_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ManagerEdges)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ManagementGraph_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(ManagerEdges)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_2_map) NewValue() protoreflect.Value {\n\tv := new(ManagerEdges)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_2_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar _ protoreflect.Map = (*_ManagementGraph_3_map)(nil)\n\ntype _ManagementGraph_3_map struct {\n\tm *map[string]*ManagerEdges\n}\n\nfunc (x *_ManagementGraph_3_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ManagementGraph_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ManagementGraph_3_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ManagementGraph_3_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ManagementGraph_3_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ManagerEdges)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ManagementGraph_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(ManagerEdges)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_3_map) NewValue() protoreflect.Value {\n\tv := new(ManagerEdges)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ManagementGraph_3_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_ManagementGraph                protoreflect.MessageDescriptor\n\tfd_ManagementGraph_nodes          protoreflect.FieldDescriptor\n\tfd_ManagementGraph_forward_edges  protoreflect.FieldDescriptor\n\tfd_ManagementGraph_backward_edges protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_record_proto_init()\n\tmd_ManagementGraph = File_sourcenetwork_acp_core_policy_record_proto.Messages().ByName(\"ManagementGraph\")\n\tfd_ManagementGraph_nodes = md_ManagementGraph.Fields().ByName(\"nodes\")\n\tfd_ManagementGraph_forward_edges = md_ManagementGraph.Fields().ByName(\"forward_edges\")\n\tfd_ManagementGraph_backward_edges = md_ManagementGraph.Fields().ByName(\"backward_edges\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ManagementGraph)(nil)\n\ntype fastReflection_ManagementGraph ManagementGraph\n\nfunc (x *ManagementGraph) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ManagementGraph)(x)\n}\n\nfunc (x *ManagementGraph) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ManagementGraph_messageType fastReflection_ManagementGraph_messageType\nvar _ protoreflect.MessageType = fastReflection_ManagementGraph_messageType{}\n\ntype fastReflection_ManagementGraph_messageType struct{}\n\nfunc (x fastReflection_ManagementGraph_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ManagementGraph)(nil)\n}\nfunc (x fastReflection_ManagementGraph_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ManagementGraph)\n}\nfunc (x fastReflection_ManagementGraph_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagementGraph\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ManagementGraph) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagementGraph\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ManagementGraph) Type() protoreflect.MessageType {\n\treturn _fastReflection_ManagementGraph_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ManagementGraph) New() protoreflect.Message {\n\treturn new(fastReflection_ManagementGraph)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ManagementGraph) Interface() protoreflect.ProtoMessage {\n\treturn (*ManagementGraph)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ManagementGraph) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Nodes) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ManagementGraph_1_map{m: &x.Nodes})\n\t\tif !f(fd_ManagementGraph_nodes, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.ForwardEdges) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ManagementGraph_2_map{m: &x.ForwardEdges})\n\t\tif !f(fd_ManagementGraph_forward_edges, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.BackwardEdges) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ManagementGraph_3_map{m: &x.BackwardEdges})\n\t\tif !f(fd_ManagementGraph_backward_edges, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ManagementGraph) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\treturn len(x.Nodes) != 0\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\treturn len(x.ForwardEdges) != 0\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\treturn len(x.BackwardEdges) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagementGraph) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\tx.Nodes = nil\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\tx.ForwardEdges = nil\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\tx.BackwardEdges = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ManagementGraph) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\tif len(x.Nodes) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_1_map{})\n\t\t}\n\t\tmapValue := &_ManagementGraph_1_map{m: &x.Nodes}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\tif len(x.ForwardEdges) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_2_map{})\n\t\t}\n\t\tmapValue := &_ManagementGraph_2_map{m: &x.ForwardEdges}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\tif len(x.BackwardEdges) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_3_map{})\n\t\t}\n\t\tmapValue := &_ManagementGraph_3_map{m: &x.BackwardEdges}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagementGraph) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ManagementGraph_1_map)\n\t\tx.Nodes = *cmv.m\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ManagementGraph_2_map)\n\t\tx.ForwardEdges = *cmv.m\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ManagementGraph_3_map)\n\t\tx.BackwardEdges = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagementGraph) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\tif x.Nodes == nil {\n\t\t\tx.Nodes = make(map[string]*ManagerNode)\n\t\t}\n\t\tvalue := &_ManagementGraph_1_map{m: &x.Nodes}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\tif x.ForwardEdges == nil {\n\t\t\tx.ForwardEdges = make(map[string]*ManagerEdges)\n\t\t}\n\t\tvalue := &_ManagementGraph_2_map{m: &x.ForwardEdges}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\tif x.BackwardEdges == nil {\n\t\t\tx.BackwardEdges = make(map[string]*ManagerEdges)\n\t\t}\n\t\tvalue := &_ManagementGraph_3_map{m: &x.BackwardEdges}\n\t\treturn protoreflect.ValueOfMap(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ManagementGraph) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagementGraph.nodes\":\n\t\tm := make(map[string]*ManagerNode)\n\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_1_map{m: &m})\n\tcase \"sourcenetwork.acp_core.ManagementGraph.forward_edges\":\n\t\tm := make(map[string]*ManagerEdges)\n\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_2_map{m: &m})\n\tcase \"sourcenetwork.acp_core.ManagementGraph.backward_edges\":\n\t\tm := make(map[string]*ManagerEdges)\n\t\treturn protoreflect.ValueOfMap(&_ManagementGraph_3_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagementGraph\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagementGraph does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ManagementGraph) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ManagementGraph\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ManagementGraph) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagementGraph) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ManagementGraph) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ManagementGraph) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ManagementGraph)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Nodes) > 0 {\n\t\t\tSiZeMaP := func(k string, v *ManagerNode) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Nodes))\n\t\t\t\tfor k := range x.Nodes {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Nodes[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Nodes {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.ForwardEdges) > 0 {\n\t\t\tSiZeMaP := func(k string, v *ManagerEdges) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.ForwardEdges))\n\t\t\t\tfor k := range x.ForwardEdges {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.ForwardEdges[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.ForwardEdges {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.BackwardEdges) > 0 {\n\t\t\tSiZeMaP := func(k string, v *ManagerEdges) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.BackwardEdges))\n\t\t\t\tfor k := range x.BackwardEdges {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.BackwardEdges[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.BackwardEdges {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagementGraph)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.BackwardEdges) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *ManagerEdges) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForBackwardEdges := make([]string, 0, len(x.BackwardEdges))\n\t\t\t\tfor k := range x.BackwardEdges {\n\t\t\t\t\tkeysForBackwardEdges = append(keysForBackwardEdges, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForBackwardEdges, func(i, j int) bool {\n\t\t\t\t\treturn keysForBackwardEdges[i] < keysForBackwardEdges[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForBackwardEdges) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.BackwardEdges[string(keysForBackwardEdges[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForBackwardEdges[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.BackwardEdges {\n\t\t\t\t\tv := x.BackwardEdges[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.ForwardEdges) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *ManagerEdges) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForForwardEdges := make([]string, 0, len(x.ForwardEdges))\n\t\t\t\tfor k := range x.ForwardEdges {\n\t\t\t\t\tkeysForForwardEdges = append(keysForForwardEdges, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForForwardEdges, func(i, j int) bool {\n\t\t\t\t\treturn keysForForwardEdges[i] < keysForForwardEdges[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForForwardEdges) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.ForwardEdges[string(keysForForwardEdges[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForForwardEdges[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.ForwardEdges {\n\t\t\t\t\tv := x.ForwardEdges[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Nodes) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *ManagerNode) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForNodes := make([]string, 0, len(x.Nodes))\n\t\t\t\tfor k := range x.Nodes {\n\t\t\t\t\tkeysForNodes = append(keysForNodes, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForNodes, func(i, j int) bool {\n\t\t\t\t\treturn keysForNodes[i] < keysForNodes[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForNodes) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Nodes[string(keysForNodes[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForNodes[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Nodes {\n\t\t\t\t\tv := x.Nodes[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagementGraph)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagementGraph: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagementGraph: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Nodes\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Nodes == nil {\n\t\t\t\t\tx.Nodes = make(map[string]*ManagerNode)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *ManagerNode\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &ManagerNode{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Nodes[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ForwardEdges\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ForwardEdges == nil {\n\t\t\t\t\tx.ForwardEdges = make(map[string]*ManagerEdges)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *ManagerEdges\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &ManagerEdges{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.ForwardEdges[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field BackwardEdges\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.BackwardEdges == nil {\n\t\t\t\t\tx.BackwardEdges = make(map[string]*ManagerEdges)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *ManagerEdges\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &ManagerEdges{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.BackwardEdges[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ManagerNode      protoreflect.MessageDescriptor\n\tfd_ManagerNode_id   protoreflect.FieldDescriptor\n\tfd_ManagerNode_text protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_record_proto_init()\n\tmd_ManagerNode = File_sourcenetwork_acp_core_policy_record_proto.Messages().ByName(\"ManagerNode\")\n\tfd_ManagerNode_id = md_ManagerNode.Fields().ByName(\"id\")\n\tfd_ManagerNode_text = md_ManagerNode.Fields().ByName(\"text\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ManagerNode)(nil)\n\ntype fastReflection_ManagerNode ManagerNode\n\nfunc (x *ManagerNode) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ManagerNode)(x)\n}\n\nfunc (x *ManagerNode) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ManagerNode_messageType fastReflection_ManagerNode_messageType\nvar _ protoreflect.MessageType = fastReflection_ManagerNode_messageType{}\n\ntype fastReflection_ManagerNode_messageType struct{}\n\nfunc (x fastReflection_ManagerNode_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ManagerNode)(nil)\n}\nfunc (x fastReflection_ManagerNode_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ManagerNode)\n}\nfunc (x fastReflection_ManagerNode_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagerNode\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ManagerNode) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagerNode\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ManagerNode) Type() protoreflect.MessageType {\n\treturn _fastReflection_ManagerNode_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ManagerNode) New() protoreflect.Message {\n\treturn new(fastReflection_ManagerNode)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ManagerNode) Interface() protoreflect.ProtoMessage {\n\treturn (*ManagerNode)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ManagerNode) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_ManagerNode_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Text != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Text)\n\t\tif !f(fd_ManagerNode_text, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ManagerNode) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\treturn x.Id != \"\"\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\treturn x.Text != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerNode) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\tx.Id = \"\"\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\tx.Text = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ManagerNode) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\tvalue := x.Text\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerNode) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\tx.Id = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\tx.Text = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerNode) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.ManagerNode is not mutable\"))\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\tpanic(fmt.Errorf(\"field text of message sourcenetwork.acp_core.ManagerNode is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ManagerNode) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerNode.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ManagerNode.text\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerNode\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerNode does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ManagerNode) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ManagerNode\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ManagerNode) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerNode) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ManagerNode) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ManagerNode) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ManagerNode)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Text)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagerNode)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Text) > 0 {\n\t\t\ti -= len(x.Text)\n\t\t\tcopy(dAtA[i:], x.Text)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Text)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagerNode)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagerNode: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagerNode: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Text\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Text = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_ManagerEdges_1_map)(nil)\n\ntype _ManagerEdges_1_map struct {\n\tm *map[string]bool\n}\n\nfunc (x *_ManagerEdges_1_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ManagerEdges_1_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfBool(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ManagerEdges_1_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ManagerEdges_1_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ManagerEdges_1_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfBool(v)\n}\n\nfunc (x *_ManagerEdges_1_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Bool()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ManagerEdges_1_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_ManagerEdges_1_map) NewValue() protoreflect.Value {\n\tv := false\n\treturn protoreflect.ValueOfBool(v)\n}\n\nfunc (x *_ManagerEdges_1_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_ManagerEdges       protoreflect.MessageDescriptor\n\tfd_ManagerEdges_edges protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_record_proto_init()\n\tmd_ManagerEdges = File_sourcenetwork_acp_core_policy_record_proto.Messages().ByName(\"ManagerEdges\")\n\tfd_ManagerEdges_edges = md_ManagerEdges.Fields().ByName(\"edges\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ManagerEdges)(nil)\n\ntype fastReflection_ManagerEdges ManagerEdges\n\nfunc (x *ManagerEdges) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ManagerEdges)(x)\n}\n\nfunc (x *ManagerEdges) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ManagerEdges_messageType fastReflection_ManagerEdges_messageType\nvar _ protoreflect.MessageType = fastReflection_ManagerEdges_messageType{}\n\ntype fastReflection_ManagerEdges_messageType struct{}\n\nfunc (x fastReflection_ManagerEdges_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ManagerEdges)(nil)\n}\nfunc (x fastReflection_ManagerEdges_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ManagerEdges)\n}\nfunc (x fastReflection_ManagerEdges_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagerEdges\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ManagerEdges) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ManagerEdges\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ManagerEdges) Type() protoreflect.MessageType {\n\treturn _fastReflection_ManagerEdges_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ManagerEdges) New() protoreflect.Message {\n\treturn new(fastReflection_ManagerEdges)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ManagerEdges) Interface() protoreflect.ProtoMessage {\n\treturn (*ManagerEdges)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ManagerEdges) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif len(x.Edges) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ManagerEdges_1_map{m: &x.Edges})\n\t\tif !f(fd_ManagerEdges_edges, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ManagerEdges) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\treturn len(x.Edges) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerEdges) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\tx.Edges = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ManagerEdges) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\tif len(x.Edges) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ManagerEdges_1_map{})\n\t\t}\n\t\tmapValue := &_ManagerEdges_1_map{m: &x.Edges}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerEdges) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ManagerEdges_1_map)\n\t\tx.Edges = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerEdges) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\tif x.Edges == nil {\n\t\t\tx.Edges = make(map[string]bool)\n\t\t}\n\t\tvalue := &_ManagerEdges_1_map{m: &x.Edges}\n\t\treturn protoreflect.ValueOfMap(value)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ManagerEdges) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ManagerEdges.edges\":\n\t\tm := make(map[string]bool)\n\t\treturn protoreflect.ValueOfMap(&_ManagerEdges_1_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ManagerEdges\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ManagerEdges does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ManagerEdges) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ManagerEdges\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ManagerEdges) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ManagerEdges) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ManagerEdges) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ManagerEdges) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ManagerEdges)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif len(x.Edges) > 0 {\n\t\t\tSiZeMaP := func(k string, v bool) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + 1\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Edges))\n\t\t\t\tfor k := range x.Edges {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Edges[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Edges {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagerEdges)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Edges) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v bool) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti--\n\t\t\t\tif v {\n\t\t\t\t\tdAtA[i] = 1\n\t\t\t\t} else {\n\t\t\t\t\tdAtA[i] = 0\n\t\t\t\t}\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x10\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForEdges := make([]string, 0, len(x.Edges))\n\t\t\t\tfor k := range x.Edges {\n\t\t\t\t\tkeysForEdges = append(keysForEdges, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForEdges, func(i, j int) bool {\n\t\t\t\t\treturn keysForEdges[i] < keysForEdges[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForEdges) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Edges[string(keysForEdges[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForEdges[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Edges {\n\t\t\t\t\tv := x.Edges[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ManagerEdges)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagerEdges: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ManagerEdges: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Edges\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Edges == nil {\n\t\t\t\t\tx.Edges = make(map[string]bool)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue bool\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapvaluetemp int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapvaluetemp |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = bool(mapvaluetemp != 0)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Edges[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/policy_record.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// PolicyRecord represents a the Policy Document which will be persisted in the data layer\ntype PolicyRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy          *Policy          `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tManagementGraph *ManagementGraph `protobuf:\"bytes,2,opt,name=management_graph,json=managementGraph,proto3\" json:\"management_graph,omitempty\"`\n\t// metadata contains any application specific data\n\t// which was not supplied by the policy creator directly\n\tMetadata map[string]string `protobuf:\"bytes,3,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *PolicyRecord) Reset() {\n\t*x = PolicyRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyRecord) ProtoMessage() {}\n\n// Deprecated: Use PolicyRecord.ProtoReflect.Descriptor instead.\nfunc (*PolicyRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_record_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *PolicyRecord) GetPolicy() *Policy {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyRecord) GetManagementGraph() *ManagementGraph {\n\tif x != nil {\n\t\treturn x.ManagementGraph\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyRecord) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\n// ManagementGraph represents a Policy's Relation Management Graph.\n//\n// The ManagementGraph is a directed graph which expresses the notion of Relation Management Authority.\n// Relation Management Authority is the idea that a certain set of relationships with relation R will be managed by an actor with relation RM.\n// Thus we can say RM manages R, meaning that if an actor A has a relationship 'actor {A} is a {RM} for {O}' where O is an object,\n// then Actor A can create relationships 'actor {S} is a {R} for {O}' for any actor S.\n//\n// Nodes in the Graph are Relations in a Policy.\n// Edges point from one Relation to another.\n//\n// NOTE: This proto definition should be treated as an *abstract data type*,\n// meaning that the fields should not be manually editted.\ntype ManagementGraph struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// map of node id to node definition\n\tNodes map[string]*ManagerNode `protobuf:\"bytes,1,rep,name=nodes,proto3\" json:\"nodes,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// stores all edges leaving a node\n\tForwardEdges map[string]*ManagerEdges `protobuf:\"bytes,2,rep,name=forward_edges,json=forwardEdges,proto3\" json:\"forward_edges,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// stores all edges pointing to a node\n\tBackwardEdges map[string]*ManagerEdges `protobuf:\"bytes,3,rep,name=backward_edges,json=backwardEdges,proto3\" json:\"backward_edges,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *ManagementGraph) Reset() {\n\t*x = ManagementGraph{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ManagementGraph) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ManagementGraph) ProtoMessage() {}\n\n// Deprecated: Use ManagementGraph.ProtoReflect.Descriptor instead.\nfunc (*ManagementGraph) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_record_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ManagementGraph) GetNodes() map[string]*ManagerNode {\n\tif x != nil {\n\t\treturn x.Nodes\n\t}\n\treturn nil\n}\n\nfunc (x *ManagementGraph) GetForwardEdges() map[string]*ManagerEdges {\n\tif x != nil {\n\t\treturn x.ForwardEdges\n\t}\n\treturn nil\n}\n\nfunc (x *ManagementGraph) GetBackwardEdges() map[string]*ManagerEdges {\n\tif x != nil {\n\t\treturn x.BackwardEdges\n\t}\n\treturn nil\n}\n\ntype ManagerNode struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId   string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tText string `protobuf:\"bytes,2,opt,name=text,proto3\" json:\"text,omitempty\"`\n}\n\nfunc (x *ManagerNode) Reset() {\n\t*x = ManagerNode{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ManagerNode) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ManagerNode) ProtoMessage() {}\n\n// Deprecated: Use ManagerNode.ProtoReflect.Descriptor instead.\nfunc (*ManagerNode) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_record_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ManagerNode) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\nfunc (x *ManagerNode) GetText() string {\n\tif x != nil {\n\t\treturn x.Text\n\t}\n\treturn \"\"\n}\n\ntype ManagerEdges struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tEdges map[string]bool `protobuf:\"bytes,1,rep,name=edges,proto3\" json:\"edges,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"varint,2,opt,name=value,proto3\"`\n}\n\nfunc (x *ManagerEdges) Reset() {\n\t*x = ManagerEdges{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_record_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ManagerEdges) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ManagerEdges) ProtoMessage() {}\n\n// Deprecated: Use ManagerEdges.ProtoReflect.Descriptor instead.\nfunc (*ManagerEdges) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_record_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *ManagerEdges) GetEdges() map[string]bool {\n\tif x != nil {\n\t\treturn x.Edges\n\t}\n\treturn nil\n}\n\nvar File_sourcenetwork_acp_core_policy_record_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_policy_record_proto_rawDesc = []byte{\n\t0x0a, 0x2a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,\n\t0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa7, 0x02, 0x0a, 0x0c, 0x50,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x70,\n\t0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x12, 0x52, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,\n\t0x74, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,\n\t0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,\n\t0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x4e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e,\n\t0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d,\n\t0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,\n\t0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x04, 0x0a, 0x0f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,\n\t0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x48, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65,\n\t0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68,\n\t0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6e, 0x6f, 0x64,\n\t0x65, 0x73, 0x12, 0x5e, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x64,\n\t0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61,\n\t0x70, 0x68, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65, 0x73, 0x45,\n\t0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67,\n\t0x65, 0x73, 0x12, 0x61, 0x0a, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65,\n\t0x64, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72,\n\t0x61, 0x70, 0x68, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65,\n\t0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x62, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64,\n\t0x45, 0x64, 0x67, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e,\n\t0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x61,\n\t0x6e, 0x61, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x3a, 0x02, 0x38, 0x01, 0x1a, 0x65, 0x0a, 0x11, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x45,\n\t0x64, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x73,\n\t0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x66, 0x0a, 0x12, 0x42,\n\t0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,\n\t0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x61,\n\t0x67, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,\n\t0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x4e, 0x6f,\n\t0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,\n\t0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x61, 0x67,\n\t0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73,\n\t0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x73, 0x2e, 0x45, 0x64, 0x67,\n\t0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x1a, 0x38,\n\t0x0a, 0x0a, 0x45, 0x64, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,\n\t0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,\n\t0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0xe3, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,\n\t0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69,\n\t0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62,\n\t0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41,\n\t0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72,\n\t0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,\n\t0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65,\n\t0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_policy_record_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_policy_record_proto_rawDescData = file_sourcenetwork_acp_core_policy_record_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_policy_record_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_policy_record_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_policy_record_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_policy_record_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_policy_record_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_policy_record_proto_msgTypes = make([]protoimpl.MessageInfo, 9)\nvar file_sourcenetwork_acp_core_policy_record_proto_goTypes = []interface{}{\n\t(*PolicyRecord)(nil),    // 0: sourcenetwork.acp_core.PolicyRecord\n\t(*ManagementGraph)(nil), // 1: sourcenetwork.acp_core.ManagementGraph\n\t(*ManagerNode)(nil),     // 2: sourcenetwork.acp_core.ManagerNode\n\t(*ManagerEdges)(nil),    // 3: sourcenetwork.acp_core.ManagerEdges\n\tnil,                     // 4: sourcenetwork.acp_core.PolicyRecord.MetadataEntry\n\tnil,                     // 5: sourcenetwork.acp_core.ManagementGraph.NodesEntry\n\tnil,                     // 6: sourcenetwork.acp_core.ManagementGraph.ForwardEdgesEntry\n\tnil,                     // 7: sourcenetwork.acp_core.ManagementGraph.BackwardEdgesEntry\n\tnil,                     // 8: sourcenetwork.acp_core.ManagerEdges.EdgesEntry\n\t(*Policy)(nil),          // 9: sourcenetwork.acp_core.Policy\n}\nvar file_sourcenetwork_acp_core_policy_record_proto_depIdxs = []int32{\n\t9,  // 0: sourcenetwork.acp_core.PolicyRecord.policy:type_name -> sourcenetwork.acp_core.Policy\n\t1,  // 1: sourcenetwork.acp_core.PolicyRecord.management_graph:type_name -> sourcenetwork.acp_core.ManagementGraph\n\t4,  // 2: sourcenetwork.acp_core.PolicyRecord.metadata:type_name -> sourcenetwork.acp_core.PolicyRecord.MetadataEntry\n\t5,  // 3: sourcenetwork.acp_core.ManagementGraph.nodes:type_name -> sourcenetwork.acp_core.ManagementGraph.NodesEntry\n\t6,  // 4: sourcenetwork.acp_core.ManagementGraph.forward_edges:type_name -> sourcenetwork.acp_core.ManagementGraph.ForwardEdgesEntry\n\t7,  // 5: sourcenetwork.acp_core.ManagementGraph.backward_edges:type_name -> sourcenetwork.acp_core.ManagementGraph.BackwardEdgesEntry\n\t8,  // 6: sourcenetwork.acp_core.ManagerEdges.edges:type_name -> sourcenetwork.acp_core.ManagerEdges.EdgesEntry\n\t2,  // 7: sourcenetwork.acp_core.ManagementGraph.NodesEntry.value:type_name -> sourcenetwork.acp_core.ManagerNode\n\t3,  // 8: sourcenetwork.acp_core.ManagementGraph.ForwardEdgesEntry.value:type_name -> sourcenetwork.acp_core.ManagerEdges\n\t3,  // 9: sourcenetwork.acp_core.ManagementGraph.BackwardEdgesEntry.value:type_name -> sourcenetwork.acp_core.ManagerEdges\n\t10, // [10:10] is the sub-list for method output_type\n\t10, // [10:10] is the sub-list for method input_type\n\t10, // [10:10] is the sub-list for extension type_name\n\t10, // [10:10] is the sub-list for extension extendee\n\t0,  // [0:10] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_policy_record_proto_init() }\nfunc file_sourcenetwork_acp_core_policy_record_proto_init() {\n\tif File_sourcenetwork_acp_core_policy_record_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_policy_record_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_record_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ManagementGraph); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_record_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ManagerNode); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_record_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ManagerEdges); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_policy_record_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   9,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_policy_record_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_policy_record_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_policy_record_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_policy_record_proto = out.File\n\tfile_sourcenetwork_acp_core_policy_record_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_policy_record_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_policy_record_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/policy_short.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar _ protoreflect.Map = (*_PolicyShort_4_map)(nil)\n\ntype _PolicyShort_4_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_PolicyShort_4_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_PolicyShort_4_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_PolicyShort_4_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_PolicyShort_4_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_PolicyShort_4_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_PolicyShort_4_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_PolicyShort_4_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_PolicyShort_4_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_PolicyShort_4_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar _ protoreflect.Map = (*_PolicyShort_5_map)(nil)\n\ntype _PolicyShort_5_map struct {\n\tm *map[string]*ResourceShort\n}\n\nfunc (x *_PolicyShort_5_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_PolicyShort_5_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_PolicyShort_5_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_PolicyShort_5_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_PolicyShort_5_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PolicyShort_5_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*ResourceShort)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_PolicyShort_5_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(ResourceShort)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_PolicyShort_5_map) NewValue() protoreflect.Value {\n\tv := new(ResourceShort)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_PolicyShort_5_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_PolicyShort             protoreflect.MessageDescriptor\n\tfd_PolicyShort_name        protoreflect.FieldDescriptor\n\tfd_PolicyShort_description protoreflect.FieldDescriptor\n\tfd_PolicyShort_meta        protoreflect.FieldDescriptor\n\tfd_PolicyShort_resources   protoreflect.FieldDescriptor\n\tfd_PolicyShort_actor       protoreflect.FieldDescriptor\n\tfd_PolicyShort_version     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tmd_PolicyShort = File_sourcenetwork_acp_core_policy_short_proto.Messages().ByName(\"PolicyShort\")\n\tfd_PolicyShort_name = md_PolicyShort.Fields().ByName(\"name\")\n\tfd_PolicyShort_description = md_PolicyShort.Fields().ByName(\"description\")\n\tfd_PolicyShort_meta = md_PolicyShort.Fields().ByName(\"meta\")\n\tfd_PolicyShort_resources = md_PolicyShort.Fields().ByName(\"resources\")\n\tfd_PolicyShort_actor = md_PolicyShort.Fields().ByName(\"actor\")\n\tfd_PolicyShort_version = md_PolicyShort.Fields().ByName(\"version\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PolicyShort)(nil)\n\ntype fastReflection_PolicyShort PolicyShort\n\nfunc (x *PolicyShort) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PolicyShort)(x)\n}\n\nfunc (x *PolicyShort) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PolicyShort_messageType fastReflection_PolicyShort_messageType\nvar _ protoreflect.MessageType = fastReflection_PolicyShort_messageType{}\n\ntype fastReflection_PolicyShort_messageType struct{}\n\nfunc (x fastReflection_PolicyShort_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PolicyShort)(nil)\n}\nfunc (x fastReflection_PolicyShort_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyShort)\n}\nfunc (x fastReflection_PolicyShort_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyShort\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PolicyShort) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PolicyShort\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PolicyShort) Type() protoreflect.MessageType {\n\treturn _fastReflection_PolicyShort_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PolicyShort) New() protoreflect.Message {\n\treturn new(fastReflection_PolicyShort)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PolicyShort) Interface() protoreflect.ProtoMessage {\n\treturn (*PolicyShort)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PolicyShort) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Name != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Name)\n\t\tif !f(fd_PolicyShort_name, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Description != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Description)\n\t\tif !f(fd_PolicyShort_description, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Meta) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_PolicyShort_4_map{m: &x.Meta})\n\t\tif !f(fd_PolicyShort_meta, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Resources) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_PolicyShort_5_map{m: &x.Resources})\n\t\tif !f(fd_PolicyShort_resources, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\t\tif !f(fd_PolicyShort_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Version != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Version)\n\t\tif !f(fd_PolicyShort_version, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PolicyShort) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\treturn x.Name != \"\"\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\treturn x.Description != \"\"\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\treturn len(x.Meta) != 0\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\treturn len(x.Resources) != 0\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\treturn x.Actor != nil\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\treturn x.Version != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyShort) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\tx.Name = \"\"\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\tx.Description = \"\"\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\tx.Meta = nil\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\tx.Resources = nil\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\tx.Actor = nil\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\tx.Version = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PolicyShort) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\tvalue := x.Name\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\tvalue := x.Description\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\tif len(x.Meta) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_PolicyShort_4_map{})\n\t\t}\n\t\tmapValue := &_PolicyShort_4_map{m: &x.Meta}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\tif len(x.Resources) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_PolicyShort_5_map{})\n\t\t}\n\t\tmapValue := &_PolicyShort_5_map{m: &x.Resources}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\tvalue := x.Version\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyShort) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\tx.Name = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\tx.Description = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_PolicyShort_4_map)\n\t\tx.Meta = *cmv.m\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_PolicyShort_5_map)\n\t\tx.Resources = *cmv.m\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\tx.Actor = value.Message().Interface().(*ActorResource)\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\tx.Version = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyShort) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\tif x.Meta == nil {\n\t\t\tx.Meta = make(map[string]string)\n\t\t}\n\t\tvalue := &_PolicyShort_4_map{m: &x.Meta}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\tif x.Resources == nil {\n\t\t\tx.Resources = make(map[string]*ResourceShort)\n\t\t}\n\t\tvalue := &_PolicyShort_5_map{m: &x.Resources}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\tif x.Actor == nil {\n\t\t\tx.Actor = new(ActorResource)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\tpanic(fmt.Errorf(\"field name of message sourcenetwork.acp_core.PolicyShort is not mutable\"))\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\tpanic(fmt.Errorf(\"field description of message sourcenetwork.acp_core.PolicyShort is not mutable\"))\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\tpanic(fmt.Errorf(\"field version of message sourcenetwork.acp_core.PolicyShort is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PolicyShort) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PolicyShort.name\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.PolicyShort.description\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.PolicyShort.meta\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_PolicyShort_4_map{m: &m})\n\tcase \"sourcenetwork.acp_core.PolicyShort.resources\":\n\t\tm := make(map[string]*ResourceShort)\n\t\treturn protoreflect.ValueOfMap(&_PolicyShort_5_map{m: &m})\n\tcase \"sourcenetwork.acp_core.PolicyShort.actor\":\n\t\tm := new(ActorResource)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.PolicyShort.version\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PolicyShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PolicyShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PolicyShort) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.PolicyShort\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PolicyShort) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PolicyShort) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PolicyShort) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PolicyShort) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PolicyShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Name)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Description)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Meta) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Meta))\n\t\t\t\tfor k := range x.Meta {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Meta[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Meta {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Resources) > 0 {\n\t\t\tSiZeMaP := func(k string, v *ResourceShort) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Resources))\n\t\t\t\tfor k := range x.Resources {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Resources[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Resources {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tl = options.Size(x.Actor)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Version)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Version) > 0 {\n\t\t\ti -= len(x.Version)\n\t\t\tcopy(dAtA[i:], x.Version)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Version)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tencoded, err := options.Marshal(x.Actor)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t\tif len(x.Resources) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *ResourceShort) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x2a\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForResources := make([]string, 0, len(x.Resources))\n\t\t\t\tfor k := range x.Resources {\n\t\t\t\t\tkeysForResources = append(keysForResources, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForResources, func(i, j int) bool {\n\t\t\t\t\treturn keysForResources[i] < keysForResources[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForResources) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Resources[string(keysForResources[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForResources[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Resources {\n\t\t\t\t\tv := x.Resources[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Meta) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x22\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMeta := make([]string, 0, len(x.Meta))\n\t\t\t\tfor k := range x.Meta {\n\t\t\t\t\tkeysForMeta = append(keysForMeta, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMeta, func(i, j int) bool {\n\t\t\t\t\treturn keysForMeta[i] < keysForMeta[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMeta) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Meta[string(keysForMeta[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMeta[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Meta {\n\t\t\t\t\tv := x.Meta[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Description) > 0 {\n\t\t\ti -= len(x.Description)\n\t\t\tcopy(dAtA[i:], x.Description)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Name) > 0 {\n\t\t\ti -= len(x.Name)\n\t\t\tcopy(dAtA[i:], x.Name)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Name)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PolicyShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyShort: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PolicyShort: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Name\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Name = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Description\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Description = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Meta\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Meta == nil {\n\t\t\t\t\tx.Meta = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Meta[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Resources\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Resources == nil {\n\t\t\t\t\tx.Resources = make(map[string]*ResourceShort)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *ResourceShort\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &ResourceShort{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Resources[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Actor == nil {\n\t\t\t\t\tx.Actor = &ActorResource{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Actor); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 7:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Version\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Version = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_ResourceShort_2_map)(nil)\n\ntype _ResourceShort_2_map struct {\n\tm *map[string]*PermissionShort\n}\n\nfunc (x *_ResourceShort_2_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ResourceShort_2_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ResourceShort_2_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ResourceShort_2_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ResourceShort_2_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_2_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*PermissionShort)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ResourceShort_2_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(PermissionShort)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_2_map) NewValue() protoreflect.Value {\n\tv := new(PermissionShort)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_2_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar _ protoreflect.Map = (*_ResourceShort_3_map)(nil)\n\ntype _ResourceShort_3_map struct {\n\tm *map[string]*RelationShort\n}\n\nfunc (x *_ResourceShort_3_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_ResourceShort_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_ResourceShort_3_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_ResourceShort_3_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_ResourceShort_3_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.Message()\n\tconcreteValue := valueUnwrapped.Interface().(*RelationShort)\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_ResourceShort_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif ok {\n\t\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n\t}\n\tnewValue := new(RelationShort)\n\t(*x.m)[concreteKey] = newValue\n\treturn protoreflect.ValueOfMessage(newValue.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_3_map) NewValue() protoreflect.Value {\n\tv := new(RelationShort)\n\treturn protoreflect.ValueOfMessage(v.ProtoReflect())\n}\n\nfunc (x *_ResourceShort_3_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_ResourceShort             protoreflect.MessageDescriptor\n\tfd_ResourceShort_doc         protoreflect.FieldDescriptor\n\tfd_ResourceShort_permissions protoreflect.FieldDescriptor\n\tfd_ResourceShort_relations   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tmd_ResourceShort = File_sourcenetwork_acp_core_policy_short_proto.Messages().ByName(\"ResourceShort\")\n\tfd_ResourceShort_doc = md_ResourceShort.Fields().ByName(\"doc\")\n\tfd_ResourceShort_permissions = md_ResourceShort.Fields().ByName(\"permissions\")\n\tfd_ResourceShort_relations = md_ResourceShort.Fields().ByName(\"relations\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ResourceShort)(nil)\n\ntype fastReflection_ResourceShort ResourceShort\n\nfunc (x *ResourceShort) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ResourceShort)(x)\n}\n\nfunc (x *ResourceShort) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ResourceShort_messageType fastReflection_ResourceShort_messageType\nvar _ protoreflect.MessageType = fastReflection_ResourceShort_messageType{}\n\ntype fastReflection_ResourceShort_messageType struct{}\n\nfunc (x fastReflection_ResourceShort_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ResourceShort)(nil)\n}\nfunc (x fastReflection_ResourceShort_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ResourceShort)\n}\nfunc (x fastReflection_ResourceShort_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ResourceShort\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ResourceShort) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ResourceShort\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ResourceShort) Type() protoreflect.MessageType {\n\treturn _fastReflection_ResourceShort_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ResourceShort) New() protoreflect.Message {\n\treturn new(fastReflection_ResourceShort)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ResourceShort) Interface() protoreflect.ProtoMessage {\n\treturn (*ResourceShort)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ResourceShort) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_ResourceShort_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Permissions) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ResourceShort_2_map{m: &x.Permissions})\n\t\tif !f(fd_ResourceShort_permissions, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Relations) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_ResourceShort_3_map{m: &x.Relations})\n\t\tif !f(fd_ResourceShort_relations, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ResourceShort) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\treturn len(x.Permissions) != 0\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\treturn len(x.Relations) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ResourceShort) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\tx.Permissions = nil\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\tx.Relations = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ResourceShort) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\tif len(x.Permissions) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ResourceShort_2_map{})\n\t\t}\n\t\tmapValue := &_ResourceShort_2_map{m: &x.Permissions}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\tif len(x.Relations) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_ResourceShort_3_map{})\n\t\t}\n\t\tmapValue := &_ResourceShort_3_map{m: &x.Relations}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ResourceShort) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ResourceShort_2_map)\n\t\tx.Permissions = *cmv.m\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_ResourceShort_3_map)\n\t\tx.Relations = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ResourceShort) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\tif x.Permissions == nil {\n\t\t\tx.Permissions = make(map[string]*PermissionShort)\n\t\t}\n\t\tvalue := &_ResourceShort_2_map{m: &x.Permissions}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\tif x.Relations == nil {\n\t\t\tx.Relations = make(map[string]*RelationShort)\n\t\t}\n\t\tvalue := &_ResourceShort_3_map{m: &x.Relations}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.ResourceShort is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ResourceShort) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ResourceShort.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.ResourceShort.permissions\":\n\t\tm := make(map[string]*PermissionShort)\n\t\treturn protoreflect.ValueOfMap(&_ResourceShort_2_map{m: &m})\n\tcase \"sourcenetwork.acp_core.ResourceShort.relations\":\n\t\tm := make(map[string]*RelationShort)\n\t\treturn protoreflect.ValueOfMap(&_ResourceShort_3_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ResourceShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ResourceShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ResourceShort) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ResourceShort\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ResourceShort) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ResourceShort) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ResourceShort) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ResourceShort) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ResourceShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Permissions) > 0 {\n\t\t\tSiZeMaP := func(k string, v *PermissionShort) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Permissions))\n\t\t\t\tfor k := range x.Permissions {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Permissions[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Permissions {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tSiZeMaP := func(k string, v *RelationShort) {\n\t\t\t\tl := 0\n\t\t\t\tif v != nil {\n\t\t\t\t\tl = options.Size(v)\n\t\t\t\t}\n\t\t\t\tl += 1 + runtime.Sov(uint64(l))\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + l\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Relations))\n\t\t\t\tfor k := range x.Relations {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Relations[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Relations {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ResourceShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Relations) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *RelationShort) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForRelations := make([]string, 0, len(x.Relations))\n\t\t\t\tfor k := range x.Relations {\n\t\t\t\t\tkeysForRelations = append(keysForRelations, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForRelations, func(i, j int) bool {\n\t\t\t\t\treturn keysForRelations[i] < keysForRelations[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForRelations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Relations[string(keysForRelations[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForRelations[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Relations {\n\t\t\t\t\tv := x.Relations[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Permissions) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v *PermissionShort) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\tencoded, err := options.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t\t}, err\n\t\t\t\t}\n\t\t\t\ti -= len(encoded)\n\t\t\t\tcopy(dAtA[i:], encoded)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForPermissions := make([]string, 0, len(x.Permissions))\n\t\t\t\tfor k := range x.Permissions {\n\t\t\t\t\tkeysForPermissions = append(keysForPermissions, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForPermissions, func(i, j int) bool {\n\t\t\t\t\treturn keysForPermissions[i] < keysForPermissions[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForPermissions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Permissions[string(keysForPermissions[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForPermissions[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Permissions {\n\t\t\t\t\tv := x.Permissions[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ResourceShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ResourceShort: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ResourceShort: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Permissions\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Permissions == nil {\n\t\t\t\t\tx.Permissions = make(map[string]*PermissionShort)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *PermissionShort\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &PermissionShort{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Permissions[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relations\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relations == nil {\n\t\t\t\t\tx.Relations = make(map[string]*RelationShort)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue *RelationShort\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar mapmsglen int\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tmapmsglen |= int(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif mapmsglen < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostmsgIndex := iNdEx + mapmsglen\n\t\t\t\t\t\tif postmsgIndex < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postmsgIndex > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = &RelationShort{}\n\t\t\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postmsgIndex], mapvalue); err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx = postmsgIndex\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Relations[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.List = (*_RelationShort_2_list)(nil)\n\ntype _RelationShort_2_list struct {\n\tlist *[]string\n}\n\nfunc (x *_RelationShort_2_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_RelationShort_2_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_RelationShort_2_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_RelationShort_2_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_RelationShort_2_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message RelationShort at list field Manages as it is not of Message kind\"))\n}\n\nfunc (x *_RelationShort_2_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_RelationShort_2_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RelationShort_2_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar _ protoreflect.List = (*_RelationShort_3_list)(nil)\n\ntype _RelationShort_3_list struct {\n\tlist *[]string\n}\n\nfunc (x *_RelationShort_3_list) Len() int {\n\tif x.list == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.list)\n}\n\nfunc (x *_RelationShort_3_list) Get(i int) protoreflect.Value {\n\treturn protoreflect.ValueOfString((*x.list)[i])\n}\n\nfunc (x *_RelationShort_3_list) Set(i int, value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.list)[i] = concreteValue\n}\n\nfunc (x *_RelationShort_3_list) Append(value protoreflect.Value) {\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t*x.list = append(*x.list, concreteValue)\n}\n\nfunc (x *_RelationShort_3_list) AppendMutable() protoreflect.Value {\n\tpanic(fmt.Errorf(\"AppendMutable can not be called on message RelationShort at list field Types as it is not of Message kind\"))\n}\n\nfunc (x *_RelationShort_3_list) Truncate(n int) {\n\t*x.list = (*x.list)[:n]\n}\n\nfunc (x *_RelationShort_3_list) NewElement() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RelationShort_3_list) IsValid() bool {\n\treturn x.list != nil\n}\n\nvar (\n\tmd_RelationShort         protoreflect.MessageDescriptor\n\tfd_RelationShort_doc     protoreflect.FieldDescriptor\n\tfd_RelationShort_manages protoreflect.FieldDescriptor\n\tfd_RelationShort_types   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tmd_RelationShort = File_sourcenetwork_acp_core_policy_short_proto.Messages().ByName(\"RelationShort\")\n\tfd_RelationShort_doc = md_RelationShort.Fields().ByName(\"doc\")\n\tfd_RelationShort_manages = md_RelationShort.Fields().ByName(\"manages\")\n\tfd_RelationShort_types = md_RelationShort.Fields().ByName(\"types\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RelationShort)(nil)\n\ntype fastReflection_RelationShort RelationShort\n\nfunc (x *RelationShort) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RelationShort)(x)\n}\n\nfunc (x *RelationShort) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RelationShort_messageType fastReflection_RelationShort_messageType\nvar _ protoreflect.MessageType = fastReflection_RelationShort_messageType{}\n\ntype fastReflection_RelationShort_messageType struct{}\n\nfunc (x fastReflection_RelationShort_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RelationShort)(nil)\n}\nfunc (x fastReflection_RelationShort_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RelationShort)\n}\nfunc (x fastReflection_RelationShort_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationShort\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RelationShort) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationShort\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RelationShort) Type() protoreflect.MessageType {\n\treturn _fastReflection_RelationShort_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RelationShort) New() protoreflect.Message {\n\treturn new(fastReflection_RelationShort)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RelationShort) Interface() protoreflect.ProtoMessage {\n\treturn (*RelationShort)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RelationShort) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_RelationShort_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Manages) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_RelationShort_2_list{list: &x.Manages})\n\t\tif !f(fd_RelationShort_manages, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Types) != 0 {\n\t\tvalue := protoreflect.ValueOfList(&_RelationShort_3_list{list: &x.Types})\n\t\tif !f(fd_RelationShort_types, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RelationShort) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\treturn len(x.Manages) != 0\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\treturn len(x.Types) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationShort) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\tx.Manages = nil\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\tx.Types = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RelationShort) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\tif len(x.Manages) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_RelationShort_2_list{})\n\t\t}\n\t\tlistValue := &_RelationShort_2_list{list: &x.Manages}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\tif len(x.Types) == 0 {\n\t\t\treturn protoreflect.ValueOfList(&_RelationShort_3_list{})\n\t\t}\n\t\tlistValue := &_RelationShort_3_list{list: &x.Types}\n\t\treturn protoreflect.ValueOfList(listValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationShort) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_RelationShort_2_list)\n\t\tx.Manages = *clv.list\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\tlv := value.List()\n\t\tclv := lv.(*_RelationShort_3_list)\n\t\tx.Types = *clv.list\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationShort) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\tif x.Manages == nil {\n\t\t\tx.Manages = []string{}\n\t\t}\n\t\tvalue := &_RelationShort_2_list{list: &x.Manages}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\tif x.Types == nil {\n\t\t\tx.Types = []string{}\n\t\t}\n\t\tvalue := &_RelationShort_3_list{list: &x.Types}\n\t\treturn protoreflect.ValueOfList(value)\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.RelationShort is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RelationShort) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationShort.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.RelationShort.manages\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_RelationShort_2_list{list: &list})\n\tcase \"sourcenetwork.acp_core.RelationShort.types\":\n\t\tlist := []string{}\n\t\treturn protoreflect.ValueOfList(&_RelationShort_3_list{list: &list})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RelationShort) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RelationShort\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RelationShort) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationShort) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RelationShort) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RelationShort) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RelationShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Manages) > 0 {\n\t\t\tfor _, s := range x.Manages {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif len(x.Types) > 0 {\n\t\t\tfor _, s := range x.Types {\n\t\t\t\tl = len(s)\n\t\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Types) > 0 {\n\t\t\tfor iNdEx := len(x.Types) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.Types[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.Types[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Types[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x1a\n\t\t\t}\n\t\t}\n\t\tif len(x.Manages) > 0 {\n\t\t\tfor iNdEx := len(x.Manages) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\ti -= len(x.Manages[iNdEx])\n\t\t\t\tcopy(dAtA[i:], x.Manages[iNdEx])\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Manages[iNdEx])))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t}\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationShort: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationShort: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Manages\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Manages = append(x.Manages, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Types\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Types = append(x.Types, string(dAtA[iNdEx:postIndex]))\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_PermissionShort      protoreflect.MessageDescriptor\n\tfd_PermissionShort_doc  protoreflect.FieldDescriptor\n\tfd_PermissionShort_expr protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tmd_PermissionShort = File_sourcenetwork_acp_core_policy_short_proto.Messages().ByName(\"PermissionShort\")\n\tfd_PermissionShort_doc = md_PermissionShort.Fields().ByName(\"doc\")\n\tfd_PermissionShort_expr = md_PermissionShort.Fields().ByName(\"expr\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_PermissionShort)(nil)\n\ntype fastReflection_PermissionShort PermissionShort\n\nfunc (x *PermissionShort) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_PermissionShort)(x)\n}\n\nfunc (x *PermissionShort) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_PermissionShort_messageType fastReflection_PermissionShort_messageType\nvar _ protoreflect.MessageType = fastReflection_PermissionShort_messageType{}\n\ntype fastReflection_PermissionShort_messageType struct{}\n\nfunc (x fastReflection_PermissionShort_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_PermissionShort)(nil)\n}\nfunc (x fastReflection_PermissionShort_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_PermissionShort)\n}\nfunc (x fastReflection_PermissionShort_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PermissionShort\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_PermissionShort) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_PermissionShort\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_PermissionShort) Type() protoreflect.MessageType {\n\treturn _fastReflection_PermissionShort_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_PermissionShort) New() protoreflect.Message {\n\treturn new(fastReflection_PermissionShort)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_PermissionShort) Interface() protoreflect.ProtoMessage {\n\treturn (*PermissionShort)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_PermissionShort) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Doc != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Doc)\n\t\tif !f(fd_PermissionShort_doc, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Expr != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Expr)\n\t\tif !f(fd_PermissionShort_expr, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_PermissionShort) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\treturn x.Doc != \"\"\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\treturn x.Expr != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PermissionShort) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\tx.Doc = \"\"\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\tx.Expr = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_PermissionShort) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\tvalue := x.Doc\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\tvalue := x.Expr\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PermissionShort) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\tx.Doc = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\tx.Expr = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PermissionShort) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\tpanic(fmt.Errorf(\"field doc of message sourcenetwork.acp_core.PermissionShort is not mutable\"))\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\tpanic(fmt.Errorf(\"field expr of message sourcenetwork.acp_core.PermissionShort is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_PermissionShort) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.PermissionShort.doc\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.PermissionShort.expr\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.PermissionShort\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.PermissionShort does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_PermissionShort) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.PermissionShort\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_PermissionShort) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_PermissionShort) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_PermissionShort) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_PermissionShort) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*PermissionShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Doc)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Expr)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PermissionShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Expr) > 0 {\n\t\t\ti -= len(x.Expr)\n\t\t\tcopy(dAtA[i:], x.Expr)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Expr)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Doc) > 0 {\n\t\t\ti -= len(x.Doc)\n\t\t\tcopy(dAtA[i:], x.Doc)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Doc)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*PermissionShort)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PermissionShort: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: PermissionShort: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Doc\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Doc = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Expr\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Expr = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_MarshaledPolicy        protoreflect.MessageDescriptor\n\tfd_MarshaledPolicy_policy protoreflect.FieldDescriptor\n\tfd_MarshaledPolicy_type   protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_policy_short_proto_init()\n\tmd_MarshaledPolicy = File_sourcenetwork_acp_core_policy_short_proto.Messages().ByName(\"MarshaledPolicy\")\n\tfd_MarshaledPolicy_policy = md_MarshaledPolicy.Fields().ByName(\"policy\")\n\tfd_MarshaledPolicy_type = md_MarshaledPolicy.Fields().ByName(\"type\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_MarshaledPolicy)(nil)\n\ntype fastReflection_MarshaledPolicy MarshaledPolicy\n\nfunc (x *MarshaledPolicy) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_MarshaledPolicy)(x)\n}\n\nfunc (x *MarshaledPolicy) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_MarshaledPolicy_messageType fastReflection_MarshaledPolicy_messageType\nvar _ protoreflect.MessageType = fastReflection_MarshaledPolicy_messageType{}\n\ntype fastReflection_MarshaledPolicy_messageType struct{}\n\nfunc (x fastReflection_MarshaledPolicy_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_MarshaledPolicy)(nil)\n}\nfunc (x fastReflection_MarshaledPolicy_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_MarshaledPolicy)\n}\nfunc (x fastReflection_MarshaledPolicy_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MarshaledPolicy\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_MarshaledPolicy) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_MarshaledPolicy\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_MarshaledPolicy) Type() protoreflect.MessageType {\n\treturn _fastReflection_MarshaledPolicy_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_MarshaledPolicy) New() protoreflect.Message {\n\treturn new(fastReflection_MarshaledPolicy)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_MarshaledPolicy) Interface() protoreflect.ProtoMessage {\n\treturn (*MarshaledPolicy)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_MarshaledPolicy) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Policy != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Policy)\n\t\tif !f(fd_MarshaledPolicy_policy, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Type_ != 0 {\n\t\tvalue := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.Type_))\n\t\tif !f(fd_MarshaledPolicy_type, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_MarshaledPolicy) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\treturn x.Policy != \"\"\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\treturn x.Type_ != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MarshaledPolicy) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\tx.Policy = \"\"\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\tx.Type_ = 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_MarshaledPolicy) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\tvalue := x.Policy\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\tvalue := x.Type_\n\t\treturn protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MarshaledPolicy) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\tx.Policy = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\tx.Type_ = (PolicyMarshalingType)(value.Enum())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MarshaledPolicy) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\tpanic(fmt.Errorf(\"field policy of message sourcenetwork.acp_core.MarshaledPolicy is not mutable\"))\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\tpanic(fmt.Errorf(\"field type of message sourcenetwork.acp_core.MarshaledPolicy is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_MarshaledPolicy) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.policy\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.MarshaledPolicy.type\":\n\t\treturn protoreflect.ValueOfEnum(0)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.MarshaledPolicy\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.MarshaledPolicy does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_MarshaledPolicy) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.MarshaledPolicy\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_MarshaledPolicy) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_MarshaledPolicy) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_MarshaledPolicy) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_MarshaledPolicy) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*MarshaledPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Policy)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Type_ != 0 {\n\t\t\tn += 1 + runtime.Sov(uint64(x.Type_))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MarshaledPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Type_ != 0 {\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(x.Type_))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x10\n\t\t}\n\t\tif len(x.Policy) > 0 {\n\t\t\ti -= len(x.Policy)\n\t\t\tcopy(dAtA[i:], x.Policy)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Policy)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*MarshaledPolicy)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MarshaledPolicy: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: MarshaledPolicy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Type_\", wireType)\n\t\t\t\t}\n\t\t\t\tx.Type_ = 0\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tx.Type_ |= PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/policy_short.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// PolicyEncodingType enumerates supported marshaling types for policies.\ntype PolicyMarshalingType int32\n\nconst (\n\t// Fallback value for a missing Marshaling Type\n\tPolicyMarshalingType_UNKNOWN PolicyMarshalingType = 0\n\t// Policy Marshaled as a YAML Short Policy definition\n\tPolicyMarshalingType_YAML PolicyMarshalingType = 1\n\t// Policy Marshaled as a JSON Short Policy definition\n\tPolicyMarshalingType_SHORT_JSON PolicyMarshalingType = 2\n)\n\n// Enum value maps for PolicyMarshalingType.\nvar (\n\tPolicyMarshalingType_name = map[int32]string{\n\t\t0: \"UNKNOWN\",\n\t\t1: \"SHORT_YAML\",\n\t\t2: \"SHORT_JSON\",\n\t}\n\tPolicyMarshalingType_value = map[string]int32{\n\t\t\"UNKNOWN\":    0,\n\t\t\"SHORT_YAML\": 1,\n\t\t\"SHORT_JSON\": 2,\n\t}\n)\n\nfunc (x PolicyMarshalingType) Enum() *PolicyMarshalingType {\n\tp := new(PolicyMarshalingType)\n\t*p = x\n\treturn p\n}\n\nfunc (x PolicyMarshalingType) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (PolicyMarshalingType) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_enumTypes[0].Descriptor()\n}\n\nfunc (PolicyMarshalingType) Type() protoreflect.EnumType {\n\treturn &file_sourcenetwork_acp_core_policy_short_proto_enumTypes[0]\n}\n\nfunc (x PolicyMarshalingType) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use PolicyMarshalingType.Descriptor instead.\nfunc (PolicyMarshalingType) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{0}\n}\n\n// PolicyShort is a compact Policy definition which is conveniently expressed\n// as JSON or YAML. The shorthand format is used created a Policy.\ntype PolicyShort struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tName        string `protobuf:\"bytes,1,opt,name=name,proto3\" json:\"name,omitempty\"`\n\tDescription string `protobuf:\"bytes,2,opt,name=description,proto3\" json:\"description,omitempty\"`\n\t// meta field stores arbitrary key-values from users\n\tMeta map[string]string `protobuf:\"bytes,4,rep,name=meta,proto3\" json:\"meta,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// resources defines resources within a policy.\n\t// map keys define the name for a resource\n\tResources map[string]*ResourceShort `protobuf:\"bytes,5,rep,name=resources,proto3\" json:\"resources,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\t// actor resource defines the actor resource for the policy\n\t// optional.\n\tActor *ActorResource `protobuf:\"bytes,6,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\t// specify the policy version\n\tVersion string `protobuf:\"bytes,7,opt,name=version,proto3\" json:\"version,omitempty\"`\n}\n\nfunc (x *PolicyShort) Reset() {\n\t*x = PolicyShort{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PolicyShort) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PolicyShort) ProtoMessage() {}\n\n// Deprecated: Use PolicyShort.ProtoReflect.Descriptor instead.\nfunc (*PolicyShort) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *PolicyShort) GetName() string {\n\tif x != nil {\n\t\treturn x.Name\n\t}\n\treturn \"\"\n}\n\nfunc (x *PolicyShort) GetDescription() string {\n\tif x != nil {\n\t\treturn x.Description\n\t}\n\treturn \"\"\n}\n\nfunc (x *PolicyShort) GetMeta() map[string]string {\n\tif x != nil {\n\t\treturn x.Meta\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyShort) GetResources() map[string]*ResourceShort {\n\tif x != nil {\n\t\treturn x.Resources\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyShort) GetActor() *ActorResource {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn nil\n}\n\nfunc (x *PolicyShort) GetVersion() string {\n\tif x != nil {\n\t\treturn x.Version\n\t}\n\treturn \"\"\n}\n\ntype ResourceShort struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDoc         string                      `protobuf:\"bytes,1,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tPermissions map[string]*PermissionShort `protobuf:\"bytes,2,rep,name=permissions,proto3\" json:\"permissions,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n\tRelations   map[string]*RelationShort   `protobuf:\"bytes,3,rep,name=relations,proto3\" json:\"relations,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *ResourceShort) Reset() {\n\t*x = ResourceShort{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ResourceShort) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ResourceShort) ProtoMessage() {}\n\n// Deprecated: Use ResourceShort.ProtoReflect.Descriptor instead.\nfunc (*ResourceShort) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ResourceShort) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *ResourceShort) GetPermissions() map[string]*PermissionShort {\n\tif x != nil {\n\t\treturn x.Permissions\n\t}\n\treturn nil\n}\n\nfunc (x *ResourceShort) GetRelations() map[string]*RelationShort {\n\tif x != nil {\n\t\treturn x.Relations\n\t}\n\treturn nil\n}\n\ntype RelationShort struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDoc string `protobuf:\"bytes,1,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\t// list of relations managed by the current relation\n\tManages []string `protobuf:\"bytes,2,rep,name=manages,proto3\" json:\"manages,omitempty\"`\n\t// types define a list of target types the current relation can point to.\n\t// Each type restriction points to a a resource's relation.\n\t// The syntax for a type restriction is \"{resource}->{relation}\", where relation is optional.\n\t// An empty relation means the relationship can only point to an object node, as opposed to an userset.\n\tTypes []string `protobuf:\"bytes,3,rep,name=types,proto3\" json:\"types,omitempty\"`\n}\n\nfunc (x *RelationShort) Reset() {\n\t*x = RelationShort{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RelationShort) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RelationShort) ProtoMessage() {}\n\n// Deprecated: Use RelationShort.ProtoReflect.Descriptor instead.\nfunc (*RelationShort) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *RelationShort) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *RelationShort) GetManages() []string {\n\tif x != nil {\n\t\treturn x.Manages\n\t}\n\treturn nil\n}\n\nfunc (x *RelationShort) GetTypes() []string {\n\tif x != nil {\n\t\treturn x.Types\n\t}\n\treturn nil\n}\n\ntype PermissionShort struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tDoc  string `protobuf:\"bytes,1,opt,name=doc,proto3\" json:\"doc,omitempty\"`\n\tExpr string `protobuf:\"bytes,2,opt,name=expr,proto3\" json:\"expr,omitempty\"`\n}\n\nfunc (x *PermissionShort) Reset() {\n\t*x = PermissionShort{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *PermissionShort) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*PermissionShort) ProtoMessage() {}\n\n// Deprecated: Use PermissionShort.ProtoReflect.Descriptor instead.\nfunc (*PermissionShort) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *PermissionShort) GetDoc() string {\n\tif x != nil {\n\t\treturn x.Doc\n\t}\n\treturn \"\"\n}\n\nfunc (x *PermissionShort) GetExpr() string {\n\tif x != nil {\n\t\treturn x.Expr\n\t}\n\treturn \"\"\n}\n\n// MarshaledPolicy represents a PolicyShort object\n// marshaled to a known encoding format\ntype MarshaledPolicy struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicy string               `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tType_  PolicyMarshalingType `protobuf:\"varint,2,opt,name=type,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"type,omitempty\"`\n}\n\nfunc (x *MarshaledPolicy) Reset() {\n\t*x = MarshaledPolicy{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_policy_short_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *MarshaledPolicy) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*MarshaledPolicy) ProtoMessage() {}\n\n// Deprecated: Use MarshaledPolicy.ProtoReflect.Descriptor instead.\nfunc (*MarshaledPolicy) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *MarshaledPolicy) GetPolicy() string {\n\tif x != nil {\n\t\treturn x.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (x *MarshaledPolicy) GetType_() PolicyMarshalingType {\n\tif x != nil {\n\t\treturn x.Type_\n\t}\n\treturn PolicyMarshalingType_UNKNOWN\n}\n\nvar File_sourcenetwork_acp_core_policy_short_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_policy_short_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,\n\t0x73, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x1a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x6f, 0x6c, 0x69,\n\t0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x03, 0x0a, 0x0b, 0x50, 0x6f, 0x6c,\n\t0x69, 0x63, 0x79, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b,\n\t0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41,\n\t0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x68, 0x6f, 0x72,\n\t0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d, 0x65, 0x74,\n\t0x61, 0x12, 0x50, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05,\n\t0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f,\n\t0x6c, 0x69, 0x63, 0x79, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f,\n\t0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72,\n\t0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,\n\t0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65,\n\t0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,\n\t0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,\n\t0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9d, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f,\n\t0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x58, 0x0a, 0x0b,\n\t0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,\n\t0x0b, 0x32, 0x36, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,\n\t0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,\n\t0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69,\n\t0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x6f, 0x72, 0x74,\n\t0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,\n\t0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x67, 0x0a, 0x10, 0x50, 0x65,\n\t0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,\n\t0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,\n\t0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,\n\t0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,\n\t0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,\n\t0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,\n\t0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x0d, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x63,\n\t0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x6d,\n\t0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61,\n\t0x6e, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03,\n\t0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x50,\n\t0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x10,\n\t0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x6f, 0x63,\n\t0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,\n\t0x65, 0x78, 0x70, 0x72, 0x22, 0x6b, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x65,\n\t0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63,\n\t0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,\n\t0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72,\n\t0x73, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,\n\t0x65, 0x2a, 0x43, 0x0a, 0x14, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x61, 0x72, 0x73, 0x68,\n\t0x61, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,\n\t0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x5f,\n\t0x59, 0x41, 0x4d, 0x4c, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x5f,\n\t0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x42, 0xe2, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x10, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x68, 0x6f,\n\t0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75,\n\t0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02,\n\t0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41,\n\t0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02,\n\t0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41,\n\t0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_policy_short_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_policy_short_proto_rawDescData = file_sourcenetwork_acp_core_policy_short_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_policy_short_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_policy_short_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_policy_short_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_policy_short_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_policy_short_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcenetwork_acp_core_policy_short_proto_msgTypes = make([]protoimpl.MessageInfo, 9)\nvar file_sourcenetwork_acp_core_policy_short_proto_goTypes = []interface{}{\n\t(PolicyMarshalingType)(0), // 0: sourcenetwork.acp_core.PolicyMarshalingType\n\t(*PolicyShort)(nil),       // 1: sourcenetwork.acp_core.PolicyShort\n\t(*ResourceShort)(nil),     // 2: sourcenetwork.acp_core.ResourceShort\n\t(*RelationShort)(nil),     // 3: sourcenetwork.acp_core.RelationShort\n\t(*PermissionShort)(nil),   // 4: sourcenetwork.acp_core.PermissionShort\n\t(*MarshaledPolicy)(nil),   // 5: sourcenetwork.acp_core.MarshaledPolicy\n\tnil,                       // 6: sourcenetwork.acp_core.PolicyShort.MetaEntry\n\tnil,                       // 7: sourcenetwork.acp_core.PolicyShort.ResourcesEntry\n\tnil,                       // 8: sourcenetwork.acp_core.ResourceShort.PermissionsEntry\n\tnil,                       // 9: sourcenetwork.acp_core.ResourceShort.RelationsEntry\n\t(*ActorResource)(nil),     // 10: sourcenetwork.acp_core.ActorResource\n}\nvar file_sourcenetwork_acp_core_policy_short_proto_depIdxs = []int32{\n\t6,  // 0: sourcenetwork.acp_core.PolicyShort.meta:type_name -> sourcenetwork.acp_core.PolicyShort.MetaEntry\n\t7,  // 1: sourcenetwork.acp_core.PolicyShort.resources:type_name -> sourcenetwork.acp_core.PolicyShort.ResourcesEntry\n\t10, // 2: sourcenetwork.acp_core.PolicyShort.actor:type_name -> sourcenetwork.acp_core.ActorResource\n\t8,  // 3: sourcenetwork.acp_core.ResourceShort.permissions:type_name -> sourcenetwork.acp_core.ResourceShort.PermissionsEntry\n\t9,  // 4: sourcenetwork.acp_core.ResourceShort.relations:type_name -> sourcenetwork.acp_core.ResourceShort.RelationsEntry\n\t0,  // 5: sourcenetwork.acp_core.MarshaledPolicy.type:type_name -> sourcenetwork.acp_core.PolicyMarshalingType\n\t2,  // 6: sourcenetwork.acp_core.PolicyShort.ResourcesEntry.value:type_name -> sourcenetwork.acp_core.ResourceShort\n\t4,  // 7: sourcenetwork.acp_core.ResourceShort.PermissionsEntry.value:type_name -> sourcenetwork.acp_core.PermissionShort\n\t3,  // 8: sourcenetwork.acp_core.ResourceShort.RelationsEntry.value:type_name -> sourcenetwork.acp_core.RelationShort\n\t9,  // [9:9] is the sub-list for method output_type\n\t9,  // [9:9] is the sub-list for method input_type\n\t9,  // [9:9] is the sub-list for extension type_name\n\t9,  // [9:9] is the sub-list for extension extendee\n\t0,  // [0:9] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_policy_short_proto_init() }\nfunc file_sourcenetwork_acp_core_policy_short_proto_init() {\n\tif File_sourcenetwork_acp_core_policy_short_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_policy_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PolicyShort); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ResourceShort); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RelationShort); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*PermissionShort); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_policy_short_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*MarshaledPolicy); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_policy_short_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   9,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_policy_short_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_policy_short_proto_depIdxs,\n\t\tEnumInfos:         file_sourcenetwork_acp_core_policy_short_proto_enumTypes,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_policy_short_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_policy_short_proto = out.File\n\tfile_sourcenetwork_acp_core_policy_short_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_policy_short_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_policy_short_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/relationship.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsort \"sort\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n\ttimestamppb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nvar (\n\tmd_Object          protoreflect.MessageDescriptor\n\tfd_Object_resource protoreflect.FieldDescriptor\n\tfd_Object_id       protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_Object = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"Object\")\n\tfd_Object_resource = md_Object.Fields().ByName(\"resource\")\n\tfd_Object_id = md_Object.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Object)(nil)\n\ntype fastReflection_Object Object\n\nfunc (x *Object) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Object)(x)\n}\n\nfunc (x *Object) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Object_messageType fastReflection_Object_messageType\nvar _ protoreflect.MessageType = fastReflection_Object_messageType{}\n\ntype fastReflection_Object_messageType struct{}\n\nfunc (x fastReflection_Object_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Object)(nil)\n}\nfunc (x fastReflection_Object_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Object)\n}\nfunc (x fastReflection_Object_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Object\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Object) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Object\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Object) Type() protoreflect.MessageType {\n\treturn _fastReflection_Object_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Object) New() protoreflect.Message {\n\treturn new(fastReflection_Object)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Object) Interface() protoreflect.ProtoMessage {\n\treturn (*Object)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Object) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Resource != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Resource)\n\t\tif !f(fd_Object_resource, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_Object_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Object) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\treturn x.Resource != \"\"\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Object) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\tx.Resource = \"\"\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Object) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\tvalue := x.Resource\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Object) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\tx.Resource = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Object) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\tpanic(fmt.Errorf(\"field resource of message sourcenetwork.acp_core.Object is not mutable\"))\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.Object is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Object) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Object.resource\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Object.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Object\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Object does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Object) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Object\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Object) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Object) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Object) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Object) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Object)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Resource)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Object)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.Resource) > 0 {\n\t\t\ti -= len(x.Resource)\n\t\t\tcopy(dAtA[i:], x.Resource)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Resource)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Object)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Object: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Object: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Resource\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Resource = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Actor    protoreflect.MessageDescriptor\n\tfd_Actor_id protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_Actor = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"Actor\")\n\tfd_Actor_id = md_Actor.Fields().ByName(\"id\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Actor)(nil)\n\ntype fastReflection_Actor Actor\n\nfunc (x *Actor) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Actor)(x)\n}\n\nfunc (x *Actor) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Actor_messageType fastReflection_Actor_messageType\nvar _ protoreflect.MessageType = fastReflection_Actor_messageType{}\n\ntype fastReflection_Actor_messageType struct{}\n\nfunc (x fastReflection_Actor_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Actor)(nil)\n}\nfunc (x fastReflection_Actor_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Actor)\n}\nfunc (x fastReflection_Actor_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Actor\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Actor) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Actor\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Actor) Type() protoreflect.MessageType {\n\treturn _fastReflection_Actor_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Actor) New() protoreflect.Message {\n\treturn new(fastReflection_Actor)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Actor) Interface() protoreflect.ProtoMessage {\n\treturn (*Actor)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Actor) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Id != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Id)\n\t\tif !f(fd_Actor_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Actor) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\treturn x.Id != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Actor) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\tx.Id = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Actor) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\tvalue := x.Id\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Actor) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\tx.Id = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Actor) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\tpanic(fmt.Errorf(\"field id of message sourcenetwork.acp_core.Actor is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Actor) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Actor.id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Actor\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Actor does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Actor) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Actor\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Actor) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Actor) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Actor) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Actor) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Actor)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.Id)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Actor)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Id) > 0 {\n\t\t\ti -= len(x.Id)\n\t\t\tcopy(dAtA[i:], x.Id)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Actor)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Actor: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Actor: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Id = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ActorSet          protoreflect.MessageDescriptor\n\tfd_ActorSet_object   protoreflect.FieldDescriptor\n\tfd_ActorSet_relation protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_ActorSet = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"ActorSet\")\n\tfd_ActorSet_object = md_ActorSet.Fields().ByName(\"object\")\n\tfd_ActorSet_relation = md_ActorSet.Fields().ByName(\"relation\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ActorSet)(nil)\n\ntype fastReflection_ActorSet ActorSet\n\nfunc (x *ActorSet) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ActorSet)(x)\n}\n\nfunc (x *ActorSet) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ActorSet_messageType fastReflection_ActorSet_messageType\nvar _ protoreflect.MessageType = fastReflection_ActorSet_messageType{}\n\ntype fastReflection_ActorSet_messageType struct{}\n\nfunc (x fastReflection_ActorSet_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ActorSet)(nil)\n}\nfunc (x fastReflection_ActorSet_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ActorSet)\n}\nfunc (x fastReflection_ActorSet_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ActorSet\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ActorSet) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ActorSet\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ActorSet) Type() protoreflect.MessageType {\n\treturn _fastReflection_ActorSet_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ActorSet) New() protoreflect.Message {\n\treturn new(fastReflection_ActorSet)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ActorSet) Interface() protoreflect.ProtoMessage {\n\treturn (*ActorSet)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ActorSet) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_ActorSet_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relation != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Relation)\n\t\tif !f(fd_ActorSet_relation, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ActorSet) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\treturn x.Relation != \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorSet) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\tx.Relation = \"\"\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ActorSet) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\tvalue := x.Relation\n\t\treturn protoreflect.ValueOfString(value)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorSet) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\tx.Relation = value.Interface().(string)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorSet) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\tpanic(fmt.Errorf(\"field relation of message sourcenetwork.acp_core.ActorSet is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ActorSet) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ActorSet.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.ActorSet.relation\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ActorSet\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ActorSet does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ActorSet) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ActorSet\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ActorSet) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ActorSet) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ActorSet) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ActorSet) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ActorSet)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Relation)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ActorSet)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Relation) > 0 {\n\t\t\ti -= len(x.Relation)\n\t\t\tcopy(dAtA[i:], x.Relation)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Relation)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ActorSet)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ActorSet: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ActorSet: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relation\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Relation = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_AllActors protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_AllActors = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"AllActors\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_AllActors)(nil)\n\ntype fastReflection_AllActors AllActors\n\nfunc (x *AllActors) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_AllActors)(x)\n}\n\nfunc (x *AllActors) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_AllActors_messageType fastReflection_AllActors_messageType\nvar _ protoreflect.MessageType = fastReflection_AllActors_messageType{}\n\ntype fastReflection_AllActors_messageType struct{}\n\nfunc (x fastReflection_AllActors_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_AllActors)(nil)\n}\nfunc (x fastReflection_AllActors_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_AllActors)\n}\nfunc (x fastReflection_AllActors_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AllActors\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_AllActors) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_AllActors\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_AllActors) Type() protoreflect.MessageType {\n\treturn _fastReflection_AllActors_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_AllActors) New() protoreflect.Message {\n\treturn new(fastReflection_AllActors)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_AllActors) Interface() protoreflect.ProtoMessage {\n\treturn (*AllActors)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_AllActors) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_AllActors) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllActors) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_AllActors) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllActors) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllActors) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_AllActors) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.AllActors\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.AllActors does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_AllActors) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.AllActors\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_AllActors) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_AllActors) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_AllActors) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_AllActors) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*AllActors)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AllActors)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*AllActors)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AllActors: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: AllActors: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Subject            protoreflect.MessageDescriptor\n\tfd_Subject_actor      protoreflect.FieldDescriptor\n\tfd_Subject_actor_set  protoreflect.FieldDescriptor\n\tfd_Subject_all_actors protoreflect.FieldDescriptor\n\tfd_Subject_object     protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_Subject = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"Subject\")\n\tfd_Subject_actor = md_Subject.Fields().ByName(\"actor\")\n\tfd_Subject_actor_set = md_Subject.Fields().ByName(\"actor_set\")\n\tfd_Subject_all_actors = md_Subject.Fields().ByName(\"all_actors\")\n\tfd_Subject_object = md_Subject.Fields().ByName(\"object\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Subject)(nil)\n\ntype fastReflection_Subject Subject\n\nfunc (x *Subject) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Subject)(x)\n}\n\nfunc (x *Subject) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Subject_messageType fastReflection_Subject_messageType\nvar _ protoreflect.MessageType = fastReflection_Subject_messageType{}\n\ntype fastReflection_Subject_messageType struct{}\n\nfunc (x fastReflection_Subject_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Subject)(nil)\n}\nfunc (x fastReflection_Subject_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Subject)\n}\nfunc (x fastReflection_Subject_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Subject\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Subject) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Subject\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Subject) Type() protoreflect.MessageType {\n\treturn _fastReflection_Subject_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Subject) New() protoreflect.Message {\n\treturn new(fastReflection_Subject)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Subject) Interface() protoreflect.ProtoMessage {\n\treturn (*Subject)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Subject) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Subject != nil {\n\t\tswitch o := x.Subject.(type) {\n\t\tcase *Subject_Actor:\n\t\t\tv := o.Actor\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_Subject_actor, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *Subject_ActorSet:\n\t\t\tv := o.ActorSet\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_Subject_actor_set, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *Subject_AllActors:\n\t\t\tv := o.AllActors\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_Subject_all_actors, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *Subject_Object:\n\t\t\tv := o.Object\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_Subject_object, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Subject) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tif x.Subject == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Subject.(*Subject_Actor); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tif x.Subject == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Subject.(*Subject_ActorSet); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tif x.Subject == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Subject.(*Subject_AllActors); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tif x.Subject == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Subject.(*Subject_Object); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Subject) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tx.Subject = nil\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tx.Subject = nil\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tx.Subject = nil\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tx.Subject = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Subject) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tif x.Subject == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*Actor)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Subject.(*Subject_Actor); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Actor.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*Actor)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tif x.Subject == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*ActorSet)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Subject.(*Subject_ActorSet); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.ActorSet.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*ActorSet)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tif x.Subject == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*AllActors)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Subject.(*Subject_AllActors); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.AllActors.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*AllActors)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tif x.Subject == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*Object)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Subject.(*Subject_Object); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Object.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*Object)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Subject) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tcv := value.Message().Interface().(*Actor)\n\t\tx.Subject = &Subject_Actor{Actor: cv}\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tcv := value.Message().Interface().(*ActorSet)\n\t\tx.Subject = &Subject_ActorSet{ActorSet: cv}\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tcv := value.Message().Interface().(*AllActors)\n\t\tx.Subject = &Subject_AllActors{AllActors: cv}\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tcv := value.Message().Interface().(*Object)\n\t\tx.Subject = &Subject_Object{Object: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Subject) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tif x.Subject == nil {\n\t\t\tvalue := &Actor{}\n\t\t\toneofValue := &Subject_Actor{Actor: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Subject.(type) {\n\t\tcase *Subject_Actor:\n\t\t\treturn protoreflect.ValueOfMessage(m.Actor.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &Actor{}\n\t\t\toneofValue := &Subject_Actor{Actor: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tif x.Subject == nil {\n\t\t\tvalue := &ActorSet{}\n\t\t\toneofValue := &Subject_ActorSet{ActorSet: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Subject.(type) {\n\t\tcase *Subject_ActorSet:\n\t\t\treturn protoreflect.ValueOfMessage(m.ActorSet.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &ActorSet{}\n\t\t\toneofValue := &Subject_ActorSet{ActorSet: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tif x.Subject == nil {\n\t\t\tvalue := &AllActors{}\n\t\t\toneofValue := &Subject_AllActors{AllActors: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Subject.(type) {\n\t\tcase *Subject_AllActors:\n\t\t\treturn protoreflect.ValueOfMessage(m.AllActors.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &AllActors{}\n\t\t\toneofValue := &Subject_AllActors{AllActors: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tif x.Subject == nil {\n\t\t\tvalue := &Object{}\n\t\t\toneofValue := &Subject_Object{Object: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Subject.(type) {\n\t\tcase *Subject_Object:\n\t\t\treturn protoreflect.ValueOfMessage(m.Object.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &Object{}\n\t\t\toneofValue := &Subject_Object{Object: value}\n\t\t\tx.Subject = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Subject) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.actor\":\n\t\tvalue := &Actor{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Subject.actor_set\":\n\t\tvalue := &ActorSet{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Subject.all_actors\":\n\t\tvalue := &AllActors{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Subject.object\":\n\t\tvalue := &Object{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Subject\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Subject does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Subject) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcenetwork.acp_core.Subject.subject\":\n\t\tif x.Subject == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Subject.(type) {\n\t\tcase *Subject_Actor:\n\t\t\treturn x.Descriptor().Fields().ByName(\"actor\")\n\t\tcase *Subject_ActorSet:\n\t\t\treturn x.Descriptor().Fields().ByName(\"actor_set\")\n\t\tcase *Subject_AllActors:\n\t\t\treturn x.Descriptor().Fields().ByName(\"all_actors\")\n\t\tcase *Subject_Object:\n\t\t\treturn x.Descriptor().Fields().ByName(\"object\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Subject\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Subject) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Subject) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Subject) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Subject) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Subject)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Subject.(type) {\n\t\tcase *Subject_Actor:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Actor)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *Subject_ActorSet:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.ActorSet)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *Subject_AllActors:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.AllActors)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *Subject_Object:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Subject)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Subject.(type) {\n\t\tcase *Subject_Actor:\n\t\t\tencoded, err := options.Marshal(x.Actor)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *Subject_ActorSet:\n\t\t\tencoded, err := options.Marshal(x.ActorSet)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\tcase *Subject_AllActors:\n\t\t\tencoded, err := options.Marshal(x.AllActors)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\tcase *Subject_Object:\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Subject)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Subject: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Subject: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &Actor{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Subject = &Subject_Actor{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ActorSet\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &ActorSet{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Subject = &Subject_ActorSet{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field AllActors\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &AllActors{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Subject = &Subject_AllActors{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &Object{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Subject = &Subject_Object{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Relationship          protoreflect.MessageDescriptor\n\tfd_Relationship_object   protoreflect.FieldDescriptor\n\tfd_Relationship_relation protoreflect.FieldDescriptor\n\tfd_Relationship_subject  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_Relationship = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"Relationship\")\n\tfd_Relationship_object = md_Relationship.Fields().ByName(\"object\")\n\tfd_Relationship_relation = md_Relationship.Fields().ByName(\"relation\")\n\tfd_Relationship_subject = md_Relationship.Fields().ByName(\"subject\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Relationship)(nil)\n\ntype fastReflection_Relationship Relationship\n\nfunc (x *Relationship) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Relationship)(x)\n}\n\nfunc (x *Relationship) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[5]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Relationship_messageType fastReflection_Relationship_messageType\nvar _ protoreflect.MessageType = fastReflection_Relationship_messageType{}\n\ntype fastReflection_Relationship_messageType struct{}\n\nfunc (x fastReflection_Relationship_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Relationship)(nil)\n}\nfunc (x fastReflection_Relationship_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Relationship)\n}\nfunc (x fastReflection_Relationship_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Relationship\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Relationship) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Relationship\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Relationship) Type() protoreflect.MessageType {\n\treturn _fastReflection_Relationship_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Relationship) New() protoreflect.Message {\n\treturn new(fastReflection_Relationship)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Relationship) Interface() protoreflect.ProtoMessage {\n\treturn (*Relationship)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Relationship) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_Relationship_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relation != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.Relation)\n\t\tif !f(fd_Relationship_relation, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Subject != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Subject.ProtoReflect())\n\t\tif !f(fd_Relationship_subject, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Relationship) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\treturn x.Relation != \"\"\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\treturn x.Subject != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relationship) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\tx.Relation = \"\"\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\tx.Subject = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Relationship) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\tvalue := x.Relation\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\tvalue := x.Subject\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relationship) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\tx.Relation = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\tx.Subject = value.Message().Interface().(*Subject)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relationship) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\tif x.Subject == nil {\n\t\t\tx.Subject = new(Subject)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Subject.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\tpanic(fmt.Errorf(\"field relation of message sourcenetwork.acp_core.Relationship is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Relationship) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Relationship.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Relationship.relation\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.Relationship.subject\":\n\t\tm := new(Subject)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Relationship\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Relationship does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Relationship) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Relationship\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Relationship) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Relationship) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Relationship) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Relationship) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Relationship)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.Relation)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Subject != nil {\n\t\t\tl = options.Size(x.Subject)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Relationship)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Subject != nil {\n\t\t\tencoded, err := options.Marshal(x.Subject)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.Relation) > 0 {\n\t\t\ti -= len(x.Relation)\n\t\t\tcopy(dAtA[i:], x.Relation)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Relation)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Relationship)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Relationship: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Relationship: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relation\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Relation = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Subject\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Subject == nil {\n\t\t\t\t\tx.Subject = &Subject{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Subject); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar _ protoreflect.Map = (*_RelationshipRecord_6_map)(nil)\n\ntype _RelationshipRecord_6_map struct {\n\tm *map[string]string\n}\n\nfunc (x *_RelationshipRecord_6_map) Len() int {\n\tif x.m == nil {\n\t\treturn 0\n\t}\n\treturn len(*x.m)\n}\n\nfunc (x *_RelationshipRecord_6_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tfor k, v := range *x.m {\n\t\tmapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))\n\t\tmapValue := protoreflect.ValueOfString(v)\n\t\tif !f(mapKey, mapValue) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (x *_RelationshipRecord_6_map) Has(key protoreflect.MapKey) bool {\n\tif x.m == nil {\n\t\treturn false\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteValue := keyUnwrapped\n\t_, ok := (*x.m)[concreteValue]\n\treturn ok\n}\n\nfunc (x *_RelationshipRecord_6_map) Clear(key protoreflect.MapKey) {\n\tif x.m == nil {\n\t\treturn\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tdelete(*x.m, concreteKey)\n}\n\nfunc (x *_RelationshipRecord_6_map) Get(key protoreflect.MapKey) protoreflect.Value {\n\tif x.m == nil {\n\t\treturn protoreflect.Value{}\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tv, ok := (*x.m)[concreteKey]\n\tif !ok {\n\t\treturn protoreflect.Value{}\n\t}\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RelationshipRecord_6_map) Set(key protoreflect.MapKey, value protoreflect.Value) {\n\tif !key.IsValid() || !value.IsValid() {\n\t\tpanic(\"invalid key or value provided\")\n\t}\n\tkeyUnwrapped := key.String()\n\tconcreteKey := keyUnwrapped\n\tvalueUnwrapped := value.String()\n\tconcreteValue := valueUnwrapped\n\t(*x.m)[concreteKey] = concreteValue\n}\n\nfunc (x *_RelationshipRecord_6_map) Mutable(key protoreflect.MapKey) protoreflect.Value {\n\tpanic(\"should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message\")\n}\n\nfunc (x *_RelationshipRecord_6_map) NewValue() protoreflect.Value {\n\tv := \"\"\n\treturn protoreflect.ValueOfString(v)\n}\n\nfunc (x *_RelationshipRecord_6_map) IsValid() bool {\n\treturn x.m != nil\n}\n\nvar (\n\tmd_RelationshipRecord               protoreflect.MessageDescriptor\n\tfd_RelationshipRecord_policy_id     protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_owner_did     protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_relationship  protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_archived      protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_creation_time protoreflect.FieldDescriptor\n\tfd_RelationshipRecord_metadata      protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_RelationshipRecord = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"RelationshipRecord\")\n\tfd_RelationshipRecord_policy_id = md_RelationshipRecord.Fields().ByName(\"policy_id\")\n\tfd_RelationshipRecord_owner_did = md_RelationshipRecord.Fields().ByName(\"owner_did\")\n\tfd_RelationshipRecord_relationship = md_RelationshipRecord.Fields().ByName(\"relationship\")\n\tfd_RelationshipRecord_archived = md_RelationshipRecord.Fields().ByName(\"archived\")\n\tfd_RelationshipRecord_creation_time = md_RelationshipRecord.Fields().ByName(\"creation_time\")\n\tfd_RelationshipRecord_metadata = md_RelationshipRecord.Fields().ByName(\"metadata\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RelationshipRecord)(nil)\n\ntype fastReflection_RelationshipRecord RelationshipRecord\n\nfunc (x *RelationshipRecord) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RelationshipRecord)(x)\n}\n\nfunc (x *RelationshipRecord) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[6]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RelationshipRecord_messageType fastReflection_RelationshipRecord_messageType\nvar _ protoreflect.MessageType = fastReflection_RelationshipRecord_messageType{}\n\ntype fastReflection_RelationshipRecord_messageType struct{}\n\nfunc (x fastReflection_RelationshipRecord_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RelationshipRecord)(nil)\n}\nfunc (x fastReflection_RelationshipRecord_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipRecord)\n}\nfunc (x fastReflection_RelationshipRecord_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipRecord\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RelationshipRecord) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipRecord\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RelationshipRecord) Type() protoreflect.MessageType {\n\treturn _fastReflection_RelationshipRecord_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RelationshipRecord) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipRecord)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RelationshipRecord) Interface() protoreflect.ProtoMessage {\n\treturn (*RelationshipRecord)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RelationshipRecord) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.PolicyId != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.PolicyId)\n\t\tif !f(fd_RelationshipRecord_policy_id, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.OwnerDid != \"\" {\n\t\tvalue := protoreflect.ValueOfString(x.OwnerDid)\n\t\tif !f(fd_RelationshipRecord_owner_did, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Relationship != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\t\tif !f(fd_RelationshipRecord_relationship, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Archived != false {\n\t\tvalue := protoreflect.ValueOfBool(x.Archived)\n\t\tif !f(fd_RelationshipRecord_archived, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.CreationTime != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\t\tif !f(fd_RelationshipRecord_creation_time, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif len(x.Metadata) != 0 {\n\t\tvalue := protoreflect.ValueOfMap(&_RelationshipRecord_6_map{m: &x.Metadata})\n\t\tif !f(fd_RelationshipRecord_metadata, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RelationshipRecord) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\treturn x.PolicyId != \"\"\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\treturn x.OwnerDid != \"\"\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\treturn x.Relationship != nil\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\treturn x.Archived != false\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\treturn x.CreationTime != nil\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\treturn len(x.Metadata) != 0\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\tx.PolicyId = \"\"\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\tx.OwnerDid = \"\"\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\tx.Relationship = nil\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\tx.Archived = false\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\tx.CreationTime = nil\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\tx.Metadata = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RelationshipRecord) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\tvalue := x.PolicyId\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\tvalue := x.OwnerDid\n\t\treturn protoreflect.ValueOfString(value)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\tvalue := x.Relationship\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\tvalue := x.Archived\n\t\treturn protoreflect.ValueOfBool(value)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\tvalue := x.CreationTime\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\tif len(x.Metadata) == 0 {\n\t\t\treturn protoreflect.ValueOfMap(&_RelationshipRecord_6_map{})\n\t\t}\n\t\tmapValue := &_RelationshipRecord_6_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(mapValue)\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\tx.PolicyId = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\tx.OwnerDid = value.Interface().(string)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\tx.Relationship = value.Message().Interface().(*Relationship)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\tx.Archived = value.Bool()\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\tx.CreationTime = value.Message().Interface().(*timestamppb.Timestamp)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\tmv := value.Map()\n\t\tcmv := mv.(*_RelationshipRecord_6_map)\n\t\tx.Metadata = *cmv.m\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\tif x.Relationship == nil {\n\t\t\tx.Relationship = new(Relationship)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Relationship.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\tif x.CreationTime == nil {\n\t\t\tx.CreationTime = new(timestamppb.Timestamp)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.CreationTime.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\tif x.Metadata == nil {\n\t\t\tx.Metadata = make(map[string]string)\n\t\t}\n\t\tvalue := &_RelationshipRecord_6_map{m: &x.Metadata}\n\t\treturn protoreflect.ValueOfMap(value)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\tpanic(fmt.Errorf(\"field policy_id of message sourcenetwork.acp_core.RelationshipRecord is not mutable\"))\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\tpanic(fmt.Errorf(\"field owner_did of message sourcenetwork.acp_core.RelationshipRecord is not mutable\"))\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\tpanic(fmt.Errorf(\"field archived of message sourcenetwork.acp_core.RelationshipRecord is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RelationshipRecord) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.policy_id\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.owner_did\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.relationship\":\n\t\tm := new(Relationship)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.archived\":\n\t\treturn protoreflect.ValueOfBool(false)\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.creation_time\":\n\t\tm := new(timestamppb.Timestamp)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipRecord.metadata\":\n\t\tm := make(map[string]string)\n\t\treturn protoreflect.ValueOfMap(&_RelationshipRecord_6_map{m: &m})\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipRecord\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipRecord does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RelationshipRecord) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RelationshipRecord\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RelationshipRecord) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipRecord) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RelationshipRecord) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RelationshipRecord) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tl = len(x.PolicyId)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tl = len(x.OwnerDid)\n\t\tif l > 0 {\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tl = options.Size(x.Relationship)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Archived {\n\t\t\tn += 2\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tl = options.Size(x.CreationTime)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tSiZeMaP := func(k string, v string) {\n\t\t\t\tmapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))\n\t\t\t\tn += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tsortme := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tsortme = append(sortme, k)\n\t\t\t\t}\n\t\t\t\tsort.Strings(sortme)\n\t\t\t\tfor _, k := range sortme {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k, v := range x.Metadata {\n\t\t\t\t\tSiZeMaP(k, v)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif len(x.Metadata) > 0 {\n\t\t\tMaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {\n\t\t\t\tbaseI := i\n\t\t\t\ti -= len(v)\n\t\t\t\tcopy(dAtA[i:], v)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(v)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x12\n\t\t\t\ti -= len(k)\n\t\t\t\tcopy(dAtA[i:], k)\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(k)))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0xa\n\t\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))\n\t\t\t\ti--\n\t\t\t\tdAtA[i] = 0x32\n\t\t\t\treturn protoiface.MarshalOutput{}, nil\n\t\t\t}\n\t\t\tif options.Deterministic {\n\t\t\t\tkeysForMetadata := make([]string, 0, len(x.Metadata))\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tkeysForMetadata = append(keysForMetadata, string(k))\n\t\t\t\t}\n\t\t\t\tsort.Slice(keysForMetadata, func(i, j int) bool {\n\t\t\t\t\treturn keysForMetadata[i] < keysForMetadata[j]\n\t\t\t\t})\n\t\t\t\tfor iNdEx := len(keysForMetadata) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t\t\tv := x.Metadata[string(keysForMetadata[iNdEx])]\n\t\t\t\t\tout, err := MaRsHaLmAp(keysForMetadata[iNdEx], v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor k := range x.Metadata {\n\t\t\t\t\tv := x.Metadata[k]\n\t\t\t\t\tout, err := MaRsHaLmAp(k, v)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn out, err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif x.CreationTime != nil {\n\t\t\tencoded, err := options.Marshal(x.CreationTime)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t\tif x.Archived {\n\t\t\ti--\n\t\t\tif x.Archived {\n\t\t\t\tdAtA[i] = 1\n\t\t\t} else {\n\t\t\t\tdAtA[i] = 0\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x20\n\t\t}\n\t\tif x.Relationship != nil {\n\t\t\tencoded, err := options.Marshal(x.Relationship)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif len(x.OwnerDid) > 0 {\n\t\t\ti -= len(x.OwnerDid)\n\t\t\tcopy(dAtA[i:], x.OwnerDid)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.OwnerDid)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif len(x.PolicyId) > 0 {\n\t\t\ti -= len(x.PolicyId)\n\t\t\tcopy(dAtA[i:], x.PolicyId)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.PolicyId)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipRecord)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipRecord: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Relationship == nil {\n\t\t\t\t\tx.Relationship = &Relationship{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Relationship); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 4:\n\t\t\t\tif wireType != 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Archived\", wireType)\n\t\t\t\t}\n\t\t\t\tvar v int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Archived = bool(v != 0)\n\t\t\tcase 5:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.CreationTime == nil {\n\t\t\t\t\tx.CreationTime = &timestamppb.Timestamp{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CreationTime); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 6:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Metadata == nil {\n\t\t\t\t\tx.Metadata = make(map[string]string)\n\t\t\t\t}\n\t\t\t\tvar mapkey string\n\t\t\t\tvar mapvalue string\n\t\t\t\tfor iNdEx < postIndex {\n\t\t\t\t\tentryPreIndex := iNdEx\n\t\t\t\t\tvar wire uint64\n\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfieldNum := int32(wire >> 3)\n\t\t\t\t\tif fieldNum == 1 {\n\t\t\t\t\t\tvar stringLenmapkey uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapkey |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapkey := int(stringLenmapkey)\n\t\t\t\t\t\tif intStringLenmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapkey := iNdEx + intStringLenmapkey\n\t\t\t\t\t\tif postStringIndexmapkey < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapkey > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapkey = string(dAtA[iNdEx:postStringIndexmapkey])\n\t\t\t\t\t\tiNdEx = postStringIndexmapkey\n\t\t\t\t\t} else if fieldNum == 2 {\n\t\t\t\t\t\tvar stringLenmapvalue uint64\n\t\t\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\t\t\tiNdEx++\n\t\t\t\t\t\t\tstringLenmapvalue |= uint64(b&0x7F) << shift\n\t\t\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tintStringLenmapvalue := int(stringLenmapvalue)\n\t\t\t\t\t\tif intStringLenmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostStringIndexmapvalue := iNdEx + intStringLenmapvalue\n\t\t\t\t\t\tif postStringIndexmapvalue < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif postStringIndexmapvalue > l {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])\n\t\t\t\t\t\tiNdEx = postStringIndexmapvalue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tiNdEx = entryPreIndex\n\t\t\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (iNdEx + skippy) > postIndex {\n\t\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiNdEx += skippy\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tx.Metadata[mapkey] = mapvalue\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_Registration        protoreflect.MessageDescriptor\n\tfd_Registration_object protoreflect.FieldDescriptor\n\tfd_Registration_actor  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tmd_Registration = File_sourcenetwork_acp_core_relationship_proto.Messages().ByName(\"Registration\")\n\tfd_Registration_object = md_Registration.Fields().ByName(\"object\")\n\tfd_Registration_actor = md_Registration.Fields().ByName(\"actor\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Registration)(nil)\n\ntype fastReflection_Registration Registration\n\nfunc (x *Registration) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Registration)(x)\n}\n\nfunc (x *Registration) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[7]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Registration_messageType fastReflection_Registration_messageType\nvar _ protoreflect.MessageType = fastReflection_Registration_messageType{}\n\ntype fastReflection_Registration_messageType struct{}\n\nfunc (x fastReflection_Registration_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Registration)(nil)\n}\nfunc (x fastReflection_Registration_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Registration)\n}\nfunc (x fastReflection_Registration_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Registration\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Registration) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Registration\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Registration) Type() protoreflect.MessageType {\n\treturn _fastReflection_Registration_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Registration) New() protoreflect.Message {\n\treturn new(fastReflection_Registration)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Registration) Interface() protoreflect.ProtoMessage {\n\treturn (*Registration)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Registration) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Object != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\t\tif !f(fd_Registration_object, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.Actor != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\t\tif !f(fd_Registration_actor, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Registration) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\treturn x.Object != nil\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\treturn x.Actor != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Registration) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\tx.Object = nil\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\tx.Actor = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Registration) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\tvalue := x.Object\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\tvalue := x.Actor\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Registration) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\tx.Object = value.Message().Interface().(*Object)\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\tx.Actor = value.Message().Interface().(*Actor)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Registration) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\tif x.Object == nil {\n\t\t\tx.Object = new(Object)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Object.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\tif x.Actor == nil {\n\t\t\tx.Actor = new(Actor)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.Actor.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Registration) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.Registration.object\":\n\t\tm := new(Object)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.Registration.actor\":\n\t\tm := new(Actor)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Registration\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Registration does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Registration) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Registration\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Registration) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Registration) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Registration) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Registration) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Registration)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.Object != nil {\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tl = options.Size(x.Actor)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Registration)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.Actor != nil {\n\t\t\tencoded, err := options.Marshal(x.Actor)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.Object != nil {\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Registration)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Registration: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Registration: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Object == nil {\n\t\t\t\t\tx.Object = &Object{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Object); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.Actor == nil {\n\t\t\t\t\tx.Actor = &Actor{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Actor); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/relationship.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// RegistrationResult encodes the possible result set from Registering an Object\ntype RegistrationResult int32\n\nconst (\n\t// NoOp indicates no action was take. The operation failed or the Object already existed and was active\n\tRegistrationResult_NoOp RegistrationResult = 0\n\t// Registered indicates the Object was sucessfuly registered to the Actor.\n\tRegistrationResult_Registered RegistrationResult = 1\n\t// Unarchived indicates that a previously deleted Object is active again.\n\t// Only the original owners can Unarchive an object.\n\tRegistrationResult_Unarchived RegistrationResult = 2\n)\n\n// Enum value maps for RegistrationResult.\nvar (\n\tRegistrationResult_name = map[int32]string{\n\t\t0: \"NoOp\",\n\t\t1: \"Registered\",\n\t\t2: \"Unarchived\",\n\t}\n\tRegistrationResult_value = map[string]int32{\n\t\t\"NoOp\":       0,\n\t\t\"Registered\": 1,\n\t\t\"Unarchived\": 2,\n\t}\n)\n\nfunc (x RegistrationResult) Enum() *RegistrationResult {\n\tp := new(RegistrationResult)\n\t*p = x\n\treturn p\n}\n\nfunc (x RegistrationResult) String() string {\n\treturn protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))\n}\n\nfunc (RegistrationResult) Descriptor() protoreflect.EnumDescriptor {\n\treturn file_sourcenetwork_acp_core_relationship_proto_enumTypes[0].Descriptor()\n}\n\nfunc (RegistrationResult) Type() protoreflect.EnumType {\n\treturn &file_sourcenetwork_acp_core_relationship_proto_enumTypes[0]\n}\n\nfunc (x RegistrationResult) Number() protoreflect.EnumNumber {\n\treturn protoreflect.EnumNumber(x)\n}\n\n// Deprecated: Use RegistrationResult.Descriptor instead.\nfunc (RegistrationResult) EnumDescriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{0}\n}\n\n// Object represents an entity which must be access controlled within a Policy.\ntype Object struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tResource string `protobuf:\"bytes,1,opt,name=resource,proto3\" json:\"resource,omitempty\"`\n\tId       string `protobuf:\"bytes,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *Object) Reset() {\n\t*x = Object{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Object) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Object) ProtoMessage() {}\n\n// Deprecated: Use Object.ProtoReflect.Descriptor instead.\nfunc (*Object) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *Object) GetResource() string {\n\tif x != nil {\n\t\treturn x.Resource\n\t}\n\treturn \"\"\n}\n\nfunc (x *Object) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\n// Actor represents an entity which makes access requests to a Policy.\ntype Actor struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (x *Actor) Reset() {\n\t*x = Actor{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Actor) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Actor) ProtoMessage() {}\n\n// Deprecated: Use Actor.ProtoReflect.Descriptor instead.\nfunc (*Actor) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *Actor) GetId() string {\n\tif x != nil {\n\t\treturn x.Id\n\t}\n\treturn \"\"\n}\n\n// ActorSet represents a set of Actors in a Policy.\n// It is specified through an Object, Relation pair, which represents\n// all actors which have a relationship with given obj-rel pair.\n// This expansion is recursive.\ntype ActorSet struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject   *Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\tRelation string  `protobuf:\"bytes,2,opt,name=relation,proto3\" json:\"relation,omitempty\"`\n}\n\nfunc (x *ActorSet) Reset() {\n\t*x = ActorSet{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ActorSet) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ActorSet) ProtoMessage() {}\n\n// Deprecated: Use ActorSet.ProtoReflect.Descriptor instead.\nfunc (*ActorSet) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *ActorSet) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *ActorSet) GetRelation() string {\n\tif x != nil {\n\t\treturn x.Relation\n\t}\n\treturn \"\"\n}\n\n// AllActors models a special Relationship Subject which indicates\n// that all Actors in the Policy are included.\ntype AllActors struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *AllActors) Reset() {\n\t*x = AllActors{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *AllActors) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*AllActors) ProtoMessage() {}\n\n// Deprecated: Use AllActors.ProtoReflect.Descriptor instead.\nfunc (*AllActors) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{3}\n}\n\n// Subject specifies the target of a Relationship.\ntype Subject struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Subject:\n\t//\n\t//\t*Subject_Actor\n\t//\t*Subject_ActorSet\n\t//\t*Subject_AllActors\n\t//\t*Subject_Object\n\tSubject isSubject_Subject `protobuf_oneof:\"subject\"`\n}\n\nfunc (x *Subject) Reset() {\n\t*x = Subject{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Subject) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Subject) ProtoMessage() {}\n\n// Deprecated: Use Subject.ProtoReflect.Descriptor instead.\nfunc (*Subject) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{4}\n}\n\nfunc (x *Subject) GetSubject() isSubject_Subject {\n\tif x != nil {\n\t\treturn x.Subject\n\t}\n\treturn nil\n}\n\nfunc (x *Subject) GetActor() *Actor {\n\tif x, ok := x.GetSubject().(*Subject_Actor); ok {\n\t\treturn x.Actor\n\t}\n\treturn nil\n}\n\nfunc (x *Subject) GetActorSet() *ActorSet {\n\tif x, ok := x.GetSubject().(*Subject_ActorSet); ok {\n\t\treturn x.ActorSet\n\t}\n\treturn nil\n}\n\nfunc (x *Subject) GetAllActors() *AllActors {\n\tif x, ok := x.GetSubject().(*Subject_AllActors); ok {\n\t\treturn x.AllActors\n\t}\n\treturn nil\n}\n\nfunc (x *Subject) GetObject() *Object {\n\tif x, ok := x.GetSubject().(*Subject_Object); ok {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\ntype isSubject_Subject interface {\n\tisSubject_Subject()\n}\n\ntype Subject_Actor struct {\n\tActor *Actor `protobuf:\"bytes,1,opt,name=actor,proto3,oneof\"`\n}\n\ntype Subject_ActorSet struct {\n\tActorSet *ActorSet `protobuf:\"bytes,2,opt,name=actor_set,json=actorSet,proto3,oneof\"`\n}\n\ntype Subject_AllActors struct {\n\tAllActors *AllActors `protobuf:\"bytes,3,opt,name=all_actors,json=allActors,proto3,oneof\"`\n}\n\ntype Subject_Object struct {\n\tObject *Object `protobuf:\"bytes,4,opt,name=object,proto3,oneof\"`\n}\n\nfunc (*Subject_Actor) isSubject_Subject() {}\n\nfunc (*Subject_ActorSet) isSubject_Subject() {}\n\nfunc (*Subject_AllActors) isSubject_Subject() {}\n\nfunc (*Subject_Object) isSubject_Subject() {}\n\n// Relationship models an access control rule.\n// It states that the given subject has relation with object.\ntype Relationship struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject   *Object  `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\tRelation string   `protobuf:\"bytes,2,opt,name=relation,proto3\" json:\"relation,omitempty\"`\n\tSubject  *Subject `protobuf:\"bytes,3,opt,name=subject,proto3\" json:\"subject,omitempty\"`\n}\n\nfunc (x *Relationship) Reset() {\n\t*x = Relationship{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[5]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Relationship) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Relationship) ProtoMessage() {}\n\n// Deprecated: Use Relationship.ProtoReflect.Descriptor instead.\nfunc (*Relationship) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{5}\n}\n\nfunc (x *Relationship) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *Relationship) GetRelation() string {\n\tif x != nil {\n\t\treturn x.Relation\n\t}\n\treturn \"\"\n}\n\nfunc (x *Relationship) GetSubject() *Subject {\n\tif x != nil {\n\t\treturn x.Subject\n\t}\n\treturn nil\n}\n\n// RelationshipRecord represents a document contained a Relationship and additional data.\ntype RelationshipRecord struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tPolicyId string `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\t// owner_did is the DID of the Actor which created the relationship\n\tOwnerDid     string        `protobuf:\"bytes,2,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n\tRelationship *Relationship `protobuf:\"bytes,3,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n\t// archived indicates whether an object has been unregistered\n\tArchived     bool                   `protobuf:\"varint,4,opt,name=archived,proto3\" json:\"archived,omitempty\"`\n\tCreationTime *timestamppb.Timestamp `protobuf:\"bytes,5,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// metadata contains arbitrary caller specified metadata\n\tMetadata map[string]string `protobuf:\"bytes,6,rep,name=metadata,proto3\" json:\"metadata,omitempty\" protobuf_key:\"bytes,1,opt,name=key,proto3\" protobuf_val:\"bytes,2,opt,name=value,proto3\"`\n}\n\nfunc (x *RelationshipRecord) Reset() {\n\t*x = RelationshipRecord{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[6]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RelationshipRecord) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RelationshipRecord) ProtoMessage() {}\n\n// Deprecated: Use RelationshipRecord.ProtoReflect.Descriptor instead.\nfunc (*RelationshipRecord) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{6}\n}\n\nfunc (x *RelationshipRecord) GetPolicyId() string {\n\tif x != nil {\n\t\treturn x.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (x *RelationshipRecord) GetOwnerDid() string {\n\tif x != nil {\n\t\treturn x.OwnerDid\n\t}\n\treturn \"\"\n}\n\nfunc (x *RelationshipRecord) GetRelationship() *Relationship {\n\tif x != nil {\n\t\treturn x.Relationship\n\t}\n\treturn nil\n}\n\nfunc (x *RelationshipRecord) GetArchived() bool {\n\tif x != nil {\n\t\treturn x.Archived\n\t}\n\treturn false\n}\n\nfunc (x *RelationshipRecord) GetCreationTime() *timestamppb.Timestamp {\n\tif x != nil {\n\t\treturn x.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (x *RelationshipRecord) GetMetadata() map[string]string {\n\tif x != nil {\n\t\treturn x.Metadata\n\t}\n\treturn nil\n}\n\n// Registration represents a record assigning an Object as being owned by an Actor\ntype Registration struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObject *Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\tActor  *Actor  `protobuf:\"bytes,2,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n}\n\nfunc (x *Registration) Reset() {\n\t*x = Registration{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_proto_msgTypes[7]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Registration) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Registration) ProtoMessage() {}\n\n// Deprecated: Use Registration.ProtoReflect.Descriptor instead.\nfunc (*Registration) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP(), []int{7}\n}\n\nfunc (x *Registration) GetObject() *Object {\n\tif x != nil {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *Registration) GetActor() *Actor {\n\tif x != nil {\n\t\treturn x.Actor\n\t}\n\treturn nil\n}\n\nvar File_sourcenetwork_acp_core_relationship_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_relationship_proto_rawDesc = []byte{\n\t0x0a, 0x29, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,\n\t0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a,\n\t0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,\n\t0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x41, 0x63,\n\t0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,\n\t0x02, 0x69, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12,\n\t0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52,\n\t0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74,\n\t0x69, 0x6f, 0x6e, 0x22, 0x0b, 0x0a, 0x09, 0x41, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x73,\n\t0x22, 0x8a, 0x02, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x05,\n\t0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x61, 0x63,\n\t0x74, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74,\n\t0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e,\n\t0x41, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x08, 0x61, 0x63, 0x74, 0x6f,\n\t0x72, 0x53, 0x65, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x6f,\n\t0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x48, 0x00, 0x52, 0x09, 0x61,\n\t0x6c, 0x6c, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x9d, 0x01,\n\t0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x36,\n\t0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,\n\t0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61,\n\t0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06,\n\t0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,\n\t0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x75, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x88, 0x03,\n\t0x0a, 0x12, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65,\n\t0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,\n\t0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,\n\t0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x64, 0x18, 0x02,\n\t0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x44, 0x69, 0x64, 0x12, 0x48,\n\t0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03,\n\t0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65,\n\t0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68,\n\t0x69, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68,\n\t0x69, 0x76, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,\n\t0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,\n\t0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,\n\t0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65,\n\t0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x63,\n\t0x6f, 0x72, 0x64, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,\n\t0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,\n\t0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,\n\t0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,\n\t0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,\n\t0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7b, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69,\n\t0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65,\n\t0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,\n\t0x12, 0x33, 0x0a, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05,\n\t0x61, 0x63, 0x74, 0x6f, 0x72, 0x2a, 0x3e, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,\n\t0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e,\n\t0x6f, 0x4f, 0x70, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,\n\t0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69,\n\t0x76, 0x65, 0x64, 0x10, 0x02, 0x42, 0xe3, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x42, 0x11, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68,\n\t0x69, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75,\n\t0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70,\n\t0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02,\n\t0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41,\n\t0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e,\n\t0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02,\n\t0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41,\n\t0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,\n\t0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f,\n\t0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_relationship_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_relationship_proto_rawDescData = file_sourcenetwork_acp_core_relationship_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_relationship_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_relationship_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_relationship_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_relationship_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_relationship_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_relationship_proto_enumTypes = make([]protoimpl.EnumInfo, 1)\nvar file_sourcenetwork_acp_core_relationship_proto_msgTypes = make([]protoimpl.MessageInfo, 9)\nvar file_sourcenetwork_acp_core_relationship_proto_goTypes = []interface{}{\n\t(RegistrationResult)(0),       // 0: sourcenetwork.acp_core.RegistrationResult\n\t(*Object)(nil),                // 1: sourcenetwork.acp_core.Object\n\t(*Actor)(nil),                 // 2: sourcenetwork.acp_core.Actor\n\t(*ActorSet)(nil),              // 3: sourcenetwork.acp_core.ActorSet\n\t(*AllActors)(nil),             // 4: sourcenetwork.acp_core.AllActors\n\t(*Subject)(nil),               // 5: sourcenetwork.acp_core.Subject\n\t(*Relationship)(nil),          // 6: sourcenetwork.acp_core.Relationship\n\t(*RelationshipRecord)(nil),    // 7: sourcenetwork.acp_core.RelationshipRecord\n\t(*Registration)(nil),          // 8: sourcenetwork.acp_core.Registration\n\tnil,                           // 9: sourcenetwork.acp_core.RelationshipRecord.MetadataEntry\n\t(*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp\n}\nvar file_sourcenetwork_acp_core_relationship_proto_depIdxs = []int32{\n\t1,  // 0: sourcenetwork.acp_core.ActorSet.object:type_name -> sourcenetwork.acp_core.Object\n\t2,  // 1: sourcenetwork.acp_core.Subject.actor:type_name -> sourcenetwork.acp_core.Actor\n\t3,  // 2: sourcenetwork.acp_core.Subject.actor_set:type_name -> sourcenetwork.acp_core.ActorSet\n\t4,  // 3: sourcenetwork.acp_core.Subject.all_actors:type_name -> sourcenetwork.acp_core.AllActors\n\t1,  // 4: sourcenetwork.acp_core.Subject.object:type_name -> sourcenetwork.acp_core.Object\n\t1,  // 5: sourcenetwork.acp_core.Relationship.object:type_name -> sourcenetwork.acp_core.Object\n\t5,  // 6: sourcenetwork.acp_core.Relationship.subject:type_name -> sourcenetwork.acp_core.Subject\n\t6,  // 7: sourcenetwork.acp_core.RelationshipRecord.relationship:type_name -> sourcenetwork.acp_core.Relationship\n\t10, // 8: sourcenetwork.acp_core.RelationshipRecord.creation_time:type_name -> google.protobuf.Timestamp\n\t9,  // 9: sourcenetwork.acp_core.RelationshipRecord.metadata:type_name -> sourcenetwork.acp_core.RelationshipRecord.MetadataEntry\n\t1,  // 10: sourcenetwork.acp_core.Registration.object:type_name -> sourcenetwork.acp_core.Object\n\t2,  // 11: sourcenetwork.acp_core.Registration.actor:type_name -> sourcenetwork.acp_core.Actor\n\t12, // [12:12] is the sub-list for method output_type\n\t12, // [12:12] is the sub-list for method input_type\n\t12, // [12:12] is the sub-list for extension type_name\n\t12, // [12:12] is the sub-list for extension extendee\n\t0,  // [0:12] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_relationship_proto_init() }\nfunc file_sourcenetwork_acp_core_relationship_proto_init() {\n\tif File_sourcenetwork_acp_core_relationship_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Object); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Actor); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ActorSet); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*AllActors); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Subject); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Relationship); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RelationshipRecord); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Registration); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_sourcenetwork_acp_core_relationship_proto_msgTypes[4].OneofWrappers = []interface{}{\n\t\t(*Subject_Actor)(nil),\n\t\t(*Subject_ActorSet)(nil),\n\t\t(*Subject_AllActors)(nil),\n\t\t(*Subject_Object)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_relationship_proto_rawDesc,\n\t\t\tNumEnums:      1,\n\t\t\tNumMessages:   9,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_relationship_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_relationship_proto_depIdxs,\n\t\tEnumInfos:         file_sourcenetwork_acp_core_relationship_proto_enumTypes,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_relationship_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_relationship_proto = out.File\n\tfile_sourcenetwork_acp_core_relationship_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_relationship_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_relationship_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/relationship_selector.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar (\n\tmd_RelationshipSelector                   protoreflect.MessageDescriptor\n\tfd_RelationshipSelector_object_selector   protoreflect.FieldDescriptor\n\tfd_RelationshipSelector_relation_selector protoreflect.FieldDescriptor\n\tfd_RelationshipSelector_subject_selector  protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tmd_RelationshipSelector = File_sourcenetwork_acp_core_relationship_selector_proto.Messages().ByName(\"RelationshipSelector\")\n\tfd_RelationshipSelector_object_selector = md_RelationshipSelector.Fields().ByName(\"object_selector\")\n\tfd_RelationshipSelector_relation_selector = md_RelationshipSelector.Fields().ByName(\"relation_selector\")\n\tfd_RelationshipSelector_subject_selector = md_RelationshipSelector.Fields().ByName(\"subject_selector\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RelationshipSelector)(nil)\n\ntype fastReflection_RelationshipSelector RelationshipSelector\n\nfunc (x *RelationshipSelector) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RelationshipSelector)(x)\n}\n\nfunc (x *RelationshipSelector) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RelationshipSelector_messageType fastReflection_RelationshipSelector_messageType\nvar _ protoreflect.MessageType = fastReflection_RelationshipSelector_messageType{}\n\ntype fastReflection_RelationshipSelector_messageType struct{}\n\nfunc (x fastReflection_RelationshipSelector_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RelationshipSelector)(nil)\n}\nfunc (x fastReflection_RelationshipSelector_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipSelector)\n}\nfunc (x fastReflection_RelationshipSelector_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipSelector\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RelationshipSelector) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationshipSelector\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RelationshipSelector) Type() protoreflect.MessageType {\n\treturn _fastReflection_RelationshipSelector_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RelationshipSelector) New() protoreflect.Message {\n\treturn new(fastReflection_RelationshipSelector)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RelationshipSelector) Interface() protoreflect.ProtoMessage {\n\treturn (*RelationshipSelector)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RelationshipSelector) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.ObjectSelector != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.ObjectSelector.ProtoReflect())\n\t\tif !f(fd_RelationshipSelector_object_selector, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.RelationSelector != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.RelationSelector.ProtoReflect())\n\t\tif !f(fd_RelationshipSelector_relation_selector, value) {\n\t\t\treturn\n\t\t}\n\t}\n\tif x.SubjectSelector != nil {\n\t\tvalue := protoreflect.ValueOfMessage(x.SubjectSelector.ProtoReflect())\n\t\tif !f(fd_RelationshipSelector_subject_selector, value) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RelationshipSelector) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\treturn x.ObjectSelector != nil\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\treturn x.RelationSelector != nil\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\treturn x.SubjectSelector != nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipSelector) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\tx.ObjectSelector = nil\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\tx.RelationSelector = nil\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\tx.SubjectSelector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RelationshipSelector) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\tvalue := x.ObjectSelector\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\tvalue := x.RelationSelector\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\tvalue := x.SubjectSelector\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipSelector) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\tx.ObjectSelector = value.Message().Interface().(*ObjectSelector)\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\tx.RelationSelector = value.Message().Interface().(*RelationSelector)\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\tx.SubjectSelector = value.Message().Interface().(*SubjectSelector)\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipSelector) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\tif x.ObjectSelector == nil {\n\t\t\tx.ObjectSelector = new(ObjectSelector)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.ObjectSelector.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\tif x.RelationSelector == nil {\n\t\t\tx.RelationSelector = new(RelationSelector)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.RelationSelector.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\tif x.SubjectSelector == nil {\n\t\t\tx.SubjectSelector = new(SubjectSelector)\n\t\t}\n\t\treturn protoreflect.ValueOfMessage(x.SubjectSelector.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RelationshipSelector) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.object_selector\":\n\t\tm := new(ObjectSelector)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.relation_selector\":\n\t\tm := new(RelationSelector)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.RelationshipSelector.subject_selector\":\n\t\tm := new(SubjectSelector)\n\t\treturn protoreflect.ValueOfMessage(m.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationshipSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationshipSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RelationshipSelector) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RelationshipSelector\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RelationshipSelector) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationshipSelector) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RelationshipSelector) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RelationshipSelector) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RelationshipSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.ObjectSelector != nil {\n\t\t\tl = options.Size(x.ObjectSelector)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.RelationSelector != nil {\n\t\t\tl = options.Size(x.RelationSelector)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.SubjectSelector != nil {\n\t\t\tl = options.Size(x.SubjectSelector)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif x.SubjectSelector != nil {\n\t\t\tencoded, err := options.Marshal(x.SubjectSelector)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif x.RelationSelector != nil {\n\t\t\tencoded, err := options.Marshal(x.RelationSelector)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif x.ObjectSelector != nil {\n\t\t\tencoded, err := options.Marshal(x.ObjectSelector)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationshipSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipSelector: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationshipSelector: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ObjectSelector\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.ObjectSelector == nil {\n\t\t\t\t\tx.ObjectSelector = &ObjectSelector{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ObjectSelector); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field RelationSelector\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.RelationSelector == nil {\n\t\t\t\t\tx.RelationSelector = &RelationSelector{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.RelationSelector); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field SubjectSelector\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif x.SubjectSelector == nil {\n\t\t\t\t\tx.SubjectSelector = &SubjectSelector{}\n\t\t\t\t}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], x.SubjectSelector); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_ObjectSelector                    protoreflect.MessageDescriptor\n\tfd_ObjectSelector_object             protoreflect.FieldDescriptor\n\tfd_ObjectSelector_wildcard           protoreflect.FieldDescriptor\n\tfd_ObjectSelector_resource_predicate protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tmd_ObjectSelector = File_sourcenetwork_acp_core_relationship_selector_proto.Messages().ByName(\"ObjectSelector\")\n\tfd_ObjectSelector_object = md_ObjectSelector.Fields().ByName(\"object\")\n\tfd_ObjectSelector_wildcard = md_ObjectSelector.Fields().ByName(\"wildcard\")\n\tfd_ObjectSelector_resource_predicate = md_ObjectSelector.Fields().ByName(\"resource_predicate\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_ObjectSelector)(nil)\n\ntype fastReflection_ObjectSelector ObjectSelector\n\nfunc (x *ObjectSelector) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_ObjectSelector)(x)\n}\n\nfunc (x *ObjectSelector) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[1]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_ObjectSelector_messageType fastReflection_ObjectSelector_messageType\nvar _ protoreflect.MessageType = fastReflection_ObjectSelector_messageType{}\n\ntype fastReflection_ObjectSelector_messageType struct{}\n\nfunc (x fastReflection_ObjectSelector_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_ObjectSelector)(nil)\n}\nfunc (x fastReflection_ObjectSelector_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_ObjectSelector)\n}\nfunc (x fastReflection_ObjectSelector_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ObjectSelector\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_ObjectSelector) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_ObjectSelector\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_ObjectSelector) Type() protoreflect.MessageType {\n\treturn _fastReflection_ObjectSelector_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_ObjectSelector) New() protoreflect.Message {\n\treturn new(fastReflection_ObjectSelector)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_ObjectSelector) Interface() protoreflect.ProtoMessage {\n\treturn (*ObjectSelector)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_ObjectSelector) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Selector != nil {\n\t\tswitch o := x.Selector.(type) {\n\t\tcase *ObjectSelector_Object:\n\t\t\tv := o.Object\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_ObjectSelector_object, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *ObjectSelector_Wildcard:\n\t\t\tv := o.Wildcard\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_ObjectSelector_wildcard, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *ObjectSelector_ResourcePredicate:\n\t\t\tv := o.ResourcePredicate\n\t\t\tvalue := protoreflect.ValueOfString(v)\n\t\t\tif !f(fd_ObjectSelector_resource_predicate, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_ObjectSelector) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*ObjectSelector_Object); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*ObjectSelector_Wildcard); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*ObjectSelector_ResourcePredicate); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ObjectSelector) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tx.Selector = nil\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tx.Selector = nil\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\tx.Selector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_ObjectSelector) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*Object)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Selector.(*ObjectSelector_Object); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Object.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*Object)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Selector.(*ObjectSelector_Wildcard); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Wildcard.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\t} else if v, ok := x.Selector.(*ObjectSelector_ResourcePredicate); ok {\n\t\t\treturn protoreflect.ValueOfString(v.ResourcePredicate)\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ObjectSelector) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tcv := value.Message().Interface().(*Object)\n\t\tx.Selector = &ObjectSelector_Object{Object: cv}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tcv := value.Message().Interface().(*WildcardSelector)\n\t\tx.Selector = &ObjectSelector_Wildcard{Wildcard: cv}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\tcv := value.Interface().(string)\n\t\tx.Selector = &ObjectSelector_ResourcePredicate{ResourcePredicate: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ObjectSelector) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tif x.Selector == nil {\n\t\t\tvalue := &Object{}\n\t\t\toneofValue := &ObjectSelector_Object{Object: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Selector.(type) {\n\t\tcase *ObjectSelector_Object:\n\t\t\treturn protoreflect.ValueOfMessage(m.Object.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &Object{}\n\t\t\toneofValue := &ObjectSelector_Object{Object: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &ObjectSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Selector.(type) {\n\t\tcase *ObjectSelector_Wildcard:\n\t\t\treturn protoreflect.ValueOfMessage(m.Wildcard.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &ObjectSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\tpanic(fmt.Errorf(\"field resource_predicate of message sourcenetwork.acp_core.ObjectSelector is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_ObjectSelector) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.object\":\n\t\tvalue := &Object{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.ObjectSelector.wildcard\":\n\t\tvalue := &WildcardSelector{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.ObjectSelector.resource_predicate\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.ObjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.ObjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_ObjectSelector) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcenetwork.acp_core.ObjectSelector.selector\":\n\t\tif x.Selector == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Selector.(type) {\n\t\tcase *ObjectSelector_Object:\n\t\t\treturn x.Descriptor().Fields().ByName(\"object\")\n\t\tcase *ObjectSelector_Wildcard:\n\t\t\treturn x.Descriptor().Fields().ByName(\"wildcard\")\n\t\tcase *ObjectSelector_ResourcePredicate:\n\t\t\treturn x.Descriptor().Fields().ByName(\"resource_predicate\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.ObjectSelector\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_ObjectSelector) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_ObjectSelector) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_ObjectSelector) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_ObjectSelector) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*ObjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *ObjectSelector_Object:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Object)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *ObjectSelector_Wildcard:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Wildcard)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *ObjectSelector_ResourcePredicate:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = len(x.ResourcePredicate)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ObjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *ObjectSelector_Object:\n\t\t\tencoded, err := options.Marshal(x.Object)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *ObjectSelector_Wildcard:\n\t\t\tencoded, err := options.Marshal(x.Wildcard)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\tcase *ObjectSelector_ResourcePredicate:\n\t\t\ti -= len(x.ResourcePredicate)\n\t\t\tcopy(dAtA[i:], x.ResourcePredicate)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.ResourcePredicate)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*ObjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ObjectSelector: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: ObjectSelector: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &Object{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Selector = &ObjectSelector_Object{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Wildcard\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &WildcardSelector{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Selector = &ObjectSelector_Wildcard{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 3:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field ResourcePredicate\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Selector = &ObjectSelector_ResourcePredicate{string(dAtA[iNdEx:postIndex])}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_RelationSelector          protoreflect.MessageDescriptor\n\tfd_RelationSelector_relation protoreflect.FieldDescriptor\n\tfd_RelationSelector_wildcard protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tmd_RelationSelector = File_sourcenetwork_acp_core_relationship_selector_proto.Messages().ByName(\"RelationSelector\")\n\tfd_RelationSelector_relation = md_RelationSelector.Fields().ByName(\"relation\")\n\tfd_RelationSelector_wildcard = md_RelationSelector.Fields().ByName(\"wildcard\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_RelationSelector)(nil)\n\ntype fastReflection_RelationSelector RelationSelector\n\nfunc (x *RelationSelector) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_RelationSelector)(x)\n}\n\nfunc (x *RelationSelector) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[2]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_RelationSelector_messageType fastReflection_RelationSelector_messageType\nvar _ protoreflect.MessageType = fastReflection_RelationSelector_messageType{}\n\ntype fastReflection_RelationSelector_messageType struct{}\n\nfunc (x fastReflection_RelationSelector_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_RelationSelector)(nil)\n}\nfunc (x fastReflection_RelationSelector_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_RelationSelector)\n}\nfunc (x fastReflection_RelationSelector_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationSelector\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_RelationSelector) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_RelationSelector\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_RelationSelector) Type() protoreflect.MessageType {\n\treturn _fastReflection_RelationSelector_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_RelationSelector) New() protoreflect.Message {\n\treturn new(fastReflection_RelationSelector)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_RelationSelector) Interface() protoreflect.ProtoMessage {\n\treturn (*RelationSelector)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_RelationSelector) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Selector != nil {\n\t\tswitch o := x.Selector.(type) {\n\t\tcase *RelationSelector_Relation:\n\t\t\tv := o.Relation\n\t\t\tvalue := protoreflect.ValueOfString(v)\n\t\t\tif !f(fd_RelationSelector_relation, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *RelationSelector_Wildcard:\n\t\t\tv := o.Wildcard\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_RelationSelector_wildcard, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_RelationSelector) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*RelationSelector_Relation); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*RelationSelector_Wildcard); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationSelector) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\tx.Selector = nil\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tx.Selector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_RelationSelector) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\t} else if v, ok := x.Selector.(*RelationSelector_Relation); ok {\n\t\t\treturn protoreflect.ValueOfString(v.Relation)\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfString(\"\")\n\t\t}\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Selector.(*RelationSelector_Wildcard); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Wildcard.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationSelector) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\tcv := value.Interface().(string)\n\t\tx.Selector = &RelationSelector_Relation{Relation: cv}\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tcv := value.Message().Interface().(*WildcardSelector)\n\t\tx.Selector = &RelationSelector_Wildcard{Wildcard: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationSelector) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &RelationSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Selector.(type) {\n\t\tcase *RelationSelector_Wildcard:\n\t\t\treturn protoreflect.ValueOfMessage(m.Wildcard.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &RelationSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\tpanic(fmt.Errorf(\"field relation of message sourcenetwork.acp_core.RelationSelector is not mutable\"))\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_RelationSelector) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.relation\":\n\t\treturn protoreflect.ValueOfString(\"\")\n\tcase \"sourcenetwork.acp_core.RelationSelector.wildcard\":\n\t\tvalue := &WildcardSelector{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.RelationSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.RelationSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_RelationSelector) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcenetwork.acp_core.RelationSelector.selector\":\n\t\tif x.Selector == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Selector.(type) {\n\t\tcase *RelationSelector_Relation:\n\t\t\treturn x.Descriptor().Fields().ByName(\"relation\")\n\t\tcase *RelationSelector_Wildcard:\n\t\t\treturn x.Descriptor().Fields().ByName(\"wildcard\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.RelationSelector\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_RelationSelector) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_RelationSelector) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_RelationSelector) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_RelationSelector) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*RelationSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *RelationSelector_Relation:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = len(x.Relation)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *RelationSelector_Wildcard:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Wildcard)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *RelationSelector_Relation:\n\t\t\ti -= len(x.Relation)\n\t\t\tcopy(dAtA[i:], x.Relation)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(x.Relation)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *RelationSelector_Wildcard:\n\t\t\tencoded, err := options.Marshal(x.Wildcard)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*RelationSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationSelector: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: RelationSelector: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Relation\", wireType)\n\t\t\t\t}\n\t\t\t\tvar stringLen uint64\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tintStringLen := int(stringLen)\n\t\t\t\tif intStringLen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tx.Selector = &RelationSelector_Relation{string(dAtA[iNdEx:postIndex])}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Wildcard\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &WildcardSelector{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Selector = &RelationSelector_Wildcard{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_SubjectSelector          protoreflect.MessageDescriptor\n\tfd_SubjectSelector_subject  protoreflect.FieldDescriptor\n\tfd_SubjectSelector_wildcard protoreflect.FieldDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tmd_SubjectSelector = File_sourcenetwork_acp_core_relationship_selector_proto.Messages().ByName(\"SubjectSelector\")\n\tfd_SubjectSelector_subject = md_SubjectSelector.Fields().ByName(\"subject\")\n\tfd_SubjectSelector_wildcard = md_SubjectSelector.Fields().ByName(\"wildcard\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_SubjectSelector)(nil)\n\ntype fastReflection_SubjectSelector SubjectSelector\n\nfunc (x *SubjectSelector) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_SubjectSelector)(x)\n}\n\nfunc (x *SubjectSelector) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[3]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_SubjectSelector_messageType fastReflection_SubjectSelector_messageType\nvar _ protoreflect.MessageType = fastReflection_SubjectSelector_messageType{}\n\ntype fastReflection_SubjectSelector_messageType struct{}\n\nfunc (x fastReflection_SubjectSelector_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_SubjectSelector)(nil)\n}\nfunc (x fastReflection_SubjectSelector_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_SubjectSelector)\n}\nfunc (x fastReflection_SubjectSelector_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SubjectSelector\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_SubjectSelector) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_SubjectSelector\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_SubjectSelector) Type() protoreflect.MessageType {\n\treturn _fastReflection_SubjectSelector_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_SubjectSelector) New() protoreflect.Message {\n\treturn new(fastReflection_SubjectSelector)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_SubjectSelector) Interface() protoreflect.ProtoMessage {\n\treturn (*SubjectSelector)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_SubjectSelector) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n\tif x.Selector != nil {\n\t\tswitch o := x.Selector.(type) {\n\t\tcase *SubjectSelector_Subject:\n\t\t\tv := o.Subject\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_SubjectSelector_subject, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase *SubjectSelector_Wildcard:\n\t\t\tv := o.Wildcard\n\t\t\tvalue := protoreflect.ValueOfMessage(v.ProtoReflect())\n\t\t\tif !f(fd_SubjectSelector_wildcard, value) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_SubjectSelector) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*SubjectSelector_Subject); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn false\n\t\t} else if _, ok := x.Selector.(*SubjectSelector_Wildcard); ok {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SubjectSelector) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tx.Selector = nil\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tx.Selector = nil\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_SubjectSelector) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*Subject)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Selector.(*SubjectSelector_Subject); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Subject.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*Subject)(nil).ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t} else if v, ok := x.Selector.(*SubjectSelector_Wildcard); ok {\n\t\t\treturn protoreflect.ValueOfMessage(v.Wildcard.ProtoReflect())\n\t\t} else {\n\t\t\treturn protoreflect.ValueOfMessage((*WildcardSelector)(nil).ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SubjectSelector) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tcv := value.Message().Interface().(*Subject)\n\t\tx.Selector = &SubjectSelector_Subject{Subject: cv}\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tcv := value.Message().Interface().(*WildcardSelector)\n\t\tx.Selector = &SubjectSelector_Wildcard{Wildcard: cv}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SubjectSelector) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tif x.Selector == nil {\n\t\t\tvalue := &Subject{}\n\t\t\toneofValue := &SubjectSelector_Subject{Subject: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Selector.(type) {\n\t\tcase *SubjectSelector_Subject:\n\t\t\treturn protoreflect.ValueOfMessage(m.Subject.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &Subject{}\n\t\t\toneofValue := &SubjectSelector_Subject{Subject: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tif x.Selector == nil {\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &SubjectSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\t\tswitch m := x.Selector.(type) {\n\t\tcase *SubjectSelector_Wildcard:\n\t\t\treturn protoreflect.ValueOfMessage(m.Wildcard.ProtoReflect())\n\t\tdefault:\n\t\t\tvalue := &WildcardSelector{}\n\t\t\toneofValue := &SubjectSelector_Wildcard{Wildcard: value}\n\t\t\tx.Selector = oneofValue\n\t\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\t\t}\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_SubjectSelector) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.subject\":\n\t\tvalue := &Subject{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tcase \"sourcenetwork.acp_core.SubjectSelector.wildcard\":\n\t\tvalue := &WildcardSelector{}\n\t\treturn protoreflect.ValueOfMessage(value.ProtoReflect())\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.SubjectSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.SubjectSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_SubjectSelector) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tcase \"sourcenetwork.acp_core.SubjectSelector.selector\":\n\t\tif x.Selector == nil {\n\t\t\treturn nil\n\t\t}\n\t\tswitch x.Selector.(type) {\n\t\tcase *SubjectSelector_Subject:\n\t\t\treturn x.Descriptor().Fields().ByName(\"subject\")\n\t\tcase *SubjectSelector_Wildcard:\n\t\t\treturn x.Descriptor().Fields().ByName(\"wildcard\")\n\t\t}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.SubjectSelector\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_SubjectSelector) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_SubjectSelector) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_SubjectSelector) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_SubjectSelector) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*SubjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *SubjectSelector_Subject:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Subject)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\tcase *SubjectSelector_Wildcard:\n\t\t\tif x == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl = options.Size(x.Wildcard)\n\t\t\tn += 1 + l + runtime.Sov(uint64(l))\n\t\t}\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SubjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tswitch x := x.Selector.(type) {\n\t\tcase *SubjectSelector_Subject:\n\t\t\tencoded, err := options.Marshal(x.Subject)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\tcase *SubjectSelector_Wildcard:\n\t\t\tencoded, err := options.Marshal(x.Wildcard)\n\t\t\tif err != nil {\n\t\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\t\tBuf:               input.Buf,\n\t\t\t\t}, err\n\t\t\t}\n\t\t\ti -= len(encoded)\n\t\t\tcopy(dAtA[i:], encoded)\n\t\t\ti = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*SubjectSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SubjectSelector: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: SubjectSelector: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tcase 1:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Subject\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &Subject{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Selector = &SubjectSelector_Subject{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tcase 2:\n\t\t\t\tif wireType != 2 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: wrong wireType = %d for field Wildcard\", wireType)\n\t\t\t\t}\n\t\t\t\tvar msglen int\n\t\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\t\tif shift >= 64 {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t\t}\n\t\t\t\t\tif iNdEx >= l {\n\t\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t\t}\n\t\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\t\tiNdEx++\n\t\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\t\tif b < 0x80 {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif msglen < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tpostIndex := iNdEx + msglen\n\t\t\t\tif postIndex < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif postIndex > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tv := &WildcardSelector{}\n\t\t\t\tif err := options.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tx.Selector = &SubjectSelector_Wildcard{v}\n\t\t\t\tiNdEx = postIndex\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\nvar (\n\tmd_WildcardSelector protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_init()\n\tmd_WildcardSelector = File_sourcenetwork_acp_core_relationship_selector_proto.Messages().ByName(\"WildcardSelector\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_WildcardSelector)(nil)\n\ntype fastReflection_WildcardSelector WildcardSelector\n\nfunc (x *WildcardSelector) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_WildcardSelector)(x)\n}\n\nfunc (x *WildcardSelector) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[4]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_WildcardSelector_messageType fastReflection_WildcardSelector_messageType\nvar _ protoreflect.MessageType = fastReflection_WildcardSelector_messageType{}\n\ntype fastReflection_WildcardSelector_messageType struct{}\n\nfunc (x fastReflection_WildcardSelector_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_WildcardSelector)(nil)\n}\nfunc (x fastReflection_WildcardSelector_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_WildcardSelector)\n}\nfunc (x fastReflection_WildcardSelector_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_WildcardSelector\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_WildcardSelector) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_WildcardSelector\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_WildcardSelector) Type() protoreflect.MessageType {\n\treturn _fastReflection_WildcardSelector_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_WildcardSelector) New() protoreflect.Message {\n\treturn new(fastReflection_WildcardSelector)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_WildcardSelector) Interface() protoreflect.ProtoMessage {\n\treturn (*WildcardSelector)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_WildcardSelector) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_WildcardSelector) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_WildcardSelector) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_WildcardSelector) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_WildcardSelector) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_WildcardSelector) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_WildcardSelector) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.WildcardSelector\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.WildcardSelector does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_WildcardSelector) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.WildcardSelector\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_WildcardSelector) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_WildcardSelector) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_WildcardSelector) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_WildcardSelector) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*WildcardSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*WildcardSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*WildcardSelector)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: WildcardSelector: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: WildcardSelector: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/relationship_selector.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// RelationshipSelector models a set of predicates which are used to filter through\n// Relationships in a Policy.\ntype RelationshipSelector struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\tObjectSelector   *ObjectSelector   `protobuf:\"bytes,1,opt,name=object_selector,json=objectSelector,proto3\" json:\"object_selector,omitempty\"`\n\tRelationSelector *RelationSelector `protobuf:\"bytes,2,opt,name=relation_selector,json=relationSelector,proto3\" json:\"relation_selector,omitempty\"`\n\tSubjectSelector  *SubjectSelector  `protobuf:\"bytes,3,opt,name=subject_selector,json=subjectSelector,proto3\" json:\"subject_selector,omitempty\"`\n}\n\nfunc (x *RelationshipSelector) Reset() {\n\t*x = RelationshipSelector{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RelationshipSelector) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RelationshipSelector) ProtoMessage() {}\n\n// Deprecated: Use RelationshipSelector.ProtoReflect.Descriptor instead.\nfunc (*RelationshipSelector) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP(), []int{0}\n}\n\nfunc (x *RelationshipSelector) GetObjectSelector() *ObjectSelector {\n\tif x != nil {\n\t\treturn x.ObjectSelector\n\t}\n\treturn nil\n}\n\nfunc (x *RelationshipSelector) GetRelationSelector() *RelationSelector {\n\tif x != nil {\n\t\treturn x.RelationSelector\n\t}\n\treturn nil\n}\n\nfunc (x *RelationshipSelector) GetSubjectSelector() *SubjectSelector {\n\tif x != nil {\n\t\treturn x.SubjectSelector\n\t}\n\treturn nil\n}\n\n// ObjectSelector models a filter for Relationship Objects\ntype ObjectSelector struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Selector:\n\t//\n\t//\t*ObjectSelector_Object\n\t//\t*ObjectSelector_Wildcard\n\t//\t*ObjectSelector_ResourcePredicate\n\tSelector isObjectSelector_Selector `protobuf_oneof:\"selector\"`\n}\n\nfunc (x *ObjectSelector) Reset() {\n\t*x = ObjectSelector{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[1]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *ObjectSelector) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*ObjectSelector) ProtoMessage() {}\n\n// Deprecated: Use ObjectSelector.ProtoReflect.Descriptor instead.\nfunc (*ObjectSelector) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP(), []int{1}\n}\n\nfunc (x *ObjectSelector) GetSelector() isObjectSelector_Selector {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn nil\n}\n\nfunc (x *ObjectSelector) GetObject() *Object {\n\tif x, ok := x.GetSelector().(*ObjectSelector_Object); ok {\n\t\treturn x.Object\n\t}\n\treturn nil\n}\n\nfunc (x *ObjectSelector) GetWildcard() *WildcardSelector {\n\tif x, ok := x.GetSelector().(*ObjectSelector_Wildcard); ok {\n\t\treturn x.Wildcard\n\t}\n\treturn nil\n}\n\nfunc (x *ObjectSelector) GetResourcePredicate() string {\n\tif x, ok := x.GetSelector().(*ObjectSelector_ResourcePredicate); ok {\n\t\treturn x.ResourcePredicate\n\t}\n\treturn \"\"\n}\n\ntype isObjectSelector_Selector interface {\n\tisObjectSelector_Selector()\n}\n\ntype ObjectSelector_Object struct {\n\t// object specifies an object which the Relationship must contain\n\tObject *Object `protobuf:\"bytes,1,opt,name=object,proto3,oneof\"`\n}\n\ntype ObjectSelector_Wildcard struct {\n\t// wildcard matches any object\n\tWildcard *WildcardSelector `protobuf:\"bytes,2,opt,name=wildcard,proto3,oneof\"`\n}\n\ntype ObjectSelector_ResourcePredicate struct {\n\tResourcePredicate string `protobuf:\"bytes,3,opt,name=resource_predicate,json=resourcePredicate,proto3,oneof\"`\n}\n\nfunc (*ObjectSelector_Object) isObjectSelector_Selector() {}\n\nfunc (*ObjectSelector_Wildcard) isObjectSelector_Selector() {}\n\nfunc (*ObjectSelector_ResourcePredicate) isObjectSelector_Selector() {}\n\n// RelationsSelector models a filter for Relationship Relations\ntype RelationSelector struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Selector:\n\t//\n\t//\t*RelationSelector_Relation\n\t//\t*RelationSelector_Wildcard\n\tSelector isRelationSelector_Selector `protobuf_oneof:\"selector\"`\n}\n\nfunc (x *RelationSelector) Reset() {\n\t*x = RelationSelector{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[2]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *RelationSelector) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*RelationSelector) ProtoMessage() {}\n\n// Deprecated: Use RelationSelector.ProtoReflect.Descriptor instead.\nfunc (*RelationSelector) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP(), []int{2}\n}\n\nfunc (x *RelationSelector) GetSelector() isRelationSelector_Selector {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn nil\n}\n\nfunc (x *RelationSelector) GetRelation() string {\n\tif x, ok := x.GetSelector().(*RelationSelector_Relation); ok {\n\t\treturn x.Relation\n\t}\n\treturn \"\"\n}\n\nfunc (x *RelationSelector) GetWildcard() *WildcardSelector {\n\tif x, ok := x.GetSelector().(*RelationSelector_Wildcard); ok {\n\t\treturn x.Wildcard\n\t}\n\treturn nil\n}\n\ntype isRelationSelector_Selector interface {\n\tisRelationSelector_Selector()\n}\n\ntype RelationSelector_Relation struct {\n\t// relation specifies a relation name which must exactly match the Relationship's\n\tRelation string `protobuf:\"bytes,1,opt,name=relation,proto3,oneof\"`\n}\n\ntype RelationSelector_Wildcard struct {\n\t// wildcard matches any relation\n\tWildcard *WildcardSelector `protobuf:\"bytes,2,opt,name=wildcard,proto3,oneof\"`\n}\n\nfunc (*RelationSelector_Relation) isRelationSelector_Selector() {}\n\nfunc (*RelationSelector_Wildcard) isRelationSelector_Selector() {}\n\n// SubjectSelector models a filter for Relationship Subjects\ntype SubjectSelector struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n\n\t// Types that are assignable to Selector:\n\t//\n\t//\t*SubjectSelector_Subject\n\t//\t*SubjectSelector_Wildcard\n\tSelector isSubjectSelector_Selector `protobuf_oneof:\"selector\"`\n}\n\nfunc (x *SubjectSelector) Reset() {\n\t*x = SubjectSelector{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[3]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *SubjectSelector) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*SubjectSelector) ProtoMessage() {}\n\n// Deprecated: Use SubjectSelector.ProtoReflect.Descriptor instead.\nfunc (*SubjectSelector) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP(), []int{3}\n}\n\nfunc (x *SubjectSelector) GetSelector() isSubjectSelector_Selector {\n\tif x != nil {\n\t\treturn x.Selector\n\t}\n\treturn nil\n}\n\nfunc (x *SubjectSelector) GetSubject() *Subject {\n\tif x, ok := x.GetSelector().(*SubjectSelector_Subject); ok {\n\t\treturn x.Subject\n\t}\n\treturn nil\n}\n\nfunc (x *SubjectSelector) GetWildcard() *WildcardSelector {\n\tif x, ok := x.GetSelector().(*SubjectSelector_Wildcard); ok {\n\t\treturn x.Wildcard\n\t}\n\treturn nil\n}\n\ntype isSubjectSelector_Selector interface {\n\tisSubjectSelector_Selector()\n}\n\ntype SubjectSelector_Subject struct {\n\t// subject requires an exact match between the given subject and a Relationship's subject\n\tSubject *Subject `protobuf:\"bytes,1,opt,name=subject,proto3,oneof\"`\n}\n\ntype SubjectSelector_Wildcard struct {\n\t// wildcard matches any subject in a Relationship\n\tWildcard *WildcardSelector `protobuf:\"bytes,2,opt,name=wildcard,proto3,oneof\"`\n}\n\nfunc (*SubjectSelector_Subject) isSubjectSelector_Selector() {}\n\nfunc (*SubjectSelector_Wildcard) isSubjectSelector_Selector() {}\n\n// WildcardSelector matches anything in a context\ntype WildcardSelector struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *WildcardSelector) Reset() {\n\t*x = WildcardSelector{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[4]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *WildcardSelector) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*WildcardSelector) ProtoMessage() {}\n\n// Deprecated: Use WildcardSelector.ProtoReflect.Descriptor instead.\nfunc (*WildcardSelector) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP(), []int{4}\n}\n\nvar File_sourcenetwork_acp_core_relationship_selector_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_relationship_selector_proto_rawDesc = []byte{\n\t0x0a, 0x32, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70,\n\t0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x29, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69,\n\t0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61,\n\t0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,\n\t0x12, 0x4f, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,\n\t0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x75, 0x72,\n\t0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f,\n\t0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,\n\t0x72, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,\n\t0x72, 0x12, 0x55, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,\n\t0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73,\n\t0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70,\n\t0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,\n\t0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,\n\t0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01,\n\t0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6a,\n\t0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x75, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xcf, 0x01, 0x0a,\n\t0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12,\n\t0x38, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,\n\t0x1e, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48,\n\t0x00, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x69, 0x6c,\n\t0x64, 0x63, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c,\n\t0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72,\n\t0x64, 0x12, 0x2f, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72,\n\t0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,\n\t0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61,\n\t0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x84,\n\t0x01, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63,\n\t0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,\n\t0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,\n\t0x6e, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20,\n\t0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x69, 0x6c,\n\t0x64, 0x63, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52,\n\t0x08, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x65, 0x6c,\n\t0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,\n\t0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x73, 0x75, 0x62,\n\t0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63,\n\t0x6f, 0x72, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73,\n\t0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61,\n\t0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63,\n\t0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72,\n\t0x65, 0x2e, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,\n\t0x6f, 0x72, 0x48, 0x00, 0x52, 0x08, 0x77, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0a,\n\t0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x12, 0x0a, 0x10, 0x57, 0x69,\n\t0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0xeb,\n\t0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x19, 0x52,\n\t0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63,\n\t0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68,\n\t0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61,\n\t0x70, 0x69, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,\n\t0x2f, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa,\n\t0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,\n\t0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,\n\t0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2,\n\t0x02, 0x21, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c,\n\t0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,\n\t0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77,\n\t0x6f, 0x72, 0x6b, 0x3a, 0x3a, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72,\n\t0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_rawDescData = file_sourcenetwork_acp_core_relationship_selector_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_relationship_selector_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_relationship_selector_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_relationship_selector_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes = make([]protoimpl.MessageInfo, 5)\nvar file_sourcenetwork_acp_core_relationship_selector_proto_goTypes = []interface{}{\n\t(*RelationshipSelector)(nil), // 0: sourcenetwork.acp_core.RelationshipSelector\n\t(*ObjectSelector)(nil),       // 1: sourcenetwork.acp_core.ObjectSelector\n\t(*RelationSelector)(nil),     // 2: sourcenetwork.acp_core.RelationSelector\n\t(*SubjectSelector)(nil),      // 3: sourcenetwork.acp_core.SubjectSelector\n\t(*WildcardSelector)(nil),     // 4: sourcenetwork.acp_core.WildcardSelector\n\t(*Object)(nil),               // 5: sourcenetwork.acp_core.Object\n\t(*Subject)(nil),              // 6: sourcenetwork.acp_core.Subject\n}\nvar file_sourcenetwork_acp_core_relationship_selector_proto_depIdxs = []int32{\n\t1, // 0: sourcenetwork.acp_core.RelationshipSelector.object_selector:type_name -> sourcenetwork.acp_core.ObjectSelector\n\t2, // 1: sourcenetwork.acp_core.RelationshipSelector.relation_selector:type_name -> sourcenetwork.acp_core.RelationSelector\n\t3, // 2: sourcenetwork.acp_core.RelationshipSelector.subject_selector:type_name -> sourcenetwork.acp_core.SubjectSelector\n\t5, // 3: sourcenetwork.acp_core.ObjectSelector.object:type_name -> sourcenetwork.acp_core.Object\n\t4, // 4: sourcenetwork.acp_core.ObjectSelector.wildcard:type_name -> sourcenetwork.acp_core.WildcardSelector\n\t4, // 5: sourcenetwork.acp_core.RelationSelector.wildcard:type_name -> sourcenetwork.acp_core.WildcardSelector\n\t6, // 6: sourcenetwork.acp_core.SubjectSelector.subject:type_name -> sourcenetwork.acp_core.Subject\n\t4, // 7: sourcenetwork.acp_core.SubjectSelector.wildcard:type_name -> sourcenetwork.acp_core.WildcardSelector\n\t8, // [8:8] is the sub-list for method output_type\n\t8, // [8:8] is the sub-list for method input_type\n\t8, // [8:8] is the sub-list for extension type_name\n\t8, // [8:8] is the sub-list for extension extendee\n\t0, // [0:8] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_relationship_selector_proto_init() }\nfunc file_sourcenetwork_acp_core_relationship_selector_proto_init() {\n\tif File_sourcenetwork_acp_core_relationship_selector_proto != nil {\n\t\treturn\n\t}\n\tfile_sourcenetwork_acp_core_relationship_proto_init()\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RelationshipSelector); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*ObjectSelector); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*RelationSelector); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*SubjectSelector); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*WildcardSelector); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[1].OneofWrappers = []interface{}{\n\t\t(*ObjectSelector_Object)(nil),\n\t\t(*ObjectSelector_Wildcard)(nil),\n\t\t(*ObjectSelector_ResourcePredicate)(nil),\n\t}\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[2].OneofWrappers = []interface{}{\n\t\t(*RelationSelector_Relation)(nil),\n\t\t(*RelationSelector_Wildcard)(nil),\n\t}\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_msgTypes[3].OneofWrappers = []interface{}{\n\t\t(*SubjectSelector_Subject)(nil),\n\t\t(*SubjectSelector_Wildcard)(nil),\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_relationship_selector_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   5,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_relationship_selector_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_relationship_selector_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_relationship_selector_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_relationship_selector_proto = out.File\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_relationship_selector_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "api/sourcenetwork/acp_core/system.pulsar.go",
    "content": "// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.\npackage acp_core\n\nimport (\n\tfmt \"fmt\"\n\tio \"io\"\n\treflect \"reflect\"\n\tsync \"sync\"\n\n\truntime \"github.com/cosmos/cosmos-proto/runtime\"\n\tprotoreflect \"google.golang.org/protobuf/reflect/protoreflect\"\n\tprotoiface \"google.golang.org/protobuf/runtime/protoiface\"\n\tprotoimpl \"google.golang.org/protobuf/runtime/protoimpl\"\n)\n\nvar (\n\tmd_Params protoreflect.MessageDescriptor\n)\n\nfunc init() {\n\tfile_sourcenetwork_acp_core_system_proto_init()\n\tmd_Params = File_sourcenetwork_acp_core_system_proto.Messages().ByName(\"Params\")\n}\n\nvar _ protoreflect.Message = (*fastReflection_Params)(nil)\n\ntype fastReflection_Params Params\n\nfunc (x *Params) ProtoReflect() protoreflect.Message {\n\treturn (*fastReflection_Params)(x)\n}\n\nfunc (x *Params) slowProtoReflect() protoreflect.Message {\n\tmi := &file_sourcenetwork_acp_core_system_proto_msgTypes[0]\n\tif protoimpl.UnsafeEnabled && x != nil {\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tif ms.LoadMessageInfo() == nil {\n\t\t\tms.StoreMessageInfo(mi)\n\t\t}\n\t\treturn ms\n\t}\n\treturn mi.MessageOf(x)\n}\n\nvar _fastReflection_Params_messageType fastReflection_Params_messageType\nvar _ protoreflect.MessageType = fastReflection_Params_messageType{}\n\ntype fastReflection_Params_messageType struct{}\n\nfunc (x fastReflection_Params_messageType) Zero() protoreflect.Message {\n\treturn (*fastReflection_Params)(nil)\n}\nfunc (x fastReflection_Params_messageType) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\nfunc (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Descriptor returns message descriptor, which contains only the protobuf\n// type information for the message.\nfunc (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor {\n\treturn md_Params\n}\n\n// Type returns the message type, which encapsulates both Go and protobuf\n// type information. If the Go type information is not needed,\n// it is recommended that the message descriptor be used instead.\nfunc (x *fastReflection_Params) Type() protoreflect.MessageType {\n\treturn _fastReflection_Params_messageType\n}\n\n// New returns a newly allocated and mutable empty message.\nfunc (x *fastReflection_Params) New() protoreflect.Message {\n\treturn new(fastReflection_Params)\n}\n\n// Interface unwraps the message reflection interface and\n// returns the underlying ProtoMessage interface.\nfunc (x *fastReflection_Params) Interface() protoreflect.ProtoMessage {\n\treturn (*Params)(x)\n}\n\n// Range iterates over every populated field in an undefined order,\n// calling f for each field descriptor and value encountered.\n// Range returns immediately if f returns false.\n// While iterating, mutating operations may only be performed\n// on the current field descriptor.\nfunc (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {\n}\n\n// Has reports whether a field is populated.\n//\n// Some fields have the property of nullability where it is possible to\n// distinguish between the default value of a field and whether the field\n// was explicitly populated with the default value. Singular message fields,\n// member fields of a oneof, and proto2 scalar fields are nullable. Such\n// fields are populated only if explicitly set.\n//\n// In other cases (aside from the nullable cases above),\n// a proto3 scalar field is populated if it contains a non-zero value, and\n// a repeated field is populated if it is non-empty.\nfunc (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Clear clears the field such that a subsequent Has call reports false.\n//\n// Clearing an extension field clears both the extension type and value\n// associated with the given field number.\n//\n// Clear is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Get retrieves the value for a field.\n//\n// For unpopulated scalars, it returns the default value, where\n// the default value of a bytes scalar is guaranteed to be a copy.\n// For unpopulated composite types, it returns an empty, read-only view\n// of the value; to obtain a mutable reference, use Mutable.\nfunc (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch descriptor.FullName() {\n\tdefault:\n\t\tif descriptor.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", descriptor.FullName()))\n\t}\n}\n\n// Set stores the value for a field.\n//\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType.\n// When setting a composite type, it is unspecified whether the stored value\n// aliases the source's memory in any way. If the composite value is an\n// empty, read-only value, then it panics.\n//\n// Set is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// Mutable returns a mutable reference to a composite type.\n//\n// If the field is unpopulated, it may allocate a composite value.\n// For a field belonging to a oneof, it implicitly clears any other field\n// that may be currently set within the same oneof.\n// For extension fields, it implicitly stores the provided ExtensionType\n// if not already stored.\n// It panics if the field does not contain a composite type.\n//\n// Mutable is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// NewField returns a new value that is assignable to the field\n// for the given descriptor. For scalars, this returns the default value.\n// For lists, maps, and messages, this returns a new, empty, mutable value.\nfunc (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {\n\tswitch fd.FullName() {\n\tdefault:\n\t\tif fd.IsExtension() {\n\t\t\tpanic(fmt.Errorf(\"proto3 declared messages do not support extensions: sourcenetwork.acp_core.Params\"))\n\t\t}\n\t\tpanic(fmt.Errorf(\"message sourcenetwork.acp_core.Params does not contain field %s\", fd.FullName()))\n\t}\n}\n\n// WhichOneof reports which field within the oneof is populated,\n// returning nil if none are populated.\n// It panics if the oneof descriptor does not belong to this message.\nfunc (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {\n\tswitch d.FullName() {\n\tdefault:\n\t\tpanic(fmt.Errorf(\"%s is not a oneof field in sourcenetwork.acp_core.Params\", d.FullName()))\n\t}\n\tpanic(\"unreachable\")\n}\n\n// GetUnknown retrieves the entire list of unknown fields.\n// The caller may only mutate the contents of the RawFields\n// if the mutated bytes are stored back into the message with SetUnknown.\nfunc (x *fastReflection_Params) GetUnknown() protoreflect.RawFields {\n\treturn x.unknownFields\n}\n\n// SetUnknown stores an entire list of unknown fields.\n// The raw fields must be syntactically valid according to the wire format.\n// An implementation may panic if this is not the case.\n// Once stored, the caller must not mutate the content of the RawFields.\n// An empty RawFields may be passed to clear the fields.\n//\n// SetUnknown is a mutating operation and unsafe for concurrent use.\nfunc (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) {\n\tx.unknownFields = fields\n}\n\n// IsValid reports whether the message is valid.\n//\n// An invalid message is an empty, read-only value.\n//\n// An invalid message often corresponds to a nil pointer of the concrete\n// message type, but the details are implementation dependent.\n// Validity is not part of the protobuf data model, and may not\n// be preserved in marshaling or other operations.\nfunc (x *fastReflection_Params) IsValid() bool {\n\treturn x != nil\n}\n\n// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.\n// This method may return nil.\n//\n// The returned methods type is identical to\n// \"google.golang.org/protobuf/runtime/protoiface\".Methods.\n// Consult the protoiface package documentation for details.\nfunc (x *fastReflection_Params) ProtoMethods() *protoiface.Methods {\n\tsize := func(input protoiface.SizeInput) protoiface.SizeOutput {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.SizeOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tSize:              0,\n\t\t\t}\n\t\t}\n\t\toptions := runtime.SizeInputToOptions(input)\n\t\t_ = options\n\t\tvar n int\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\tn += len(x.unknownFields)\n\t\t}\n\t\treturn protoiface.SizeOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tSize:              n,\n\t\t}\n\t}\n\n\tmarshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.MarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tBuf:               input.Buf,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.MarshalInputToOptions(input)\n\t\t_ = options\n\t\tsize := options.Size(x)\n\t\tdAtA := make([]byte, size)\n\t\ti := len(dAtA)\n\t\t_ = i\n\t\tvar l int\n\t\t_ = l\n\t\tif x.unknownFields != nil {\n\t\t\ti -= len(x.unknownFields)\n\t\t\tcopy(dAtA[i:], x.unknownFields)\n\t\t}\n\t\tif input.Buf != nil {\n\t\t\tinput.Buf = append(input.Buf, dAtA...)\n\t\t} else {\n\t\t\tinput.Buf = dAtA\n\t\t}\n\t\treturn protoiface.MarshalOutput{\n\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\tBuf:               input.Buf,\n\t\t}, nil\n\t}\n\tunmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {\n\t\tx := input.Message.Interface().(*Params)\n\t\tif x == nil {\n\t\t\treturn protoiface.UnmarshalOutput{\n\t\t\t\tNoUnkeyedLiterals: input.NoUnkeyedLiterals,\n\t\t\t\tFlags:             input.Flags,\n\t\t\t}, nil\n\t\t}\n\t\toptions := runtime.UnmarshalInputToOptions(input)\n\t\t_ = options\n\t\tdAtA := input.Buf\n\t\tl := len(dAtA)\n\t\tiNdEx := 0\n\t\tfor iNdEx < l {\n\t\t\tpreIndex := iNdEx\n\t\t\tvar wire uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tfieldNum := int32(wire >> 3)\n\t\t\twireType := int(wire & 0x7)\n\t\t\tif wireType == 4 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t\t}\n\t\t\tif fieldNum <= 0 {\n\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t\t}\n\t\t\tswitch fieldNum {\n\t\t\tdefault:\n\t\t\t\tiNdEx = preIndex\n\t\t\t\tskippy, err := runtime.Skip(dAtA[iNdEx:])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err\n\t\t\t\t}\n\t\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength\n\t\t\t\t}\n\t\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tif !options.DiscardUnknown {\n\t\t\t\t\tx.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)\n\t\t\t\t}\n\t\t\t\tiNdEx += skippy\n\t\t\t}\n\t\t}\n\n\t\tif iNdEx > l {\n\t\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF\n\t\t}\n\t\treturn protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil\n\t}\n\treturn &protoiface.Methods{\n\t\tNoUnkeyedLiterals: struct{}{},\n\t\tFlags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,\n\t\tSize:              size,\n\t\tMarshal:           marshal,\n\t\tUnmarshal:         unmarshal,\n\t\tMerge:             nil,\n\t\tCheckInitialized:  nil,\n\t}\n}\n\n// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.27.0\n// \tprotoc        (unknown)\n// source: sourcenetwork/acp_core/system.proto\n\nconst (\n\t// Verify that this generated code is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)\n\t// Verify that runtime/protoimpl is sufficiently up-to-date.\n\t_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)\n)\n\n// Params models the dynamic system parameters that callers can set\ntype Params struct {\n\tstate         protoimpl.MessageState\n\tsizeCache     protoimpl.SizeCache\n\tunknownFields protoimpl.UnknownFields\n}\n\nfunc (x *Params) Reset() {\n\t*x = Params{}\n\tif protoimpl.UnsafeEnabled {\n\t\tmi := &file_sourcenetwork_acp_core_system_proto_msgTypes[0]\n\t\tms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))\n\t\tms.StoreMessageInfo(mi)\n\t}\n}\n\nfunc (x *Params) String() string {\n\treturn protoimpl.X.MessageStringOf(x)\n}\n\nfunc (*Params) ProtoMessage() {}\n\n// Deprecated: Use Params.ProtoReflect.Descriptor instead.\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn file_sourcenetwork_acp_core_system_proto_rawDescGZIP(), []int{0}\n}\n\nvar File_sourcenetwork_acp_core_system_proto protoreflect.FileDescriptor\n\nvar file_sourcenetwork_acp_core_system_proto_rawDesc = []byte{\n\t0x0a, 0x23, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e,\n\t0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74,\n\t0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x08, 0x0a,\n\t0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xdd, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x61, 0x63,\n\t0x70, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72,\n\t0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,\n\t0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f,\n\t0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x6f,\n\t0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x63, 0x70, 0x5f,\n\t0x63, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x15, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0xca, 0x02, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f,\n\t0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x21, 0x53, 0x6f, 0x75,\n\t0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x41, 0x63, 0x70, 0x43, 0x6f,\n\t0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,\n\t0x16, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x3a, 0x3a,\n\t0x41, 0x63, 0x70, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,\n}\n\nvar (\n\tfile_sourcenetwork_acp_core_system_proto_rawDescOnce sync.Once\n\tfile_sourcenetwork_acp_core_system_proto_rawDescData = file_sourcenetwork_acp_core_system_proto_rawDesc\n)\n\nfunc file_sourcenetwork_acp_core_system_proto_rawDescGZIP() []byte {\n\tfile_sourcenetwork_acp_core_system_proto_rawDescOnce.Do(func() {\n\t\tfile_sourcenetwork_acp_core_system_proto_rawDescData = protoimpl.X.CompressGZIP(file_sourcenetwork_acp_core_system_proto_rawDescData)\n\t})\n\treturn file_sourcenetwork_acp_core_system_proto_rawDescData\n}\n\nvar file_sourcenetwork_acp_core_system_proto_msgTypes = make([]protoimpl.MessageInfo, 1)\nvar file_sourcenetwork_acp_core_system_proto_goTypes = []interface{}{\n\t(*Params)(nil), // 0: sourcenetwork.acp_core.Params\n}\nvar file_sourcenetwork_acp_core_system_proto_depIdxs = []int32{\n\t0, // [0:0] is the sub-list for method output_type\n\t0, // [0:0] is the sub-list for method input_type\n\t0, // [0:0] is the sub-list for extension type_name\n\t0, // [0:0] is the sub-list for extension extendee\n\t0, // [0:0] is the sub-list for field type_name\n}\n\nfunc init() { file_sourcenetwork_acp_core_system_proto_init() }\nfunc file_sourcenetwork_acp_core_system_proto_init() {\n\tif File_sourcenetwork_acp_core_system_proto != nil {\n\t\treturn\n\t}\n\tif !protoimpl.UnsafeEnabled {\n\t\tfile_sourcenetwork_acp_core_system_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {\n\t\t\tswitch v := v.(*Params); i {\n\t\t\tcase 0:\n\t\t\t\treturn &v.state\n\t\t\tcase 1:\n\t\t\t\treturn &v.sizeCache\n\t\t\tcase 2:\n\t\t\t\treturn &v.unknownFields\n\t\t\tdefault:\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\ttype x struct{}\n\tout := protoimpl.TypeBuilder{\n\t\tFile: protoimpl.DescBuilder{\n\t\t\tGoPackagePath: reflect.TypeOf(x{}).PkgPath(),\n\t\t\tRawDescriptor: file_sourcenetwork_acp_core_system_proto_rawDesc,\n\t\t\tNumEnums:      0,\n\t\t\tNumMessages:   1,\n\t\t\tNumExtensions: 0,\n\t\t\tNumServices:   0,\n\t\t},\n\t\tGoTypes:           file_sourcenetwork_acp_core_system_proto_goTypes,\n\t\tDependencyIndexes: file_sourcenetwork_acp_core_system_proto_depIdxs,\n\t\tMessageInfos:      file_sourcenetwork_acp_core_system_proto_msgTypes,\n\t}.Build()\n\tFile_sourcenetwork_acp_core_system_proto = out.File\n\tfile_sourcenetwork_acp_core_system_proto_rawDesc = nil\n\tfile_sourcenetwork_acp_core_system_proto_goTypes = nil\n\tfile_sourcenetwork_acp_core_system_proto_depIdxs = nil\n}\n"
  },
  {
    "path": "app/ante/ante.go",
    "content": "package ante\n\nimport (\n\t\"cosmossdk.io/x/tx/signing\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/ante\"\n\tbankkeeper \"github.com/cosmos/cosmos-sdk/x/bank/keeper\"\n\tibcante \"github.com/cosmos/ibc-go/v10/modules/core/ante\"\n\tibckeeper \"github.com/cosmos/ibc-go/v10/modules/core/keeper\"\n)\n\n// NewAnteHandler extends the default AnteHandler with custom decorators.\nfunc NewAnteHandler(\n\taccountKeeper ante.AccountKeeper,\n\tbankKeeper bankkeeper.Keeper,\n\tfeegrantKeeper ante.FeegrantKeeper,\n\tchannelKeeper *ibckeeper.Keeper,\n\thubKeeper HubKeeper,\n\tsignModeHandler *signing.HandlerMap,\n\tsigGasConsumer ante.SignatureVerificationGasConsumer,\n\tTxEncoder sdk.TxEncoder,\n) sdk.AnteHandler {\n\treturn sdk.ChainAnteDecorators(\n\t\t// Wraps panics with the string format of the transaction.\n\t\tNewHandlePanicDecorator(),\n\t\t// Initializes the context with the gas meter. Must run before any gas consumption.\n\t\tante.NewSetUpContextDecorator(),\n\t\t// Rejects legacy transactions (SIGN_MODE_LEGACY_AMINO_JSON) that don't sign extension options.\n\t\tNewRejectLegacyTxDecorator(),\n\t\t// Validates extension options and extracts DID for feegrant usage.\n\t\t// Also stores JWS tokens for tracking and invalidation.\n\t\tNewExtensionOptionsDecorator(hubKeeper),\n\t\t// Performs basic validation on the transaction.\n\t\tante.NewValidateBasicDecorator(),\n\t\t// Ensures that the tx has not exceeded the height timeout.\n\t\tante.NewTxTimeoutHeightDecorator(),\n\t\t// Ensures that the memo does not exceed the allowed max length.\n\t\tante.NewValidateMemoDecorator(accountKeeper),\n\t\t// Ensures that the gas limit covers the cost for transaction size. Consumes gas from the gas meter.\n\t\tante.NewConsumeGasForTxSizeDecorator(accountKeeper),\n\t\t// Ensures that the fee payer has enough funds to pay for the tx, validates tx fees based on denom\n\t\t// (e.g. ucredit fees are higher than uopen fees) and deducts the fees. Does not affect tx priority.\n\t\t// Enforces DefaultMinGasPrice if min gas price was set to 0 by the validator to prevent spam.\n\t\tNewCustomDeductFeeDecorator(accountKeeper, bankKeeper, feegrantKeeper, hubKeeper, nil),\n\t\t// Sets public keys in the context for the fee payer and signers. Must happen before signature checks.\n\t\tante.NewSetPubKeyDecorator(accountKeeper),\n\t\t// Ensures that the number of signatures does not exceed the tx's signature limit.\n\t\tante.NewValidateSigCountDecorator(accountKeeper),\n\t\t// Ensures that the tx's gas limit is > the gas consumed based on signature verification. Consumes gas from the gas meter.\n\t\tante.NewSigGasConsumeDecorator(accountKeeper, sigGasConsumer),\n\t\t// Validates signatures and ensure each signer's nonce matches its account sequence. No gas consumed from the gas meter.\n\t\tante.NewSigVerificationDecorator(accountKeeper, signModeHandler),\n\t\t// Increments the sequence number (nonce) for all tx signers.\n\t\tante.NewIncrementSequenceDecorator(accountKeeper),\n\t\t// Checks that the tx is not a duplicate IBC packet or update message.\n\t\tibcante.NewRedundantRelayDecorator(channelKeeper),\n\t)\n}\n\nvar DefaultSigVerificationGasConsumer = ante.DefaultSigVerificationGasConsumer\n"
  },
  {
    "path": "app/ante/expected_keepers.go",
    "content": "package ante\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\thubtypes \"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// HubKeeper is an interface for the x/hub module keeper.\ntype HubKeeper interface {\n\tGetChainConfig(context.Context) hubtypes.ChainConfig\n\n\t// JWS token management\n\tStoreOrUpdateJWSToken(\n\t\tctx context.Context,\n\t\tbearerToken string,\n\t\tissuerDid string,\n\t\tauthorizedAccount string,\n\t\tissuedAt time.Time,\n\t\texpiresAt time.Time,\n\t) error\n}\n"
  },
  {
    "path": "app/ante/extension.go",
    "content": "package ante\n\nimport (\n\t\"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/ante\"\n\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// ExtensionOptionsDecorator validates extension options in transactions.\n// It allows JWSExtensionOption and rejects all other extension options.\n// It also extracts DID from JWS extension options and stores it in context.\n// Additionally, it stores used JWS tokens for tracking and invalidation.\ntype ExtensionOptionsDecorator struct {\n\thubKeeper HubKeeper\n}\n\n// NewExtensionOptionsDecorator creates a new ExtensionOptionsDecorator.\nfunc NewExtensionOptionsDecorator(hubKeeper HubKeeper) ExtensionOptionsDecorator {\n\treturn ExtensionOptionsDecorator{\n\t\thubKeeper: hubKeeper,\n\t}\n}\n\n// AnteHandle validates extension options, allowing only JWSExtensionOption.\n// It extracts DID from JWS extension options and stores it in context for later use.\nfunc (eod ExtensionOptionsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) {\n\t// Check if the transaction has extension options\n\thasExtOptsTx, ok := tx.(ante.HasExtensionOptionsTx)\n\tif !ok {\n\t\t// Transaction doesn't support extension options, continue\n\t\treturn next(ctx, tx, simulate)\n\t}\n\n\textensionOptions := hasExtOptsTx.GetExtensionOptions()\n\n\t// If no extension options, continue normally\n\tif len(extensionOptions) == 0 {\n\t\treturn next(ctx, tx, simulate)\n\t}\n\n\t// Reject transactions with more than one extension option\n\tif len(extensionOptions) > 1 {\n\t\treturn ctx, errorsmod.Wrapf(\n\t\t\tsdkerrors.ErrInvalidRequest,\n\t\t\t\"only one extension option is supported, got %d\",\n\t\t\tlen(extensionOptions),\n\t\t)\n\t}\n\n\t// Process the single extension option\n\textOpt := extensionOptions[0]\n\n\t// Check if it's a JWSExtensionOption\n\tjwsOpt, ok := extOpt.GetCachedValue().(*antetypes.JWSExtensionOption)\n\tif !ok {\n\t\t// Unknown extension option, reject\n\t\treturn ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, \"unsupported extension option type: %T\", extOpt.GetCachedValue())\n\t}\n\n\tcurrentTime := ctx.BlockTime()\n\n\t// Check if bearer auth should be ignored for validation\n\tskipAuthValidation := eod.hubKeeper != nil && eod.hubKeeper.GetChainConfig(ctx).IgnoreBearerAuth\n\n\t// Validate JWS format, signature, required claims, and timing\n\tdid, authorizedAccount, err := validateJWSExtension(ctx, jwsOpt.BearerToken, currentTime, skipAuthValidation)\n\tif err != nil {\n\t\tctx.Logger().Error(\"Bearer token validation failed\", \"error\", err, \"did\", did)\n\t\treturn ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, \"bearer token validation failed: %v\", err)\n\t}\n\n\t// Parse the bearer token to extract timestamps for storage\n\tbearerToken, err := parseValidateJWS(ctx, nil, jwsOpt.BearerToken, skipAuthValidation)\n\tif err != nil {\n\t\treturn ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, \"failed to parse bearer token: %v\", err)\n\t}\n\n\t// Store or update the JWS token record\n\tif eod.hubKeeper != nil && !simulate {\n\t\tissuedAt := time.Unix(bearerToken.IssuedTime, 0)\n\t\texpiresAt := time.Unix(bearerToken.ExpirationTime, 0)\n\n\t\terr = eod.hubKeeper.StoreOrUpdateJWSToken(\n\t\t\tctx,\n\t\t\tjwsOpt.BearerToken,\n\t\t\tdid,\n\t\t\tauthorizedAccount,\n\t\t\tissuedAt,\n\t\t\texpiresAt,\n\t\t)\n\t\tif err != nil {\n\t\t\t// Log error but don't fail the transaction\n\t\t\tctx.Logger().Error(\"failed to store JWS token\", \"error\", err)\n\t\t}\n\t}\n\n\t// Ensure that transaction has at least one message\n\tmsgs := tx.GetMsgs()\n\tif len(msgs) == 0 {\n\t\treturn ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, \"transaction has no messages\")\n\t}\n\n\t// Check that all messages are signed by the same authorized account\n\tif !skipAuthValidation {\n\t\tfor i, msg := range msgs {\n\t\t\tvar msgSigner string\n\t\t\tif msgWithCreator, ok := msg.(interface{ GetCreator() string }); ok {\n\t\t\t\tmsgSigner = msgWithCreator.GetCreator()\n\t\t\t}\n\t\t\tif msgSigner == \"\" {\n\t\t\t\treturn ctx, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, \"cannot determine signer for message %d\", i)\n\t\t\t}\n\t\t\tif msgSigner != authorizedAccount {\n\t\t\t\treturn ctx, errorsmod.Wrapf(\n\t\t\t\t\tsdkerrors.ErrUnauthorized,\n\t\t\t\t\t\"message %d signer mismatch: bearer token authorizes %s but message is signed by %s\",\n\t\t\t\t\ti,\n\t\t\t\t\tauthorizedAccount,\n\t\t\t\t\tmsgSigner,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Store extracted DID in context\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, did)\n\n\treturn next(ctx, tx, simulate)\n}\n"
  },
  {
    "path": "app/ante/extension_test.go",
    "content": "package ante\n\nimport (\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestExtensionOptionsDecorator_ValidJWSExtension(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create a valid JWS extension option with properly signed JWS using the test account address\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should accept valid JWS extension option\")\n\n\t// Verify DID was extracted and stored in context\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"DID should be extracted and stored in context\")\n}\n\nfunc TestExtensionOptionsDecorator_InvalidJWSExtension(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create an invalid JWS extension option\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: \"\",\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject invalid JWS extension option\")\n\trequire.Contains(t, err.Error(), \"failed parsing jws\")\n}\n\nfunc TestExtensionOptionsDecorator_InvalidJWSFormat(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create an invalid JWS extension option\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: \"invalid.format\",\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject JWS with invalid format\")\n\trequire.Contains(t, err.Error(), \"failed parsing jws\")\n}\n\nfunc TestExtensionOptionsDecorator_InvalidJWSSignature(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create an invalid JWS extension option\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\",\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject invalid JWS signature\")\n\trequire.Contains(t, err.Error(), \"missing required claim\")\n}\n\nfunc TestExtensionOptionsDecorator_UnknownExtensionOption(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create an unknown extension option\n\tunknownOpt := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(unknownOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject unknown extension option\")\n\trequire.Contains(t, err.Error(), \"unsupported extension option type\")\n}\n\nfunc TestExtensionOptionsDecorator_NoExtensionOptions(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// No extension options set\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should allow transactions with no extension options\")\n\n\t// Verify no DID was extracted\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Empty(t, extractedDID, \"No DID should be extracted when no extension options are present\")\n}\n\nfunc TestExtensionOptionsDecorator_MultipleExtensionOptions(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create two JWS extension options\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken1, _ := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tbearerToken2, _ := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\n\tjwsOpt1 := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken1,\n\t}\n\tjwsOpt2 := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken2,\n\t}\n\n\t// Pack both extension options\n\tany1, err := codectypes.NewAnyWithValue(jwsOpt1)\n\trequire.NoError(t, err)\n\tany2, err := codectypes.NewAnyWithValue(jwsOpt2)\n\trequire.NoError(t, err)\n\n\t// Add multiple extension options to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any1, any2)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject transactions with multiple extension options\")\n\trequire.Contains(t, err.Error(), \"only one extension option is supported\")\n\trequire.Contains(t, err.Error(), \"got 2\")\n}\n\nfunc TestExtensionOptionsDecorator_JWSOptionWithInvalidSignature(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create a JWS extension option without DID in payload\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\",\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject JWS without valid DID in payload\")\n\trequire.Contains(t, err.Error(), \"missing required claim\")\n}\n\nfunc TestExtensionOptionsDecorator_ExtractDIDFromJWSPayload(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create a JWS with DID in payload using the test account address\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should accept JWS extension option with DID in payload\")\n\n\t// Verify DID was extracted from payload\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"DID should be extracted from JWS payload\")\n}\n\nfunc TestExtensionOptionsDecorator_ValidJWSWithDIDInPayload(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create a JWS with DID in payload using the test account address\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should accept JWS extension option\")\n\n\t// Verify that payload DID is extracted and used\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"Payload DID should be extracted and used\")\n}\n\nfunc TestExtensionOptionsDecorator_SecurityTamperedJWS(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create JWS with valid signature using the test account address\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, _ := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\t// Tamper with the JWS signature to make it invalid\n\ttamperedSignature := bearerToken[:len(bearerToken)-10] + \"tampered123\"\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: tamperedSignature,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject tampered JWS\")\n\trequire.Contains(t, err.Error(), \"could not verify actor signature\")\n}\n\nfunc TestExtensionOptionsDecorator_SecurityNoDIDInPayload(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create JWS with no DID in payload (e.g. {\"sub\":\"1234567890\",\"name\":\"John Doe\",\"iat\":1516239022})\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\",\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject JWS without DID in payload\")\n\trequire.Contains(t, err.Error(), \"missing required claim\")\n}\n\nfunc TestExtensionAndFeeDecorators_WithDID(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\t// Create mock feegrant keeper with DID support\n\tctrl := gomock.NewController(t)\n\tdefer ctrl.Finish()\n\tmockFeegrantKeeper := test.NewMockDIDFeegrantKeeper(ctrl)\n\n\t// Create both decorators\n\textensionDecorator := NewExtensionOptionsDecorator(nil)\n\tfeeDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, mockFeegrantKeeper, nil, nil)\n\n\t// Chain them in the same order as actual ante handler\n\tantehandler := sdk.ChainAnteDecorators(extensionDecorator, feeDecorator)\n\n\taccs := s.CreateTestAccounts(2)\n\tfeePayer := accs[0].acc.GetAddress()\n\tfeeGranter := accs[1].acc.GetAddress()\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create valid JWS extension option using the fee payer address\n\tauthorizedAccount := feePayer.String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack and add extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\t// Set fee granter and amount\n\ts.txBuilder.SetFeeGranter(feeGranter)\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 500))\n\ts.txBuilder.SetFeeAmount(validFee)\n\ts.txBuilder.SetGasLimit(200000)\n\n\t// Mock expectations for DID-based feegrant\n\tmockFeegrantKeeper.EXPECT().UseFirstAvailableDIDGrant(gomock.Any(), userDID, validFee, gomock.Any()).Return(feeGranter, nil)\n\t// Fee deduction happens in the ante handler after feegrant validation\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(gomock.Any(), feeGranter, authtypes.FeeCollectorName, validFee).Return(nil)\n\n\t// Create transaction\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// Run the ante handler chain\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"Ante handler chain should succeed with DID-based feegrant\")\n\n\t// Verify DID was passed through context\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"DID should be preserved in context after ante chain\")\n}\n\nfunc TestExtensionAndFeeDecorators_NoDID(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\t// Create both decorators\n\textensionDecorator := NewExtensionOptionsDecorator(nil)\n\tfeeDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\n\t// Chain them in the same order as actual ante handler\n\tantehandler := sdk.ChainAnteDecorators(extensionDecorator, feeDecorator)\n\n\taccs := s.CreateTestAccounts(2)\n\tfeePayer := accs[0].acc.GetAddress()\n\tfeeGranter := accs[1].acc.GetAddress()\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Set fee granter and amount\n\ts.txBuilder.SetFeeGranter(feeGranter)\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 500))\n\ts.txBuilder.SetFeeAmount(validFee)\n\ts.txBuilder.SetGasLimit(200000)\n\n\t// Mock expectations for standard feegrant (no DID)\n\ts.feeGrantKeeper.EXPECT().UseGrantedFees(gomock.Any(), feeGranter, feePayer, validFee, gomock.Any()).Return(nil)\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(gomock.Any(), feeGranter, authtypes.FeeCollectorName, validFee).Return(nil)\n\n\t// Create transaction\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// Run the ante handler chain\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"Ante handler chain should succeed with standard feegrant\")\n\n\t// Verify no DID was extracted\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Empty(t, extractedDID, \"No DID should be in context when no extension options provided\")\n}\n\nfunc TestExtensionOptionsDecorator_CorrectAuthorizedAccount(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create JWS token with authorized account matching the transaction signer\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should accept JWS with matching authorized account\")\n\n\t// Verify DID was extracted and stored in context\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"DID should be extracted and stored in context\")\n}\n\nfunc TestExtensionOptionsDecorator_IncorrectAuthorizedAccount(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create JWS token with authorized account NOT matching the transaction signer\n\twrongAuthorizedAccount := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\tbearerToken, _ := test.GenerateSignedJWSWithMatchingDID(t, wrongAuthorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\t// Pack the extension option\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\t// Add extension option to the transaction\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject JWS with mismatched authorized account\")\n\trequire.Contains(t, err.Error(), \"signer mismatch\")\n}\n\nfunc TestExtensionOptionsDecorator_MultipleMessagesAllAuthorized(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\t// Multiple ACP messages from same creator\n\tmsg1 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"policy 1\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tmsg2 := &acptypes.MsgEditPolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicyId:    \"policy-id-1\",\n\t\tPolicy:      \"updated policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tmsg3 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"policy 2\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg1, msg2, msg3))\n\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, userDID := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"ExtensionOptionsDecorator should accept transaction with multiple ACP messages all from authorized account\")\n\n\textractedDID := getExtractedDIDFromContext(newCtx)\n\trequire.Equal(t, userDID, extractedDID, \"DID should be extracted and stored in context\")\n}\n\nfunc TestExtensionOptionsDecorator_MultipleMessagesOneUnauthorized(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewExtensionOptionsDecorator(nil)\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(2)\n\n\t// Mix of ACP messages from different creators - should be rejected\n\tmsg1 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"policy 1\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tmsg2 := &acptypes.MsgEditPolicy{\n\t\tCreator:     accs[1].acc.GetAddress().String(), // Different creator - unauthorized\n\t\tPolicyId:    \"policy-id-1\",\n\t\tPolicy:      \"malicious update\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tmsg3 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"policy 2\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg1, msg2, msg3))\n\n\t// JWS token authorized only for accs[0]\n\tauthorizedAccount := accs[0].acc.GetAddress().String()\n\tbearerToken, _ := test.GenerateSignedJWSWithMatchingDID(t, authorizedAccount)\n\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\tBearerToken: bearerToken,\n\t}\n\n\tany, err := codectypes.NewAnyWithValue(jwsOpt)\n\trequire.NoError(t, err)\n\n\tif extBuilder, ok := s.txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(any)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv, accs[1].priv}, []uint64{0, 0}, []uint64{0, 0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"ExtensionOptionsDecorator should reject transaction with ACP message from unauthorized account\")\n\trequire.Contains(t, err.Error(), \"message 1 signer mismatch\", \"Error should indicate which message failed\")\n}\n"
  },
  {
    "path": "app/ante/extension_utils.go",
    "content": "package ante\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsecp \"github.com/decred/dcrd/dcrec/secp256k1/v4\"\n\t\"github.com/go-jose/go-jose/v3\"\n\t\"github.com/lestrrat-go/jwx/v2/jwa\"\n\tjwxjws \"github.com/lestrrat-go/jwx/v2/jws\"\n\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n)\n\n// parseValidateJWS processes a JWS Bearer token by unmarshaling it and verifying its signature.\nfunc parseValidateJWS(ctx context.Context, resolver did.Resolver, bearerJWS string, skipAuthAccountValidation bool) (antetypes.BearerToken, error) {\n\tbearerJWS = strings.TrimLeft(bearerJWS, \" \\n\\t\\r\")\n\tif strings.HasPrefix(bearerJWS, \"{\") {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"JSON serialization is not supported for security reasons\")\n\t}\n\n\tjws, err := jose.ParseSigned(bearerJWS)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"failed parsing jws: %v\", err)\n\t}\n\n\tpayloadBytes := jws.UnsafePayloadWithoutVerification()\n\tbearer, err := unmarshalJWSPayload(payloadBytes)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, err\n\t}\n\n\terr = validateBearerTokenValues(&bearer, skipAuthAccountValidation)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, err\n\t}\n\n\t// Verify signature against the issuer DID\n\tdid := bearer.IssuerID\n\tdidKey := key.DIDKey(did)\n\tpubBytes, _, keytype, err := didKey.Decode()\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"failed to resolve actor did: %v\", err)\n\t}\n\n\tpubKey, err := crypto.BytesToPubKey(pubBytes, keytype)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"failed to retrieve pub key: %v\", err)\n\t}\n\n\tvar algs []jwa.SignatureAlgorithm\n\tif secpKey, ok := pubKey.(secp.PublicKey); ok {\n\t\t// https://www.rfc-editor.org/rfc/rfc8812\n\t\talgs = []jwa.SignatureAlgorithm{jwa.ES256K}\n\t\tpubKey = secpKey.ToECDSA()\n\t} else {\n\t\talgs, err = jwxjws.AlgorithmsForKey(pubKey)\n\t\tif err != nil {\n\t\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"failed to retrieve algs for pub key: %v\", err)\n\t\t}\n\t}\n\n\t_, err = jwxjws.Verify([]byte(bearerJWS), jwxjws.WithKey(algs[0], pubKey))\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"could not verify actor signature for jwk: %v\", err)\n\t}\n\n\treturn bearer, nil\n}\n\n// unmarshalJWSPayload unmarshals the JWS bytes into a BearerToken.\nfunc unmarshalJWSPayload(payload []byte) (antetypes.BearerToken, error) {\n\tobj := make(map[string]any)\n\terr := json.Unmarshal(payload, &obj)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, err\n\t}\n\n\tfor _, claim := range antetypes.RequiredClaims() {\n\t\t_, ok := obj[claim]\n\t\tif !ok {\n\t\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"missing required claim: %s\", claim)\n\t\t}\n\t}\n\n\ttoken := antetypes.BearerToken{}\n\terr = json.Unmarshal(payload, &token)\n\tif err != nil {\n\t\treturn antetypes.BearerToken{}, fmt.Errorf(\"could not unmarshal payload: %v\", err)\n\t}\n\treturn token, nil\n}\n\n// validateProviderToken validates the provider token fields.\nfunc validateProviderToken(token *antetypes.ProviderToken) error {\n\tif token.ProviderName == \"\" {\n\t\treturn fmt.Errorf(\"provider token missing provider_name\")\n\t}\n\tif token.UserID == \"\" {\n\t\treturn fmt.Errorf(\"provider token missing user_id\")\n\t}\n\tif token.ActorDID == \"\" {\n\t\treturn fmt.Errorf(\"provider token missing actor_did\")\n\t}\n\treturn nil\n}\n\n// validateBearerTokenValues validates the bearer token values.\nfunc validateBearerTokenValues(token *antetypes.BearerToken, skipAuthAccountValidation bool) error {\n\tif strings.HasPrefix(token.IssuerID, \"did:\") {\n\t\tif err := did.IsValidDID(token.IssuerID); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid issuer DID: %v\", err)\n\t\t}\n\t} else {\n\t\tvar providerToken antetypes.ProviderToken\n\t\tif err := json.Unmarshal([]byte(token.IssuerID), &providerToken); err != nil {\n\t\t\treturn fmt.Errorf(\"issuer is neither a valid DID nor a valid provider token: %v\", err)\n\t\t}\n\t}\n\n\t// Only validate authorized account if bearer auth is not being ignored\n\tif !skipAuthAccountValidation {\n\t\tif err := types.IsValidSourceHubAddr(token.AuthorizedAccount); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid authorized account: %v\", err)\n\t\t}\n\t}\n\n\tif token.ExpirationTime < token.IssuedTime {\n\t\treturn fmt.Errorf(\"issue time cannot be after expiration time\")\n\t}\n\n\treturn nil\n}\n\n// validateBearerToken validates the bearer token including timing\nfunc validateBearerToken(token *antetypes.BearerToken, currentTime *time.Time, skipAuthAccountValidation bool) error {\n\terr := validateBearerTokenValues(token, skipAuthAccountValidation)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnow := currentTime.Unix()\n\n\tif now > token.ExpirationTime {\n\t\treturn fmt.Errorf(\"token expired: current time %d > expiration time %d\", now, token.ExpirationTime)\n\t}\n\n\treturn nil\n}\n\n// validateJWSExtension parses and validates JWS extension option bearer token.\n// Returns the actor DID (from provider token if present, otherwise issuer DID) and the authorized account.\n// If skipAuthAccountValidation is true, the authorized account validation is skipped (when ignoreBearerAuth is enabled).\nfunc validateJWSExtension(ctx context.Context, bearerToken string, currentTime time.Time, skipAuthAccountValidation bool) (string, string, error) {\n\tresolver := &did.KeyResolver{}\n\n\ttoken, err := parseValidateJWS(ctx, resolver, bearerToken, skipAuthAccountValidation)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\terr = validateBearerToken(&token, &currentTime, skipAuthAccountValidation)\n\tif err != nil {\n\t\treturn \"\", \"\", err\n\t}\n\n\tactorDID := token.IssuerID\n\n\tif token.ProviderToken != \"\" {\n\t\tvar providerToken antetypes.ProviderToken\n\t\tif err := json.Unmarshal([]byte(token.ProviderToken), &providerToken); err != nil {\n\t\t\treturn \"\", \"\", fmt.Errorf(\"failed to unmarshal provider token: %v\", err)\n\t\t}\n\n\t\tif err := validateProviderToken(&providerToken); err != nil {\n\t\t\treturn \"\", \"\", err\n\t\t}\n\n\t\tactorDID = providerToken.ActorDID\n\t}\n\n\treturn actorDID, token.AuthorizedAccount, nil\n}\n\n// getExtractedDIDFromContext retrieves the extracted DID from context.\nfunc getExtractedDIDFromContext(ctx sdk.Context) string {\n\tif did, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok {\n\t\treturn did\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "app/ante/fee.go",
    "content": "package ante\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/math\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/ante\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// TxFeeChecker validates provided fee and returns the effective fee and tx priority.\ntype TxFeeChecker func(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, int64, error)\n\n// CustomDeductFeeDecorator deducts fees from the fee payer.\ntype CustomDeductFeeDecorator struct {\n\taccountKeeper  ante.AccountKeeper\n\tbankKeeper     types.BankKeeper\n\tfeegrantKeeper ante.FeegrantKeeper\n\ttxFeeChecker   TxFeeChecker\n\thubKeeper      HubKeeper\n}\n\n// NewCustomDeductFeeDecorator initializes custom deduct fee decorator with a fee checker.\nfunc NewCustomDeductFeeDecorator(\n\tak ante.AccountKeeper,\n\tbk types.BankKeeper,\n\tfk ante.FeegrantKeeper,\n\thk HubKeeper,\n\ttfc TxFeeChecker,\n) CustomDeductFeeDecorator {\n\n\tif tfc == nil {\n\t\ttfc = func(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, int64, error) {\n\t\t\treturn checkTxFeeWithMinGasPrices(ctx, tx, hk)\n\t\t}\n\t}\n\n\treturn CustomDeductFeeDecorator{\n\t\taccountKeeper:  ak,\n\t\tbankKeeper:     bk,\n\t\tfeegrantKeeper: fk,\n\t\thubKeeper:      hk,\n\t\ttxFeeChecker:   tfc,\n\t}\n}\n\n// AnteHandle performs fee validation and deduction for transactions. Transactions at genesis bypass fee validation.\nfunc (cdfd CustomDeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (\n\tsdk.Context, error) {\n\n\tfeeTx, ok := tx.(sdk.FeeTx)\n\tif !ok {\n\t\treturn ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, \"tx must be a FeeTx\")\n\t}\n\n\t// Skip fee validation and deduction for transactions at genesis\n\tif ctx.BlockHeight() == 0 {\n\t\treturn next(ctx, tx, simulate)\n\t}\n\n\tif !simulate && ctx.BlockHeight() > 0 && feeTx.GetGas() == 0 {\n\t\treturn ctx, errorsmod.Wrap(sdkerrors.ErrInvalidGasLimit, \"must provide positive gas\")\n\t}\n\n\tvar (\n\t\tpriority int64\n\t\terr      error\n\t)\n\n\tfees := feeTx.GetFee()\n\n\tif !simulate {\n\t\t// Check tx fees with min gas prices\n\t\tfees, priority, err = cdfd.txFeeChecker(ctx, tx)\n\t\tif err != nil {\n\t\t\treturn ctx, err\n\t\t}\n\t}\n\n\tif err := cdfd.checkDeductFee(ctx, tx, fees); err != nil {\n\t\treturn ctx, err\n\t}\n\n\tnewCtx := ctx.WithPriority(priority)\n\n\treturn next(newCtx, tx, simulate)\n}\n\n// checkTxFeeWithMinGasPrices checks if the tx fee with denom fee multiplier >= min gas price of the validator.\n// Enforces the DefaultMinGasPrice to prevent spam if minimum gas price was set to 0 by the validator.\n// NOTE: Always returns 0 for transaction priority because we handle TxPriority in priority_lane.go.\nfunc checkTxFeeWithMinGasPrices(ctx sdk.Context, tx sdk.Tx, hubKeeper HubKeeper) (sdk.Coins, int64, error) {\n\tfeeTx, ok := tx.(sdk.FeeTx)\n\tif !ok {\n\t\treturn nil, 0, errorsmod.Wrap(sdkerrors.ErrTxDecode, \"tx must be a FeeTx\")\n\t}\n\n\tfees := feeTx.GetFee()\n\tgas := feeTx.GetGas()\n\n\t// Allow zero-fee transactions if allowed by app config and the \"--fees\" flag is omitted\n\tif fees.Empty() {\n\t\tif hubKeeper != nil && hubKeeper.GetChainConfig(ctx).AllowZeroFeeTxs {\n\t\t\treturn fees, 0, nil\n\t\t}\n\t\treturn nil, 0, sdkerrors.ErrInsufficientFee.Wrap(\"zero fees are not allowed\")\n\t}\n\n\tif fees.Len() > 1 {\n\t\treturn nil, 0, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins,\n\t\t\t\"only one fee denomination is allowed, got: %s\", fees.String())\n\t}\n\n\t// Validate provided fees if this is a CheckTx\n\tif ctx.IsCheckTx() {\n\t\tfee := fees[0]\n\t\tminGasPrice := ctx.MinGasPrices().AmountOf(fee.Denom)\n\n\t\t// Denoms missing from MinGasPrices() are not supported\n\t\tif minGasPrice.IsNil() {\n\t\t\treturn nil, 0, errorsmod.Wrapf(\n\t\t\t\tsdkerrors.ErrInvalidCoins,\n\t\t\t\t\"invalid fee denom: %s is not supported, available fee denoms: %s\",\n\t\t\t\tfee.Denom, ctx.MinGasPrices(),\n\t\t\t)\n\t\t}\n\n\t\t// Enforce default min gas price to prevent spam if it was set to 0 by the validator\n\t\tif minGasPrice.IsZero() {\n\t\t\tminGasPrice = math.LegacyMustNewDecFromStr(appparams.DefaultMinGasPrice)\n\t\t}\n\n\t\t// Calculate required fee by multiplying minimum gas price by gas limit and denom multiplier\n\t\tdenomFeeMultiplier := math.LegacyOneDec()\n\t\tif fee.Denom == appparams.MicroCreditDenom {\n\t\t\tdenomFeeMultiplier = math.LegacyNewDec(appparams.CreditFeeMultiplier)\n\t\t}\n\t\trequiredAmount := minGasPrice.Mul(math.LegacyNewDec(int64(gas))).Mul(denomFeeMultiplier).Ceil().RoundInt()\n\n\t\t// Make sure that provided fee is at least the required amount\n\t\tif fee.Amount.LT(requiredAmount) {\n\t\t\treturn nil, 0, errorsmod.Wrapf(\n\t\t\t\tsdkerrors.ErrInsufficientFee,\n\t\t\t\t\"insufficient fee; got: %s required: %s\",\n\t\t\t\tfee, sdk.NewCoin(fee.Denom, requiredAmount),\n\t\t\t)\n\t\t}\n\t}\n\n\treturn fees, 0, nil\n}\n\n// checkDeductFee checks and deducts fees from the fee payer.\nfunc (cdfd CustomDeductFeeDecorator) checkDeductFee(ctx sdk.Context, sdkTx sdk.Tx, fees sdk.Coins) error {\n\tfeeTx, ok := sdkTx.(sdk.FeeTx)\n\tif !ok {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrTxDecode, \"tx must be a FeeTx\")\n\t}\n\n\tif addr := cdfd.accountKeeper.GetModuleAddress(types.FeeCollectorName); addr == nil {\n\t\treturn fmt.Errorf(\"fee collector module account (%s) has not been set\", types.FeeCollectorName)\n\t}\n\n\tfeePayer := feeTx.FeePayer()\n\tfeeGranter := feeTx.FeeGranter()\n\n\t// Determine who will pay the fees\n\tdeductFeesFrom, err := cdfd.handleFeegrant(ctx, feeGranter, feePayer, fees, sdkTx.GetMsgs())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdeductFeesFromAcc := cdfd.accountKeeper.GetAccount(ctx, deductFeesFrom)\n\tif deductFeesFromAcc == nil {\n\t\treturn sdkerrors.ErrUnknownAddress.Wrapf(\"fee payer address: %s does not exist\", deductFeesFrom)\n\t}\n\n\tif !fees.IsZero() {\n\t\terr := deductFees(cdfd.bankKeeper, ctx, deductFeesFromAcc, fees)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\tsdk.EventTypeTx,\n\t\tsdk.NewAttribute(sdk.AttributeKeyFee, fees.String()),\n\t\tsdk.NewAttribute(sdk.AttributeKeyFeePayer, sdk.AccAddress(deductFeesFrom).String()),\n\t))\n\n\treturn nil\n}\n\n// handleFeegrant determines who should pay for fees based on feegrant configuration.\n// It handles both DID-based feegrants (when DID is extracted from context) and standard feegrants.\n// Returns the address that should be charged for fees, or an error if feegrant validation fails.\nfunc (cdfd CustomDeductFeeDecorator) handleFeegrant(\n\tctx sdk.Context,\n\tfeeGranter []byte,\n\tfeePayer sdk.AccAddress,\n\tfees sdk.Coins,\n\tmsgs []sdk.Msg,\n) (sdk.AccAddress, error) {\n\textractedDID := getExtractedDIDFromContext(ctx)\n\n\t// If DID was extracted, try to use the first available grant for that DID\n\tif extractedDID != \"\" && cdfd.feegrantKeeper != nil {\n\t\tif didKeeper, ok := cdfd.feegrantKeeper.(interface {\n\t\t\tUseFirstAvailableDIDGrant(ctx context.Context, granteeDID string, fee sdk.Coins, msgs []sdk.Msg) (sdk.AccAddress, error)\n\t\t}); ok {\n\t\t\tusedGranter, err := didKeeper.UseFirstAvailableDIDGrant(ctx, extractedDID, fees, msgs)\n\t\t\tif err == nil {\n\t\t\t\treturn usedGranter, nil\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no DID extracted, try to use fee granter from the tx\n\tif feeGranter != nil {\n\t\tfeeGranterAddr := sdk.AccAddress(feeGranter)\n\n\t\tif cdfd.feegrantKeeper == nil {\n\t\t\treturn nil, sdkerrors.ErrInvalidRequest.Wrap(\"fee grants are not enabled\")\n\t\t}\n\n\t\tif !bytes.Equal(feeGranterAddr, feePayer) {\n\t\t\terr := cdfd.feegrantKeeper.UseGrantedFees(ctx, feeGranterAddr, feePayer, fees, msgs)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, errorsmod.Wrapf(err, \"%s does not allow to pay fees for %s\", feeGranter, feePayer)\n\t\t\t}\n\t\t}\n\n\t\treturn feeGranterAddr, nil\n\t}\n\n\t// If there is no fee grant, we deduct from the fee payer\n\treturn feePayer, nil\n}\n\n// deductFees deducts fees from the given account.\nfunc deductFees(bankKeeper types.BankKeeper, ctx sdk.Context, acc sdk.AccountI, fees sdk.Coins) error {\n\tif !fees.IsValid() {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInsufficientFee, \"invalid fee amount: %s\", fees)\n\t}\n\n\terr := bankKeeper.SendCoinsFromAccountToModule(ctx, acc.GetAddress(), types.FeeCollectorName, fees)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInsufficientFunds, err.Error())\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "app/ante/fee_test.go",
    "content": "package ante\n\nimport (\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"cosmossdk.io/math\"\n\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/testdata\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n)\n\n// createCustomDecoratorWithMockDIDKeeper creates a custom decorator with DID-based mock keeper\nfunc createCustomDecoratorWithMockDIDKeeper(t *testing.T, s *AnteTestSuite) (*CustomDeductFeeDecorator, *test.MockDIDFeegrantKeeper) {\n\tctrl := gomock.NewController(t)\n\tmockKeeper := test.NewMockDIDFeegrantKeeper(ctrl)\n\tdecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, mockKeeper, nil, nil)\n\treturn &decorator, mockKeeper\n}\n\nfunc TestCustomDeductFeeDecorator_CheckTx_ZeroGas(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(customDecorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// set zero gas\n\ts.txBuilder.SetGasLimit(0)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// set IsCheckTx to true\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err)\n\n\t// zero gas is accepted in simulation mode\n\t_, err = antehandler(s.ctx, tx, true)\n\trequire.NoError(t, err)\n}\n\nfunc TestCustomDeductFeeDecorator_CheckTx_InsufficientFee(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(customDecorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := uint64(20000)\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set insufficient fee\n\tinsufficientFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 1))\n\ts.txBuilder.SetFeeAmount(insufficientFee)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// set IsCheckTx to true\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"insufficient fee\")\n}\n\nfunc TestCustomDeductFeeDecorator_CheckTx_ValidFee(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(customDecorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := uint64(20000)\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set valid fee\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\ts.txBuilder.SetFeeAmount(validFee)\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\taccs[0].acc.GetAddress(),\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(nil).Times(1)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// set IsCheckTx to true\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err)\n}\n\nfunc TestCustomDeductFeeDecorator_DeliverTx_FeeGranter(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(customDecorator)\n\n\taccs := s.CreateTestAccounts(2)\n\tfeePayer := accs[0].acc.GetAddress()\n\tfeeGranter := accs[1].acc.GetAddress()\n\n\tmsg := testdata.NewTestMsg(feePayer)\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := uint64(20000)\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set valid fee and fee granter\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\ts.txBuilder.SetFeeGranter(feeGranter)\n\ts.txBuilder.SetFeeAmount(validFee)\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\tfeeGranter,\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(nil).Times(1)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\ts.feeGrantKeeper.EXPECT().UseGrantedFees(gomock.Any(), feeGranter, feePayer, gomock.Any(), gomock.Any()).Return(nil)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err)\n}\n\nfunc TestCustomDeductFeeDecorator_DeliverTx(t *testing.T) {\n\ts := SetupTestSuite(t, false)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcdfd := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, nil, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(cdfd)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := testdata.NewTestGasLimit()\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set valid fee\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\ts.txBuilder.SetFeeAmount(validFee)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\taccs[0].acc.GetAddress(),\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(sdkerrors.ErrInsufficientFunds).Times(1)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"Tx did not error when fee payer had insufficient funds\")\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\taccs[0].acc.GetAddress(),\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(nil).Times(1)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"Tx errored after account has been set with sufficient funds\")\n}\n\nfunc TestCustomDeductFeeDecorator_OpenDenomFees(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcdfd := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(cdfd)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := uint64(10)\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set valid uopen fee\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\ts.txBuilder.SetFeeAmount(validFee)\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\taccs[0].acc.GetAddress(),\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(nil).Times(3)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// set 20 uopen as gas price so tx with 100 fee fails (200 required)\n\tuopenPrice := sdk.NewDecCoinFromDec(appparams.MicroOpenDenom, math.LegacyNewDec(20))\n\thighGasPrice := []sdk.DecCoin{uopenPrice}\n\ts.ctx = s.ctx.WithMinGasPrices(highGasPrice)\n\n\t// set IsCheckTx to true\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"CustomDeductFeeDecorator should have errored on too low fee for local gasPrice\")\n\n\t// antehandler should not error since we do not check minGasPrice in simulation mode\n\tcacheCtx, _ := s.ctx.CacheContext()\n\t_, err = antehandler(cacheCtx, tx, true)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator should not have errored in simulation mode\")\n\n\t// set IsCheckTx to false\n\ts.ctx = s.ctx.WithIsCheckTx(false)\n\n\t// antehandler should not error since we do not check minGasPrice in DeliverTx\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator returned error in DeliverTx\")\n\n\t// set IsCheckTx back to true for testing sufficient mempool fee\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t// set 1 uopen as gas price so tx with 100 fee succeeds\n\tuopenPrice = sdk.NewDecCoinFromDec(appparams.MicroOpenDenom, math.LegacyOneDec())\n\tlowGasPrice := []sdk.DecCoin{uopenPrice}\n\ts.ctx = s.ctx.WithMinGasPrices(lowGasPrice)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator should not have errored on fee higher than local gasPrice\")\n\trequire.Equal(t, int64(0), newCtx.Priority())\n}\n\nfunc TestCustomDeductFeeDecorator_CreditDenomFees(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tcdfd := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\tantehandler := sdk.ChainAnteDecorators(cdfd)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := testdata.NewTestMsg(accs[0].acc.GetAddress())\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\tgasLimit := uint64(10)\n\ts.txBuilder.SetGasLimit(gasLimit)\n\n\t// set valid fee in ucredit\n\tvalidFee := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroCreditDenom, 100))\n\ts.txBuilder.SetFeeAmount(validFee)\n\n\ts.bankKeeper.EXPECT().SendCoinsFromAccountToModule(\n\t\tgomock.Any(),\n\t\taccs[0].acc.GetAddress(),\n\t\tauthtypes.FeeCollectorName,\n\t\tvalidFee,\n\t).Return(nil).Times(3)\n\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// set 10 ucredit as gas price so tx with 100 fee fails (10 * 10 * 10 required due to CreditFeeMultiplier)\n\tuopenPrice := sdk.NewDecCoinFromDec(appparams.MicroCreditDenom, math.LegacyNewDec(10))\n\thighGasPrice := []sdk.DecCoin{uopenPrice}\n\ts.ctx = s.ctx.WithMinGasPrices(highGasPrice)\n\n\t// set IsCheckTx to true\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"CustomDeductFeeDecorator should have errored on too low fee for local gasPrice\")\n\n\t// antehandler should not error since we do not check minGasPrice in simulation mode\n\tcacheCtx, _ := s.ctx.CacheContext()\n\t_, err = antehandler(cacheCtx, tx, true)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator should not have errored in simulation mode\")\n\n\t// set IsCheckTx to false\n\ts.ctx = s.ctx.WithIsCheckTx(false)\n\n\t// antehandler should not error since we do not check minGasPrice in DeliverTx\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator returned error in DeliverTx\")\n\n\t// set IsCheckTx back to true for testing sufficient mempool fee\n\ts.ctx = s.ctx.WithIsCheckTx(true)\n\n\t// set 1 ucredit as gas price so tx with 100 fee succeeds (1 * 10 * 10 required)\n\tuopenPrice = sdk.NewDecCoinFromDec(appparams.MicroCreditDenom, math.LegacyOneDec())\n\tlowGasPrice := []sdk.DecCoin{uopenPrice}\n\ts.ctx = s.ctx.WithMinGasPrices(lowGasPrice)\n\n\tnewCtx, err := antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"CustomDeductFeeDecorator should not have errored on fee higher than local gasPrice\")\n\trequire.Equal(t, int64(0), newCtx.Priority())\n}\n\nfunc TestCustomDeductFeeDecorator_HandleFeegrant_WithDID(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\n\t// Create decorator with mock DID keeper\n\tcustomDecorator, mockFeegrantKeeper := createCustomDecoratorWithMockDIDKeeper(t, s)\n\n\taccs := s.CreateTestAccounts(2)\n\tgranter := accs[0].acc.GetAddress()\n\tfeePayer := accs[1].acc.GetAddress()\n\tfees := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\tmsgs := []sdk.Msg{testdata.NewTestMsg(feePayer)}\n\ttestDID := \"did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH\"\n\n\t// Set DID in context to simulate extraction from JWS extension\n\tctx := s.ctx.WithValue(appparams.ExtractedDIDContextKey, testDID)\n\n\t// Verify DID was properly set in context\n\textractedDID := getExtractedDIDFromContext(ctx)\n\trequire.Equal(t, testDID, extractedDID, \"DID should be properly set in context\")\n\n\t// Expect DID-based feegrant to be called\n\tmockFeegrantKeeper.EXPECT().UseFirstAvailableDIDGrant(ctx, testDID, fees, msgs).Return(granter, nil)\n\n\tdeductFrom, err := customDecorator.handleFeegrant(ctx, granter.Bytes(), feePayer, fees, msgs)\n\trequire.NoError(t, err, \"handleFeegrant should succeed with DID-based feegrant\")\n\trequire.Equal(t, granter, deductFrom, \"should return the granter address from UseFirstAvailableDIDGrant\")\n}\n\nfunc TestCustomDeductFeeDecorator_HandleFeegrant_WithoutDID(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\n\taccs := s.CreateTestAccounts(2)\n\tgranter := accs[0].acc.GetAddress()\n\tfeePayer := accs[1].acc.GetAddress()\n\tfees := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\tmsgs := []sdk.Msg{testdata.NewTestMsg(feePayer)}\n\n\t// No DID in context - should use standard feegrant\n\tctx := s.ctx\n\n\t// Expect standard feegrant to be called\n\ts.feeGrantKeeper.EXPECT().UseGrantedFees(ctx, granter, feePayer, fees, msgs).Return(nil)\n\n\tdeductFrom, err := customDecorator.handleFeegrant(ctx, granter.Bytes(), feePayer, fees, msgs)\n\trequire.NoError(t, err, \"handleFeegrant should succeed with standard feegrant\")\n\trequire.Equal(t, granter, deductFrom, \"should return the granter address\")\n}\n\nfunc TestCustomDeductFeeDecorator_HandleFeegrant_DIDBasedFallback(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\n\t// Create decorator with mock DID keeper\n\tcustomDecorator, mockFeegrantKeeper := createCustomDecoratorWithMockDIDKeeper(t, s)\n\n\taccs := s.CreateTestAccounts(2)\n\tfeePayer := accs[1].acc.GetAddress()\n\tfees := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\tmsgs := []sdk.Msg{testdata.NewTestMsg(feePayer)}\n\ttestDID := \"did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH\"\n\n\t// Set DID in context\n\tctx := s.ctx.WithValue(appparams.ExtractedDIDContextKey, testDID)\n\n\t// When DID-based feegrant fails (e.g., no grant found), it should fall back to feePayer\n\texpectedErr := sdkerrors.ErrNotFound.Wrap(\"no usable fee-grant found for DID\")\n\tmockFeegrantKeeper.EXPECT().UseFirstAvailableDIDGrant(ctx, testDID, fees, msgs).Return(nil, expectedErr)\n\n\tdeductFrom, err := customDecorator.handleFeegrant(ctx, nil, feePayer, fees, msgs)\n\trequire.NoError(t, err, \"handleFeegrant should fall back to feePayer when DID grant not found\")\n\trequire.Equal(t, feePayer, deductFrom, \"should return feePayer when DID grant fails and no feeGranter specified\")\n}\n\nfunc TestCustomDeductFeeDecorator_HandleFeegrant_StandardError(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\n\tcustomDecorator := NewCustomDeductFeeDecorator(s.accountKeeper, s.bankKeeper, s.feeGrantKeeper, nil, nil)\n\n\taccs := s.CreateTestAccounts(2)\n\tgranter := accs[0].acc.GetAddress()\n\tfeePayer := accs[1].acc.GetAddress()\n\tfees := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 100))\n\tmsgs := []sdk.Msg{testdata.NewTestMsg(feePayer)}\n\n\t// No DID in context\n\tctx := s.ctx\n\n\t// Expect standard feegrant to return error\n\texpectedErr := sdkerrors.ErrUnauthorized.Wrap(\"fee allowance not found\")\n\ts.feeGrantKeeper.EXPECT().UseGrantedFees(ctx, granter, feePayer, fees, msgs).Return(expectedErr)\n\n\t_, err := customDecorator.handleFeegrant(ctx, granter.Bytes(), feePayer, fees, msgs)\n\trequire.Error(t, err, \"handleFeegrant should return error from standard feegrant\")\n\trequire.Contains(t, err.Error(), \"fee allowance not found\")\n}\n"
  },
  {
    "path": "app/ante/panic.go",
    "content": "package ante\n\nimport (\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// HandlePanicDecorator catches and wraps panics in the transaction that caused them.\ntype HandlePanicDecorator struct{}\n\nfunc NewHandlePanicDecorator() HandlePanicDecorator {\n\treturn HandlePanicDecorator{}\n}\n\nfunc (d HandlePanicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tpanic(fmt.Sprint(r, FormatTx(tx)))\n\t\t}\n\t}()\n\n\treturn next(ctx, tx, simulate)\n}\n\nfunc FormatTx(tx sdk.Tx) string {\n\toutput := \"\\ntransaction failed:\\n\"\n\tfor _, msg := range tx.GetMsgs() {\n\t\toutput += fmt.Sprintf(\"%T{%s}\\n\", msg, msg)\n\t}\n\n\treturn output\n}\n"
  },
  {
    "path": "app/ante/panic_test.go",
    "content": "package ante_test\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/app/ante\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype mockPanicDecorator struct{}\n\nfunc (d mockPanicDecorator) AnteHandle(_ sdk.Context, _ sdk.Tx, _ bool, _ sdk.AnteHandler) (newCtx sdk.Context, err error) {\n\tpanic(\"panic\")\n}\n\nfunc TestPanicHandlerDecorator(t *testing.T) {\n\tdecorator := ante.NewHandlePanicDecorator()\n\tanteHandler := sdk.ChainAnteDecorators(decorator, mockPanicDecorator{})\n\tencCfg := test.CreateTestEncodingConfig()\n\tbuilder := encCfg.TxConfig.NewTxBuilder()\n\n\terr := builder.SetMsgs(banktypes.NewMsgSend(sample.RandomAccAddress(), sample.RandomAccAddress(), sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 100))))\n\trequire.NoError(t, err)\n\ttx := builder.GetTx()\n\n\tdefer func() {\n\t\tr := recover()\n\t\trequire.NotNil(t, r)\n\t\trequire.Equal(t, fmt.Sprint(\"panic\", ante.FormatTx(tx)), r)\n\t}()\n\n\t_, _ = anteHandler(sdk.Context{}, tx, false)\n}\n"
  },
  {
    "path": "app/ante/reject_legacy.go",
    "content": "package ante\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\tauthsigning \"github.com/cosmos/cosmos-sdk/x/auth/signing\"\n)\n\n// RejectLegacyTxDecorator rejects transactions signed with SIGN_MODE_LEGACY_AMINO_JSON.\n// Legacy transactions do not support extension options, which means the extension options\n// part of the transaction is not signed. This creates a potential security vulnerability\n// where extension options could be modified without invalidating the signature.\ntype RejectLegacyTxDecorator struct{}\n\n// NewRejectLegacyTxDecorator creates a new RejectLegacyTxDecorator.\nfunc NewRejectLegacyTxDecorator() RejectLegacyTxDecorator {\n\treturn RejectLegacyTxDecorator{}\n}\n\n// AnteHandle rejects transactions that use SIGN_MODE_LEGACY_AMINO_JSON.\nfunc (rltd RejectLegacyTxDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) {\n\tsigTx, ok := tx.(authsigning.SigVerifiableTx)\n\tif !ok {\n\t\treturn ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, \"invalid transaction type\")\n\t}\n\n\tsigs, err := sigTx.GetSignaturesV2()\n\tif err != nil {\n\t\treturn ctx, err\n\t}\n\n\t// Check all signatures for legacy amino sign mode\n\tfor i, sig := range sigs {\n\t\tif hasLegacyAminoSignMode(sig.Data) {\n\t\t\treturn ctx, errorsmod.Wrapf(\n\t\t\t\tsdkerrors.ErrInvalidRequest,\n\t\t\t\t\"signature %d uses SIGN_MODE_LEGACY_AMINO_JSON which is not supported due to security concerns (extension options are not signed)\",\n\t\t\t\ti,\n\t\t\t)\n\t\t}\n\t}\n\n\treturn next(ctx, tx, simulate)\n}\n\n// hasLegacyAminoSignMode recursively checks if any signature uses SIGN_MODE_LEGACY_AMINO_JSON.\nfunc hasLegacyAminoSignMode(sigData signing.SignatureData) bool {\n\tswitch data := sigData.(type) {\n\tcase *signing.SingleSignatureData:\n\t\treturn data.SignMode == signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON\n\tcase *signing.MultiSignatureData:\n\t\tfor _, sig := range data.Signatures {\n\t\t\tif hasLegacyAminoSignMode(sig) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\tdefault:\n\t\treturn false\n\t}\n}\n"
  },
  {
    "path": "app/ante/reject_legacy_test.go",
    "content": "package ante\n\nimport (\n\t\"testing\"\n\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\t\"github.com/stretchr/testify/require\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestRejectLegacyTxDecorator_RejectsLegacyAmino(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewRejectLegacyTxDecorator()\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create transaction with SIGN_MODE_LEGACY_AMINO_JSON\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON)\n\trequire.NoError(t, err)\n\n\t// The decorator should reject the transaction\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"RejectLegacyTxDecorator should reject transactions with SIGN_MODE_LEGACY_AMINO_JSON\")\n\trequire.Contains(t, err.Error(), \"SIGN_MODE_LEGACY_AMINO_JSON\")\n\trequire.Contains(t, err.Error(), \"not supported\")\n}\n\nfunc TestRejectLegacyTxDecorator_AllowsDirectSignMode(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewRejectLegacyTxDecorator()\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(1)\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg))\n\n\t// Create transaction with SIGN_MODE_DIRECT\n\tprivs, accNums, accSeqs := []cryptotypes.PrivKey{accs[0].priv}, []uint64{0}, []uint64{0}\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_DIRECT)\n\trequire.NoError(t, err)\n\n\t// The decorator should allow the transaction\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.NoError(t, err, \"RejectLegacyTxDecorator should allow transactions with SIGN_MODE_DIRECT\")\n}\n\nfunc TestRejectLegacyTxDecorator_MultipleSigners(t *testing.T) {\n\ts := SetupTestSuite(t, true)\n\ts.txBuilder = s.clientCtx.TxConfig.NewTxBuilder()\n\n\tdecorator := NewRejectLegacyTxDecorator()\n\tantehandler := sdk.ChainAnteDecorators(decorator)\n\n\taccs := s.CreateTestAccounts(2)\n\n\tmsg1 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[0].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy 1\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tmsg2 := &acptypes.MsgCreatePolicy{\n\t\tCreator:     accs[1].acc.GetAddress().String(),\n\t\tPolicy:      \"name: test policy 2\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\trequire.NoError(t, s.txBuilder.SetMsgs(msg1, msg2))\n\n\t// Create transaction with multiple signers, one using legacy amino\n\tprivs := []cryptotypes.PrivKey{accs[0].priv, accs[1].priv}\n\taccNums := []uint64{0, 1}\n\taccSeqs := []uint64{0, 0}\n\n\ttx, err := s.CreateTestTx(s.ctx, privs, accNums, accSeqs, s.ctx.ChainID(), signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON)\n\trequire.NoError(t, err)\n\n\t// The decorator should reject the transaction\n\t_, err = antehandler(s.ctx, tx, false)\n\trequire.Error(t, err, \"RejectLegacyTxDecorator should reject transactions where any signer uses SIGN_MODE_LEGACY_AMINO_JSON\")\n\trequire.Contains(t, err.Error(), \"SIGN_MODE_LEGACY_AMINO_JSON\")\n}\n"
  },
  {
    "path": "app/ante/testutil_test.go",
    "content": "package ante\n\nimport (\n\t\"testing\"\n\n\t_ \"cosmossdk.io/api/cosmos/bank/v1beta1\"\n\t_ \"cosmossdk.io/api/cosmos/crypto/secp256k1\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tabci \"github.com/cometbft/cometbft/abci/types\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tclitestutil \"github.com/cosmos/cosmos-sdk/testutil/cli\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/testdata\"\n\t_ \"github.com/cosmos/cosmos-sdk/testutil/testdata/testpb\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/ante\"\n\tantetestutil \"github.com/cosmos/cosmos-sdk/x/auth/ante/testutil\"\n\tauthcodec \"github.com/cosmos/cosmos-sdk/x/auth/codec\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\txauthsigning \"github.com/cosmos/cosmos-sdk/x/auth/signing\"\n\tauthtestutil \"github.com/cosmos/cosmos-sdk/x/auth/testutil\"\n\ttxtestutil \"github.com/cosmos/cosmos-sdk/x/auth/tx/testutil\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"github.com/golang/mock/gomock\"\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n\thubtypes \"github.com/sourcenetwork/sourcehub/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// TestAccount represents a test account used in app/ante/fee_test.\ntype TestAccount struct {\n\tacc  sdk.AccountI\n\tpriv cryptotypes.PrivKey\n}\n\n// AnteTestSuite is a test suite that is used with ante handler tests.\ntype AnteTestSuite struct {\n\tanteHandler    sdk.AnteHandler\n\tctx            sdk.Context\n\tclientCtx      client.Context\n\ttxBuilder      client.TxBuilder\n\taccountKeeper  keeper.AccountKeeper\n\tbankKeeper     *authtestutil.MockBankKeeper\n\ttxBankKeeper   *txtestutil.MockBankKeeper\n\tfeeGrantKeeper *antetestutil.MockFeegrantKeeper\n\tencCfg         test.EncodingConfig\n\tauthStoreKey   storetypes.StoreKey\n}\n\n// SetupTest inits a new test, with new app, context, and anteHandler.\nfunc SetupTestSuite(t *testing.T, isCheckTx bool) *AnteTestSuite {\n\tsdkConfig := sdk.GetConfig()\n\tsdkConfig.SetBech32PrefixForAccount(\"source\", \"sourcepub\")\n\tsdkConfig.SetBech32PrefixForValidator(\"sourcevaloper\", \"sourcevaloperpub\")\n\tsdkConfig.SetBech32PrefixForConsensusNode(\"sourcevalcons\", \"sourcevalconspub\")\n\n\tsuite := &AnteTestSuite{}\n\tctrl := gomock.NewController(t)\n\tsuite.bankKeeper = authtestutil.NewMockBankKeeper(ctrl)\n\tsuite.txBankKeeper = txtestutil.NewMockBankKeeper(ctrl)\n\tsuite.feeGrantKeeper = antetestutil.NewMockFeegrantKeeper(ctrl)\n\n\tkey := storetypes.NewKVStoreKey(types.StoreKey)\n\tsuite.authStoreKey = key\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tsuite.ctx = testCtx.Ctx.WithIsCheckTx(isCheckTx).WithBlockHeight(1)\n\tsuite.encCfg = test.CreateTestEncodingConfig()\n\n\tmaccPerms := map[string][]string{\n\t\t\"fee_collector\":          nil,\n\t\t\"mint\":                   {\"minter\"},\n\t\t\"bonded_tokens_pool\":     {\"burner\", \"staking\"},\n\t\t\"not_bonded_tokens_pool\": {\"burner\", \"staking\"},\n\t\t\"multiPerm\":              {\"burner\", \"minter\", \"staking\"},\n\t\t\"random\":                 {\"random\"},\n\t}\n\n\tsuite.accountKeeper = keeper.NewAccountKeeper(\n\t\tsuite.encCfg.Codec,\n\t\truntime.NewKVStoreService(key),\n\t\ttypes.ProtoBaseAccount,\n\t\tmaccPerms,\n\t\tauthcodec.NewBech32Codec(hubtypes.AccountAddrPrefix),\n\t\thubtypes.AccountAddrPrefix,\n\t\ttypes.NewModuleAddress(\"gov\").String(),\n\t)\n\tsuite.accountKeeper.GetModuleAccount(suite.ctx, types.FeeCollectorName)\n\terr := suite.accountKeeper.Params.Set(suite.ctx, types.DefaultParams())\n\trequire.NoError(t, err)\n\n\tsuite.encCfg.Amino.RegisterConcrete(&testdata.TestMsg{}, \"testdata.TestMsg\", nil)\n\ttestdata.RegisterInterfaces(suite.encCfg.InterfaceRegistry)\n\n\t// Register ante interfaces for extension options\n\tantetypes.RegisterInterfaces(suite.encCfg.InterfaceRegistry)\n\n\tsuite.clientCtx = client.Context{}.\n\t\tWithTxConfig(suite.encCfg.TxConfig).\n\t\tWithClient(clitestutil.NewMockCometRPC(abci.ResponseQuery{}))\n\n\tanteHandler, err := ante.NewAnteHandler(\n\t\tante.HandlerOptions{\n\t\t\tAccountKeeper:   suite.accountKeeper,\n\t\t\tBankKeeper:      suite.bankKeeper,\n\t\t\tFeegrantKeeper:  suite.feeGrantKeeper,\n\t\t\tSignModeHandler: suite.encCfg.TxConfig.SignModeHandler(),\n\t\t\tSigGasConsumer:  ante.DefaultSigVerificationGasConsumer,\n\t\t},\n\t)\n\n\trequire.NoError(t, err)\n\tsuite.anteHandler = anteHandler\n\n\tsuite.txBuilder = suite.clientCtx.TxConfig.NewTxBuilder()\n\n\treturn suite\n}\n\n// CreateTestAccounts is a helper function to create test accounts.\nfunc (suite *AnteTestSuite) CreateTestAccounts(numAccs int) []TestAccount {\n\tvar accounts []TestAccount\n\n\tfor i := 0; i < numAccs; i++ {\n\t\tpriv, _, addr := testdata.KeyTestPubAddr()\n\t\tacc := suite.accountKeeper.NewAccountWithAddress(suite.ctx, addr)\n\t\tacc.SetAccountNumber(uint64(i + 1000))\n\t\tsuite.accountKeeper.SetAccount(suite.ctx, acc)\n\t\taccounts = append(accounts, TestAccount{acc, priv})\n\t}\n\n\treturn accounts\n}\n\n// CreateTestTx is a helper function to create a tx for multiple inputs.\nfunc (suite *AnteTestSuite) CreateTestTx(\n\tctx sdk.Context,\n\tprivs []cryptotypes.PrivKey,\n\taccNums, accSeqs []uint64,\n\tchainID string,\n\tsignMode signing.SignMode,\n) (xauthsigning.Tx, error) {\n\t// First round: we gather all the signer infos using the \"set empty signature\" hack\n\tvar sigsV2 []signing.SignatureV2\n\tfor i, priv := range privs {\n\t\tsigV2 := signing.SignatureV2{\n\t\t\tPubKey: priv.PubKey(),\n\t\t\tData: &signing.SingleSignatureData{\n\t\t\t\tSignMode:  signMode,\n\t\t\t\tSignature: nil,\n\t\t\t},\n\t\t\tSequence: accSeqs[i],\n\t\t}\n\n\t\tsigsV2 = append(sigsV2, sigV2)\n\t}\n\terr := suite.txBuilder.SetSignatures(sigsV2...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Second round: all signer infos are set, so each signer can sign\n\tsigsV2 = []signing.SignatureV2{}\n\tfor i, priv := range privs {\n\t\tsignerData := xauthsigning.SignerData{\n\t\t\tAddress:       sdk.AccAddress(priv.PubKey().Address()).String(),\n\t\t\tChainID:       chainID,\n\t\t\tAccountNumber: accNums[i],\n\t\t\tSequence:      accSeqs[i],\n\t\t\tPubKey:        priv.PubKey(),\n\t\t}\n\t\tsigV2, err := tx.SignWithPrivKey(\n\t\t\tctx, signMode, signerData,\n\t\t\tsuite.txBuilder, priv, suite.clientCtx.TxConfig, accSeqs[i])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tsigsV2 = append(sigsV2, sigV2)\n\t}\n\terr = suite.txBuilder.SetSignatures(sigsV2...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn suite.txBuilder.GetTx(), nil\n}\n"
  },
  {
    "path": "app/ante/types/bearer_token.go",
    "content": "package types\n\nimport \"time\"\n\n// JWT claim constants\nconst (\n\tIssuedAtClaim          = \"iat\"\n\tExpiresClaim           = \"exp\"\n\tIssuerClaim            = \"iss\"\n\tAuthorizedAccountClaim = \"authorized_account\"\n)\n\n// DefaultExpirationTime is the default expiration time for bearer tokens\nconst DefaultExpirationTime = time.Minute * 10\n\n// BearerToken contains the structured fields included in the JWS Bearer Token.\n// This type is used for DID-based authorization via JWS extension options.\ntype BearerToken struct {\n\t// IssuerID is the Actor ID (DID) for the Token signer\n\tIssuerID string `json:\"iss,omitempty\"`\n\t// ProviderToken contains provider information (provider name, user id, etc.) as a JWT string\n\tProviderToken string `json:\"provider_token,omitempty\"`\n\t// AuthorizedAccount is the SourceHub account address which is allowed to use this token\n\tAuthorizedAccount string `json:\"authorized_account,omitempty\"`\n\t// IssuedTime is the timestamp at which the token was generated\n\tIssuedTime int64 `json:\"iat,omitempty\"`\n\t// ExpirationTime is the timestamp at which the token will expire\n\tExpirationTime int64 `json:\"exp,omitempty\"`\n}\n\n// ProviderToken represents an authentication provider token.\ntype ProviderToken struct {\n\t// ProviderName is the name of the authentication provider (e.g., \"google\", \"github\")\n\tProviderName string `json:\"provider_name,omitempty\"`\n\t// UserID is the unique user identifier from the provider\n\tUserID string `json:\"user_id,omitempty\"`\n\t// ActorDID is the actor/user DID derived from userID hash\n\tActorDID string `json:\"actor_did,omitempty\"`\n}\n\n// RequiredClaims returns the list of required claims for JWS payload validation\nfunc RequiredClaims() []string {\n\treturn []string{\n\t\tIssuedAtClaim,\n\t\tIssuerClaim,\n\t\t// AuthorizedAccountClaim, // Authorized account claim is no longer required\n\t\tExpiresClaim,\n\t}\n}\n"
  },
  {
    "path": "app/ante/types/codec.go",
    "content": "package types\n\nimport (\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\ttx \"github.com/cosmos/cosmos-sdk/types/tx\"\n)\n\nfunc (m *JWSExtensionOption) IsExtensionOption() {}\n\nfunc RegisterInterfaces(registry codectypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations(\n\t\t(*tx.TxExtensionOptionI)(nil),\n\t\t&JWSExtensionOption{},\n\t)\n}\n"
  },
  {
    "path": "app/ante/types/jws_extension.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/ante/jws_extension.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// JWSExtensionOption represents a transaction extension option with a bearer token.\n// The bearer token is a JWS containing issuer DID, authorized account, issued at, and expiration time claims.\ntype JWSExtensionOption struct {\n\tBearerToken string `protobuf:\"bytes,1,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\" yaml:\"bearer_token\"`\n}\n\nfunc (m *JWSExtensionOption) Reset()         { *m = JWSExtensionOption{} }\nfunc (m *JWSExtensionOption) String() string { return proto.CompactTextString(m) }\nfunc (*JWSExtensionOption) ProtoMessage()    {}\nfunc (*JWSExtensionOption) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_6097667ae1d3a21d, []int{0}\n}\nfunc (m *JWSExtensionOption) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *JWSExtensionOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_JWSExtensionOption.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *JWSExtensionOption) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_JWSExtensionOption.Merge(m, src)\n}\nfunc (m *JWSExtensionOption) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *JWSExtensionOption) XXX_DiscardUnknown() {\n\txxx_messageInfo_JWSExtensionOption.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_JWSExtensionOption proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*JWSExtensionOption)(nil), \"sourcehub.ante.JWSExtensionOption\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/ante/jws_extension.proto\", fileDescriptor_6097667ae1d3a21d)\n}\n\nvar fileDescriptor_6097667ae1d3a21d = []byte{\n\t// 216 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2a, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0xcc, 0x2b, 0x49, 0xd5, 0xcf, 0x2a, 0x2f, 0x8e, 0x4f,\n\t0xad, 0x28, 0x49, 0xcd, 0x2b, 0xce, 0xcc, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,\n\t0x83, 0xab, 0xd1, 0x03, 0xa9, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x4b, 0xe9, 0x83, 0x58,\n\t0x10, 0x55, 0x4a, 0x51, 0x5c, 0x42, 0x5e, 0xe1, 0xc1, 0xae, 0x30, 0xbd, 0xfe, 0x05, 0x25, 0x99,\n\t0xf9, 0x79, 0x42, 0x56, 0x5c, 0x3c, 0x49, 0xa9, 0x89, 0x45, 0xa9, 0x45, 0xf1, 0x25, 0xf9, 0xd9,\n\t0xa9, 0x79, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x4e, 0xe2, 0x9f, 0xee, 0xc9, 0x0b, 0x57, 0x26,\n\t0xe6, 0xe6, 0x58, 0x29, 0x21, 0xcb, 0x2a, 0x05, 0x71, 0x43, 0xb8, 0x21, 0x20, 0x9e, 0x15, 0x47,\n\t0xc7, 0x02, 0x79, 0x86, 0x17, 0x0b, 0xe4, 0x19, 0x9c, 0xbc, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0,\n\t0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8,\n\t0xf1, 0x58, 0x8e, 0x21, 0xca, 0x30, 0x3d, 0xb3, 0x04, 0xe4, 0xb0, 0xe4, 0xfc, 0x5c, 0x7d, 0x88,\n\t0x33, 0xf3, 0x52, 0x4b, 0xca, 0xf3, 0x8b, 0xb2, 0xf5, 0x91, 0x3c, 0x56, 0x50, 0x00, 0xf1, 0x5c,\n\t0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xbd, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff,\n\t0xa1, 0x4d, 0xbc, 0xff, 0xfb, 0x00, 0x00, 0x00,\n}\n\nfunc (m *JWSExtensionOption) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *JWSExtensionOption) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *JWSExtensionOption) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.BearerToken) > 0 {\n\t\ti -= len(m.BearerToken)\n\t\tcopy(dAtA[i:], m.BearerToken)\n\t\ti = encodeVarintJwsExtension(dAtA, i, uint64(len(m.BearerToken)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintJwsExtension(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovJwsExtension(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *JWSExtensionOption) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.BearerToken)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsExtension(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovJwsExtension(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozJwsExtension(x uint64) (n int) {\n\treturn sovJwsExtension(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *JWSExtensionOption) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowJwsExtension\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: JWSExtensionOption: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: JWSExtensionOption: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsExtension\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsExtension\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsExtension\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipJwsExtension(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsExtension\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipJwsExtension(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowJwsExtension\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowJwsExtension\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowJwsExtension\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthJwsExtension\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupJwsExtension\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthJwsExtension\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthJwsExtension        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowJwsExtension          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupJwsExtension = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "app/app.go",
    "content": "package app\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"time\"\n\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcircuitkeeper \"cosmossdk.io/x/circuit/keeper\"\n\tevidencekeeper \"cosmossdk.io/x/evidence/keeper\"\n\tupgradekeeper \"cosmossdk.io/x/upgrade/keeper\"\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\t\"github.com/cosmos/cosmos-sdk/server/api\"\n\t\"github.com/cosmos/cosmos-sdk/server/config\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\ttestdata_pulsar \"github.com/cosmos/cosmos-sdk/testutil/testdata/testpb\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\tauthsims \"github.com/cosmos/cosmos-sdk/x/auth/simulation\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tauthzkeeper \"github.com/cosmos/cosmos-sdk/x/authz/keeper\"\n\tbankkeeper \"github.com/cosmos/cosmos-sdk/x/bank/keeper\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tconsensuskeeper \"github.com/cosmos/cosmos-sdk/x/consensus/keeper\"\n\tcrisiskeeper \"github.com/cosmos/cosmos-sdk/x/crisis/keeper\"\n\tcrisistypes \"github.com/cosmos/cosmos-sdk/x/crisis/types\"\n\tdistrkeeper \"github.com/cosmos/cosmos-sdk/x/distribution/keeper\"\n\t\"github.com/cosmos/cosmos-sdk/x/genutil\"\n\tgenutiltypes \"github.com/cosmos/cosmos-sdk/x/genutil/types\"\n\tgovkeeper \"github.com/cosmos/cosmos-sdk/x/gov/keeper\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tgroupkeeper \"github.com/cosmos/cosmos-sdk/x/group/keeper\"\n\tmintkeeper \"github.com/cosmos/cosmos-sdk/x/mint/keeper\"\n\tparamskeeper \"github.com/cosmos/cosmos-sdk/x/params/keeper\"\n\tparamstypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n\tslashingkeeper \"github.com/cosmos/cosmos-sdk/x/slashing/keeper\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t_ \"github.com/cosmos/ibc-go/modules/capability\" // import for side-effects\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\ticacontrollerkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/keeper\"\n\ticahostkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper\"\n\tibctransferkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper\"\n\tibckeeper \"github.com/cosmos/ibc-go/v10/modules/core/keeper\"\n\tabci \"github.com/skip-mev/block-sdk/v2/abci\"\n\t\"github.com/skip-mev/block-sdk/v2/block\"\n\t\"github.com/skip-mev/block-sdk/v2/block/base\"\n\n\t\"github.com/sourcenetwork/sourcehub/app/ante\"\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\toverrides \"github.com/sourcenetwork/sourcehub/app/overrides\"\n\tsourcehubtypes \"github.com/sourcenetwork/sourcehub/types\"\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\tbulletinkeeper \"github.com/sourcenetwork/sourcehub/x/bulletin/keeper\"\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\tepochskeeper \"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\tfeegrantkeeper \"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\thubkeeper \"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/docs\"\n)\n\nconst (\n\tAccountAddressPrefix = sourcehubtypes.AccountAddrPrefix\n\tName                 = \"sourcehub\"\n)\n\nvar (\n\t// DefaultNodeHome default home directories for the application daemon\n\tDefaultNodeHome string\n)\n\nvar (\n\t_ runtime.AppI            = (*App)(nil)\n\t_ servertypes.Application = (*App)(nil)\n)\n\n// App extends an ABCI application, but with most of its parameters exported.\n// They are exported for convenience in creating helper functions, as object\n// capabilities aren't needed for testing.\ntype App struct {\n\t*runtime.App\n\tlegacyAmino       *codec.LegacyAmino\n\tappCodec          codec.Codec\n\ttxConfig          client.TxConfig\n\tinterfaceRegistry codectypes.InterfaceRegistry\n\n\tappOpts servertypes.AppOptions\n\n\t// keepers\n\tAccountKeeper         authkeeper.AccountKeeper\n\tBankKeeper            bankkeeper.Keeper\n\tStakingKeeper         *stakingkeeper.Keeper\n\tSlashingKeeper        slashingkeeper.Keeper\n\tMintKeeper            mintkeeper.Keeper\n\tDistrKeeper           distrkeeper.Keeper\n\tGovKeeper             *govkeeper.Keeper\n\tCrisisKeeper          *crisiskeeper.Keeper\n\tUpgradeKeeper         *upgradekeeper.Keeper\n\tParamsKeeper          paramskeeper.Keeper\n\tAuthzKeeper           authzkeeper.Keeper\n\tEvidenceKeeper        evidencekeeper.Keeper\n\tFeeGrantKeeper        feegrantkeeper.Keeper\n\tGroupKeeper           groupkeeper.Keeper\n\tConsensusParamsKeeper consensuskeeper.Keeper\n\tCircuitBreakerKeeper  circuitkeeper.Keeper\n\tCapabilityKeeper      *capabilitykeeper.Keeper\n\n\t// IBC\n\tIBCKeeper           *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouterV2 on it correctly\n\tICAControllerKeeper icacontrollerkeeper.Keeper\n\tICAHostKeeper       icahostkeeper.Keeper\n\tTransferKeeper      ibctransferkeeper.Keeper\n\n\tHubKeeper      *hubkeeper.Keeper\n\tAcpKeeper      *acpkeeper.Keeper\n\tBulletinKeeper *bulletinkeeper.Keeper\n\tEpochsKeeper   *epochskeeper.Keeper\n\tTierKeeper     *tierkeeper.Keeper\n\n\t// simulation manager\n\tsm *module.SimulationManager\n}\n\nfunc init() {\n\tuserHomeDir, err := os.UserHomeDir()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tDefaultNodeHome = filepath.Join(userHomeDir, \".\"+Name)\n}\n\n// AppConfig returns the default app config.\nfunc AppConfig() depinject.Config {\n\treturn depinject.Configs(\n\t\tappConfig,\n\t\tdepinject.Supply(\n\t\t\t// Supply custom module basics\n\t\t\tmap[string]module.AppModuleBasic{\n\t\t\t\tgenutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),\n\t\t\t\tbanktypes.ModuleName:    overrides.BankModuleBasic{},\n\t\t\t\tcrisistypes.ModuleName:  overrides.CrisisModuleBasic{},\n\t\t\t\tgovtypes.ModuleName:     overrides.NewGovModuleBasic(),\n\t\t\t\tstakingtypes.ModuleName: overrides.StakingModuleBasic{},\n\t\t\t\tepochstypes.ModuleName:  overrides.EpochsModuleBasic{},\n\t\t\t\ttiertypes.ModuleName:    overrides.TierModuleBasic{},\n\t\t\t},\n\t\t),\n\t)\n}\n\n// New returns a reference to an initialized App.\nfunc New(\n\tlogger log.Logger,\n\tdb dbm.DB,\n\ttraceStore io.Writer,\n\tloadLatest bool,\n\tappOpts servertypes.AppOptions,\n\tbaseAppOptions ...func(*baseapp.BaseApp),\n) (*App, error) {\n\tvar (\n\t\tapp        = &App{appOpts: appOpts}\n\t\tappBuilder *runtime.AppBuilder\n\n\t\t// merge the AppConfig and other configuration in one config\n\t\tappConfig = depinject.Configs(\n\t\t\tAppConfig(),\n\t\t\tdepinject.Supply(\n\t\t\t\t// Supply the application options\n\t\t\t\tappOpts,\n\t\t\t\t// Supply with IBC keeper getter for the IBC modules with App Wiring.\n\t\t\t\t// The IBC Keeper cannot be passed because it has not been initiated yet.\n\t\t\t\t// Passing the getter, the app IBC Keeper will always be accessible.\n\t\t\t\t// This needs to be removed after IBC supports App Wiring.\n\t\t\t\tapp.GetIBCKeeper,\n\t\t\t\tapp.GetCapabilityScopedKeeper,\n\t\t\t\t// Supply the logger\n\t\t\t\tlogger,\n\n\t\t\t\t// ADVANCED CONFIGURATION\n\t\t\t\t//\n\t\t\t\t// AUTH\n\t\t\t\t//\n\t\t\t\t// For providing a custom function required in auth to generate custom account types\n\t\t\t\t// add it below. By default the auth module uses simulation.RandomGenesisAccounts.\n\t\t\t\t//\n\t\t\t\t// authtypes.RandomGenesisAccountsFn(simulation.RandomGenesisAccounts),\n\t\t\t\t//\n\t\t\t\t// For providing a custom a base account type add it below.\n\t\t\t\t// By default the auth module uses authtypes.ProtoBaseAccount().\n\t\t\t\t//\n\t\t\t\t// func() sdk.AccountI { return authtypes.ProtoBaseAccount() },\n\t\t\t\t//\n\t\t\t\t// For providing a different address codec, add it below.\n\t\t\t\t// By default the auth module uses a Bech32 address codec,\n\t\t\t\t// with the prefix defined in the auth module configuration.\n\t\t\t\t//\n\t\t\t\t// func() address.Codec { return <- custom address codec type -> }\n\n\t\t\t\t//\n\t\t\t\t// STAKING\n\t\t\t\t//\n\t\t\t\t// For provinding a different validator and consensus address codec, add it below.\n\t\t\t\t// By default the staking module uses the bech32 prefix provided in the auth config,\n\t\t\t\t// and appends \"valoper\" and \"valcons\" for validator and consensus addresses respectively.\n\t\t\t\t// When providing a custom address codec in auth, custom address codecs must be provided here as well.\n\t\t\t\t//\n\t\t\t\t// func() runtime.ValidatorAddressCodec { return <- custom validator address codec type -> }\n\t\t\t\t// func() runtime.ConsensusAddressCodec { return <- custom consensus address codec type -> }\n\n\t\t\t\t//\n\t\t\t\t// MINT\n\t\t\t\t//\n\n\t\t\t\t// For providing a custom inflation function for x/mint add here your\n\t\t\t\t// custom function that implements the minttypes.InflationCalculationFn\n\t\t\t\t// interface.\n\t\t\t),\n\t\t)\n\t)\n\n\tif err := depinject.Inject(appConfig,\n\t\t&appBuilder,\n\t\t&app.appCodec,\n\t\t&app.legacyAmino,\n\t\t&app.txConfig,\n\t\t&app.interfaceRegistry,\n\t\t&app.AccountKeeper,\n\t\t&app.BankKeeper,\n\t\t&app.StakingKeeper,\n\t\t&app.SlashingKeeper,\n\t\t&app.DistrKeeper,\n\t\t&app.GovKeeper,\n\t\t&app.CrisisKeeper,\n\t\t&app.UpgradeKeeper,\n\t\t&app.ParamsKeeper,\n\t\t&app.AuthzKeeper,\n\t\t&app.EvidenceKeeper,\n\t\t&app.FeeGrantKeeper,\n\t\t&app.GroupKeeper,\n\t\t&app.ConsensusParamsKeeper,\n\t\t&app.CircuitBreakerKeeper,\n\t\t&app.HubKeeper,\n\t\t&app.AcpKeeper,\n\t\t&app.BulletinKeeper,\n\t\t&app.EpochsKeeper,\n\t\t&app.TierKeeper,\n\t); err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Below we could construct and set an application specific mempool and\n\t// ABCI 1.0 PrepareProposal and ProcessProposal handlers. These defaults are\n\t// already set in the SDK's BaseApp, this shows an example of how to override\n\t// them.\n\t//\n\t// Example:\n\t//\n\t// app.App = appBuilder.Build(...)\n\t// nonceMempool := mempool.NewSenderNonceMempool()\n\t// abciPropHandler := NewDefaultProposalHandler(nonceMempool, app.App.BaseApp)\n\t//\n\t// app.App.BaseApp.SetMempool(nonceMempool)\n\t// app.App.BaseApp.SetPrepareProposal(abciPropHandler.PrepareProposalHandler())\n\t// app.App.BaseApp.SetProcessProposal(abciPropHandler.ProcessProposalHandler())\n\t//\n\t// Alternatively, you can construct BaseApp options, append those to\n\t// baseAppOptions and pass them to the appBuilder.\n\t//\n\t// Example:\n\t//\n\t// prepareOpt = func(app *baseapp.BaseApp) {\n\t// \tabciPropHandler := baseapp.NewDefaultProposalHandler(nonceMempool, app)\n\t// \tapp.SetPrepareProposal(abciPropHandler.PrepareProposalHandler())\n\t// }\n\t// baseAppOptions = append(baseAppOptions, prepareOpt)\n\t//\n\t// create and set vote extension handler\n\t// voteExtOp := func(bApp *baseapp.BaseApp) {\n\t// \tvoteExtHandler := NewVoteExtensionHandler()\n\t// \tvoteExtHandler.SetHandlers(bApp)\n\t// }\n\n\tapp.App = appBuilder.Build(db, traceStore, baseAppOptions...)\n\n\t// Register ante interfaces for extension options\n\tantetypes.RegisterInterfaces(app.interfaceRegistry)\n\n\t// Register legacy modules\n\tapp.registerIBCModules()\n\n\tcustomMintModule := app.registerCustomMintModule()\n\n\t// Initialize capability keeper in acp module which is initialized by IBC modules\n\tacpKeeper := app.GetCapabilityScopedKeeper(acptypes.ModuleName)\n\tapp.AcpKeeper.InitializeCapabilityKeeper(&acpKeeper)\n\n\t// Initialize capability keeper for the bulletin module\n\tbulletinKeeper := app.GetCapabilityScopedKeeper(bulletintypes.ModuleName)\n\tapp.BulletinKeeper.InitializeCapabilityKeeper(&bulletinKeeper)\n\n\t// Register streaming services\n\tif err := app.RegisterStreamingServices(appOpts, app.kvStoreKeys()); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Create priority lane\n\tpriorityLane := CreatePriorityLane(app)\n\n\t// Create the laned mempool with priority and default lanes\n\tmempool, err := block.NewLanedMempool(\n\t\tapp.Logger(),\n\t\t[]block.Lane{priorityLane},\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tapp.App.SetMempool(mempool)\n\n\t// AnteHandler performs stateful checks on transactions before internal messages are processed.\n\tanteHandler := ante.NewAnteHandler(\n\t\tapp.AccountKeeper,\n\t\tapp.BankKeeper,\n\t\tapp.FeeGrantKeeper,\n\t\tapp.IBCKeeper,\n\t\tapp.HubKeeper,\n\t\tapp.txConfig.SignModeHandler(),\n\t\tante.DefaultSigVerificationGasConsumer,\n\t\tapp.txConfig.TxEncoder(),\n\t)\n\n\tapp.SetAnteHandler(anteHandler)\n\n\t// Set the ante handler on the lanes\n\topt := []base.LaneOption{\n\t\tbase.WithAnteHandler(anteHandler),\n\t}\n\tpriorityLane.WithOptions(\n\t\topt...,\n\t)\n\n\t// Create the default proposal handler with the laned mempool\n\tproposalHandler := abci.NewDefaultProposalHandler(\n\t\tapp.Logger(),\n\t\tapp.txConfig.TxDecoder(),\n\t\tapp.txConfig.TxEncoder(),\n\t\tmempool,\n\t)\n\n\tprepareProposalHandler := proposalHandler.PrepareProposalHandler()\n\tprepareProposal := func(ctx sdk.Context, req *abcitypes.RequestPrepareProposal) (*abcitypes.ResponsePrepareProposal, error) {\n\t\tdefer telemetry.MeasureSince(time.Now(), metrics.App, metrics.PrepareProposal, metrics.SecondsUnit)\n\t\ttelemetry.IncrCounterWithLabels(\n\t\t\t[]string{metrics.App, metrics.PrepareProposal, metrics.Tx, metrics.Count},\n\t\t\tfloat32(len(req.Txs)),\n\t\t\t[]metrics.Label{telemetry.NewLabel(metrics.Method, metrics.PrepareProposal)},\n\t\t)\n\t\treturn prepareProposalHandler(ctx, req)\n\t}\n\tapp.App.SetPrepareProposal(prepareProposal)\n\n\tprocessProposalHandler := proposalHandler.ProcessProposalHandler()\n\tprocessProposal := func(ctx sdk.Context, req *abcitypes.RequestProcessProposal) (*abcitypes.ResponseProcessProposal, error) {\n\t\tdefer telemetry.MeasureSince(time.Now(), metrics.App, metrics.ProcessProposal, metrics.SecondsUnit)\n\t\ttelemetry.IncrCounterWithLabels(\n\t\t\t[]string{metrics.App, metrics.ProcessProposal, metrics.Tx, metrics.Count},\n\t\t\tfloat32(len(req.Txs)),\n\t\t\t[]metrics.Label{telemetry.NewLabel(metrics.Method, metrics.ProcessProposal)},\n\t\t)\n\t\treturn processProposalHandler(ctx, req)\n\t}\n\tapp.App.SetProcessProposal(processProposal)\n\n\t/****  Module Options ****/\n\n\tapp.ModuleManager.RegisterInvariants(app.CrisisKeeper)\n\n\t// add test gRPC service for testing gRPC queries in isolation\n\ttestdata_pulsar.RegisterQueryServer(app.GRPCQueryRouter(), testdata_pulsar.QueryImpl{})\n\n\t// create the simulation manager and define the order of the modules for deterministic simulations\n\t//\n\t// NOTE: this is not required apps that don't use the simulator for fuzz testing\n\t// transactions\n\toverrideModules := map[string]module.AppModuleSimulation{\n\t\tauthtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),\n\t}\n\tapp.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)\n\n\tapp.sm.RegisterStoreDecoders()\n\n\t// A custom InitChainer can be set if extra pre-init-genesis logic is required.\n\t// By default, when using app wiring enabled module, this is not required.\n\t// For instance, the upgrade module will set automatically the module version map in its init genesis thanks to app wiring.\n\t// However, when registering a module manually (i.e. that does not support app wiring), the module version map\n\t// must be set manually as follow. The upgrade module will de-duplicate the module version map.\n\t//\n\tinitChainer := func(ctx sdk.Context, req *abcitypes.RequestInitChain) (*abcitypes.ResponseInitChain, error) {\n\t\tif req.InitialHeight == 1 {\n\t\t\t// Temp workaround to set default IBC params until app wiring is fully supported.\n\t\t\tapp.setDefaultIBCParams(ctx)\n\t\t\t// Call InitGenesis() to set default state for the custom mint module\n\t\t\tcustomMintModule.InitGenesis(ctx, app.appCodec, json.RawMessage{})\n\t\t}\n\n\t\treturn app.App.InitChainer(ctx, req)\n\t}\n\n\tapp.SetInitChainer(initChainer)\n\n\tif err := app.Load(loadLatest); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn app, nil\n}\n\n// LegacyAmino returns App's amino codec.\n//\n// NOTE: This is solely to be used for testing purposes as it may be desirable\n// for modules to register their own custom testing types.\nfunc (app *App) LegacyAmino() *codec.LegacyAmino {\n\treturn app.legacyAmino\n}\n\n// AppCodec returns App's app codec.\n//\n// NOTE: This is solely to be used for testing purposes as it may be desirable\n// for modules to register their own custom testing types.\nfunc (app *App) AppCodec() codec.Codec {\n\treturn app.appCodec\n}\n\nfunc (app *App) TxConfig() client.TxConfig {\n\treturn app.txConfig\n}\n\n// GetKey returns the KVStoreKey for the provided store key.\nfunc (app *App) GetKey(storeKey string) *storetypes.KVStoreKey {\n\tkvStoreKey, ok := app.UnsafeFindStoreKey(storeKey).(*storetypes.KVStoreKey)\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn kvStoreKey\n}\n\n// GetMemKey returns the MemoryStoreKey for the provided store key.\nfunc (app *App) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {\n\tkey, ok := app.UnsafeFindStoreKey(storeKey).(*storetypes.MemoryStoreKey)\n\tif !ok {\n\t\treturn nil\n\t}\n\treturn key\n}\n\n// kvStoreKeys returns all the kv store keys registered inside App.\nfunc (app *App) kvStoreKeys() map[string]*storetypes.KVStoreKey {\n\tkeys := make(map[string]*storetypes.KVStoreKey)\n\tfor _, k := range app.GetStoreKeys() {\n\t\tif kv, ok := k.(*storetypes.KVStoreKey); ok {\n\t\t\tkeys[kv.Name()] = kv\n\t\t}\n\t}\n\treturn keys\n}\n\n// GetSubspace returns a param subspace for a given module name.\nfunc (app *App) GetSubspace(moduleName string) paramstypes.Subspace {\n\tsubspace, _ := app.ParamsKeeper.GetSubspace(moduleName)\n\treturn subspace\n}\n\n// SimulationManager implements the SimulationApp interface.\nfunc (app *App) SimulationManager() *module.SimulationManager {\n\treturn app.sm\n}\n\n// RegisterAPIRoutes registers all application module routes with the provided\n// API server.\nfunc (app *App) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) {\n\tapp.App.RegisterAPIRoutes(apiSvr, apiConfig)\n\t// register swagger API in app.go so that other applications can override easily\n\tif err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {\n\t\tpanic(err)\n\t}\n\n\t// register app's OpenAPI routes\n\tdocs.RegisterOpenAPIService(Name, apiSvr.Router)\n\n\t// register faucet routes\n\tapp.RegisterFaucetRoutes(apiSvr, apiConfig, app.appOpts)\n}\n\n// GetIBCKeeper returns the IBC keeper.\nfunc (app *App) GetIBCKeeper() *ibckeeper.Keeper {\n\treturn app.IBCKeeper\n}\n\n// GetCapabilityScopedKeeper returns the capability scoped keeper.\nfunc (app *App) GetCapabilityScopedKeeper(moduleName string) capabilitykeeper.ScopedKeeper {\n\treturn app.CapabilityKeeper.ScopeToModule(moduleName)\n}\n\n// GetMaccPerms returns a copy of the module account permissions\n//\n// NOTE: This is solely to be used for testing purposes.\nfunc GetMaccPerms() map[string][]string {\n\tdup := make(map[string][]string)\n\tfor _, perms := range moduleAccPerms {\n\t\tdup[perms.Account] = perms.Permissions\n\t}\n\treturn dup\n}\n\n// BlockedAddresses returns all the app's blocked account addresses.\nfunc BlockedAddresses() map[string]bool {\n\tresult := make(map[string]bool)\n\tif len(blockAccAddrs) > 0 {\n\t\tfor _, addr := range blockAccAddrs {\n\t\t\tresult[addr] = true\n\t\t}\n\t} else {\n\t\tfor addr := range GetMaccPerms() {\n\t\t\tresult[addr] = true\n\t\t}\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "app/app_config.go",
    "content": "package app\n\nimport (\n\t\"time\"\n\n\truntimev1alpha1 \"cosmossdk.io/api/cosmos/app/runtime/v1alpha1\"\n\tappv1alpha1 \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\tauthmodulev1 \"cosmossdk.io/api/cosmos/auth/module/v1\"\n\tauthzmodulev1 \"cosmossdk.io/api/cosmos/authz/module/v1\"\n\tbankmodulev1 \"cosmossdk.io/api/cosmos/bank/module/v1\"\n\tcircuitmodulev1 \"cosmossdk.io/api/cosmos/circuit/module/v1\"\n\tconsensusmodulev1 \"cosmossdk.io/api/cosmos/consensus/module/v1\"\n\tcrisismodulev1 \"cosmossdk.io/api/cosmos/crisis/module/v1\"\n\tdistrmodulev1 \"cosmossdk.io/api/cosmos/distribution/module/v1\"\n\tevidencemodulev1 \"cosmossdk.io/api/cosmos/evidence/module/v1\"\n\tgenutilmodulev1 \"cosmossdk.io/api/cosmos/genutil/module/v1\"\n\tgovmodulev1 \"cosmossdk.io/api/cosmos/gov/module/v1\"\n\tgroupmodulev1 \"cosmossdk.io/api/cosmos/group/module/v1\"\n\tparamsmodulev1 \"cosmossdk.io/api/cosmos/params/module/v1\"\n\tslashingmodulev1 \"cosmossdk.io/api/cosmos/slashing/module/v1\"\n\tstakingmodulev1 \"cosmossdk.io/api/cosmos/staking/module/v1\"\n\ttxconfigv1 \"cosmossdk.io/api/cosmos/tx/config/v1\"\n\tupgrademodulev1 \"cosmossdk.io/api/cosmos/upgrade/module/v1\"\n\tvestingmodulev1 \"cosmossdk.io/api/cosmos/vesting/module/v1\"\n\t\"cosmossdk.io/core/appconfig\"\n\t_ \"cosmossdk.io/x/circuit\" // import for side-effects\n\tcircuittypes \"cosmossdk.io/x/circuit/types\"\n\t_ \"cosmossdk.io/x/evidence\" // import for side-effects\n\tevidencetypes \"cosmossdk.io/x/evidence/types\"\n\t_ \"cosmossdk.io/x/upgrade\" // import for side-effects\n\tupgradetypes \"cosmossdk.io/x/upgrade/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/auth/tx/config\" // import for side-effects\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/auth/vesting\" // import for side-effects\n\tvestingtypes \"github.com/cosmos/cosmos-sdk/x/auth/vesting/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/authz\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/authz/module\" // import for side-effects\n\t_ \"github.com/cosmos/cosmos-sdk/x/bank\"         // import for side-effects\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/consensus\" // import for side-effects\n\tconsensusparamtypes \"github.com/cosmos/cosmos-sdk/x/consensus/types\"\n\tconsensustypes \"github.com/cosmos/cosmos-sdk/x/consensus/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/crisis\" // import for side-effects\n\tcrisistypes \"github.com/cosmos/cosmos-sdk/x/crisis/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/distribution\" // import for side-effects\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tgenutiltypes \"github.com/cosmos/cosmos-sdk/x/genutil/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/group\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/group/module\" // import for side-effects\n\t_ \"github.com/cosmos/cosmos-sdk/x/mint\"         // import for side-effects\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/params\" // import for side-effects\n\tparamstypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/slashing\" // import for side-effects\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/staking\" // import for side-effects\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t_ \"github.com/cosmos/ibc-go/modules/capability\" // import for side-effects\n\tcapabilitytypes \"github.com/cosmos/ibc-go/modules/capability/types\"\n\t_ \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts\" // import for side-effects\n\ticatypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types\"\n\tibctransfertypes \"github.com/cosmos/ibc-go/v10/modules/apps/transfer/types\"\n\tibcexported \"github.com/cosmos/ibc-go/v10/modules/core/exported\"\n\tfeegrantmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/feegrant/module/v1\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/feegrant/module\" // import for side-effects\n\t\"google.golang.org/protobuf/types/known/durationpb\"\n\n\tepochsmodulev1 \"github.com/sourcenetwork/sourcehub/api/osmosis/epochs/module/v1beta1\"\n\tacpmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/acp/module\"\n\tbulletinmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/bulletin/module\"\n\thubmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/hub/module\"\n\ttiermodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/tier/module/v1beta1\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/acp/module\" // import for side-effects\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/bulletin/module\" // import for side-effects\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/epochs/module\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/hub/module\"\n\thubmoduletypes \"github.com/sourcenetwork/sourcehub/x/hub/types\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/tier/module\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nvar (\n\t// NOTE: The genutils module must occur after staking so that pools are\n\t// properly initialized with tokens from genesis accounts.\n\t// NOTE: The genutils module must also occur after auth so that it can access the params from auth.\n\t// NOTE: Capability module must occur first so that it can initialize any capabilities\n\t// so that other modules that want to create or claim capabilities afterwards in InitChain\n\t// can do so safely.\n\tgenesisModuleOrder = []string{\n\t\t// cosmos-sdk/ibc modules\n\t\tcapabilitytypes.ModuleName,\n\t\tauthtypes.ModuleName,\n\t\tbanktypes.ModuleName,\n\t\tdistrtypes.ModuleName,\n\t\tstakingtypes.ModuleName,\n\t\tslashingtypes.ModuleName,\n\t\tgovtypes.ModuleName,\n\t\tminttypes.ModuleName,\n\t\tcrisistypes.ModuleName,\n\t\tibcexported.ModuleName,\n\t\tgenutiltypes.ModuleName,\n\t\tevidencetypes.ModuleName,\n\t\tauthz.ModuleName,\n\t\tibctransfertypes.ModuleName,\n\t\ticatypes.ModuleName,\n\t\tfeegrant.ModuleName,\n\t\tparamstypes.ModuleName,\n\t\tupgradetypes.ModuleName,\n\t\tvestingtypes.ModuleName,\n\t\tcircuittypes.ModuleName,\n\t\tgroup.ModuleName,\n\t\tconsensusparamtypes.ModuleName,\n\t\tcircuittypes.ModuleName,\n\t\t// chain modules\n\t\thubmoduletypes.ModuleName,\n\t\tacptypes.ModuleName,\n\t\tbulletintypes.ModuleName,\n\t\tepochstypes.ModuleName,\n\t\ttiertypes.ModuleName,\n\t}\n\n\t// During begin block slashing happens after distr.BeginBlocker so that\n\t// there is nothing left over in the validator fee pool, so as to keep the\n\t// CanWithdrawInvariant invariant.\n\t// NOTE: staking module is required if HistoricalEntries param > 0\n\t// NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC)\n\tbeginBlockers = []string{\n\t\t// cosmos sdk modules\n\t\tminttypes.ModuleName,\n\t\tdistrtypes.ModuleName,\n\t\tslashingtypes.ModuleName,\n\t\tevidencetypes.ModuleName,\n\t\tstakingtypes.ModuleName,\n\t\tauthz.ModuleName,\n\t\tgenutiltypes.ModuleName,\n\t\t// ibc modules\n\t\tcapabilitytypes.ModuleName,\n\t\tibcexported.ModuleName,\n\t\tibctransfertypes.ModuleName,\n\t\ticatypes.ModuleName,\n\t\t// chain modules\n\t\thubmoduletypes.ModuleName,\n\t\tacptypes.ModuleName,\n\t\tbulletintypes.ModuleName,\n\t\tepochstypes.ModuleName,\n\t\ttiertypes.ModuleName,\n\t}\n\n\tendBlockers = []string{\n\t\t// cosmos sdk modules\n\t\tcrisistypes.ModuleName,\n\t\tgovtypes.ModuleName,\n\t\tstakingtypes.ModuleName,\n\t\tfeegrant.ModuleName,\n\t\tgroup.ModuleName,\n\t\tgenutiltypes.ModuleName,\n\t\t// ibc modules\n\t\tibcexported.ModuleName,\n\t\tibctransfertypes.ModuleName,\n\t\tcapabilitytypes.ModuleName,\n\t\ticatypes.ModuleName,\n\t\t// chain modules\n\t\thubmoduletypes.ModuleName,\n\t\tacptypes.ModuleName,\n\t\tbulletintypes.ModuleName,\n\t\tepochstypes.ModuleName,\n\t\ttiertypes.ModuleName,\n\t}\n\n\tpreBlockers = []string{\n\t\tupgradetypes.ModuleName,\n\t}\n\n\t// module account permissions\n\tmoduleAccPerms = []*authmodulev1.ModuleAccountPermission{\n\t\t{Account: authtypes.FeeCollectorName},\n\t\t{Account: distrtypes.ModuleName},\n\t\t{Account: minttypes.ModuleName, Permissions: []string{authtypes.Minter}},\n\t\t{Account: stakingtypes.BondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},\n\t\t{Account: stakingtypes.NotBondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},\n\t\t{Account: govtypes.ModuleName, Permissions: []string{authtypes.Burner}},\n\t\t{Account: ibctransfertypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}},\n\t\t{Account: icatypes.ModuleName},\n\t\t{Account: tiertypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner, authtypes.Staking}},\n\t\t{Account: tiertypes.DeveloperPoolName},\n\t\t{Account: tiertypes.InsurancePoolName},\n\t\t{Account: bulletintypes.ModuleName},\n\t}\n\n\t// blocked account addresses\n\tblockAccAddrs = []string{\n\t\tauthtypes.FeeCollectorName,\n\t\tdistrtypes.ModuleName,\n\t\tminttypes.ModuleName,\n\t\tstakingtypes.BondedPoolName,\n\t\tstakingtypes.NotBondedPoolName,\n\t\ttiertypes.DeveloperPoolName,\n\t\ttiertypes.InsurancePoolName,\n\t\t// We allow the following module accounts to receive funds:\n\t\t// govtypes.ModuleName\n\t\t// tiertypes.ModuleName\n\t}\n\n\t// appConfig application configuration (used by depinject)\n\tappConfig = appconfig.Compose(&appv1alpha1.Config{\n\t\tModules: []*appv1alpha1.ModuleConfig{\n\t\t\t{\n\t\t\t\tName: runtime.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&runtimev1alpha1.Module{\n\t\t\t\t\tAppName:       Name,\n\t\t\t\t\tPreBlockers:   preBlockers,\n\t\t\t\t\tBeginBlockers: beginBlockers,\n\t\t\t\t\tEndBlockers:   endBlockers,\n\t\t\t\t\tInitGenesis:   genesisModuleOrder,\n\t\t\t\t\tOverrideStoreKeys: []*runtimev1alpha1.StoreKeyConfig{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tModuleName: authtypes.ModuleName,\n\t\t\t\t\t\t\tKvStoreKey: \"acc\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t// When ExportGenesis is not specified, the export genesis module order\n\t\t\t\t\t// is equal to the init genesis order\n\t\t\t\t\t// ExportGenesis: genesisModuleOrder,\n\t\t\t\t\t// Uncomment if you want to set a custom migration order here.\n\t\t\t\t\t// OrderMigrations: nil,\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: authtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&authmodulev1.Module{\n\t\t\t\t\tBech32Prefix:             AccountAddressPrefix,\n\t\t\t\t\tModuleAccountPermissions: moduleAccPerms,\n\t\t\t\t\t// By default modules authority is the governance module. This is configurable with the following:\n\t\t\t\t\t// Authority: \"group\", // A custom module authority can be set using a module name\n\t\t\t\t\t// Authority: \"cosmos1cwwv22j5ca08ggdv9c2uky355k908694z577tv\", // or a specific address\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   vestingtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&vestingmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: banktypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&bankmodulev1.Module{\n\t\t\t\t\tBlockedModuleAccountsOverride: blockAccAddrs,\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: stakingtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&stakingmodulev1.Module{\n\t\t\t\t\t// NOTE: specifying a prefix is only necessary when using bech32 addresses\n\t\t\t\t\t// If not specfied, the auth Bech32Prefix appended with \"valoper\" and \"valcons\" is used by default\n\t\t\t\t\tBech32PrefixValidator: AccountAddressPrefix + \"valoper\",\n\t\t\t\t\tBech32PrefixConsensus: AccountAddressPrefix + \"valcons\",\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   slashingtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&slashingmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   paramstypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&paramsmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   \"tx\",\n\t\t\t\tConfig: appconfig.WrapAny(&txconfigv1.Config{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   genutiltypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&genutilmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   authz.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&authzmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   upgradetypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&upgrademodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   distrtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&distrmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   evidencetypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&evidencemodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: group.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&groupmodulev1.Module{\n\t\t\t\t\tMaxExecutionPeriod: durationpb.New(time.Second * 1209600),\n\t\t\t\t\tMaxMetadataLen:     255,\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   feegrant.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&feegrantmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   govtypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&govmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   crisistypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&crisismodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   consensustypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&consensusmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   circuittypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&circuitmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   hubmoduletypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&hubmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   acptypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&acpmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   bulletintypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&bulletinmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   epochstypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&epochsmodulev1.Module{}),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:   tiertypes.ModuleName,\n\t\t\t\tConfig: appconfig.WrapAny(&tiermodulev1.Module{}),\n\t\t\t},\n\t\t},\n\t})\n)\n"
  },
  {
    "path": "app/export.go",
    "content": "package app\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/staking\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n)\n\n// ExportAppStateAndValidators exports the state of the application for a genesis\n// file.\nfunc (app *App) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) {\n\t// as if they could withdraw from the start of the next block\n\tctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()})\n\n\t// We export at last height + 1, because that's the height at which\n\t// CometBFT will start InitChain.\n\theight := app.LastBlockHeight() + 1\n\tif forZeroHeight {\n\t\theight = 0\n\t\tapp.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)\n\t}\n\n\tgenState, err := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport)\n\tif err != nil {\n\t\treturn servertypes.ExportedApp{}, err\n\t}\n\n\tappState, err := json.MarshalIndent(genState, \"\", \"  \")\n\tif err != nil {\n\t\treturn servertypes.ExportedApp{}, err\n\t}\n\n\tvalidators, err := staking.WriteValidators(ctx, app.StakingKeeper)\n\treturn servertypes.ExportedApp{\n\t\tAppState:        appState,\n\t\tValidators:      validators,\n\t\tHeight:          height,\n\t\tConsensusParams: app.BaseApp.GetConsensusParams(ctx),\n\t}, err\n}\n\n// prepare for fresh start at zero height\n// NOTE zero height genesis is a temporary feature which will be deprecated\n//\n//\tin favor of export at a block height\nfunc (app *App) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) {\n\tapplyAllowedAddrs := false\n\n\t// check if there is a allowed address list\n\tif len(jailAllowedAddrs) > 0 {\n\t\tapplyAllowedAddrs = true\n\t}\n\n\tallowedAddrsMap := make(map[string]bool)\n\n\tfor _, addr := range jailAllowedAddrs {\n\t\t_, err := sdk.ValAddressFromBech32(addr)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tallowedAddrsMap[addr] = true\n\t}\n\n\t/* Just to be safe, assert the invariants on current state. */\n\tapp.CrisisKeeper.AssertInvariants(ctx)\n\n\t/* Handle fee distribution state. */\n\n\t// withdraw all validator commission\n\terr := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {\n\t\tvalBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\t_, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valBz)\n\t\treturn false\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// withdraw all delegator rewards\n\tdels, err := app.StakingKeeper.GetAllDelegations(ctx)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfor _, delegation := range dels {\n\t\tvalAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tdelAddr := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress)\n\n\t\t_, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr)\n\t}\n\n\t// clear validator slash events\n\tapp.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)\n\n\t// clear validator historical rewards\n\tapp.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)\n\n\t// set context height to zero\n\theight := ctx.BlockHeight()\n\tctx = ctx.WithBlockHeight(0)\n\n\t// reinitialize all validators\n\terr = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {\n\t\tvalBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\t// donate any unwithdrawn outstanding reward fraction tokens to the community pool\n\t\tscraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tfeePool, err := app.DistrKeeper.FeePool.Get(ctx)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tfeePool.CommunityPool = feePool.CommunityPool.Add(scraps...)\n\t\tif err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valBz); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\treturn false\n\t})\n\n\t// reinitialize all delegations\n\tfor _, del := range dels {\n\t\tvalAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tdelAddr := sdk.MustAccAddressFromBech32(del.DelegatorAddress)\n\n\t\tif err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {\n\t\t\t// never called as BeforeDelegationCreated always returns nil\n\t\t\tpanic(fmt.Errorf(\"error while incrementing period: %w\", err))\n\t\t}\n\n\t\tif err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {\n\t\t\t// never called as AfterDelegationModified always returns nil\n\t\t\tpanic(fmt.Errorf(\"error while creating a new delegation period record: %w\", err))\n\t\t}\n\t}\n\n\t// reset context height\n\tctx = ctx.WithBlockHeight(height)\n\n\t/* Handle staking state. */\n\n\t// iterate through redelegations, reset creation height\n\tapp.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) {\n\t\tfor i := range red.Entries {\n\t\t\tred.Entries[i].CreationHeight = 0\n\t\t}\n\t\terr = app.StakingKeeper.SetRedelegation(ctx, red)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\treturn false\n\t})\n\n\t// iterate through unbonding delegations, reset creation height\n\tapp.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {\n\t\tfor i := range ubd.Entries {\n\t\t\tubd.Entries[i].CreationHeight = 0\n\t\t}\n\t\terr = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\treturn false\n\t})\n\n\t// Iterate through validators by power descending, reset bond heights, and\n\t// update bond intra-tx counters.\n\tstore := ctx.KVStore(app.GetKey(stakingtypes.StoreKey))\n\titer := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)\n\tcounter := int16(0)\n\n\tfor ; iter.Valid(); iter.Next() {\n\t\taddr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))\n\t\tvalidator, err := app.StakingKeeper.GetValidator(ctx, addr)\n\t\tif err != nil {\n\t\t\tpanic(\"expected validator, not found\")\n\t\t}\n\n\t\tvalidator.UnbondingHeight = 0\n\t\tif applyAllowedAddrs && !allowedAddrsMap[addr.String()] {\n\t\t\tvalidator.Jailed = true\n\t\t}\n\n\t\tapp.StakingKeeper.SetValidator(ctx, validator)\n\t\tcounter++\n\t}\n\n\tif err := iter.Close(); err != nil {\n\t\tapp.Logger().Error(\"error while closing the key-value store reverse prefix iterator: \", err)\n\t\treturn\n\t}\n\n\t_, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t/* Handle slashing state. */\n\n\t// reset start height on signing infos\n\tapp.SlashingKeeper.IterateValidatorSigningInfos(\n\t\tctx,\n\t\tfunc(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {\n\t\t\tinfo.StartHeight = 0\n\t\t\tapp.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)\n\t\t\treturn false\n\t\t},\n\t)\n}\n"
  },
  {
    "path": "app/faucet/types/faucet.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/faucet/faucet.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\ttypes \"github.com/cosmos/cosmos-sdk/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// FaucetRequestRecord represents a faucet request record stored internally.\ntype FaucetRequestRecord struct {\n\tAddress string     `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  types.Coin `protobuf:\"bytes,2,opt,name=amount,proto3\" json:\"amount\"`\n\tTxHash  string     `protobuf:\"bytes,3,opt,name=tx_hash,json=txHash,proto3\" json:\"tx_hash,omitempty\"`\n}\n\nfunc (m *FaucetRequestRecord) Reset()         { *m = FaucetRequestRecord{} }\nfunc (m *FaucetRequestRecord) String() string { return proto.CompactTextString(m) }\nfunc (*FaucetRequestRecord) ProtoMessage()    {}\nfunc (*FaucetRequestRecord) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{0}\n}\nfunc (m *FaucetRequestRecord) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FaucetRequestRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FaucetRequestRecord.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FaucetRequestRecord) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FaucetRequestRecord.Merge(m, src)\n}\nfunc (m *FaucetRequestRecord) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FaucetRequestRecord) XXX_DiscardUnknown() {\n\txxx_messageInfo_FaucetRequestRecord.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FaucetRequestRecord proto.InternalMessageInfo\n\nfunc (m *FaucetRequestRecord) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *FaucetRequestRecord) GetAmount() types.Coin {\n\tif m != nil {\n\t\treturn m.Amount\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *FaucetRequestRecord) GetTxHash() string {\n\tif m != nil {\n\t\treturn m.TxHash\n\t}\n\treturn \"\"\n}\n\n// FaucetRequest represents a request to get funds from the faucet.\ntype FaucetRequest struct {\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n}\n\nfunc (m *FaucetRequest) Reset()         { *m = FaucetRequest{} }\nfunc (m *FaucetRequest) String() string { return proto.CompactTextString(m) }\nfunc (*FaucetRequest) ProtoMessage()    {}\nfunc (*FaucetRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{1}\n}\nfunc (m *FaucetRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FaucetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FaucetRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FaucetRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FaucetRequest.Merge(m, src)\n}\nfunc (m *FaucetRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FaucetRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_FaucetRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FaucetRequest proto.InternalMessageInfo\n\nfunc (m *FaucetRequest) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\n// FaucetResponse represents the response from a faucet request.\ntype FaucetResponse struct {\n\tTxhash  string     `protobuf:\"bytes,1,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode    uint32     `protobuf:\"varint,2,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog  string     `protobuf:\"bytes,3,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tAddress string     `protobuf:\"bytes,4,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  types.Coin `protobuf:\"bytes,5,opt,name=amount,proto3\" json:\"amount\"`\n}\n\nfunc (m *FaucetResponse) Reset()         { *m = FaucetResponse{} }\nfunc (m *FaucetResponse) String() string { return proto.CompactTextString(m) }\nfunc (*FaucetResponse) ProtoMessage()    {}\nfunc (*FaucetResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{2}\n}\nfunc (m *FaucetResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FaucetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FaucetResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FaucetResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FaucetResponse.Merge(m, src)\n}\nfunc (m *FaucetResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FaucetResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_FaucetResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FaucetResponse proto.InternalMessageInfo\n\nfunc (m *FaucetResponse) GetTxhash() string {\n\tif m != nil {\n\t\treturn m.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (m *FaucetResponse) GetCode() uint32 {\n\tif m != nil {\n\t\treturn m.Code\n\t}\n\treturn 0\n}\n\nfunc (m *FaucetResponse) GetRawLog() string {\n\tif m != nil {\n\t\treturn m.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (m *FaucetResponse) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *FaucetResponse) GetAmount() types.Coin {\n\tif m != nil {\n\t\treturn m.Amount\n\t}\n\treturn types.Coin{}\n}\n\n// InitAccountRequest represents a request to initialize an account.\ntype InitAccountRequest struct {\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n}\n\nfunc (m *InitAccountRequest) Reset()         { *m = InitAccountRequest{} }\nfunc (m *InitAccountRequest) String() string { return proto.CompactTextString(m) }\nfunc (*InitAccountRequest) ProtoMessage()    {}\nfunc (*InitAccountRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{3}\n}\nfunc (m *InitAccountRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *InitAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_InitAccountRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *InitAccountRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_InitAccountRequest.Merge(m, src)\n}\nfunc (m *InitAccountRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *InitAccountRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_InitAccountRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_InitAccountRequest proto.InternalMessageInfo\n\nfunc (m *InitAccountRequest) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\n// InitAccountResponse represents the response from an account initialization request.\ntype InitAccountResponse struct {\n\tMessage string     `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash  string     `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode    uint32     `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog  string     `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tAddress string     `protobuf:\"bytes,5,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tAmount  types.Coin `protobuf:\"bytes,6,opt,name=amount,proto3\" json:\"amount\"`\n\tExists  bool       `protobuf:\"varint,7,opt,name=exists,proto3\" json:\"exists,omitempty\"`\n}\n\nfunc (m *InitAccountResponse) Reset()         { *m = InitAccountResponse{} }\nfunc (m *InitAccountResponse) String() string { return proto.CompactTextString(m) }\nfunc (*InitAccountResponse) ProtoMessage()    {}\nfunc (*InitAccountResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{4}\n}\nfunc (m *InitAccountResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *InitAccountResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_InitAccountResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *InitAccountResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_InitAccountResponse.Merge(m, src)\n}\nfunc (m *InitAccountResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *InitAccountResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_InitAccountResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_InitAccountResponse proto.InternalMessageInfo\n\nfunc (m *InitAccountResponse) GetMessage() string {\n\tif m != nil {\n\t\treturn m.Message\n\t}\n\treturn \"\"\n}\n\nfunc (m *InitAccountResponse) GetTxhash() string {\n\tif m != nil {\n\t\treturn m.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (m *InitAccountResponse) GetCode() uint32 {\n\tif m != nil {\n\t\treturn m.Code\n\t}\n\treturn 0\n}\n\nfunc (m *InitAccountResponse) GetRawLog() string {\n\tif m != nil {\n\t\treturn m.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (m *InitAccountResponse) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *InitAccountResponse) GetAmount() types.Coin {\n\tif m != nil {\n\t\treturn m.Amount\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *InitAccountResponse) GetExists() bool {\n\tif m != nil {\n\t\treturn m.Exists\n\t}\n\treturn false\n}\n\n// FaucetInfoResponse represents the faucet information response.\ntype FaucetInfoResponse struct {\n\tAddress      string     `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tBalance      types.Coin `protobuf:\"bytes,2,opt,name=balance,proto3\" json:\"balance\"`\n\tRequestCount int32      `protobuf:\"varint,3,opt,name=request_count,json=requestCount,proto3\" json:\"request_count,omitempty\"`\n}\n\nfunc (m *FaucetInfoResponse) Reset()         { *m = FaucetInfoResponse{} }\nfunc (m *FaucetInfoResponse) String() string { return proto.CompactTextString(m) }\nfunc (*FaucetInfoResponse) ProtoMessage()    {}\nfunc (*FaucetInfoResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{5}\n}\nfunc (m *FaucetInfoResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FaucetInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FaucetInfoResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FaucetInfoResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FaucetInfoResponse.Merge(m, src)\n}\nfunc (m *FaucetInfoResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FaucetInfoResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_FaucetInfoResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FaucetInfoResponse proto.InternalMessageInfo\n\nfunc (m *FaucetInfoResponse) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *FaucetInfoResponse) GetBalance() types.Coin {\n\tif m != nil {\n\t\treturn m.Balance\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *FaucetInfoResponse) GetRequestCount() int32 {\n\tif m != nil {\n\t\treturn m.RequestCount\n\t}\n\treturn 0\n}\n\n// GrantAllowanceRequest represents a request to grant fee allowance from the faucet.\ntype GrantAllowanceRequest struct {\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n\tAmountLimit types.Coin `protobuf:\"bytes,2,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit\"`\n\t// Optional expiration time. If not provided, defaults to 30 days from now\n\tExpiration *time.Time `protobuf:\"bytes,3,opt,name=expiration,proto3,stdtime\" json:\"expiration,omitempty\"`\n}\n\nfunc (m *GrantAllowanceRequest) Reset()         { *m = GrantAllowanceRequest{} }\nfunc (m *GrantAllowanceRequest) String() string { return proto.CompactTextString(m) }\nfunc (*GrantAllowanceRequest) ProtoMessage()    {}\nfunc (*GrantAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{6}\n}\nfunc (m *GrantAllowanceRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GrantAllowanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GrantAllowanceRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GrantAllowanceRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GrantAllowanceRequest.Merge(m, src)\n}\nfunc (m *GrantAllowanceRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GrantAllowanceRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_GrantAllowanceRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GrantAllowanceRequest proto.InternalMessageInfo\n\nfunc (m *GrantAllowanceRequest) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceRequest) GetAmountLimit() types.Coin {\n\tif m != nil {\n\t\treturn m.AmountLimit\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *GrantAllowanceRequest) GetExpiration() *time.Time {\n\tif m != nil {\n\t\treturn m.Expiration\n\t}\n\treturn nil\n}\n\n// GrantAllowanceResponse represents the response from a grant allowance request.\ntype GrantAllowanceResponse struct {\n\tMessage     string     `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash      string     `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode        uint32     `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog      string     `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tGranter     string     `protobuf:\"bytes,5,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\tGrantee     string     `protobuf:\"bytes,6,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\tAmountLimit types.Coin `protobuf:\"bytes,7,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit\"`\n\tExpiration  *time.Time `protobuf:\"bytes,8,opt,name=expiration,proto3,stdtime\" json:\"expiration,omitempty\"`\n}\n\nfunc (m *GrantAllowanceResponse) Reset()         { *m = GrantAllowanceResponse{} }\nfunc (m *GrantAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*GrantAllowanceResponse) ProtoMessage()    {}\nfunc (*GrantAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{7}\n}\nfunc (m *GrantAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GrantAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GrantAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GrantAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GrantAllowanceResponse.Merge(m, src)\n}\nfunc (m *GrantAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GrantAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_GrantAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GrantAllowanceResponse proto.InternalMessageInfo\n\nfunc (m *GrantAllowanceResponse) GetMessage() string {\n\tif m != nil {\n\t\treturn m.Message\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceResponse) GetTxhash() string {\n\tif m != nil {\n\t\treturn m.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceResponse) GetCode() uint32 {\n\tif m != nil {\n\t\treturn m.Code\n\t}\n\treturn 0\n}\n\nfunc (m *GrantAllowanceResponse) GetRawLog() string {\n\tif m != nil {\n\t\treturn m.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceResponse) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceResponse) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantAllowanceResponse) GetAmountLimit() types.Coin {\n\tif m != nil {\n\t\treturn m.AmountLimit\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *GrantAllowanceResponse) GetExpiration() *time.Time {\n\tif m != nil {\n\t\treturn m.Expiration\n\t}\n\treturn nil\n}\n\n// GrantDIDAllowanceRequest represents a request to grant fee allowance to a DID from the faucet.\ntype GrantDIDAllowanceRequest struct {\n\tDid string `protobuf:\"bytes,1,opt,name=did,proto3\" json:\"did,omitempty\"`\n\t// Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n\tAmountLimit types.Coin `protobuf:\"bytes,2,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit\"`\n\t// Optional expiration time. If not provided, defaults to 30 days from now\n\tExpiration *time.Time `protobuf:\"bytes,3,opt,name=expiration,proto3,stdtime\" json:\"expiration,omitempty\"`\n}\n\nfunc (m *GrantDIDAllowanceRequest) Reset()         { *m = GrantDIDAllowanceRequest{} }\nfunc (m *GrantDIDAllowanceRequest) String() string { return proto.CompactTextString(m) }\nfunc (*GrantDIDAllowanceRequest) ProtoMessage()    {}\nfunc (*GrantDIDAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{8}\n}\nfunc (m *GrantDIDAllowanceRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GrantDIDAllowanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GrantDIDAllowanceRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GrantDIDAllowanceRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GrantDIDAllowanceRequest.Merge(m, src)\n}\nfunc (m *GrantDIDAllowanceRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GrantDIDAllowanceRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_GrantDIDAllowanceRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GrantDIDAllowanceRequest proto.InternalMessageInfo\n\nfunc (m *GrantDIDAllowanceRequest) GetDid() string {\n\tif m != nil {\n\t\treturn m.Did\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceRequest) GetAmountLimit() types.Coin {\n\tif m != nil {\n\t\treturn m.AmountLimit\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *GrantDIDAllowanceRequest) GetExpiration() *time.Time {\n\tif m != nil {\n\t\treturn m.Expiration\n\t}\n\treturn nil\n}\n\n// GrantDIDAllowanceResponse represents the response from a DID grant allowance request.\ntype GrantDIDAllowanceResponse struct {\n\tMessage     string     `protobuf:\"bytes,1,opt,name=message,proto3\" json:\"message,omitempty\"`\n\tTxhash      string     `protobuf:\"bytes,2,opt,name=txhash,proto3\" json:\"txhash,omitempty\"`\n\tCode        uint32     `protobuf:\"varint,3,opt,name=code,proto3\" json:\"code,omitempty\"`\n\tRawLog      string     `protobuf:\"bytes,4,opt,name=raw_log,json=rawLog,proto3\" json:\"raw_log,omitempty\"`\n\tGranter     string     `protobuf:\"bytes,5,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\tGranteeDid  string     `protobuf:\"bytes,6,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\tAmountLimit types.Coin `protobuf:\"bytes,7,opt,name=amount_limit,json=amountLimit,proto3\" json:\"amount_limit\"`\n\tExpiration  *time.Time `protobuf:\"bytes,8,opt,name=expiration,proto3,stdtime\" json:\"expiration,omitempty\"`\n}\n\nfunc (m *GrantDIDAllowanceResponse) Reset()         { *m = GrantDIDAllowanceResponse{} }\nfunc (m *GrantDIDAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*GrantDIDAllowanceResponse) ProtoMessage()    {}\nfunc (*GrantDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_b854b66c8024df8a, []int{9}\n}\nfunc (m *GrantDIDAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GrantDIDAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GrantDIDAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GrantDIDAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GrantDIDAllowanceResponse.Merge(m, src)\n}\nfunc (m *GrantDIDAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GrantDIDAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_GrantDIDAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GrantDIDAllowanceResponse proto.InternalMessageInfo\n\nfunc (m *GrantDIDAllowanceResponse) GetMessage() string {\n\tif m != nil {\n\t\treturn m.Message\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetTxhash() string {\n\tif m != nil {\n\t\treturn m.Txhash\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetCode() uint32 {\n\tif m != nil {\n\t\treturn m.Code\n\t}\n\treturn 0\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetRawLog() string {\n\tif m != nil {\n\t\treturn m.RawLog\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetAmountLimit() types.Coin {\n\tif m != nil {\n\t\treturn m.AmountLimit\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *GrantDIDAllowanceResponse) GetExpiration() *time.Time {\n\tif m != nil {\n\t\treturn m.Expiration\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*FaucetRequestRecord)(nil), \"sourcehub.faucet.FaucetRequestRecord\")\n\tproto.RegisterType((*FaucetRequest)(nil), \"sourcehub.faucet.FaucetRequest\")\n\tproto.RegisterType((*FaucetResponse)(nil), \"sourcehub.faucet.FaucetResponse\")\n\tproto.RegisterType((*InitAccountRequest)(nil), \"sourcehub.faucet.InitAccountRequest\")\n\tproto.RegisterType((*InitAccountResponse)(nil), \"sourcehub.faucet.InitAccountResponse\")\n\tproto.RegisterType((*FaucetInfoResponse)(nil), \"sourcehub.faucet.FaucetInfoResponse\")\n\tproto.RegisterType((*GrantAllowanceRequest)(nil), \"sourcehub.faucet.GrantAllowanceRequest\")\n\tproto.RegisterType((*GrantAllowanceResponse)(nil), \"sourcehub.faucet.GrantAllowanceResponse\")\n\tproto.RegisterType((*GrantDIDAllowanceRequest)(nil), \"sourcehub.faucet.GrantDIDAllowanceRequest\")\n\tproto.RegisterType((*GrantDIDAllowanceResponse)(nil), \"sourcehub.faucet.GrantDIDAllowanceResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/faucet/faucet.proto\", fileDescriptor_b854b66c8024df8a) }\n\nvar fileDescriptor_b854b66c8024df8a = []byte{\n\t// 659 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xcf, 0x4f, 0x13, 0x4f,\n\t0x14, 0xef, 0x94, 0xd2, 0xc2, 0x2b, 0x7c, 0xc3, 0x77, 0x50, 0x5c, 0x48, 0xdc, 0x92, 0x7a, 0x41,\n\t0x0f, 0xbb, 0x01, 0xae, 0xc6, 0xc8, 0x8f, 0x88, 0x24, 0x78, 0xd9, 0x78, 0xf2, 0xd2, 0x4c, 0xb7,\n\t0xc3, 0x76, 0xe2, 0xee, 0xce, 0xba, 0x33, 0x6b, 0xeb, 0x3f, 0xe0, 0x99, 0xc4, 0x7f, 0xc2, 0x8b,\n\t0x89, 0x27, 0xbd, 0x78, 0xf0, 0xc8, 0x91, 0xa3, 0x27, 0x35, 0x60, 0xe2, 0xbf, 0x61, 0x76, 0x66,\n\t0x16, 0x8a, 0xb4, 0x21, 0x25, 0x46, 0xbc, 0xb4, 0xfb, 0xde, 0x9b, 0x37, 0xf3, 0xf9, 0xf1, 0x26,\n\t0x03, 0xb7, 0x05, 0xcf, 0x52, 0x9f, 0x76, 0xb3, 0xb6, 0xbb, 0x4f, 0x32, 0x9f, 0x4a, 0xf3, 0xe7,\n\t0x24, 0x29, 0x97, 0x1c, 0xcf, 0x9d, 0x96, 0x1d, 0x9d, 0x5f, 0xfa, 0x9f, 0x44, 0x2c, 0xe6, 0xae,\n\t0xfa, 0xd5, 0x8b, 0x96, 0x16, 0x7d, 0x2e, 0x22, 0x2e, 0x5a, 0x2a, 0x72, 0x75, 0x60, 0x4a, 0x37,\n\t0x02, 0x1e, 0x70, 0x9d, 0xcf, 0xbf, 0x4c, 0xd6, 0xd6, 0x6b, 0xdc, 0x36, 0x11, 0xd4, 0x7d, 0xb9,\n\t0xda, 0xa6, 0x92, 0xac, 0xba, 0x3e, 0x67, 0xb1, 0xa9, 0x37, 0x02, 0xce, 0x83, 0x90, 0xba, 0x2a,\n\t0x6a, 0x67, 0xfb, 0xae, 0x64, 0x11, 0x15, 0x92, 0x44, 0x89, 0x5e, 0xd0, 0x7c, 0x8d, 0x60, 0xfe,\n\t0x91, 0xc2, 0xe3, 0xd1, 0x17, 0x19, 0x15, 0xd2, 0xa3, 0x3e, 0x4f, 0x3b, 0xd8, 0x82, 0x1a, 0xe9,\n\t0x74, 0x52, 0x2a, 0x84, 0x85, 0x96, 0xd1, 0xca, 0xb4, 0x57, 0x84, 0xf8, 0x3e, 0x54, 0x49, 0xc4,\n\t0xb3, 0x58, 0x5a, 0xe5, 0x65, 0xb4, 0x52, 0x5f, 0x5b, 0x74, 0x0c, 0xce, 0x1c, 0x83, 0x63, 0x30,\n\t0x38, 0x5b, 0x9c, 0xc5, 0x9b, 0xd3, 0x87, 0x5f, 0x1b, 0xa5, 0xb7, 0x3f, 0xdf, 0xdf, 0x43, 0x9e,\n\t0xe9, 0xc1, 0xb7, 0xa0, 0x26, 0xfb, 0xad, 0x2e, 0x11, 0x5d, 0x6b, 0x42, 0xed, 0x5b, 0x95, 0xfd,\n\t0xc7, 0x44, 0x74, 0x9b, 0x77, 0x61, 0xf6, 0x1c, 0x8e, 0xd1, 0x08, 0x9a, 0xef, 0x10, 0xfc, 0x57,\n\t0xac, 0x15, 0x09, 0x8f, 0x05, 0xc5, 0x0b, 0x50, 0x95, 0x7d, 0xb5, 0x2b, 0x2a, 0x76, 0xcd, 0x23,\n\t0x8c, 0xa1, 0xe2, 0xf3, 0x0e, 0x55, 0x50, 0x67, 0x3d, 0xf5, 0x9d, 0x43, 0x48, 0x49, 0xaf, 0x15,\n\t0xf2, 0xa0, 0x80, 0x90, 0x92, 0xde, 0x1e, 0x0f, 0x06, 0x4f, 0xac, 0x8c, 0xe2, 0x3c, 0x39, 0x3e,\n\t0xe7, 0xa6, 0x03, 0x78, 0x37, 0x66, 0x72, 0xc3, 0xf7, 0xf3, 0xf0, 0x72, 0x7e, 0x3f, 0x10, 0xcc,\n\t0x9f, 0x6b, 0x30, 0x24, 0x2d, 0xa8, 0x45, 0x54, 0x08, 0x12, 0xd0, 0xa2, 0xc3, 0x84, 0x03, 0xf4,\n\t0xcb, 0x43, 0xe9, 0x4f, 0x0c, 0xa7, 0x5f, 0x19, 0x45, 0x7f, 0x72, 0x14, 0xfd, 0xea, 0x15, 0x2c,\n\t0x5f, 0x80, 0x2a, 0xed, 0x33, 0x21, 0x85, 0x55, 0x5b, 0x46, 0x2b, 0x53, 0x9e, 0x89, 0x9a, 0x6f,\n\t0x10, 0x60, 0x6d, 0xe3, 0x6e, 0xbc, 0xcf, 0x07, 0x59, 0x8e, 0x98, 0xbc, 0x07, 0x50, 0x6b, 0x93,\n\t0x90, 0xc4, 0x3e, 0x1d, 0x6b, 0xf4, 0x8a, 0x26, 0x7c, 0x07, 0x66, 0x53, 0x2d, 0x7e, 0x4b, 0x09,\n\t0xab, 0x64, 0x99, 0xf4, 0x66, 0x4c, 0x72, 0x4b, 0x99, 0xf5, 0x09, 0xc1, 0xcd, 0x9d, 0x94, 0xc4,\n\t0x72, 0x23, 0x0c, 0x79, 0x2f, 0xef, 0xbb, 0xd4, 0x30, 0xbc, 0x03, 0x33, 0x9a, 0x6b, 0x2b, 0x64,\n\t0x11, 0x1b, 0xef, 0x62, 0xd4, 0x75, 0xe7, 0x5e, 0xde, 0x88, 0x1f, 0x02, 0xd0, 0x7e, 0xc2, 0x52,\n\t0x22, 0x19, 0x8f, 0x15, 0xbc, 0xfa, 0xda, 0x92, 0xa3, 0xef, 0xb0, 0x53, 0xdc, 0x61, 0xe7, 0x69,\n\t0x71, 0x87, 0x37, 0x2b, 0x07, 0xdf, 0x1a, 0xc8, 0x1b, 0xe8, 0x69, 0x7e, 0x28, 0xc3, 0xc2, 0xef,\n\t0xf0, 0xff, 0xda, 0xf8, 0x04, 0xf9, 0xc1, 0x34, 0x2d, 0xc6, 0xc7, 0x84, 0x67, 0x15, 0xaa, 0xe6,\n\t0xe7, 0xb4, 0x42, 0x2f, 0x08, 0x57, 0xfb, 0x33, 0xc2, 0x4d, 0x5d, 0x41, 0xb8, 0x8f, 0x08, 0x2c,\n\t0x25, 0xdc, 0xf6, 0xee, 0xf6, 0x05, 0xeb, 0xe7, 0x60, 0xa2, 0xc3, 0x3a, 0x46, 0xb6, 0xfc, 0xf3,\n\t0x5f, 0xb2, 0xfc, 0x73, 0x19, 0x16, 0x87, 0x20, 0xbf, 0x6e, 0xd7, 0x1b, 0x50, 0x37, 0x36, 0xb7,\n\t0x72, 0xed, 0xb4, 0xf3, 0x60, 0x52, 0xdb, 0x43, 0x24, 0xbc, 0x3e, 0xf3, 0x37, 0x9f, 0x1c, 0x1e,\n\t0xdb, 0xe8, 0xe8, 0xd8, 0x46, 0xdf, 0x8f, 0x6d, 0x74, 0x70, 0x62, 0x97, 0x8e, 0x4e, 0xec, 0xd2,\n\t0x97, 0x13, 0xbb, 0xf4, 0x6c, 0x3d, 0x60, 0x32, 0x7f, 0xb3, 0x7d, 0x1e, 0xb9, 0xfa, 0x05, 0x8f,\n\t0xa9, 0xec, 0xf1, 0xf4, 0xb9, 0x7b, 0xf6, 0xdc, 0x93, 0x24, 0x29, 0x9e, 0x7c, 0xf9, 0x2a, 0xa1,\n\t0xa2, 0x5d, 0x55, 0x87, 0xae, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x36, 0x16, 0x94, 0x13,\n\t0x08, 0x00, 0x00,\n}\n\nfunc (m *FaucetRequestRecord) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FaucetRequestRecord) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FaucetRequestRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.TxHash) > 0 {\n\t\ti -= len(m.TxHash)\n\t\tcopy(dAtA[i:], m.TxHash)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.TxHash)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\t{\n\t\tsize, err := m.Amount.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FaucetRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FaucetRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FaucetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FaucetResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FaucetResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FaucetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Amount.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x2a\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.RawLog) > 0 {\n\t\ti -= len(m.RawLog)\n\t\tcopy(dAtA[i:], m.RawLog)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.RawLog)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Code != 0 {\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(m.Code))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Txhash) > 0 {\n\t\ti -= len(m.Txhash)\n\t\tcopy(dAtA[i:], m.Txhash)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Txhash)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *InitAccountRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *InitAccountRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *InitAccountRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *InitAccountResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *InitAccountResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *InitAccountResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Exists {\n\t\ti--\n\t\tif m.Exists {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\t{\n\t\tsize, err := m.Amount.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x32\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.RawLog) > 0 {\n\t\ti -= len(m.RawLog)\n\t\tcopy(dAtA[i:], m.RawLog)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.RawLog)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Code != 0 {\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(m.Code))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Txhash) > 0 {\n\t\ti -= len(m.Txhash)\n\t\tcopy(dAtA[i:], m.Txhash)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Txhash)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Message) > 0 {\n\t\ti -= len(m.Message)\n\t\tcopy(dAtA[i:], m.Message)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Message)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FaucetInfoResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FaucetInfoResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FaucetInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RequestCount != 0 {\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(m.RequestCount))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\t{\n\t\tsize, err := m.Balance.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrantAllowanceRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrantAllowanceRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GrantAllowanceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Expiration != nil {\n\t\tn5, err5 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.Expiration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration):])\n\t\tif err5 != nil {\n\t\t\treturn 0, err5\n\t\t}\n\t\ti -= n5\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(n5))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\t{\n\t\tsize, err := m.AmountLimit.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrantAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrantAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GrantAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Expiration != nil {\n\t\tn7, err7 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.Expiration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration):])\n\t\tif err7 != nil {\n\t\t\treturn 0, err7\n\t\t}\n\t\ti -= n7\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(n7))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\t{\n\t\tsize, err := m.AmountLimit.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x3a\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.RawLog) > 0 {\n\t\ti -= len(m.RawLog)\n\t\tcopy(dAtA[i:], m.RawLog)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.RawLog)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Code != 0 {\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(m.Code))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Txhash) > 0 {\n\t\ti -= len(m.Txhash)\n\t\tcopy(dAtA[i:], m.Txhash)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Txhash)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Message) > 0 {\n\t\ti -= len(m.Message)\n\t\tcopy(dAtA[i:], m.Message)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Message)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrantDIDAllowanceRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrantDIDAllowanceRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GrantDIDAllowanceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Expiration != nil {\n\t\tn9, err9 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.Expiration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration):])\n\t\tif err9 != nil {\n\t\t\treturn 0, err9\n\t\t}\n\t\ti -= n9\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(n9))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\t{\n\t\tsize, err := m.AmountLimit.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Did) > 0 {\n\t\ti -= len(m.Did)\n\t\tcopy(dAtA[i:], m.Did)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Did)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GrantDIDAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GrantDIDAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GrantDIDAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Expiration != nil {\n\t\tn11, err11 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.Expiration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration):])\n\t\tif err11 != nil {\n\t\t\treturn 0, err11\n\t\t}\n\t\ti -= n11\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(n11))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\t{\n\t\tsize, err := m.AmountLimit.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x3a\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.RawLog) > 0 {\n\t\ti -= len(m.RawLog)\n\t\tcopy(dAtA[i:], m.RawLog)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.RawLog)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Code != 0 {\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(m.Code))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Txhash) > 0 {\n\t\ti -= len(m.Txhash)\n\t\tcopy(dAtA[i:], m.Txhash)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Txhash)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Message) > 0 {\n\t\ti -= len(m.Message)\n\t\tcopy(dAtA[i:], m.Message)\n\t\ti = encodeVarintFaucet(dAtA, i, uint64(len(m.Message)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintFaucet(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovFaucet(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *FaucetRequestRecord) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.Amount.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tl = len(m.TxHash)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *FaucetRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *FaucetResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Txhash)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tif m.Code != 0 {\n\t\tn += 1 + sovFaucet(uint64(m.Code))\n\t}\n\tl = len(m.RawLog)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.Amount.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\treturn n\n}\n\nfunc (m *InitAccountRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *InitAccountResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Message)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Txhash)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tif m.Code != 0 {\n\t\tn += 1 + sovFaucet(uint64(m.Code))\n\t}\n\tl = len(m.RawLog)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.Amount.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.Exists {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *FaucetInfoResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.Balance.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.RequestCount != 0 {\n\t\tn += 1 + sovFaucet(uint64(m.RequestCount))\n\t}\n\treturn n\n}\n\nfunc (m *GrantAllowanceRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.AmountLimit.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.Expiration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration)\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *GrantAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Message)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Txhash)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tif m.Code != 0 {\n\t\tn += 1 + sovFaucet(uint64(m.Code))\n\t}\n\tl = len(m.RawLog)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.AmountLimit.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.Expiration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration)\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *GrantDIDAllowanceRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Did)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.AmountLimit.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.Expiration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration)\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *GrantDIDAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Message)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Txhash)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tif m.Code != 0 {\n\t\tn += 1 + sovFaucet(uint64(m.Code))\n\t}\n\tl = len(m.RawLog)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\tl = m.AmountLimit.Size()\n\tn += 1 + l + sovFaucet(uint64(l))\n\tif m.Expiration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration)\n\t\tn += 1 + l + sovFaucet(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovFaucet(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozFaucet(x uint64) (n int) {\n\treturn sovFaucet(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *FaucetRequestRecord) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetRequestRecord: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetRequestRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TxHash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TxHash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FaucetRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FaucetResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t}\n\t\t\tm.Code = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Code |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *InitAccountRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: InitAccountRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: InitAccountRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *InitAccountResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: InitAccountResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: InitAccountResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Message = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t}\n\t\t\tm.Code = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Code |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Exists\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Exists = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FaucetInfoResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetInfoResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FaucetInfoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Balance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Balance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RequestCount\", wireType)\n\t\t\t}\n\t\t\tm.RequestCount = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RequestCount |= int32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *GrantAllowanceRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GrantAllowanceRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GrantAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.AmountLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Expiration == nil {\n\t\t\t\tm.Expiration = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.Expiration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *GrantAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GrantAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GrantAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Message = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t}\n\t\t\tm.Code = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Code |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.AmountLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Expiration == nil {\n\t\t\t\tm.Expiration = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.Expiration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *GrantDIDAllowanceRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GrantDIDAllowanceRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GrantDIDAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Did\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Did = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.AmountLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Expiration == nil {\n\t\t\t\tm.Expiration = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.Expiration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *GrantDIDAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GrantDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GrantDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Message\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Message = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Txhash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Txhash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Code\", wireType)\n\t\t\t}\n\t\t\tm.Code = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Code |= uint32(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RawLog\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RawLog = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AmountLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.AmountLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Expiration == nil {\n\t\t\t\tm.Expiration = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.Expiration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFaucet(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipFaucet(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowFaucet\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowFaucet\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthFaucet\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupFaucet\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthFaucet\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthFaucet        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowFaucet          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupFaucet = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "app/faucet.go",
    "content": "package app\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"time\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\t\"github.com/cosmos/cosmos-sdk/server/api\"\n\t\"github.com/cosmos/cosmos-sdk/server/config\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\t\"github.com/cosmos/gogoproto/proto\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tfaucettypes \"github.com/sourcenetwork/sourcehub/app/faucet/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// Faucet constants\nconst (\n\tFaucetRequestAmount            = 1000000000  // 1,000 $OPEN\n\tDefaultAllowanceAmount         = 10000000000 // 10,000 $OPEN\n\tDefaultAllowanceExpirationDays = 30\n)\n\n// getFaucetConfig extracts faucet configuration from app options.\nfunc getFaucetConfig(appOpts servertypes.AppOptions) appparams.FaucetConfig {\n\tvar faucetConfig appparams.FaucetConfig\n\n\tif enableFaucet := appOpts.Get(\"faucet.enable_faucet\"); enableFaucet != nil {\n\t\tif boolVal, ok := enableFaucet.(bool); ok {\n\t\t\tfaucetConfig.EnableFaucet = boolVal\n\t\t}\n\t}\n\n\treturn faucetConfig\n}\n\n// shouldRegisterFaucetRoutes determines if faucet routes should be registered based on configuration.\nfunc shouldRegisterFaucetRoutes(appOpts servertypes.AppOptions) bool {\n\tfaucetConfig := getFaucetConfig(appOpts)\n\treturn faucetConfig.EnableFaucet\n}\n\n// RegisterFaucetRoutes registers the faucet API routes.\nfunc (app *App) RegisterFaucetRoutes(apiSvr *api.Server, apiConfig config.APIConfig, appOpts servertypes.AppOptions) {\n\tif !shouldRegisterFaucetRoutes(appOpts) {\n\t\treturn\n\t}\n\n\tclientCtx := apiSvr.ClientCtx\n\trtr := apiSvr.Router\n\n\trtr.HandleFunc(\"/faucet/info\", app.handleFaucetInfo(clientCtx)).Methods(\"GET\")\n\trtr.HandleFunc(\"/faucet/init-account\", app.handleInitAccount(clientCtx)).Methods(\"POST\")\n\trtr.HandleFunc(\"/faucet/request\", app.handleFaucetRequest(clientCtx)).Methods(\"POST\")\n\trtr.HandleFunc(\"/faucet/grant-allowance\", app.handleGrantAllowance(clientCtx)).Methods(\"POST\")\n\trtr.HandleFunc(\"/faucet/grant-did-allowance\", app.handleGrantDIDAllowance(clientCtx)).Methods(\"POST\")\n}\n\n// zeroFeeTxsAllowed returns true if zero fee transactions are allowed, false otherwise.\nfunc (app *App) zeroFeeTxsAllowed() bool {\n\tctx := sdk.NewContext(app.CommitMultiStore(), cmtproto.Header{}, false, app.Logger())\n\treturn app.HubKeeper != nil && app.HubKeeper.GetChainConfig(ctx).AllowZeroFeeTxs\n}\n\n// hasAddressRequested checks if an address has already requested funds.\nfunc (app *App) hasAddressRequested(address string) bool {\n\tstore := app.BaseApp.CommitMultiStore().GetKVStore(app.GetKey(appparams.FaucetStoreKey))\n\tif store == nil {\n\t\treturn false\n\t}\n\treturn store.Has([]byte(address))\n}\n\n// recordAddressRequested records that an address has requested funds.\nfunc (app *App) recordAddressRequested(address string, amount sdk.Coins, txHash string) error {\n\tstore := app.BaseApp.CommitMultiStore().GetKVStore(app.GetKey(appparams.FaucetStoreKey))\n\tif store == nil {\n\t\treturn fmt.Errorf(\"faucet store not found\")\n\t}\n\n\trequest := &faucettypes.FaucetRequestRecord{\n\t\tAddress: address,\n\t\tAmount:  amount[0],\n\t\tTxHash:  txHash,\n\t}\n\n\tbz, err := proto.Marshal(request)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to marshal faucet request: %w\", err)\n\t}\n\n\tstore.Set([]byte(address), bz)\n\treturn nil\n}\n\n// getRequestCount returns the number of addresses that have requested funds.\nfunc (app *App) getRequestCount() int {\n\tstore := app.BaseApp.CommitMultiStore().GetKVStore(app.GetKey(appparams.FaucetStoreKey))\n\tif store == nil {\n\t\treturn 0\n\t}\n\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\tdefer iterator.Close()\n\n\tcount := 0\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tcount++\n\t}\n\treturn count\n}\n\n// FaucetKeyConfig represents the structure of the faucet key JSON file.\ntype FaucetKeyConfig struct {\n\tMnemonic string `json:\"mnemonic\"`\n\tName     string `json:\"name\"`\n\tAddress  string `json:\"address\"`\n}\n\n// getFaucetKey retrieves the faucet key from the faucet-key.json configuration file.\nfunc (app *App) getFaucetKey() (keyring.Keyring, keyring.Record, error) {\n\tfaucetKeyPath := filepath.Join(DefaultNodeHome, \"config\", \"faucet-key.json\")\n\tif _, err := os.Stat(faucetKeyPath); os.IsNotExist(err) {\n\t\treturn nil, keyring.Record{}, fmt.Errorf(\"faucet key configuration file not found at %s\", faucetKeyPath)\n\t}\n\n\tvar faucetKeyConfig FaucetKeyConfig\n\tfile, err := os.Open(faucetKeyPath)\n\tif err != nil {\n\t\treturn nil, keyring.Record{}, fmt.Errorf(\"failed to open faucet key configuration file: %w\", err)\n\t}\n\tdefer file.Close()\n\n\tif err := json.NewDecoder(file).Decode(&faucetKeyConfig); err != nil {\n\t\treturn nil, keyring.Record{}, fmt.Errorf(\"failed to decode faucet key configuration: %w\", err)\n\t}\n\n\tkb := keyring.NewInMemory(app.appCodec)\n\tinfo, err := kb.NewAccount(faucetKeyConfig.Name, faucetKeyConfig.Mnemonic, \"\", \"m/44'/118'/0'/0/0\", hd.Secp256k1)\n\tif err != nil {\n\t\treturn nil, keyring.Record{}, fmt.Errorf(\"failed to import faucet key: %w\", err)\n\t}\n\n\treturn kb, *info, nil\n}\n\n// handleFaucetRequest handles POST requests to request funds from the faucet.\nfunc (app *App) handleFaucetRequest(clientCtx client.Context) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tvar req faucettypes.FaucetRequest\n\n\t\tif err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n\t\t\thttp.Error(w, \"Invalid request body\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\t_, err := sdk.AccAddressFromBech32(req.Address)\n\t\tif err != nil {\n\t\t\thttp.Error(w, \"Invalid address\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\t// Check if address has already requested funds\n\t\tif app.hasAddressRequested(req.Address) {\n\t\t\thttp.Error(w, \"Address has already requested funds from the faucet\", http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tcoins := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, FaucetRequestAmount))\n\n\t\tkb, faucetInfo, err := app.getFaucetKey()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Faucet not configured: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tfaucetAddress, err := faucetInfo.GetAddress()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet address: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tmsg := banktypes.NewMsgSend(\n\t\t\tfaucetAddress,\n\t\t\tsdk.MustAccAddressFromBech32(req.Address),\n\t\t\tcoins,\n\t\t)\n\n\t\tchainID := clientCtx.ChainID\n\t\tif chainID == \"\" {\n\t\t\tchainID = \"sourcehub-dev\"\n\t\t}\n\t\ttxf := tx.Factory{}.\n\t\t\tWithTxConfig(clientCtx.TxConfig).\n\t\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\t\tWithChainID(chainID).\n\t\t\tWithGas(200000).\n\t\t\tWithKeybase(kb)\n\n\t\t// Only add fees if zero fee transactions are not allowed\n\t\tif !app.zeroFeeTxsAllowed() {\n\t\t\ttxf = txf.WithFees(\"200uopen\")\n\t\t}\n\n\t\tfaucetAccount, err := clientCtx.AccountRetriever.GetAccount(clientCtx, faucetAddress)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet account: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxf = txf.WithAccountNumber(faucetAccount.GetAccountNumber()).\n\t\t\tWithSequence(faucetAccount.GetSequence())\n\n\t\ttxn, err := txf.BuildUnsignedTx(msg)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to build transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\terr = tx.Sign(r.Context(), txf, \"faucet\", txn, true)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to sign transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx())\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to encode transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tres, err := clientCtx.BroadcastTxSync(txBytes)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to broadcast transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tif res.Code == 0 {\n\t\t\tif err := app.recordAddressRequested(req.Address, coins, res.TxHash); err != nil {\n\t\t\t\tfmt.Printf(\"Failed to record faucet request: %v\\n\", err)\n\t\t\t}\n\t\t}\n\n\t\tresponse := &faucettypes.FaucetResponse{\n\t\t\tTxhash:  res.TxHash,\n\t\t\tCode:    res.Code,\n\t\t\tRawLog:  res.RawLog,\n\t\t\tAddress: req.Address,\n\t\t\tAmount:  sdk.NewInt64Coin(appparams.MicroOpenDenom, FaucetRequestAmount),\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\tjson.NewEncoder(w).Encode(response)\n\t}\n}\n\n// handleFaucetInfo handles GET requests to get faucet information.\nfunc (app *App) handleFaucetInfo(clientCtx client.Context) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\t_, faucetInfo, err := app.getFaucetKey()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Faucet not configured: %v\", err), http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\n\t\tfaucetAddress, err := faucetInfo.GetAddress()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet address: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tbankClient := banktypes.NewQueryClient(clientCtx)\n\t\tbalance, err := bankClient.Balance(r.Context(), &banktypes.QueryBalanceRequest{\n\t\t\tAddress: faucetAddress.String(),\n\t\t\tDenom:   appparams.MicroOpenDenom,\n\t\t})\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet balance: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\trequestCount := app.getRequestCount()\n\n\t\tresponse := &faucettypes.FaucetInfoResponse{\n\t\t\tAddress:      faucetAddress.String(),\n\t\t\tBalance:      *balance.Balance,\n\t\t\tRequestCount: int32(requestCount),\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\tjson.NewEncoder(w).Encode(response)\n\t}\n}\n\n// handleInitAccount handles POST requests to initialize an account on chain.\n// Accounts that are not yet registered in the auth module are initialized with 1 uopen.\nfunc (app *App) handleInitAccount(clientCtx client.Context) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tvar req faucettypes.InitAccountRequest\n\n\t\tif err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n\t\t\thttp.Error(w, \"Invalid request body\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\taccAddr, err := sdk.AccAddressFromBech32(req.Address)\n\t\tif err != nil {\n\t\t\thttp.Error(w, \"Invalid address\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\t// Check if account already exists in the auth module\n\t\texistingAccount, err := clientCtx.AccountRetriever.GetAccount(clientCtx, accAddr)\n\t\tif err == nil && existingAccount != nil {\n\t\t\tresponse := &faucettypes.InitAccountResponse{\n\t\t\t\tMessage: \"Account already exists\",\n\t\t\t\tAddress: req.Address,\n\t\t\t\tExists:  true,\n\t\t\t}\n\n\t\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\t\tjson.NewEncoder(w).Encode(response)\n\t\t\treturn\n\t\t}\n\n\t\tkb, faucetInfo, err := app.getFaucetKey()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Faucet not configured: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tfaucetAddress, err := faucetInfo.GetAddress()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet address: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\t// Create a bank send message with 1 uopen to initialize the account\n\t\tcoins := sdk.NewCoins(sdk.NewInt64Coin(appparams.MicroOpenDenom, 1))\n\t\tmsg := banktypes.NewMsgSend(\n\t\t\tfaucetAddress,\n\t\t\taccAddr,\n\t\t\tcoins,\n\t\t)\n\n\t\tchainID := clientCtx.ChainID\n\t\tif chainID == \"\" {\n\t\t\tchainID = \"sourcehub-dev\"\n\t\t}\n\t\ttxf := tx.Factory{}.\n\t\t\tWithTxConfig(clientCtx.TxConfig).\n\t\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\t\tWithChainID(chainID).\n\t\t\tWithGas(200000).\n\t\t\tWithKeybase(kb)\n\n\t\t// Only add fees if zero fee transactions are not allowed\n\t\tif !app.zeroFeeTxsAllowed() {\n\t\t\ttxf = txf.WithFees(\"200uopen\")\n\t\t}\n\n\t\tfaucetAccount, err := clientCtx.AccountRetriever.GetAccount(clientCtx, faucetAddress)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet account: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxf = txf.WithAccountNumber(faucetAccount.GetAccountNumber()).\n\t\t\tWithSequence(faucetAccount.GetSequence())\n\n\t\ttxn, err := txf.BuildUnsignedTx(msg)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to build transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\terr = tx.Sign(r.Context(), txf, \"faucet\", txn, true)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to sign transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx())\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to encode transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tres, err := clientCtx.BroadcastTxSync(txBytes)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to broadcast transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tresponse := &faucettypes.InitAccountResponse{\n\t\t\tMessage: \"Account initialized successfully\",\n\t\t\tTxhash:  res.TxHash,\n\t\t\tCode:    res.Code,\n\t\t\tRawLog:  res.RawLog,\n\t\t\tAddress: req.Address,\n\t\t\tAmount:  sdk.NewInt64Coin(appparams.MicroOpenDenom, 1),\n\t\t\tExists:  false,\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\tjson.NewEncoder(w).Encode(response)\n\t}\n}\n\n// handleGrantAllowance handles POST requests to grant fee allowances from the faucet.\nfunc (app *App) handleGrantAllowance(clientCtx client.Context) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tvar req faucettypes.GrantAllowanceRequest\n\n\t\tif err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n\t\t\thttp.Error(w, \"Invalid request body\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tgranteeAddr, err := sdk.AccAddressFromBech32(req.Address)\n\t\tif err != nil {\n\t\t\thttp.Error(w, \"Invalid address\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tkb, faucetInfo, err := app.getFaucetKey()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Faucet not configured: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tfaucetAddress, err := faucetInfo.GetAddress()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet address: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tamountLimit := sdk.NewInt64Coin(appparams.MicroOpenDenom, DefaultAllowanceAmount)\n\t\tif !req.AmountLimit.Amount.IsNil() && req.AmountLimit.Amount.IsPositive() {\n\t\t\tamountLimit = req.AmountLimit\n\t\t}\n\n\t\texpiration := time.Now().AddDate(0, 0, DefaultAllowanceExpirationDays)\n\t\tif req.Expiration != nil {\n\t\t\texpiration = *req.Expiration\n\t\t}\n\n\t\t// Create basic allowance\n\t\tspendLimit := sdk.NewCoins(amountLimit)\n\t\tallowance := &feegrant.BasicAllowance{\n\t\t\tSpendLimit: spendLimit,\n\t\t\tExpiration: &expiration,\n\t\t}\n\n\t\tmsg, err := feegrant.NewMsgGrantAllowance(allowance, faucetAddress, granteeAddr)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to create grant allowance message: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tchainID := clientCtx.ChainID\n\t\tif chainID == \"\" {\n\t\t\tchainID = \"sourcehub-dev\"\n\t\t}\n\t\ttxf := tx.Factory{}.\n\t\t\tWithTxConfig(clientCtx.TxConfig).\n\t\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\t\tWithChainID(chainID).\n\t\t\tWithGas(300000).\n\t\t\tWithKeybase(kb)\n\n\t\t// Only add fees if zero fee transactions are not allowed\n\t\tif !app.zeroFeeTxsAllowed() {\n\t\t\ttxf = txf.WithFees(\"300uopen\")\n\t\t}\n\n\t\tfaucetAccount, err := clientCtx.AccountRetriever.GetAccount(clientCtx, faucetAddress)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet account: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxf = txf.WithAccountNumber(faucetAccount.GetAccountNumber()).\n\t\t\tWithSequence(faucetAccount.GetSequence())\n\n\t\ttxn, err := txf.BuildUnsignedTx(msg)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to build transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\terr = tx.Sign(r.Context(), txf, \"faucet\", txn, true)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to sign transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx())\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to encode transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tres, err := clientCtx.BroadcastTxSync(txBytes)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to broadcast transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tresponse := &faucettypes.GrantAllowanceResponse{\n\t\t\tMessage:     \"Fee allowance granted successfully\",\n\t\t\tTxhash:      res.TxHash,\n\t\t\tCode:        res.Code,\n\t\t\tRawLog:      res.RawLog,\n\t\t\tGranter:     faucetAddress.String(),\n\t\t\tGrantee:     req.Address,\n\t\t\tAmountLimit: amountLimit,\n\t\t\tExpiration:  &expiration,\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\tjson.NewEncoder(w).Encode(response)\n\t}\n}\n\n// handleGrantDIDAllowance handles POST requests to grant fee allowances to a DID from the faucet.\nfunc (app *App) handleGrantDIDAllowance(clientCtx client.Context) http.HandlerFunc {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tvar req faucettypes.GrantDIDAllowanceRequest\n\n\t\tif err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n\t\t\thttp.Error(w, \"Invalid request body\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tif req.Did == \"\" || len(req.Did) < 4 || req.Did[:4] != \"did:\" {\n\t\t\thttp.Error(w, \"Invalid DID\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tkb, faucetInfo, err := app.getFaucetKey()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Faucet not configured: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tfaucetAddress, err := faucetInfo.GetAddress()\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet address: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tamountLimit := sdk.NewInt64Coin(appparams.MicroOpenDenom, DefaultAllowanceAmount)\n\t\tif !req.AmountLimit.Amount.IsNil() && req.AmountLimit.Amount.IsPositive() {\n\t\t\tamountLimit = req.AmountLimit\n\t\t}\n\n\t\texpiration := time.Now().AddDate(0, 0, DefaultAllowanceExpirationDays)\n\t\tif req.Expiration != nil {\n\t\t\texpiration = *req.Expiration\n\t\t}\n\n\t\t// Create basic allowance\n\t\tspendLimit := sdk.NewCoins(amountLimit)\n\t\tallowance := &feegrant.BasicAllowance{\n\t\t\tSpendLimit: spendLimit,\n\t\t\tExpiration: &expiration,\n\t\t}\n\n\t\tmsg, err := feegrant.NewMsgGrantDIDAllowance(allowance, faucetAddress, req.Did)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to create grant DID allowance message: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tchainID := clientCtx.ChainID\n\t\tif chainID == \"\" {\n\t\t\tchainID = \"sourcehub-dev\"\n\t\t}\n\t\ttxf := tx.Factory{}.\n\t\t\tWithTxConfig(clientCtx.TxConfig).\n\t\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\t\tWithChainID(chainID).\n\t\t\tWithGas(300000).\n\t\t\tWithKeybase(kb)\n\n\t\t// Only add fees if zero fee transactions are not allowed\n\t\tif !app.zeroFeeTxsAllowed() {\n\t\t\ttxf = txf.WithFees(\"300uopen\")\n\t\t}\n\n\t\tfaucetAccount, err := clientCtx.AccountRetriever.GetAccount(clientCtx, faucetAddress)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to get faucet account: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxf = txf.WithAccountNumber(faucetAccount.GetAccountNumber()).\n\t\t\tWithSequence(faucetAccount.GetSequence())\n\n\t\ttxn, err := txf.BuildUnsignedTx(msg)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to build transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\terr = tx.Sign(r.Context(), txf, \"faucet\", txn, true)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to sign transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx())\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to encode transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tres, err := clientCtx.BroadcastTxSync(txBytes)\n\t\tif err != nil {\n\t\t\thttp.Error(w, fmt.Sprintf(\"Failed to broadcast transaction: %v\", err), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tresponse := &faucettypes.GrantDIDAllowanceResponse{\n\t\t\tMessage:     \"DID fee allowance granted successfully\",\n\t\t\tTxhash:      res.TxHash,\n\t\t\tCode:        res.Code,\n\t\t\tRawLog:      res.RawLog,\n\t\t\tGranter:     faucetAddress.String(),\n\t\t\tGranteeDid:  req.Did,\n\t\t\tAmountLimit: amountLimit,\n\t\t\tExpiration:  &expiration,\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/json\")\n\t\tjson.NewEncoder(w).Encode(response)\n\t}\n}\n"
  },
  {
    "path": "app/genesis.go",
    "content": "package app\n\nimport (\n\t\"encoding/json\"\n)\n\n// GenesisState of the blockchain is represented here as a map of raw json\n// messages key'd by a identifier string.\n// The identifier is used to determine which module genesis information belongs\n// to so it may be appropriately routed during init chain.\n// Within this application default genesis information is retrieved from\n// the ModuleBasicManager which populates json from each BasicModule\n// object provided to it during init.\ntype GenesisState map[string]json.RawMessage\n"
  },
  {
    "path": "app/genesis_account.go",
    "content": "package app\n\nimport (\n\t\"errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n)\n\nvar _ authtypes.GenesisAccount = (*GenesisAccount)(nil)\n\n// GenesisAccount defines a type that implements the GenesisAccount interface\n// to be used for simulation accounts in the genesis state.\ntype GenesisAccount struct {\n\t*authtypes.BaseAccount\n\n\t// vesting account fields\n\tOriginalVesting  sdk.Coins `json:\"original_vesting\" yaml:\"original_vesting\"`   // total vesting coins upon initialization\n\tDelegatedFree    sdk.Coins `json:\"delegated_free\" yaml:\"delegated_free\"`       // delegated vested coins at time of delegation\n\tDelegatedVesting sdk.Coins `json:\"delegated_vesting\" yaml:\"delegated_vesting\"` // delegated vesting coins at time of delegation\n\tStartTime        int64     `json:\"start_time\" yaml:\"start_time\"`               // vesting start time (UNIX Epoch time)\n\tEndTime          int64     `json:\"end_time\" yaml:\"end_time\"`                   // vesting end time (UNIX Epoch time)\n\n\t// module account fields\n\tModuleName        string   `json:\"module_name\" yaml:\"module_name\"`               // name of the module account\n\tModulePermissions []string `json:\"module_permissions\" yaml:\"module_permissions\"` // permissions of module account\n}\n\n// Validate checks for errors on the vesting and module account parameters\nfunc (sga GenesisAccount) Validate() error {\n\tif !sga.OriginalVesting.IsZero() {\n\t\tif sga.StartTime >= sga.EndTime {\n\t\t\treturn errors.New(\"vesting start-time cannot be after or equal to end-time\")\n\t\t}\n\t}\n\n\tif sga.ModuleName != \"\" {\n\t\tma := authtypes.ModuleAccount{\n\t\t\tBaseAccount: sga.BaseAccount, Name: sga.ModuleName, Permissions: sga.ModulePermissions,\n\t\t}\n\t\tif err := ma.Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn sga.BaseAccount.Validate()\n}\n"
  },
  {
    "path": "app/ibc.go",
    "content": "package app\n\nimport (\n\t\"cosmossdk.io/core/appmodule\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tgovv1beta1 \"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\"\n\t\"github.com/cosmos/cosmos-sdk/x/params\"\n\tparamstypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n\tparamproposal \"github.com/cosmos/cosmos-sdk/x/params/types/proposal\"\n\t\"github.com/cosmos/ibc-go/modules/capability\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\tcapabilitytypes \"github.com/cosmos/ibc-go/modules/capability/types\"\n\ticamodule \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts\"\n\ticacontroller \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller\"\n\ticacontrollerkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/keeper\"\n\ticacontrollertypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types\"\n\ticahost \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host\"\n\ticahostkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper\"\n\ticahosttypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types\"\n\ticatypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types\"\n\t\"github.com/cosmos/ibc-go/v10/modules/apps/transfer\"\n\tibctransfer \"github.com/cosmos/ibc-go/v10/modules/apps/transfer\"\n\tibctransferkeeper \"github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper\"\n\tibctransfertypes \"github.com/cosmos/ibc-go/v10/modules/apps/transfer/types\"\n\ttransferv2 \"github.com/cosmos/ibc-go/v10/modules/apps/transfer/v2\"\n\tibc \"github.com/cosmos/ibc-go/v10/modules/core\"\n\tibcclienttypes \"github.com/cosmos/ibc-go/v10/modules/core/02-client/types\"\n\tibcconnectiontypes \"github.com/cosmos/ibc-go/v10/modules/core/03-connection/types\"\n\tporttypes \"github.com/cosmos/ibc-go/v10/modules/core/05-port/types\"\n\tibcapi \"github.com/cosmos/ibc-go/v10/modules/core/api\"\n\tibcexported \"github.com/cosmos/ibc-go/v10/modules/core/exported\"\n\tibckeeper \"github.com/cosmos/ibc-go/v10/modules/core/keeper\"\n\tsolomachine \"github.com/cosmos/ibc-go/v10/modules/light-clients/06-solomachine\"\n\tibctm \"github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// registerIBCModules register IBC keepers and non dependency inject modules.\nfunc (app *App) registerIBCModules() {\n\t// set up non depinject support modules store keys\n\tif err := app.RegisterStores(\n\t\tstoretypes.NewKVStoreKey(capabilitytypes.StoreKey),\n\t\tstoretypes.NewKVStoreKey(ibcexported.StoreKey),\n\t\tstoretypes.NewKVStoreKey(ibctransfertypes.StoreKey),\n\t\tstoretypes.NewKVStoreKey(icahosttypes.StoreKey),\n\t\tstoretypes.NewKVStoreKey(icacontrollertypes.StoreKey),\n\t\tstoretypes.NewKVStoreKey(appparams.FaucetStoreKey),\n\t\tstoretypes.NewMemoryStoreKey(capabilitytypes.MemStoreKey),\n\t\tstoretypes.NewTransientStoreKey(paramstypes.TStoreKey),\n\t); err != nil {\n\t\tpanic(err)\n\t}\n\n\t// register the key tables for legacy param subspaces\n\tkeyTable := ibcclienttypes.ParamKeyTable()\n\tkeyTable.RegisterParamSet(&ibcconnectiontypes.Params{})\n\tapp.ParamsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(keyTable)\n\tapp.ParamsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable())\n\tapp.ParamsKeeper.Subspace(icacontrollertypes.SubModuleName).WithKeyTable(icacontrollertypes.ParamKeyTable())\n\tapp.ParamsKeeper.Subspace(icahosttypes.SubModuleName).WithKeyTable(icahosttypes.ParamKeyTable())\n\n\t// Set capability keeper before GetCapabilityScopedKeeper\n\tapp.CapabilityKeeper = capabilitykeeper.NewKeeper(\n\t\tapp.AppCodec(),\n\t\tapp.GetKey(capabilitytypes.StoreKey),\n\t\tapp.GetMemKey(capabilitytypes.MemStoreKey),\n\t)\n\n\tkeys := app.kvStoreKeys()\n\n\t// Create IBC keeper\n\tapp.IBCKeeper = ibckeeper.NewKeeper(\n\t\tapp.appCodec,\n\t\truntime.NewKVStoreService(keys[ibcexported.StoreKey]),\n\t\tapp.GetSubspace(ibcexported.ModuleName),\n\t\tapp.UpgradeKeeper,\n\t\tauthtypes.NewModuleAddress(govtypes.ModuleName).String(),\n\t)\n\n\t// Register the proposal types\n\t// Deprecated: Avoid adding new handlers, instead use the new proposal flow\n\t// by granting the governance module the right to execute the message.\n\t// See: https://docs.cosmos.network/main/modules/gov#proposal-messages\n\tgovRouter := govv1beta1.NewRouter()\n\tgovRouter.\n\t\tAddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).\n\t\tAddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper))\n\n\t// Set legacy router for backwards compatibility with gov v1beta1\n\tapp.GovKeeper.SetLegacyRouter(govRouter)\n\n\t// Create interchain account keepers\n\tapp.ICAHostKeeper = icahostkeeper.NewKeeper(\n\t\tapp.appCodec,\n\t\truntime.NewKVStoreService(keys[icahosttypes.StoreKey]),\n\t\tapp.GetSubspace(icahosttypes.SubModuleName),\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.AccountKeeper,\n\t\tapp.MsgServiceRouter(),\n\t\tapp.GRPCQueryRouter(),\n\t\tauthtypes.NewModuleAddress(govtypes.ModuleName).String(),\n\t)\n\n\tapp.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(\n\t\tapp.appCodec,\n\t\truntime.NewKVStoreService(keys[icacontrollertypes.StoreKey]),\n\t\tapp.GetSubspace(icacontrollertypes.SubModuleName),\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.MsgServiceRouter(),\n\t\tauthtypes.NewModuleAddress(govtypes.ModuleName).String(),\n\t)\n\n\t// Create IBC transfer keeper\n\tapp.TransferKeeper = ibctransferkeeper.NewKeeper(\n\t\tapp.appCodec,\n\t\truntime.NewKVStoreService(keys[ibctransfertypes.StoreKey]),\n\t\tapp.GetSubspace(ibctransfertypes.ModuleName),\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.IBCKeeper.ChannelKeeper,\n\t\tapp.MsgServiceRouter(),\n\t\tapp.AccountKeeper,\n\t\tapp.BankKeeper,\n\t\tauthtypes.NewModuleAddress(govtypes.ModuleName).String(),\n\t)\n\n\ticaHostIBCModule := icahost.NewIBCModule(app.ICAHostKeeper)\n\ticaHostStack := newICAHostMiddleware(app, app.HubKeeper, icaHostIBCModule)\n\ticaControllerStack := icacontroller.NewIBCMiddleware(app.ICAControllerKeeper)\n\ttransferStack := transfer.NewIBCModule(app.TransferKeeper)\n\n\tibcRouter := porttypes.NewRouter().\n\t\tAddRoute(icahosttypes.SubModuleName, icaHostStack).\n\t\tAddRoute(icacontrollertypes.SubModuleName, icaControllerStack).\n\t\tAddRoute(ibctransfertypes.ModuleName, transferStack)\n\n\tapp.IBCKeeper.SetRouter(ibcRouter)\n\n\t// Create IBC v2 transfer middleware stack\n\tvar ibcv2TransferStack ibcapi.IBCModule\n\tibcv2TransferStack = transferv2.NewIBCModule(app.TransferKeeper)\n\tibcv2Router := ibcapi.NewRouter().AddRoute(ibctransfertypes.PortID, ibcv2TransferStack)\n\tapp.IBCKeeper.SetRouterV2(ibcv2Router)\n\n\t// Light client modules\n\tclientKeeper := app.IBCKeeper.ClientKeeper\n\tstoreProvider := app.IBCKeeper.ClientKeeper.GetStoreProvider()\n\ttmLightClientModule := ibctm.NewLightClientModule(app.appCodec, storeProvider)\n\tclientKeeper.AddRoute(ibctm.ModuleName, &tmLightClientModule)\n\n\t// register IBC modules\n\tif err := app.RegisterModules(\n\t\tibc.NewAppModule(app.IBCKeeper),\n\t\tibctransfer.NewAppModule(app.TransferKeeper),\n\t\ticamodule.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),\n\t\tcapability.NewAppModule(app.appCodec, *app.CapabilityKeeper, false),\n\t\tibctm.NewAppModule(tmLightClientModule),\n\t\tsolomachine.AppModule{},\n\t); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// setDefaultIBCParams is used to set default IBC params until app wiring is fully supported.\nfunc (app *App) setDefaultIBCParams(ctx sdk.Context) {\n\tapp.IBCKeeper.ClientKeeper.SetNextClientSequence(ctx, 0)\n\tapp.IBCKeeper.ConnectionKeeper.SetNextConnectionSequence(ctx, 0)\n\tapp.IBCKeeper.ChannelKeeper.SetNextChannelSequence(ctx, 0)\n\tapp.IBCKeeper.ClientKeeper.SetParams(ctx, ibcclienttypes.DefaultParams())\n\tapp.IBCKeeper.ConnectionKeeper.SetParams(ctx, ibcconnectiontypes.DefaultParams())\n\tapp.ICAControllerKeeper.SetParams(ctx, icacontrollertypes.DefaultParams())\n\t// Enable ICA host and allow ACP msgs to be executed from interchain accounts\n\thostParams := icahosttypes.DefaultParams()\n\thostParams.HostEnabled = true\n\thostParams.AllowMessages = []string{\n\t\t\"/sourcehub.acp.MsgCreatePolicy\",\n\t\t\"/sourcehub.acp.MsgEditPolicy\",\n\t\t\"/sourcehub.acp.MsgCheckAccess\",\n\t\t\"/sourcehub.acp.MsgSignedPolicyCmd\",\n\t\t\"/sourcehub.acp.MsgBearerPolicyCmd\",\n\t\t\"/sourcehub.acp.MsgDirectPolicyCmd\",\n\t}\n\tapp.ICAHostKeeper.SetParams(ctx, hostParams)\n\tapp.TransferKeeper.SetParams(ctx, ibctransfertypes.DefaultParams())\n}\n\n// Since the IBC modules don't support dependency injection, we need to\n// manually register the modules on the client side.\n// This needs to be removed after IBC supports App Wiring.\nfunc RegisterIBC(registry cdctypes.InterfaceRegistry) map[string]appmodule.AppModule {\n\tmodules := map[string]appmodule.AppModule{\n\t\tibcexported.ModuleName:      ibc.AppModule{},\n\t\tibctransfertypes.ModuleName: ibctransfer.AppModule{},\n\t\ticatypes.ModuleName:         icamodule.AppModule{},\n\t\tcapabilitytypes.ModuleName:  capability.AppModule{},\n\t\tibctm.ModuleName:            ibctm.AppModule{},\n\t\tsolomachine.ModuleName:      solomachine.AppModule{},\n\t}\n\n\tfor _, module := range modules {\n\t\tif mod, ok := module.(interface {\n\t\t\tRegisterInterfaces(registry cdctypes.InterfaceRegistry)\n\t\t}); ok {\n\t\t\tmod.RegisterInterfaces(registry)\n\t\t}\n\t}\n\n\treturn modules\n}\n"
  },
  {
    "path": "app/ica_host_middleware.go",
    "content": "package app\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ticatypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types\"\n\tchanneltypes \"github.com/cosmos/ibc-go/v10/modules/core/04-channel/types\"\n\tporttypes \"github.com/cosmos/ibc-go/v10/modules/core/05-port/types\"\n\tibcexported \"github.com/cosmos/ibc-go/v10/modules/core/exported\"\n\n\thubKeeper \"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n)\n\ntype icaHostMiddleware struct {\n\tapp       *App\n\thubKeeper *hubKeeper.Keeper\n\tnext      porttypes.IBCModule\n}\n\nfunc newICAHostMiddleware(app *App, hubKeeper *hubKeeper.Keeper, next porttypes.IBCModule) porttypes.IBCModule {\n\treturn &icaHostMiddleware{\n\t\tapp:       app,\n\t\thubKeeper: hubKeeper,\n\t\tnext:      next,\n\t}\n}\n\nfunc (m *icaHostMiddleware) OnRecvPacket(\n\tctx sdk.Context,\n\tportID string,\n\tpacket channeltypes.Packet,\n\trelayer sdk.AccAddress,\n) ibcexported.Acknowledgement {\n\treturn m.next.OnRecvPacket(ctx, portID, packet, relayer)\n}\n\nfunc (m *icaHostMiddleware) OnAcknowledgementPacket(\n\tctx sdk.Context,\n\tportID string,\n\tpacket channeltypes.Packet,\n\tacknowledgement []byte,\n\trelayer sdk.AccAddress,\n) error {\n\treturn m.next.OnAcknowledgementPacket(ctx, portID, packet, acknowledgement, relayer)\n}\n\nfunc (m *icaHostMiddleware) OnTimeoutPacket(\n\tctx sdk.Context,\n\tportID string,\n\tpacket channeltypes.Packet,\n\trelayer sdk.AccAddress,\n) error {\n\treturn m.next.OnTimeoutPacket(ctx, portID, packet, relayer)\n}\n\nfunc (m *icaHostMiddleware) OnChanOpenInit(\n\tctx sdk.Context,\n\torder channeltypes.Order,\n\tconnectionHops []string,\n\tportID, channelID string,\n\tcounterparty channeltypes.Counterparty,\n\tversion string,\n) (string, error) {\n\treturn m.next.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, counterparty, version)\n}\n\nfunc (m *icaHostMiddleware) OnChanOpenTry(\n\tctx sdk.Context,\n\torder channeltypes.Order,\n\tconnectionHops []string,\n\tportID, channelID string,\n\tcounterparty channeltypes.Counterparty,\n\tcounterpartyVersion string,\n) (string, error) {\n\tversion, err := m.next.OnChanOpenTry(ctx, order, connectionHops, portID, channelID, counterparty, counterpartyVersion)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// Only process ICA host channels during DeliverTx to avoid duplicate processing\n\tif portID == icatypes.HostPortID && len(connectionHops) > 0 && !ctx.IsCheckTx() {\n\t\tif err := m.hubKeeper.HandleICAChannelOpen(\n\t\t\tctx,\n\t\t\tconnectionHops[0],\n\t\t\tcounterparty.PortId,\n\t\t\tm.app.ICAHostKeeper,\n\t\t\tm.app.IBCKeeper.ConnectionKeeper,\n\t\t\tm.app.IBCKeeper.ClientKeeper,\n\t\t); err != nil {\n\t\t\tctx.Logger().Error(\"Failed to handle ICA channel open\", \"error\", err, \"connection_id\", connectionHops[0], \"controller_port_id\", counterparty.PortId)\n\t\t}\n\t}\n\n\treturn version, nil\n}\n\nfunc (m *icaHostMiddleware) OnChanOpenAck(\n\tctx sdk.Context,\n\tportID, channelID, counterpartyChannelID, counterpartyVersion string,\n) error {\n\treturn m.next.OnChanOpenAck(ctx, portID, channelID, counterpartyChannelID, counterpartyVersion)\n}\n\nfunc (m *icaHostMiddleware) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string) error {\n\treturn m.next.OnChanOpenConfirm(ctx, portID, channelID)\n}\n\nfunc (m *icaHostMiddleware) OnChanCloseInit(ctx sdk.Context, portID, channelID string) error {\n\treturn m.next.OnChanCloseInit(ctx, portID, channelID)\n}\n\nfunc (m *icaHostMiddleware) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string) error {\n\treturn m.next.OnChanCloseConfirm(ctx, portID, channelID)\n}\n"
  },
  {
    "path": "app/lanes/priority_lane.go",
    "content": "package lanes\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/skip-mev/block-sdk/v2/block/base\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\nconst (\n\t// LaneName defines the name of the priority lane.\n\tLaneName = \"priority\"\n)\n\n// NewPriorityLane returns a new priority lane.\nfunc NewPriorityLane[C comparable](\n\tcfg base.LaneConfig,\n\ttxPriority base.TxPriority[C],\n\tmatchFn base.MatchHandler,\n) *base.BaseLane {\n\toptions := []base.LaneOption{\n\t\tbase.WithMatchHandler(matchFn),\n\t\tbase.WithMempoolConfigs[C](cfg, txPriority),\n\t}\n\n\tlane, err := base.NewBaseLane(\n\t\tcfg,\n\t\tLaneName,\n\t\toptions...,\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn lane\n}\n\n// TxPriority defines a transaction prioritization strategy for the priority lane.\n// Transactions are ranked by priority group and gas price (higher is better).\nfunc TxPriority() base.TxPriority[string] {\n\treturn base.TxPriority[string]{\n\t\tGetTxPriority: func(_ context.Context, tx sdk.Tx) string {\n\t\t\tpriorityGroup := getPriorityGroup(tx)\n\t\t\tgasPrice := getGasPrice(tx)\n\t\t\tgasPriceStr := formatGasPrice(gasPrice)\n\t\t\treturn priorityGroup + \":\" + gasPriceStr\n\t\t},\n\t\tCompare: func(a, b string) int {\n\t\t\tif a > b {\n\t\t\t\treturn 1\n\t\t\t} else if a < b {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t},\n\t\tMinValue: \"0:00000000000000000000000000000000\",\n\t}\n}\n\n// getPriorityGroup returns a string that defines the transaction priority.\n// Prioritizes transactions based on the modules their messages belong to.\nfunc getPriorityGroup(tx sdk.Tx) string {\n\tmsgs := tx.GetMsgs()\n\tif len(msgs) == 0 {\n\t\treturn \"0\"\n\t}\n\t// Start with highest possible priority and reduce txPriority based on the found messages,\n\t// so that the system can not be abused by sending a mix or high and low priority messages\n\tminPriority := \"3\"\n\tfor _, msg := range msgs {\n\t\tmsgType := sdk.MsgTypeURL(msg)\n\t\tswitch {\n\t\tcase strings.HasPrefix(msgType, \"/sourcehub.acp.\"):\n\t\t\t// Keep minPriority at 3 for acp module messages\n\t\tcase strings.HasPrefix(msgType, \"/sourcehub.tier.\"):\n\t\t\t// Reduce minPriority to 2 if tier module message found\n\t\t\tif minPriority > \"2\" {\n\t\t\t\tminPriority = \"2\"\n\t\t\t}\n\t\tcase strings.HasPrefix(msgType, \"/sourcehub.bulletin.\"):\n\t\t\t// Reduce minPriority to 1 if bulletin module message found\n\t\t\tif minPriority > \"1\" {\n\t\t\t\tminPriority = \"1\"\n\t\t\t}\n\t\tdefault:\n\t\t\t// Return lowest priority if found a message from other modules\n\t\t\treturn \"0\"\n\t\t}\n\t}\n\t// Return the lowest priority based on the messages found in the tx\n\treturn minPriority\n}\n\n// getGasPrice extracts the gas price from the transaction.\nfunc getGasPrice(tx sdk.Tx) math.LegacyDec {\n\t// Cast tx to FeeTx, return LegacyZeroDec if fails\n\tfeeTx, ok := tx.(sdk.FeeTx)\n\tif !ok {\n\t\treturn math.LegacyZeroDec()\n\t}\n\t// Get the fee and gas limit, return LegacyZeroDec if invalid\n\tfee := feeTx.GetFee()\n\tgasLimit := feeTx.GetGas()\n\tif gasLimit == 0 || len(fee) == 0 {\n\t\treturn math.LegacyZeroDec()\n\t}\n\t// Calculate and return the gas price (e.g, total fee / gas limit)\n\treturn math.LegacyNewDecFromInt(fee.AmountOf(appparams.DefaultBondDenom)).Quo(math.LegacyNewDec(int64(gasLimit)))\n}\n\n// formatGasPrice ensures lexicographic sorting of gas prices.\nfunc formatGasPrice(gasPrice math.LegacyDec) string {\n\t// Convert to string and remove the decimal point\n\tgasPriceStr := strings.ReplaceAll(gasPrice.String(), \".\", \"\")\n\t// Ensure gas price does not exceed 32 characters\n\tif len(gasPriceStr) > 32 {\n\t\tgasPriceStr = gasPriceStr[:32]\n\t}\n\t// Ensure proper zero-padding to 32 characters\n\treturn fmt.Sprintf(\"%032s\", gasPriceStr)\n}\n"
  },
  {
    "path": "app/lanes/priority_lane_test.go",
    "content": "package lanes\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\t\"github.com/stretchr/testify/require\"\n\t\"google.golang.org/protobuf/proto\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype mockTx struct {\n\tmsgs     []sdk.Msg\n\tfee      sdk.Coins\n\tgasLimit uint64\n\tnonce    uint64\n}\n\nfunc (tx mockTx) GetMsgs() []sdk.Msg { return tx.msgs }\nfunc (tx mockTx) GetMsgsV2() ([]proto.Message, error) {\n\tprotoMsgs := make([]proto.Message, 0, len(tx.msgs))\n\tfor _, msg := range tx.msgs {\n\t\tpMsg, ok := msg.(proto.Message)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"message %T does not implement proto.Message\", msg)\n\t\t}\n\t\tprotoMsgs = append(protoMsgs, pMsg)\n\t}\n\treturn protoMsgs, nil\n}\nfunc (tx mockTx) ValidateBasic() error { return nil }\nfunc (tx mockTx) GetGas() uint64       { return tx.gasLimit }\nfunc (tx mockTx) GetFee() sdk.Coins    { return tx.fee }\nfunc (tx mockTx) FeePayer() []byte     { return []byte(\"\") }\nfunc (tx mockTx) FeeGranter() []byte   { return []byte(\"\") }\n\nvar _ sdk.FeeTx = mockTx{}\n\nfunc setupTest(t testing.TB) sdk.Context {\n\tstoreKey := storetypes.NewKVStoreKey(acptypes.StoreKey)\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\treturn ctx\n}\n\nfunc TestTxPriority(t *testing.T) {\n\tctx := setupTest(t)\n\n\tacpMsg := &acptypes.MsgBearerPolicyCmd{}\n\ttx1 := mockTx{\n\t\tmsgs:     []sdk.Msg{acpMsg},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 5000)),\n\t\tgasLimit: 10000,\n\t}\n\n\ttierMsg := &tiertypes.MsgLock{}\n\ttx2 := mockTx{\n\t\tmsgs:     []sdk.Msg{tierMsg},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 10000)),\n\t\tgasLimit: 10000,\n\t}\n\n\tbulletinMsg := &bulletintypes.MsgCreatePost{}\n\ttx3 := mockTx{\n\t\tmsgs:     []sdk.Msg{bulletinMsg},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 20000)),\n\t\tgasLimit: 10000,\n\t}\n\n\tstakingMsg := &stakingtypes.MsgDelegate{}\n\ttx4 := mockTx{\n\t\tmsgs:     []sdk.Msg{stakingMsg},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 30000)),\n\t\tgasLimit: 10000,\n\t}\n\n\tpriority1 := TxPriority().GetTxPriority(ctx, tx1)\n\tpriority2 := TxPriority().GetTxPriority(ctx, tx2)\n\tpriority3 := TxPriority().GetTxPriority(ctx, tx3)\n\tpriority4 := TxPriority().GetTxPriority(ctx, tx4)\n\n\trequire.True(t, priority1 > priority2, \"Acp transaction should have higher priority than Tier transaction\")\n\trequire.True(t, priority2 > priority3, \"Tier transaction should have higher priority than Bulletin transaction\")\n\trequire.True(t, priority3 > priority4, \"Bulletin transaction should have higher priority than any other transaction\")\n}\n\nfunc TestGasPriceSorting(t *testing.T) {\n\tctx := setupTest(t)\n\n\ttx1 := mockTx{\n\t\tmsgs:     []sdk.Msg{&acptypes.MsgCreatePolicy{}},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 50000)), // 50,000 uopen\n\t\tgasLimit: 50000,                                                             // gas price = 50,000 / 50,000 = 1.0 uopen\n\t}\n\n\ttx2 := mockTx{\n\t\tmsgs:     []sdk.Msg{&acptypes.MsgCreatePolicy{}},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 30000)), // 30,000 uopen\n\t\tgasLimit: 10000,                                                             // gas price = 30,000 / 10,000 = 3.0 uopen\n\t}\n\n\ttx3 := mockTx{\n\t\tmsgs:     []sdk.Msg{&acptypes.MsgCreatePolicy{}},\n\t\tfee:      sdk.NewCoins(sdk.NewInt64Coin(appparams.DefaultBondDenom, 10000)), // 10,000 uopen\n\t\tgasLimit: 20000,                                                             // gas price = 10,000 / 20,000 = 0.5 uopen\n\t}\n\n\tpriority1 := TxPriority().GetTxPriority(ctx, tx1) // 1.0 uopen\n\tpriority2 := TxPriority().GetTxPriority(ctx, tx2) // 3.0 uopen\n\tpriority3 := TxPriority().GetTxPriority(ctx, tx3) // 0.5 uopen\n\n\trequire.True(t, priority2 > priority1, \"Tx with 3.0 gas price should have higher priority than tx with 1.0 gas price\")\n\trequire.True(t, priority1 > priority3, \"Tx with 1.0 gas price should have higher priority than tx with 0.5 gas price\")\n}\n"
  },
  {
    "path": "app/lanes.go",
    "content": "package app\n\nimport (\n\t\"cosmossdk.io/math\"\n\n\tsignerextraction \"github.com/skip-mev/block-sdk/v2/adapters/signer_extraction_adapter\"\n\t\"github.com/skip-mev/block-sdk/v2/block/base\"\n\t\"github.com/sourcenetwork/sourcehub/app/lanes\"\n)\n\n// CreatePriorityLane creates a lane that matches all txs and occupies 100% of the block space.\nfunc CreatePriorityLane(app *App) (priorityLane *base.BaseLane) {\n\t// signerAdapter is used to extract the expected signers from a transaction\n\tsignerAdapter := signerextraction.NewDefaultAdapter()\n\n\t// Create a priority lane configuration that occupies 100% of the block space\n\tpriorityLaneConfig := base.LaneConfig{\n\t\tLogger:          app.Logger(),\n\t\tTxEncoder:       app.txConfig.TxEncoder(),\n\t\tTxDecoder:       app.txConfig.TxDecoder(),\n\t\tMaxBlockSpace:   math.LegacyMustNewDecFromStr(\"1.0\"),\n\t\tSignerExtractor: signerAdapter,\n\t\tMaxTxs:          0,\n\t}\n\n\t// Create TxPriority for the priority lane\n\tpriorityLaneTxPriority := lanes.TxPriority()\n\n\t// Use default match handler to match all transactions\n\tdefaultLaneMatchHandler := base.DefaultMatchHandler()\n\n\t// Create priority lane\n\tpriorityLane = lanes.NewPriorityLane(\n\t\tpriorityLaneConfig,\n\t\tpriorityLaneTxPriority,\n\t\tdefaultLaneMatchHandler,\n\t)\n\n\treturn priorityLane\n}\n"
  },
  {
    "path": "app/metrics/constants.go",
    "content": "package metrics\n\nconst (\n\t// global keys\n\tApp      = \"sourcehub\"\n\tCount    = \"count\"\n\tError    = \"error\"\n\tErrors   = \"errors\"\n\tInternal = \"internal\"\n\tLatency  = \"latency\"\n\tMethod   = \"method\"\n\tMsg      = \"msg\"\n\tQuery    = \"query\"\n\tStatus   = \"status\"\n\tTx       = \"tx\"\n\n\t// Units\n\tSecondsUnit   = \"seconds\"\n\tCounterSuffix = \"total\"\n\n\t// Labels\n\tHostnameLabel = \"host\"\n\tChainIDLabel  = \"chain_id\"\n\tModuleLabel   = \"module\"\n\tEndpointLabel = \"endpoint\"\n\n\t// abci methods\n\tPrepareProposal = \"prepare_proposal\"\n\tProcessProposal = \"process_proposal\"\n\n\t// tier keys\n\tAmount                 = \"amount\"\n\tAutoLockEnabled        = \"auto_lock_enabled\"\n\tCreditUtilization      = \"credit_utilization\"\n\tCreationHeight         = \"creation_height\"\n\tDelegator              = \"delegator\"\n\tDeveloper              = \"developer\"\n\tDeveloperPoolBalance   = \"developer_pool_balance\"\n\tDstValidator           = \"dst_validator\"\n\tEpoch                  = \"epoch\"\n\tInsurancePoolBalance   = \"insurance_pool_balance\"\n\tTotalCredits           = \"total_credits\"\n\tTotalDevGranted        = \"total_dev_granted\"\n\tTotalLocked            = \"total_locked\"\n\tSrcValidator           = \"src_validator\"\n\tSubscriptionAmount     = \"subscription_amount\"\n\tSubscriptionExpiration = \"subscription_expiration\"\n\tSubscriptionPeriod     = \"subscription_period\"\n\tUserDid                = \"user_did\"\n\tValidator              = \"validator\"\n\n\t// tier methods\n\tAddUserSubscription    = \"add_user_subscription\"\n\tBurnAllCredits         = \"burn_all_credits\"\n\tCancelUnlocking        = \"cancel_unlocking\"\n\tCheckDeveloperCredits  = \"check_developer_credits\"\n\tCompleteUnlocking      = \"complete_unlocking\"\n\tCreateDeveloper        = \"create_developer\"\n\tHandleDoubleSign       = \"handle_double_sign\"\n\tHandleMissingSignature = \"handle_missing_signature\"\n\tLock                   = \"lock\"\n\tLockAuto               = \"lock_auto\"\n\tProcessRewards         = \"process_rewards\"\n\tRedelegate             = \"redelegate\"\n\tRemoveDeveloper        = \"remove_developer\"\n\tRemoveUserSubscription = \"remove_user_subscription\"\n\tResetAllCredits        = \"reset_all_credits\"\n\tUnlock                 = \"unlock\"\n\tUpdateDeveloper        = \"update_developer\"\n\tUpdateUserSubscription = \"update_user_subscription\"\n\n\t// ChainIDEnvVar represents the environment variable, which when set,\n\t// is used as the chain id value for metric collection\n\tChainIDEnvVar = \"CHAIN_ID\"\n)\n\nvar (\n\tSourcehubMethodSeconds     []string = []string{App, Method, SecondsUnit}\n\tSourcehubMethodTotal       []string = []string{App, Method, CounterSuffix}\n\tSourcehubMethodErrorsTotal []string = []string{App, Method, Errors, CounterSuffix}\n\n\tSourcehubMsgSeconds     []string = []string{App, Msg, SecondsUnit}\n\tSourcehubMsgTotal       []string = []string{App, Msg, CounterSuffix}\n\tSourcehubMsgErrorsTotal []string = []string{App, Msg, Errors, CounterSuffix}\n\n\tSourcehubQuerySeconds     []string = []string{App, Query, SecondsUnit}\n\tSourcehubQueryTotal       []string = []string{App, Query, CounterSuffix}\n\tSourcehubQueryErrorsTotal []string = []string{App, Query, Errors, CounterSuffix}\n\n\tSourcehubInternalErrorsTotal []string = []string{App, Errors, Internal, CounterSuffix}\n)\n"
  },
  {
    "path": "app/metrics/labels.go",
    "content": "package metrics\n\nimport (\n\t\"os\"\n\n\t\"github.com/hashicorp/go-metrics\"\n)\n\n// commonLabels models a set of labels which should be added\n// to every Sourcehub meter\nvar commonLabels []metrics.Label\n\n// AddCommonLabel appends the given name, value pair\n// to the list of labels which are added to all Sourcehub meters\nfunc AddCommonLabel(name, value string) {\n\tlabel := metrics.Label{\n\t\tName:  name,\n\t\tValue: value,\n\t}\n\tcommonLabels = append(commonLabels, label)\n}\n\nfunc init() {\n\tname, err := os.Hostname()\n\tif err != nil {\n\t\tpanic(\"could not recover hostname\")\n\t}\n\tAddCommonLabel(HostnameLabel, name)\n\n\tchainIDVal := os.Getenv(ChainIDEnvVar)\n\tif chainIDVal != \"\" {\n\t\tAddCommonLabel(ChainIDLabel, chainIDVal)\n\t}\n}\n"
  },
  {
    "path": "app/metrics/utils.go",
    "content": "package metrics\n\nimport (\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tgometrics \"github.com/hashicorp/go-metrics\"\n)\n\ntype Label = gometrics.Label\n\n// NewLabel creates new Label with given name and value.\nfunc NewLabel(name, value string) Label {\n\treturn Label{Name: name, Value: value}\n}\n\n// ModuleMeasureSinceWithCounter emits latency and counter metrics for a module method with common and extra labels.\nfunc ModuleMeasureSinceWithCounter(moduleName, methodName string, start time.Time, err error, extraLabels []Label) {\n\tif !telemetry.IsTelemetryEnabled() {\n\t\treturn\n\t}\n\n\tlabels := []Label{\n\t\t{Name: ModuleLabel, Value: moduleName},\n\t\t{Name: EndpointLabel, Value: methodName},\n\t}\n\tlabels = append(labels, commonLabels...)\n\tlabels = append(labels, extraLabels...)\n\n\t// Track message handling latency\n\tgometrics.MeasureSinceWithLabels(SourcehubMethodSeconds, start, labels)\n\n\t// Increment message count\n\tgometrics.IncrCounterWithLabels(SourcehubMethodTotal, 1, labels)\n\n\tif err != nil {\n\t\t// Increment error count\n\t\tgometrics.IncrCounterWithLabels(SourcehubMethodErrorsTotal, 1, labels)\n\t}\n}\n\n// ModuleIncrInternalErrorCounter tracks internal method errors for a module.\nfunc ModuleIncrInternalErrorCounter(moduleName, methodName string, err error) {\n\tif !telemetry.IsTelemetryEnabled() {\n\t\treturn\n\t}\n\n\tlabels := []Label{\n\t\t{Name: ModuleLabel, Value: moduleName},\n\t\t{Name: EndpointLabel, Value: methodName},\n\t}\n\tlabels = append(labels, commonLabels...)\n\n\tif err != nil {\n\t\tgometrics.IncrCounterWithLabels(SourcehubInternalErrorsTotal, 1, labels)\n\t}\n}\n"
  },
  {
    "path": "app/metrics/wrapper.go",
    "content": "package metrics\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tgometrics \"github.com/hashicorp/go-metrics\"\n\tgrpc \"google.golang.org/grpc\"\n)\n\n// WrapMsgServerServiceDescriptor wraps a message service descriptor and adds metric instrumentation.\nfunc WrapMsgServerServiceDescriptor(moduleName string, desc grpc.ServiceDesc) grpc.ServiceDesc {\n\tmethods := make([]grpc.MethodDesc, 0, len(desc.Methods))\n\tfor _, method := range desc.Methods {\n\t\thandler := wrapMsgServerHandler(moduleName, method.MethodName,\n\t\t\tSourcehubMsgSeconds, SourcehubMsgTotal, SourcehubMsgErrorsTotal,\n\t\t\tmethod.Handler)\n\t\tmethod.Handler = handler\n\t\tmethods = append(methods, method)\n\t}\n\tdesc.Methods = methods\n\treturn desc\n}\n\n// WrapQueryServiceDescriptor wraps a query service descriptor and adds metric instrumentation.\nfunc WrapQueryServiceDescriptor(moduleName string, desc grpc.ServiceDesc) grpc.ServiceDesc {\n\tmethods := make([]grpc.MethodDesc, 0, len(desc.Methods))\n\tfor _, method := range desc.Methods {\n\t\thandler := wrapMsgServerHandler(moduleName, method.MethodName,\n\t\t\tSourcehubQuerySeconds, SourcehubQueryTotal, SourcehubQueryErrorsTotal,\n\t\t\tmethod.Handler)\n\t\tmethod.Handler = handler\n\t\tmethods = append(methods, method)\n\t}\n\tdesc.Methods = methods\n\treturn desc\n}\n\n// wrapMsgServerHandler wraps an individual GRPC server method handler with metric collection logic.\n// It tracks the number of processed messages, error count, and message handling latency.\nfunc wrapMsgServerHandler(\n\tmoduleName, methodName string,\n\tlatencyMetricName, countMetricName, errMetricName []string,\n\thandler grpc.MethodHandler,\n) grpc.MethodHandler {\n\treturn func(\n\t\tsrv interface{},\n\t\tctx context.Context,\n\t\tdec func(interface{}) error,\n\t\tinterceptor grpc.UnaryServerInterceptor,\n\t) (interface{}, error) {\n\t\tif !telemetry.IsTelemetryEnabled() {\n\t\t\treturn handler(srv, ctx, dec, interceptor)\n\t\t}\n\n\t\tlabels := []Label{\n\t\t\t{Name: ModuleLabel, Value: moduleName},\n\t\t\t{Name: EndpointLabel, Value: methodName},\n\t\t}\n\t\tlabels = append(labels, commonLabels...)\n\n\t\t// Track message handling latency\n\t\tnow := time.Now()\n\t\tdefer gometrics.MeasureSinceWithLabels(latencyMetricName, now, labels)\n\n\t\t// Increment message count\n\t\tgometrics.IncrCounterWithLabels(countMetricName, 1, labels)\n\n\t\tresp, err := handler(srv, ctx, dec, interceptor)\n\t\tif err != nil {\n\t\t\t// Increment error count\n\t\t\tgometrics.IncrCounterWithLabels(errMetricName, 1, labels)\n\t\t}\n\t\treturn resp, err\n\t}\n}\n"
  },
  {
    "path": "app/mint.go",
    "content": "package app\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/log\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/mint\"\n\tmintkeeper \"github.com/cosmos/cosmos-sdk/x/mint/keeper\"\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n)\n\nvar _ appmodule.AppModule = CustomMintModule{}\n\n// CustomMintModule overrides default mint module.\ntype CustomMintModule struct {\n\t*mint.AppModule\n\tmintKeeper mintkeeper.Keeper\n\ttierKeeper *tierkeeper.Keeper\n\tcdc        codec.Codec\n}\n\n// NewCustomMintModule creates new custom mint module instance.\nfunc NewCustomMintModule(\n\toldMintModule mint.AppModule,\n\tmintKeeper mintkeeper.Keeper,\n\ttierKeeper *tierkeeper.Keeper,\n\tcdc codec.Codec,\n) CustomMintModule {\n\treturn CustomMintModule{\n\t\tAppModule:  &oldMintModule,\n\t\tmintKeeper: mintKeeper,\n\t\ttierKeeper: tierKeeper,\n\t\tcdc:        cdc,\n\t}\n}\n\n// CustomMintQueryServer overrides default mint query server.\ntype CustomMintQueryServer struct {\n\tminttypes.QueryServer\n\tmintKeeper mintkeeper.Keeper\n\ttierKeeper *tierkeeper.Keeper\n\tlogger     log.Logger\n}\n\n// NewCustomMintQueryServer creates new custom mint query server instance.\nfunc NewCustomMintQueryServer(\n\tdefaultQueryServer minttypes.QueryServer,\n\tmintKeeper mintkeeper.Keeper,\n\ttierKeeper *tierkeeper.Keeper,\n\tlogger log.Logger,\n) minttypes.QueryServer {\n\treturn &CustomMintQueryServer{\n\t\tQueryServer: defaultQueryServer,\n\t\tmintKeeper:  mintKeeper,\n\t\ttierKeeper:  tierKeeper,\n\t\tlogger:      logger,\n\t}\n}\n\nfunc getDelegatorStakeRatio(ctx context.Context, k *tierkeeper.Keeper) (math.LegacyDec, error) {\n\t// Get the total bonded stake\n\ttotalStake, err := k.GetStakingKeeper().TotalBondedTokens(ctx)\n\tif err != nil {\n\t\treturn math.LegacyOneDec(), err\n\t}\n\n\t// Get developer stake and fees\n\tdevStake := k.GetTotalLockupsAmount(ctx)\n\tparams := k.GetParams(ctx)\n\ttotalFees := params.DeveloperPoolFee + params.InsurancePoolFee\n\tdevStakeMinusFees := devStake.MulRaw(100 - totalFees).QuoRaw(100)\n\n\t// Calculate the delegator stake\n\tdelStake, err := totalStake.SafeSub(devStakeMinusFees)\n\tif err != nil {\n\t\treturn math.LegacyOneDec(), err\n\t}\n\n\tif !totalStake.IsPositive() || !delStake.IsPositive() {\n\t\treturn math.LegacyOneDec(), fmt.Errorf(\"non-positive totalStake/delStake\")\n\t}\n\n\t// Calculate the delegator stake ratio\n\tdelStakeRatio := delStake.ToLegacyDec().Quo(totalStake.ToLegacyDec())\n\n\treturn delStakeRatio, nil\n}\n\n// Inflation overrides the default mint module inflation query.\nfunc (q CustomMintQueryServer) Inflation(ctx context.Context, _ *minttypes.QueryInflationRequest) (*minttypes.QueryInflationResponse, error) {\n\t// Fetch the minter state\n\tminter, err := q.mintKeeper.Minter.Get(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Get the delegator stake ratio\n\tdelStakeRatio, err := getDelegatorStakeRatio(ctx, q.tierKeeper)\n\tif err != nil {\n\t\tq.logger.Info(\"Returning default inflation\", \"inflation\", minter.Inflation)\n\t\treturn &minttypes.QueryInflationResponse{Inflation: minter.Inflation}, nil\n\t}\n\n\t// Calculate the effective inflation\n\teffectiveInflation := minter.Inflation.Mul(delStakeRatio)\n\tq.logger.Info(\"Returning effective inflation\", \"inflation\", effectiveInflation)\n\n\treturn &minttypes.QueryInflationResponse{Inflation: effectiveInflation}, nil\n}\n\n// RegisterServices registers default message server and custom query server.\nfunc (cm CustomMintModule) RegisterServices(cfg module.Configurator) {\n\tminttypes.RegisterMsgServer(cfg.MsgServer(), mintkeeper.NewMsgServerImpl(cm.mintKeeper))\n\tdefaultMintQueryServer := mintkeeper.NewQueryServerImpl(cm.mintKeeper)\n\tcustomMintQueryServer := NewCustomMintQueryServer(defaultMintQueryServer, cm.mintKeeper, cm.tierKeeper, cm.tierKeeper.Logger())\n\tminttypes.RegisterQueryServer(cfg.QueryServer(), customMintQueryServer)\n}\n\n// InitGenesis initializes default state for the mint keeper and overrides the default params.\nfunc (cm CustomMintModule) InitGenesis(ctx context.Context, cdc codec.JSONCodec, data json.RawMessage) {\n\tgenesisState := minttypes.DefaultGenesisState()\n\n\tgenesisState.Minter = minttypes.DefaultInitialMinter()\n\tgenesisState.Minter.Inflation = math.LegacyMustNewDecFromStr(appparams.InitialInflation)\n\tgenesisState.Params = minttypes.DefaultParams()\n\tgenesisState.Params.MintDenom = appparams.DefaultBondDenom\n\tgenesisState.Params.BlocksPerYear = appparams.BlocksPerYear\n\tgenesisState.Params.InflationMin = math.LegacyMustNewDecFromStr(appparams.InflationMin)\n\tgenesisState.Params.InflationMax = math.LegacyMustNewDecFromStr(appparams.InflationMax)\n\tgenesisState.Params.InflationRateChange = math.LegacyMustNewDecFromStr(appparams.InflationRateChange)\n\n\tif err := cm.mintKeeper.Minter.Set(ctx, genesisState.Minter); err != nil {\n\t\tpanic(err)\n\t}\n\n\tif err := cm.mintKeeper.Params.Set(ctx, genesisState.Params); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// registerCustomMintModule registers the custom mint module.\nfunc (app *App) registerCustomMintModule() CustomMintModule {\n\tmintStoreKey := storetypes.NewKVStoreKey(minttypes.StoreKey)\n\tif err := app.RegisterStores(mintStoreKey); err != nil {\n\t\tpanic(err)\n\t}\n\n\tapp.MintKeeper = mintkeeper.NewKeeper(\n\t\tapp.appCodec,\n\t\truntime.NewKVStoreService(app.GetKey(minttypes.StoreKey)),\n\t\tapp.StakingKeeper,\n\t\tapp.AccountKeeper,\n\t\tapp.BankKeeper,\n\t\tauthtypes.FeeCollectorName,\n\t\tauthtypes.NewModuleAddress(govtypes.ModuleName).String(),\n\t)\n\n\tdefaultMintModule := mint.NewAppModule(app.appCodec, app.MintKeeper, app.AccountKeeper, nil, nil)\n\tcustomMintModule := NewCustomMintModule(defaultMintModule, app.MintKeeper, app.TierKeeper, app.appCodec)\n\tif err := app.RegisterModules(customMintModule); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn customMintModule\n}\n\n// RegisterMintInterfaces registers interfaces for the mint module and returns mint.AppModule.\nfunc RegisterMintInterfaces(registry codectypes.InterfaceRegistry) appmodule.AppModule {\n\tmodule := mint.AppModule{}\n\tmodule.RegisterInterfaces(registry)\n\treturn module\n}\n"
  },
  {
    "path": "app/mint_test.go",
    "content": "package app\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/stretchr/testify/suite\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tmintkeeper \"github.com/cosmos/cosmos-sdk/x/mint/keeper\"\n\tminttestutil \"github.com/cosmos/cosmos-sdk/x/mint/testutil\"\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n)\n\ntype MintTestSuite struct {\n\tsuite.Suite\n\n\tbankKeeper       *test.MockBankKeeper\n\tdistrKeeper      *test.MockDistributionKeeper\n\tfeegrantKeeper   *test.MockFeegrantKeeper\n\tstakingKeeper    *test.MockStakingKeeper\n\tepochsKeeper     *test.MockEpochsKeeper\n\ttierKeeper       tierkeeper.Keeper\n\tmintKeeper       mintkeeper.Keeper\n\tqueryClient      minttypes.QueryClient\n\tencCfg           test.EncodingConfig\n\tctx              sdk.Context\n\tauthorityAccount sdk.AccAddress\n\tlogBuffer        *bytes.Buffer\n\tlogger           log.Logger\n}\n\nfunc TestMintTestSuite(t *testing.T) {\n\tsuite.Run(t, new(MintTestSuite))\n}\n\nfunc (suite *MintTestSuite) SetupTest() {\n\tsdkConfig := sdk.GetConfig()\n\tsdkConfig.SetBech32PrefixForAccount(\"source\", \"sourcepub\")\n\tsdkConfig.SetBech32PrefixForValidator(\"sourcevaloper\", \"sourcevaloperpub\")\n\tsdkConfig.SetBech32PrefixForConsensusNode(\"sourcevalcons\", \"sourcevalconspub\")\n\n\tkey := storetypes.NewKVStoreKey(minttypes.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(suite.T(), key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tsuite.ctx = testCtx.Ctx\n\tsuite.encCfg = test.CreateTestEncodingConfig()\n\tsuite.logBuffer = new(bytes.Buffer)\n\tsuite.logger = log.NewLogger(suite.logBuffer)\n\n\tctrl := gomock.NewController(suite.T())\n\tsuite.bankKeeper = test.NewMockBankKeeper(ctrl)\n\tsuite.distrKeeper = test.NewMockDistributionKeeper(ctrl)\n\tsuite.stakingKeeper = test.NewMockStakingKeeper(ctrl)\n\tsuite.epochsKeeper = test.NewMockEpochsKeeper(ctrl)\n\tsuite.authorityAccount = sdk.AccAddress([]byte(\"authority\"))\n\n\taccountKeeper := minttestutil.NewMockAccountKeeper(ctrl)\n\taccountKeeper.EXPECT().GetModuleAddress(\"mint\").Return(sdk.AccAddress{})\n\n\tsuite.tierKeeper = tierkeeper.NewKeeper(\n\t\tsuite.encCfg.Codec,\n\t\truntime.NewKVStoreService(key),\n\t\tlog.NewNopLogger(),\n\t\tsuite.authorityAccount.String(),\n\t\tsuite.bankKeeper,\n\t\tsuite.stakingKeeper,\n\t\tsuite.epochsKeeper,\n\t\tsuite.distrKeeper,\n\t\tsuite.feegrantKeeper,\n\t\tnil,\n\t)\n\n\tsuite.mintKeeper = mintkeeper.NewKeeper(\n\t\tsuite.encCfg.Codec,\n\t\truntime.NewKVStoreService(key),\n\t\tsuite.stakingKeeper,\n\t\taccountKeeper,\n\t\tsuite.bankKeeper,\n\t\tauthtypes.FeeCollectorName,\n\t\tsuite.authorityAccount.String(),\n\t)\n\n\terr := suite.mintKeeper.Params.Set(suite.ctx, minttypes.DefaultParams())\n\tsuite.Require().NoError(err)\n\tsuite.Require().NoError(suite.mintKeeper.Minter.Set(suite.ctx, minttypes.DefaultInitialMinter()))\n\tqueryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.encCfg.InterfaceRegistry)\n\tsuite.queryClient = minttypes.NewQueryClient(queryHelper)\n\n\tdefaultQueryServer := mintkeeper.NewQueryServerImpl(suite.mintKeeper)\n\tminttypes.RegisterQueryServer(queryHelper, NewCustomMintQueryServer(defaultQueryServer, suite.mintKeeper, &suite.tierKeeper, suite.logger))\n}\n\nfunc (suite *MintTestSuite) TestGRPCParams() {\n\tparams, err := suite.queryClient.Params(context.Background(), &minttypes.QueryParamsRequest{})\n\tsuite.Require().NoError(err)\n\tkeeperParams, err := suite.mintKeeper.Params.Get(suite.ctx)\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(params.Params, keeperParams)\n\n\ttotalBondedTokens := math.NewInt(1_000_000_000_000)\n\tsuite.stakingKeeper.EXPECT().TotalBondedTokens(gomock.Any()).Return(totalBondedTokens, nil).Times(1)\n\n\tinflation, err := suite.queryClient.Inflation(context.Background(), &minttypes.QueryInflationRequest{})\n\tsuite.Require().NoError(err)\n\tminter, err := suite.mintKeeper.Minter.Get(suite.ctx)\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(inflation.Inflation, minter.Inflation)\n\n\tannualProvisions, err := suite.queryClient.AnnualProvisions(context.Background(), &minttypes.QueryAnnualProvisionsRequest{})\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(annualProvisions.AnnualProvisions, minter.AnnualProvisions)\n}\n\nfunc (suite *MintTestSuite) TestInflationQuery() {\n\tminter, err := suite.mintKeeper.Minter.Get(suite.ctx)\n\tsuite.Require().NoError(err)\n\n\t// Return default inflation rate if no bonded tokens\n\ttotalBondedTokens := math.ZeroInt()\n\tsuite.stakingKeeper.EXPECT().TotalBondedTokens(gomock.Any()).Return(totalBondedTokens, nil).Times(1)\n\n\tinflation, err := suite.queryClient.Inflation(context.Background(), &minttypes.QueryInflationRequest{})\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(inflation.Inflation, minter.Inflation)\n\n\tlogs := suite.logBuffer.String()\n\tsuite.Require().Contains(logs, \"Returning default inflation\")\n\n\t// Return effective inflation rate otherwise\n\ttotalBondedTokens = math.NewInt(1_000_000_000_000)\n\tsuite.stakingKeeper.EXPECT().TotalBondedTokens(gomock.Any()).Return(totalBondedTokens, nil).Times(1)\n\n\tinflation, err = suite.queryClient.Inflation(context.Background(), &minttypes.QueryInflationRequest{})\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(inflation.Inflation, minter.Inflation)\n\n\tlogs = suite.logBuffer.String()\n\tsuite.Require().Contains(logs, \"Returning effective inflation\")\n}\n\nfunc (suite *MintTestSuite) TestGetDelegatorStakeRatio() {\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\tsuite.Require().NoError(err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\tsuite.Require().NoError(err)\n\n\ttestCases := []struct {\n\t\tdesc          string\n\t\ttotalStake    math.Int\n\t\tdevStake      math.Int\n\t\tdevPoolFee    int64\n\t\tinsPoolFee    int64\n\t\texpectedRatio math.LegacyDec\n\t\texpectError   bool\n\t}{\n\t\t{\n\t\t\tdesc:          \"Zero dev stake\",\n\t\t\ttotalStake:    math.NewInt(1000),\n\t\t\tdevStake:      math.ZeroInt(),\n\t\t\tdevPoolFee:    2,\n\t\t\tinsPoolFee:    1,\n\t\t\texpectedRatio: math.LegacyOneDec(),\n\t\t\texpectError:   false,\n\t\t},\n\t\t{\n\t\t\tdesc:          \"Existing dev stake\",\n\t\t\ttotalStake:    math.NewInt(1000),\n\t\t\tdevStake:      math.NewInt(200),\n\t\t\tdevPoolFee:    2,\n\t\t\tinsPoolFee:    1,\n\t\t\texpectedRatio: math.LegacyMustNewDecFromStr(\"806\").Quo(math.LegacyMustNewDecFromStr(\"1000\")),\n\t\t\texpectError:   false,\n\t\t},\n\t\t{\n\t\t\tdesc:          \"Zero total stake\",\n\t\t\ttotalStake:    math.ZeroInt(),\n\t\t\tdevStake:      math.NewInt(200),\n\t\t\tdevPoolFee:    2,\n\t\t\tinsPoolFee:    1,\n\t\t\texpectedRatio: math.LegacyOneDec(),\n\t\t\texpectError:   true,\n\t\t},\n\t\t{\n\t\t\tdesc:          \"Total stake less than dev stake\",\n\t\t\ttotalStake:    math.NewInt(100),\n\t\t\tdevStake:      math.NewInt(200),\n\t\t\tdevPoolFee:    2,\n\t\t\tinsPoolFee:    1,\n\t\t\texpectedRatio: math.LegacyOneDec(),\n\t\t\texpectError:   true,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.desc, func() {\n\t\t\tsuite.tierKeeper.AddLockup(suite.ctx, delAddr, valAddr, tc.devStake)\n\t\t\tparams := suite.tierKeeper.GetParams(suite.ctx)\n\t\t\tparams.DeveloperPoolFee = tc.devPoolFee\n\t\t\tparams.InsurancePoolFee = tc.insPoolFee\n\t\t\tsuite.tierKeeper.SetParams(suite.ctx, params)\n\t\t\tsuite.stakingKeeper.EXPECT().TotalBondedTokens(gomock.Any()).Return(tc.totalStake, nil).Times(1)\n\n\t\t\tdelStakeRatio, err := getDelegatorStakeRatio(suite.ctx, &suite.tierKeeper)\n\n\t\t\tif tc.expectError {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\tsuite.Require().Equal(tc.expectedRatio, delStakeRatio)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "app/overrides/bank.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\n\t\"github.com/cosmos/cosmos-sdk/x/bank\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// BankModuleBasic defines a wrapper of the x/bank module AppModuleBasic to provide custom default genesis state.\ntype BankModuleBasic struct {\n\tbank.AppModuleBasic\n}\n\n// DefaultGenesis returns custom x/bank module genesis state.\nfunc (BankModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\topenMetadata := banktypes.Metadata{\n\t\tDescription: appparams.OpenDescription,\n\t\tDenomUnits: []*banktypes.DenomUnit{\n\t\t\t{\n\t\t\t\tDenom:    appparams.MicroOpenDenom,\n\t\t\t\tExponent: 0,\n\t\t\t\tAliases:  []string{appparams.MicroOpenDenomAlias},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDenom:    appparams.OpenDenom,\n\t\t\t\tExponent: 6,\n\t\t\t},\n\t\t},\n\t\tBase:    appparams.MicroOpenDenom,\n\t\tDisplay: appparams.OpenDenom,\n\t\tName:    appparams.OpenName,\n\t\tSymbol:  appparams.OpenSymbol,\n\t}\n\n\tcreditMetadata := banktypes.Metadata{\n\t\tDescription: appparams.CreditDescription,\n\t\tDenomUnits: []*banktypes.DenomUnit{\n\t\t\t{\n\t\t\t\tDenom:    appparams.MicroCreditDenom,\n\t\t\t\tExponent: 0,\n\t\t\t\tAliases:  []string{appparams.MicroCreditDenomAlias},\n\t\t\t},\n\t\t\t{\n\t\t\t\tDenom:    appparams.CreditDenom,\n\t\t\t\tExponent: 6,\n\t\t\t},\n\t\t},\n\t\tBase:    appparams.MicroCreditDenom,\n\t\tDisplay: appparams.CreditDenom,\n\t\tName:    appparams.CreditName,\n\t\tSymbol:  appparams.CreditSymbol,\n\t}\n\n\tcreditSendEnabled := banktypes.SendEnabled{\n\t\tDenom:   appparams.MicroCreditDenom,\n\t\tEnabled: false,\n\t}\n\n\tgenState := banktypes.DefaultGenesisState()\n\tgenState.DenomMetadata = append(genState.DenomMetadata, openMetadata)\n\tgenState.DenomMetadata = append(genState.DenomMetadata, creditMetadata)\n\tgenState.SendEnabled = append(genState.SendEnabled, creditSendEnabled)\n\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/overrides/crisis.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\n\tsdkmath \"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/cosmos/cosmos-sdk/x/crisis\"\n\tcrisistypes \"github.com/cosmos/cosmos-sdk/x/crisis/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// CrisisModuleBasic defines a wrapper of the x/crisis module AppModuleBasic to provide custom default genesis state.\ntype CrisisModuleBasic struct {\n\tcrisis.AppModuleBasic\n}\n\n// DefaultGenesis returns custom x/crisis module genesis state.\nfunc (CrisisModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\tgenState := crisistypes.DefaultGenesisState()\n\tgenState.ConstantFee = sdk.NewCoin(appparams.DefaultBondDenom, sdkmath.NewInt(1000))\n\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/overrides/epochs.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\n\tepochsmodule \"github.com/sourcenetwork/sourcehub/x/epochs/module\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// EpochsModuleBasic defines a wrapper of the x/epochs module AppModuleBasic to provide custom default genesis state.\ntype EpochsModuleBasic struct {\n\tepochsmodule.AppModuleBasic\n}\n\n// DefaultGenesis returns custom x/epochs module genesis state.\nfunc (EpochsModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\tgenState := epochstypes.DefaultGenesis()\n\tgenState.Epochs = []epochstypes.EpochInfo{\n\t\tepochstypes.NewGenesisEpochInfo(tiertypes.EpochIdentifier, tiertypes.DefaultEpochDuration),\n\t}\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/overrides/gov.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\t\"time\"\n\n\tmath \"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tgov \"github.com/cosmos/cosmos-sdk/x/gov\"\n\tgovclient \"github.com/cosmos/cosmos-sdk/x/gov/client\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types/v1\"\n\tparamsclient \"github.com/cosmos/cosmos-sdk/x/params/client\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// GovModuleBasic defines a wrapper of the x/gov module AppModuleBasic to provide custom default genesis state.\ntype GovModuleBasic struct {\n\tgov.AppModuleBasic\n}\n\nfunc NewGovModuleBasic() GovModuleBasic {\n\treturn GovModuleBasic{\n\t\tAppModuleBasic: gov.NewAppModuleBasic(proposalHandlers()),\n\t}\n}\n\n// proposalHandlers returns supported governance proposal handlers.\nfunc proposalHandlers() []govclient.ProposalHandler {\n\treturn []govclient.ProposalHandler{\n\t\tparamsclient.ProposalHandler,\n\t}\n}\n\n// DefaultGenesis returns custom x/gov module genesis state.\nfunc (GovModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\tgenState := govtypes.DefaultGenesisState()\n\toneWeek := time.Duration(time.Hour*24) * 7\n\ttwoWeeks := time.Duration(time.Hour*24) * 14\n\n\tgenState.Params.MaxDepositPeriod = &twoWeeks\n\tgenState.Params.VotingPeriod = &twoWeeks\n\tgenState.Params.ExpeditedVotingPeriod = &oneWeek\n\n\tgenState.Params.MinDeposit = sdk.NewCoins(\n\t\tsdk.NewCoin(appparams.MicroOpenDenom, math.NewInt(1_000_000_000)),\n\t)\n\n\tgenState.Params.ExpeditedMinDeposit = sdk.NewCoins(\n\t\tsdk.NewCoin(appparams.MicroOpenDenom, math.NewInt(5_000_000_000)),\n\t)\n\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/overrides/staking.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\n\tstaking \"github.com/cosmos/cosmos-sdk/x/staking\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// StakingModuleBasic defines a wrapper of the x/staking module AppModuleBasic to provide custom default genesis state.\ntype StakingModuleBasic struct {\n\tstaking.AppModuleBasic\n}\n\n// DefaultGenesis returns custom x/staking module genesis state.\nfunc (StakingModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\tgenState := stakingtypes.DefaultGenesisState()\n\tgenState.Params.BondDenom = appparams.DefaultBondDenom\n\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/overrides/tier.go",
    "content": "package overrides\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\n\ttiermodule \"github.com/sourcenetwork/sourcehub/x/tier/module\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// TierModuleBasic defines a wrapper of the x/tier module AppModuleBasic to provide custom default genesis state.\ntype TierModuleBasic struct {\n\ttiermodule.AppModuleBasic\n}\n\n// DefaultGenesis returns custom x/tier module genesis state.\nfunc (TierModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\tgenState := tiertypes.DefaultGenesis()\n\treturn cdc.MustMarshalJSON(genState)\n}\n"
  },
  {
    "path": "app/params/params.go",
    "content": "package params\n\nconst (\n\tMicroOpenDenom      = \"uopen\"\n\tMicroOpenDenomAlias = \"microopen\"\n\tOpenDenom           = \"open\"\n\tOpenName            = \"Source Open\"\n\tOpenSymbol          = \"OPEN\"\n\tOpenDescription     = \"OPEN is the native staking token of SourceHub.\"\n\n\tMicroCreditDenom      = \"ucredit\"\n\tMicroCreditDenomAlias = \"microcredit\"\n\tCreditDenom           = \"credit\"\n\tCreditName            = \"Source Credit\"\n\tCreditSymbol          = \"CREDIT\"\n\tCreditDescription     = \"Credit is the utility token for access services on SourceHub. Non-transferable.\"\n\tCreditFeeMultiplier   = 10\n\n\tDefaultBondDenom   = MicroOpenDenom\n\tDefaultMinGasPrice = \"0.001\"\n\n\tBlocksPerYear       = 31557600\n\tGoalBonded          = \"0.67\"\n\tInflationMin        = \"0.02\"\n\tInflationMax        = \"0.15\"\n\tInflationRateChange = \"0.13\"\n\tInitialInflation    = \"0.13\"\n)\n\n// FaucetStoreKey is the store key for faucet data.\nconst FaucetStoreKey = \"faucet\"\n\n// FaucetConfig defines the configuration for the faucet service.\ntype FaucetConfig struct {\n\tEnableFaucet bool `mapstructure:\"enable_faucet\"`\n}\n\n// Context key for storing extracted DID from JWS extension options.\ntype contextKey string\n\nconst (\n\t// ExtractedDIDContextKey is the key used to store extracted DID in context\n\tExtractedDIDContextKey contextKey = \"extracted_did\"\n)\n"
  },
  {
    "path": "app/sim_bench_test.go",
    "content": "package app_test\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\tsimcli \"github.com/cosmos/cosmos-sdk/x/simulation/client/cli\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\n// Profile with:\n// `go test -benchmem -run=^$ -bench ^BenchmarkFullAppSimulation ./app -Commit=true -cpuprofile cpu.out`\nfunc BenchmarkFullAppSimulation(b *testing.B) {\n\tb.ReportAllocs()\n\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.ChainID = SimAppChainID\n\n\tdb, dir, logger, skip, err := simtestutil.SetupSimulation(config, \"goleveldb-app-sim\", \"Simulation\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\tif err != nil {\n\t\tb.Fatalf(\"simulation setup failed: %s\", err.Error())\n\t}\n\n\tif skip {\n\t\tb.Skip(\"skipping benchmark application simulation\")\n\t}\n\n\tdefer func() {\n\t\trequire.NoError(b, db.Close())\n\t\trequire.NoError(b, os.RemoveAll(dir))\n\t}()\n\n\tappOptions := make(simtestutil.AppOptionsMap, 0)\n\tappOptions[flags.FlagHome] = app.DefaultNodeHome\n\tappOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue\n\n\tbApp, err := app.New(logger, db, nil, true, appOptions, interBlockCacheOpt())\n\trequire.NoError(b, err)\n\trequire.Equal(b, app.Name, bApp.Name())\n\n\t// run randomized simulation\n\t_, simParams, simErr := simulation.SimulateFromSeed(\n\t\tb,\n\t\tos.Stdout,\n\t\tbApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1\n\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\n\t// export state and simParams before the simulation error is checked\n\tif err = simtestutil.CheckExportSimulation(bApp, config, simParams); err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\tif simErr != nil {\n\t\tb.Fatal(simErr)\n\t}\n\n\tif config.Commit {\n\t\tsimtestutil.PrintStats(db)\n\t}\n}\n\nfunc BenchmarkInvariants(b *testing.B) {\n\tb.ReportAllocs()\n\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.ChainID = SimAppChainID\n\n\tdb, dir, logger, skip, err := simtestutil.SetupSimulation(config, \"leveldb-app-invariant-bench\", \"Simulation\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\tif err != nil {\n\t\tb.Fatalf(\"simulation setup failed: %s\", err.Error())\n\t}\n\n\tif skip {\n\t\tb.Skip(\"skipping benchmark application simulation\")\n\t}\n\n\tconfig.AllInvariants = false\n\n\tdefer func() {\n\t\trequire.NoError(b, db.Close())\n\t\trequire.NoError(b, os.RemoveAll(dir))\n\t}()\n\n\tappOptions := make(simtestutil.AppOptionsMap, 0)\n\tappOptions[flags.FlagHome] = app.DefaultNodeHome\n\tappOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue\n\n\tbApp, err := app.New(logger, db, nil, true, appOptions, interBlockCacheOpt())\n\trequire.NoError(b, err)\n\trequire.Equal(b, app.Name, bApp.Name())\n\n\t// run randomized simulation\n\t_, simParams, simErr := simulation.SimulateFromSeed(\n\t\tb,\n\t\tos.Stdout,\n\t\tbApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1\n\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\n\t// export state and simParams before the simulation error is checked\n\tif err = simtestutil.CheckExportSimulation(bApp, config, simParams); err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\tif simErr != nil {\n\t\tb.Fatal(simErr)\n\t}\n\n\tif config.Commit {\n\t\tsimtestutil.PrintStats(db)\n\t}\n\n\tctx := bApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight() + 1})\n\n\t// 3. Benchmark each invariant separately\n\t//\n\t// NOTE: We use the crisis keeper as it has all the invariants registered with\n\t// their respective metadata which makes it useful for testing/benchmarking.\n\tfor _, cr := range bApp.CrisisKeeper.Routes() {\n\t\tcr := cr\n\t\tb.Run(fmt.Sprintf(\"%s/%s\", cr.ModuleName, cr.Route), func(b *testing.B) {\n\t\t\tif res, stop := cr.Invar(ctx); stop {\n\t\t\t\tb.Fatalf(\n\t\t\t\t\t\"broken invariant at block %d of %d\\n%s\",\n\t\t\t\t\tctx.BlockHeight()-1, config.NumBlocks, res,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "app/sim_test.go",
    "content": "package app_test\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"os\"\n\t\"runtime/debug\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tabci \"github.com/cometbft/cometbft/abci/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsimulationtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\tauthzkeeper \"github.com/cosmos/cosmos-sdk/x/authz/keeper\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\tsimcli \"github.com/cosmos/cosmos-sdk/x/simulation/client/cli\"\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/spf13/viper\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nconst (\n\tSimAppChainID = \"sourcehub-simapp\"\n)\n\nvar FlagEnableStreamingValue bool\n\n// Get flags every time the simulator is run\nfunc init() {\n\tsimcli.GetSimulatorFlags()\n\tflag.BoolVar(&FlagEnableStreamingValue, \"EnableStreaming\", false, \"Enable streaming service\")\n}\n\n// fauxMerkleModeOpt returns a BaseApp option to use a dbStoreAdapter instead of\n// an IAVLStore for faster simulation speed.\nfunc fauxMerkleModeOpt(bapp *baseapp.BaseApp) {\n\tbapp.SetFauxMerkleMode()\n}\n\n// interBlockCacheOpt returns a BaseApp option function that sets the persistent\n// inter-block write-through cache.\nfunc interBlockCacheOpt() func(*baseapp.BaseApp) {\n\treturn baseapp.SetInterBlockCache(store.NewCommitKVStoreCacheManager())\n}\n\n// BenchmarkSimulation run the chain simulation\n// Running using starport command:\n// `ignite chain simulate -v --numBlocks 200 --blockSize 50`\n// Running as go benchmark test:\n// `go test -benchmem -run=^$ -bench ^BenchmarkSimulation ./app -NumBlocks=200 -BlockSize 50 -Commit=true -Verbose=true -Enabled=true`\nfunc BenchmarkSimulation(b *testing.B) {\n\tsimcli.FlagSeedValue = time.Now().Unix()\n\tsimcli.FlagVerboseValue = true\n\tsimcli.FlagCommitValue = true\n\tsimcli.FlagEnabledValue = true\n\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.ChainID = SimAppChainID\n\n\tdb, dir, logger, skip, err := simtestutil.SetupSimulation(config, \"leveldb-app-sim\", \"Simulation\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\tif skip {\n\t\tb.Skip(\"skipping application simulation\")\n\t}\n\trequire.NoError(b, err, \"simulation setup failed\")\n\n\tdefer func() {\n\t\trequire.NoError(b, db.Close())\n\t\trequire.NoError(b, os.RemoveAll(dir))\n\t}()\n\n\tappOptions := make(simtestutil.AppOptionsMap, 0)\n\tappOptions[flags.FlagHome] = app.DefaultNodeHome\n\tappOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue\n\n\tbApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))\n\trequire.NoError(b, err)\n\trequire.Equal(b, app.Name, bApp.Name())\n\n\t// run randomized simulation\n\t_, simParams, simErr := simulation.SimulateFromSeed(\n\t\tb,\n\t\tos.Stdout,\n\t\tbApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimulationtypes.RandomAccounts,\n\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\n\t// export state and simParams before the simulation error is checked\n\terr = simtestutil.CheckExportSimulation(bApp, config, simParams)\n\trequire.NoError(b, err)\n\trequire.NoError(b, simErr)\n\n\tif config.Commit {\n\t\tsimtestutil.PrintStats(db)\n\t}\n}\n\nfunc TestAppImportExport(t *testing.T) {\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.ChainID = SimAppChainID\n\n\tdb, dir, logger, skip, err := simtestutil.SetupSimulation(config, \"leveldb-app-sim\", \"Simulation\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\tif skip {\n\t\tt.Skip(\"skipping application import/export simulation\")\n\t}\n\trequire.NoError(t, err, \"simulation setup failed\")\n\n\tdefer func() {\n\t\trequire.NoError(t, db.Close())\n\t\trequire.NoError(t, os.RemoveAll(dir))\n\t}()\n\n\tappOptions := make(simtestutil.AppOptionsMap, 0)\n\tappOptions[flags.FlagHome] = app.DefaultNodeHome\n\tappOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue\n\n\tbApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))\n\trequire.NoError(t, err)\n\trequire.Equal(t, app.Name, bApp.Name())\n\n\t// Run randomized simulation\n\t_, simParams, simErr := simulation.SimulateFromSeed(\n\t\tt,\n\t\tos.Stdout,\n\t\tbApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimulationtypes.RandomAccounts,\n\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\n\t// export state and simParams before the simulation error is checked\n\terr = simtestutil.CheckExportSimulation(bApp, config, simParams)\n\trequire.NoError(t, err)\n\trequire.NoError(t, simErr)\n\n\tif config.Commit {\n\t\tsimtestutil.PrintStats(db)\n\t}\n\n\tfmt.Printf(\"exporting genesis...\\n\")\n\n\texported, err := bApp.ExportAppStateAndValidators(false, []string{}, []string{})\n\trequire.NoError(t, err)\n\n\tfmt.Printf(\"importing genesis...\\n\")\n\n\tnewDB, newDir, _, _, err := simtestutil.SetupSimulation(config, \"leveldb-app-sim-2\", \"Simulation-2\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\trequire.NoError(t, err, \"simulation setup failed\")\n\n\tdefer func() {\n\t\trequire.NoError(t, newDB.Close())\n\t\trequire.NoError(t, os.RemoveAll(newDir))\n\t}()\n\n\tnewApp, err := app.New(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))\n\trequire.NoError(t, err)\n\trequire.Equal(t, app.Name, newApp.Name())\n\n\tvar genesisState app.GenesisState\n\terr = json.Unmarshal(exported.AppState, &genesisState)\n\trequire.NoError(t, err)\n\n\tctxA := bApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight()})\n\tctxB := newApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight()})\n\t_, err = newApp.ModuleManager.InitGenesis(ctxB, bApp.AppCodec(), genesisState)\n\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), \"validator set is empty after InitGenesis\") {\n\t\t\tlogger.Info(\"Skipping simulation as all validators have been unbonded\")\n\t\t\tlogger.Info(\"err\", err, \"stacktrace\", string(debug.Stack()))\n\t\t\treturn\n\t\t}\n\t}\n\trequire.NoError(t, err)\n\terr = newApp.StoreConsensusParams(ctxB, exported.ConsensusParams)\n\trequire.NoError(t, err)\n\tfmt.Printf(\"comparing stores...\\n\")\n\n\t// skip certain prefixes\n\tskipPrefixes := map[string][][]byte{\n\t\tstakingtypes.StoreKey: {\n\t\t\tstakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey,\n\t\t\tstakingtypes.HistoricalInfoKey, stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey,\n\t\t\tstakingtypes.UnbondingTypeKey, stakingtypes.ValidatorUpdatesKey,\n\t\t},\n\t\tauthzkeeper.StoreKey:   {authzkeeper.GrantQueuePrefix},\n\t\tfeegrant.StoreKey:      {feegrant.FeeAllowanceQueueKeyPrefix},\n\t\tslashingtypes.StoreKey: {slashingtypes.ValidatorMissedBlockBitmapKeyPrefix},\n\t}\n\n\tstoreKeys := bApp.GetStoreKeys()\n\trequire.NotEmpty(t, storeKeys)\n\n\tfor _, appKeyA := range storeKeys {\n\t\t// only compare kvstores\n\t\tif _, ok := appKeyA.(*storetypes.KVStoreKey); !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tkeyName := appKeyA.Name()\n\t\tappKeyB := newApp.GetKey(keyName)\n\n\t\tstoreA := ctxA.KVStore(appKeyA)\n\t\tstoreB := ctxB.KVStore(appKeyB)\n\n\t\tfailedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skipPrefixes[keyName])\n\t\trequire.Equal(t, len(failedKVAs), len(failedKVBs), \"unequal sets of key-values to compare %s\", keyName)\n\n\t\tfmt.Printf(\"compared %d different key/value pairs between %s and %s\\n\", len(failedKVAs), appKeyA, appKeyB)\n\n\t\trequire.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(keyName, bApp.SimulationManager().StoreDecoders, failedKVAs, failedKVBs))\n\t}\n}\n\nfunc TestAppSimulationAfterImport(t *testing.T) {\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.ChainID = SimAppChainID\n\n\tdb, dir, logger, skip, err := simtestutil.SetupSimulation(config, \"leveldb-app-sim\", \"Simulation\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\tif skip {\n\t\tt.Skip(\"skipping application simulation after import\")\n\t}\n\trequire.NoError(t, err, \"simulation setup failed\")\n\n\tdefer func() {\n\t\trequire.NoError(t, db.Close())\n\t\trequire.NoError(t, os.RemoveAll(dir))\n\t}()\n\n\tappOptions := make(simtestutil.AppOptionsMap, 0)\n\tappOptions[flags.FlagHome] = app.DefaultNodeHome\n\tappOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue\n\n\tbApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))\n\trequire.NoError(t, err)\n\trequire.Equal(t, app.Name, bApp.Name())\n\n\t// Run randomized simulation\n\tstopEarly, simParams, simErr := simulation.SimulateFromSeed(\n\t\tt,\n\t\tos.Stdout,\n\t\tbApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimulationtypes.RandomAccounts,\n\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\n\t// export state and simParams before the simulation error is checked\n\terr = simtestutil.CheckExportSimulation(bApp, config, simParams)\n\trequire.NoError(t, err)\n\trequire.NoError(t, simErr)\n\n\tif config.Commit {\n\t\tsimtestutil.PrintStats(db)\n\t}\n\n\tif stopEarly {\n\t\tfmt.Println(\"can't export or import a zero-validator genesis, exiting test...\")\n\t\treturn\n\t}\n\n\tfmt.Printf(\"exporting genesis...\\n\")\n\n\texported, err := bApp.ExportAppStateAndValidators(true, []string{}, []string{})\n\trequire.NoError(t, err)\n\n\tfmt.Printf(\"importing genesis...\\n\")\n\n\tnewDB, newDir, _, _, err := simtestutil.SetupSimulation(config, \"leveldb-app-sim-2\", \"Simulation-2\", simcli.FlagVerboseValue, simcli.FlagEnabledValue)\n\trequire.NoError(t, err, \"simulation setup failed\")\n\n\tdefer func() {\n\t\trequire.NoError(t, newDB.Close())\n\t\trequire.NoError(t, os.RemoveAll(newDir))\n\t}()\n\n\tnewApp, err := app.New(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))\n\trequire.NoError(t, err)\n\trequire.Equal(t, app.Name, newApp.Name())\n\n\t_, err = newApp.InitChain(&abci.RequestInitChain{\n\t\tAppStateBytes: exported.AppState,\n\t\tChainId:       SimAppChainID,\n\t})\n\trequire.NoError(t, err)\n\n\t_, _, err = simulation.SimulateFromSeed(\n\t\tt,\n\t\tos.Stdout,\n\t\tnewApp.BaseApp,\n\t\tsimtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),\n\t\tsimulationtypes.RandomAccounts,\n\t\tsimtestutil.SimulationOperations(newApp, newApp.AppCodec(), config),\n\t\tapp.BlockedAddresses(),\n\t\tconfig,\n\t\tbApp.AppCodec(),\n\t)\n\trequire.NoError(t, err)\n}\n\nfunc TestAppStateDeterminism(t *testing.T) {\n\tif !simcli.FlagEnabledValue {\n\t\tt.Skip(\"skipping application simulation\")\n\t}\n\n\tconfig := simcli.NewConfigFromFlags()\n\tconfig.InitialBlockHeight = 1\n\tconfig.ExportParamsPath = \"\"\n\tconfig.OnOperation = true\n\tconfig.AllInvariants = true\n\n\tnumSeeds := 3\n\tnumTimesToRunPerSeed := 3 // This used to be set to 5, but we've temporarily reduced it to 3 for the sake of faster CI.\n\tappHashList := make([]json.RawMessage, numTimesToRunPerSeed)\n\n\t// We will be overriding the random seed and just run a single simulation on the provided seed value\n\tif config.Seed != simcli.DefaultSeedValue {\n\t\tnumSeeds = 1\n\t}\n\n\tappOptions := viper.New()\n\tif FlagEnableStreamingValue {\n\t\tm := make(map[string]interface{})\n\t\tm[\"streaming.abci.keys\"] = []string{\"*\"}\n\t\tm[\"streaming.abci.plugin\"] = \"abci_v1\"\n\t\tm[\"streaming.abci.stop-node-on-err\"] = true\n\t\tfor key, value := range m {\n\t\t\tappOptions.SetDefault(key, value)\n\t\t}\n\t}\n\tappOptions.SetDefault(flags.FlagHome, app.DefaultNodeHome)\n\tappOptions.SetDefault(server.FlagInvCheckPeriod, simcli.FlagPeriodValue)\n\tif simcli.FlagVerboseValue {\n\t\tappOptions.SetDefault(flags.FlagLogLevel, \"debug\")\n\t}\n\n\tfor i := 0; i < numSeeds; i++ {\n\t\tif config.Seed == simcli.DefaultSeedValue {\n\t\t\tconfig.Seed = rand.Int63()\n\t\t}\n\t\tfmt.Println(\"config.Seed: \", config.Seed)\n\n\t\tfor j := 0; j < numTimesToRunPerSeed; j++ {\n\t\t\tvar logger log.Logger\n\t\t\tif simcli.FlagVerboseValue {\n\t\t\t\tlogger = log.NewTestLogger(t)\n\t\t\t} else {\n\t\t\t\tlogger = log.NewNopLogger()\n\t\t\t}\n\t\t\tchainID := fmt.Sprintf(\"chain-id-%d-%d\", i, j)\n\t\t\tconfig.ChainID = chainID\n\n\t\t\tdb := dbm.NewMemDB()\n\t\t\tbApp, err := app.New(\n\t\t\t\tlogger,\n\t\t\t\tdb,\n\t\t\t\tnil,\n\t\t\t\ttrue,\n\t\t\t\tappOptions,\n\t\t\t\tinterBlockCacheOpt(),\n\t\t\t\tbaseapp.SetChainID(chainID),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tfmt.Printf(\n\t\t\t\t\"running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\\n\",\n\t\t\t\tconfig.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed,\n\t\t\t)\n\n\t\t\t_, _, err = simulation.SimulateFromSeed(\n\t\t\t\tt,\n\t\t\t\tos.Stdout,\n\t\t\t\tbApp.BaseApp,\n\t\t\t\tsimtestutil.AppStateFn(\n\t\t\t\t\tbApp.AppCodec(),\n\t\t\t\t\tbApp.SimulationManager(),\n\t\t\t\t\tbApp.DefaultGenesis(),\n\t\t\t\t),\n\t\t\t\tsimulationtypes.RandomAccounts,\n\t\t\t\tsimtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),\n\t\t\t\tapp.BlockedAddresses(),\n\t\t\t\tconfig,\n\t\t\t\tbApp.AppCodec(),\n\t\t\t)\n\t\t\trequire.NoError(t, err)\n\n\t\t\tif config.Commit {\n\t\t\t\tsimtestutil.PrintStats(db)\n\t\t\t}\n\n\t\t\tappHash := bApp.LastCommitID().Hash\n\t\t\tappHashList[j] = appHash\n\n\t\t\tif j != 0 {\n\t\t\t\trequire.Equal(\n\t\t\t\t\tt, string(appHashList[0]), string(appHashList[j]),\n\t\t\t\t\t\"non-determinism in seed %d: %d/%d, attempt: %d/%d\\n\", config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "app/utils.go",
    "content": "package app\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc SetConfig(seal bool) {\n\t// set prefixes\n\taccountPubKeyPrefix := AccountAddressPrefix + \"pub\"\n\tvalidatorAddressPrefix := AccountAddressPrefix + \"valoper\"\n\tvalidatorPubKeyPrefix := AccountAddressPrefix + \"valoperpub\"\n\tconsNodeAddressPrefix := AccountAddressPrefix + \"valcons\"\n\tconsNodePubKeyPrefix := AccountAddressPrefix + \"valconspub\"\n\n\t// init config\n\tconfig := sdk.GetConfig()\n\tconfig.SetBech32PrefixForAccount(AccountAddressPrefix, accountPubKeyPrefix)\n\tconfig.SetBech32PrefixForValidator(validatorAddressPrefix, validatorPubKeyPrefix)\n\tconfig.SetBech32PrefixForConsensusNode(consNodeAddressPrefix, consNodePubKeyPrefix)\n\n\tif seal {\n\t\tconfig.Seal()\n\t}\n}\n"
  },
  {
    "path": "buf.work.yaml",
    "content": "# Generated by \"buf config migrate-v1beta1\". Edit as necessary, and\n# remove this comment when you're finished.\n#\n# This workspace file points to the roots found in your\n# previous \"buf.yaml\" configuration.\nversion: v1\ndirectories:\n  - proto\n"
  },
  {
    "path": "cmd/extension_options_tx/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"crypto/ed25519\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"cosmossdk.io/math\"\n\trpchttp \"github.com/cometbft/cometbft/rpc/client/http\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\tclienttx \"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\ttestutilmod \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tjwstypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\ttestutil \"github.com/sourcenetwork/sourcehub/testutil\"\n\tacp \"github.com/sourcenetwork/sourcehub/x/acp/module\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc main() {\n\tif len(os.Args) < 2 {\n\t\tlog.Fatal(\"Usage: go run main.go <policy-file>\")\n\t}\n\n\t// Read the policy file content\n\tpolicyContent, err := os.ReadFile(os.Args[1])\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to read policy file:\", err)\n\t}\n\n\t// Initialize SDK config\n\tsdkConfig := sdk.GetConfig()\n\tsdkConfig.SetBech32PrefixForAccount(\"source\", \"sourcepub\")\n\tsdkConfig.Seal()\n\n\t// Setup encoding config with auth and acp modules\n\tencodingConfig := testutilmod.MakeTestEncodingConfig(auth.AppModuleBasic{}, acp.AppModuleBasic{})\n\n\t// Setup RPC client\n\trpcClient, err := rpchttp.New(\"tcp://localhost:26657\", \"/websocket\")\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to create RPC client:\", err)\n\t}\n\n\t// Setup gRPC connection\n\tgrpcConn, err := grpc.NewClient(\"localhost:9090\", grpc.WithTransportCredentials(insecure.NewCredentials()))\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to create gRPC connection:\", err)\n\t}\n\tdefer grpcConn.Close()\n\n\t// Setup client context\n\tclientCtx := client.Context{}.\n\t\tWithChainID(\"sourcehub-dev\").\n\t\tWithKeyringDir(\".sourcehub\").\n\t\tWithTxConfig(encodingConfig.TxConfig).\n\t\tWithCodec(encodingConfig.Codec).\n\t\tWithClient(rpcClient).\n\t\tWithNodeURI(\"tcp://localhost:26657\").\n\t\tWithAccountRetriever(authtypes.AccountRetriever{}).\n\t\tWithGRPCClient(grpcConn).\n\t\tWithBroadcastMode(flags.BroadcastSync).\n\t\tWithSkipConfirmation(true)\n\n\t// Load keyring from home directory\n\thomeDir := os.Getenv(\"HOME\") + \"/.sourcehub\"\n\tkr, err := keyring.New(sdk.KeyringServiceName(), \"test\", homeDir, nil, encodingConfig.Codec)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to create keyring:\", err)\n\t}\n\n\tkeyName := \"validator\"\n\tinfo, err := kr.Key(keyName)\n\tif err != nil {\n\t\tlog.Fatal(\"Key not found in keyring:\", err)\n\t}\n\n\taddr, err := info.GetAddress()\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to get address from key:\", err)\n\t}\n\tsenderAddr := addr.String()\n\n\tclientCtx = clientCtx.\n\t\tWithFromAddress(addr).\n\t\tWithFromName(info.Name).\n\t\tWithKeyring(kr)\n\n\t// Create the message\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     senderAddr,\n\t\tPolicy:      string(policyContent),\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\t// Generate the key pair for signing\n\tvar privKey ed25519.PrivateKey\n\tvar pubKey ed25519.PublicKey\n\n\t// Derive seed from mnemonic\n\tmnemonic := \"near smoke great nasty alley food crush nurse rubber say danger search employ under gaze today alien eager risk letter drum relief sponsor current\"\n\tseed, err := hd.Secp256k1.Derive()(mnemonic, \"\", \"m/44'/118'/0'/0/0\")\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to derive seed from mnemonic:\", err)\n\t}\n\n\t// Generate Ed25519 key pair from the derived seed\n\tif len(seed) > 32 {\n\t\tseed = seed[:32]\n\t}\n\tprivKey = ed25519.NewKeyFromSeed(seed)\n\tpubKey = privKey.Public().(ed25519.PublicKey)\n\tdidKey, err := key.CreateDIDKey(crypto.Ed25519, pubKey)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to create DID key:\", err)\n\t}\n\n\t// Create bearer token with the matching DID\n\tbearerToken := testutil.NewBearerTokenNow(didKey.String(), senderAddr)\n\tpayloadBytes, err := json.Marshal(bearerToken)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to marshal payload:\", err)\n\t}\n\n\t// Create and sign the JWS\n\theader := testutil.CreateJWSHeader()\n\theaderBytes, err := json.Marshal(header)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to marshal header:\", err)\n\t}\n\n\theaderEncoded := base64.RawURLEncoding.EncodeToString(headerBytes)\n\tpayloadEncoded := base64.RawURLEncoding.EncodeToString(payloadBytes)\n\tsigningInput := headerEncoded + \".\" + payloadEncoded\n\tsignature := ed25519.Sign(privKey, []byte(signingInput))\n\tsignatureEncoded := base64.RawURLEncoding.EncodeToString(signature)\n\tjwsString := signingInput + \".\" + signatureEncoded\n\n\t// Create extension option\n\text := &jwstypes.JWSExtensionOption{\n\t\tBearerToken: jwsString,\n\t}\n\n\textAny, err := codectypes.NewAnyWithValue(ext)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to marshal extension:\", err)\n\t}\n\n\t// Build transaction\n\ttxBuilder := clientCtx.TxConfig.NewTxBuilder()\n\terr = txBuilder.SetMsgs(msg)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to set messages:\", err)\n\t}\n\n\t// Set extension options\n\tif extBuilder, ok := txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(extAny)\n\t} else {\n\t\tlog.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\ttxBuilder.SetGasLimit(200000)\n\ttxBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(\"uopen\", math.NewInt(5000))))\n\n\t// Query account to get acc number and sequence\n\tauthClient := authtypes.NewQueryClient(grpcConn)\n\taccountResp, err := authClient.Account(context.Background(), &authtypes.QueryAccountRequest{\n\t\tAddress: addr.String(),\n\t})\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to query account:\", err)\n\t}\n\n\tvar account sdk.AccountI\n\terr = encodingConfig.InterfaceRegistry.UnpackAny(accountResp.Account, &account)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to unpack account:\", err)\n\t}\n\n\taccNum := account.GetAccountNumber()\n\tseq := account.GetSequence()\n\n\t// Create transaction factory\n\ttxf := clienttx.Factory{}.\n\t\tWithTxConfig(clientCtx.TxConfig).\n\t\tWithChainID(clientCtx.ChainID).\n\t\tWithKeybase(kr).\n\t\tWithSignMode(signing.SignMode_SIGN_MODE_DIRECT).\n\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\tWithAccountNumber(accNum).\n\t\tWithSequence(seq)\n\n\t// Sign transaction\n\terr = clienttx.Sign(context.Background(), txf, info.Name, txBuilder, true)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to sign transaction:\", err)\n\t}\n\n\t// Encode transaction\n\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txBuilder.GetTx())\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to encode transaction:\", err)\n\t}\n\n\t// Broadcast transaction\n\tres, err := clientCtx.BroadcastTx(txBytes)\n\tif err != nil {\n\t\tlog.Fatal(\"Failed to broadcast transaction:\", err)\n\t}\n\n\toutput, _ := json.MarshalIndent(res, \"\", \"  \")\n\tfmt.Println(\"Transaction Result:\")\n\tfmt.Println(string(output))\n}\n"
  },
  {
    "path": "cmd/extension_options_tx/readme.md",
    "content": "# Testing JWS extension option with DID-based feegrant\n\nThis document explains how to test the JWS extension option functionality with DID-based feegrants.\n\n## Prerequisites\n\n- sourcehub node running locally (e.g. `./scripts/dev-entrypoint.sh start`)\n- Faucet account and validator account set up in keyring (set by default when running `dev-entrypoint.sh` script)\n- Test policy file available in `./scripts/test-policy.yaml`\n\n## Steps\n\n### 1. Grant DID-based fee allowance\n\nAdd a DID-based fee grant from the faucet address to the DID used in the script:\n\n```bash\nbuild/sourcehubd tx feegrant grant-did source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt did:key:z6MknVX5y2APs6LH21s9FusVozvdKKwDhFAqq3jzwAr6v21a --spend-limit 1000000uopen --keyring-backend test --chain-id=sourcehub-dev --gas auto --fees 200uopen -y\n```\n\n### 2. Verify the feegrant (optional)\n\nCheck that the DID allowance was added correctly:\n\n```bash\nbuild/sourcehubd q feegrant did-grant source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt did:key:z6MknVX5y2APs6LH21s9FusVozvdKKwDhFAqq3jzwAr6v21a\n```\n\n### 3. Run the extension options script\n\nExecute the script to create a policy with validator as the sender and faucet as the fee payer:\n\n```bash\ngo run ./cmd/extension_options_tx scripts/test-policy.yaml\n```\n\n### 4. Confirm policy creation (optional)\n\nCheck that the policy was created successfully:\n\n```bash\nbuild/sourcehubd q acp policy-ids\n```\n\n## How it works\n\n- The script creates a transaction signed by the **validator** account\n- The transaction includes a **JWS extension option** with a signature from the DID\n- The **faucet** account pays the transaction fees via DID-based feegrant\n- The policy is created with the validator as the creator\n\n## Expected behavior\n\n1. JWS extension option is validated and DID is extracted.\n2. DID-based feegrant is used to pay fees.\n3. Transaction succeeds and policy is created.\n4. Events show `use_feegrant` with the correct DID.\n\n## Current limitations\n\n> **NOTE**: The current create/edit policy logic uses the msg creator address as the policy owner. We should make changes to be able to use DID from the JWS as the owner instead."
  },
  {
    "path": "cmd/ica_packet_gen/main.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tgogoproto \"github.com/cosmos/gogoproto/proto\"\n\ticatypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc main() {\n\tvar creator, policy string\n\tflag.StringVar(&creator, \"creator\", \"\", \"Host chain ICA address to use as creator\")\n\tflag.StringVar(&policy, \"policy\", \"name: ica test policy\", \"Policy content\")\n\tflag.Parse()\n\n\tif creator == \"\" {\n\t\tpanic(\"--creator is required\")\n\t}\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policy,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tanyMsg, err := codectypes.NewAnyWithValue(msg)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcosmosTx := &icatypes.CosmosTx{Messages: []*codectypes.Any{anyMsg}}\n\tbz, err := gogoproto.Marshal(cosmosTx)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tout := icatypes.InterchainAccountPacketData{\n\t\tType: icatypes.EXECUTE_TX,\n\t\tData: bz,\n\t\tMemo: \"\",\n\t}\n\n\tenc, err := json.MarshalIndent(out, \"\", \"  \")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Println(string(enc))\n}\n"
  },
  {
    "path": "cmd/sourcehubd/cmd/commands.go",
    "content": "package cmd\n\nimport (\n\t\"errors\"\n\t\"io\"\n\n\t\"cosmossdk.io/log\"\n\tconfixcmd \"cosmossdk.io/tools/confix/cmd\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/debug\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/keys\"\n\t\"github.com/cosmos/cosmos-sdk/client/pruning\"\n\t\"github.com/cosmos/cosmos-sdk/client/rpc\"\n\t\"github.com/cosmos/cosmos-sdk/client/snapshot\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthcmd \"github.com/cosmos/cosmos-sdk/x/auth/client/cli\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/crisis\"\n\tgenutilcli \"github.com/cosmos/cosmos-sdk/x/genutil/client/cli\"\n\t\"github.com/spf13/cobra\"\n\t\"github.com/spf13/viper\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nfunc initRootCmd(\n\trootCmd *cobra.Command,\n\ttxConfig client.TxConfig,\n\tinterfaceRegistry codectypes.InterfaceRegistry,\n\tappCodec codec.Codec,\n\tbasicManager module.BasicManager,\n) {\n\trootCmd.AddCommand(\n\t\tgenutilcli.InitCmd(basicManager, app.DefaultNodeHome),\n\t\tdebug.Cmd(),\n\t\tconfixcmd.ConfigCommand(),\n\t\tpruning.Cmd(newApp, app.DefaultNodeHome),\n\t\tsnapshot.Cmd(newApp),\n\t\tNewTestnetCmd(basicManager, banktypes.GenesisBalancesIterator{}),\n\t)\n\n\tserver.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, addModuleInitFlags)\n\n\t// add keybase, auxiliary RPC, query, genesis, and tx child commands\n\trootCmd.AddCommand(\n\t\tserver.StatusCommand(),\n\t\tgenesisCommand(txConfig, basicManager),\n\t\tqueryCommand(),\n\t\ttxCommand(),\n\t\tkeys.Commands(),\n\t)\n}\n\nfunc addModuleInitFlags(startCmd *cobra.Command) {\n\tcrisis.AddModuleInitFlags(startCmd)\n}\n\n// genesisCommand builds genesis-related `sourcehubd genesis` command. Users may provide application specific commands as a parameter\nfunc genesisCommand(txConfig client.TxConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command {\n\tcmd := genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome)\n\n\tfor _, subCmd := range cmds {\n\t\tcmd.AddCommand(subCmd)\n\t}\n\treturn cmd\n}\n\nfunc queryCommand() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:                        \"query\",\n\t\tAliases:                    []string{\"q\"},\n\t\tShort:                      \"Querying subcommands\",\n\t\tDisableFlagParsing:         false,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\tcmd.AddCommand(\n\t\trpc.QueryEventForTxCmd(),\n\t\trpc.ValidatorCommand(),\n\t\tserver.QueryBlockCmd(),\n\t\tauthcmd.QueryTxsByEventsCmd(),\n\t\tserver.QueryBlocksCmd(),\n\t\tauthcmd.QueryTxCmd(),\n\t\tserver.QueryBlockResultsCmd(),\n\t)\n\tcmd.PersistentFlags().String(flags.FlagChainID, \"\", \"The network chain ID\")\n\n\treturn cmd\n}\n\nfunc txCommand() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:                        \"tx\",\n\t\tShort:                      \"Transactions subcommands\",\n\t\tDisableFlagParsing:         false,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\tcmd.AddCommand(\n\t\tauthcmd.GetSignCommand(),\n\t\tauthcmd.GetSignBatchCommand(),\n\t\tauthcmd.GetMultiSignCommand(),\n\t\tauthcmd.GetMultiSignBatchCmd(),\n\t\tauthcmd.GetValidateSignaturesCommand(),\n\t\tflags.LineBreak,\n\t\tauthcmd.GetBroadcastCommand(),\n\t\tauthcmd.GetEncodeCommand(),\n\t\tauthcmd.GetDecodeCommand(),\n\t\tauthcmd.GetSimulateCmd(),\n\t)\n\tcmd.PersistentFlags().String(flags.FlagChainID, \"\", \"The network chain ID\")\n\n\treturn cmd\n}\n\n// newApp creates the application\nfunc newApp(\n\tlogger log.Logger,\n\tdb dbm.DB,\n\ttraceStore io.Writer,\n\tappOpts servertypes.AppOptions,\n) servertypes.Application {\n\tbaseappOptions := server.DefaultBaseappOptions(appOpts)\n\n\tapp, err := app.New(\n\t\tlogger, db, traceStore, true,\n\t\tappOpts,\n\t\tbaseappOptions...,\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn app\n}\n\n// appExport creates a new app (optionally at a given height) and exports state.\nfunc appExport(\n\tlogger log.Logger,\n\tdb dbm.DB,\n\ttraceStore io.Writer,\n\theight int64,\n\tforZeroHeight bool,\n\tjailAllowedAddrs []string,\n\tappOpts servertypes.AppOptions,\n\tmodulesToExport []string,\n) (servertypes.ExportedApp, error) {\n\tvar (\n\t\tbApp *app.App\n\t\terr  error\n\t)\n\n\t// this check is necessary as we use the flag in x/upgrade.\n\t// we can exit more gracefully by checking the flag here.\n\thomePath, ok := appOpts.Get(flags.FlagHome).(string)\n\tif !ok || homePath == \"\" {\n\t\treturn servertypes.ExportedApp{}, errors.New(\"application home not set\")\n\t}\n\n\tviperAppOpts, ok := appOpts.(*viper.Viper)\n\tif !ok {\n\t\treturn servertypes.ExportedApp{}, errors.New(\"appOpts is not viper.Viper\")\n\t}\n\n\t// overwrite the FlagInvCheckPeriod\n\tviperAppOpts.Set(server.FlagInvCheckPeriod, 1)\n\tappOpts = viperAppOpts\n\n\tif height != -1 {\n\t\tbApp, err = app.New(logger, db, traceStore, false, appOpts)\n\t\tif err != nil {\n\t\t\treturn servertypes.ExportedApp{}, err\n\t\t}\n\n\t\tif err := bApp.LoadHeight(height); err != nil {\n\t\t\treturn servertypes.ExportedApp{}, err\n\t\t}\n\t} else {\n\t\tbApp, err = app.New(logger, db, traceStore, true, appOpts)\n\t\tif err != nil {\n\t\t\treturn servertypes.ExportedApp{}, err\n\t\t}\n\t}\n\n\treturn bApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport)\n}\n"
  },
  {
    "path": "cmd/sourcehubd/cmd/config.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\n\tcmtcfg \"github.com/cometbft/cometbft/config\"\n\tserverconfig \"github.com/cosmos/cosmos-sdk/server/config\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// CustomAppConfig extends the default Cosmos SDK app config\ntype CustomAppConfig struct {\n\tserverconfig.Config `mapstructure:\",squash\"`\n\n\tFaucet appparams.FaucetConfig `mapstructure:\"faucet\"`\n}\n\n// initCometBFTConfig helps to override default CometBFT Config values.\n// return cmtcfg.DefaultConfig if no custom configuration is required for the application.\nfunc initCometBFTConfig() *cmtcfg.Config {\n\tcfg := cmtcfg.DefaultConfig()\n\n\t// these values put a higher strain on node memory\n\t// cfg.P2P.MaxNumInboundPeers = 100\n\t// cfg.P2P.MaxNumOutboundPeers = 40\n\n\treturn cfg\n}\n\n// initAppConfig helps to override default appConfig template and configs.\n// return \"\", nil if no custom configuration is required for the application.\nfunc initAppConfig() (string, interface{}) {\n\t// Optionally allow the chain developer to overwrite the SDK's default server config.\n\tsrvCfg := serverconfig.DefaultConfig()\n\tsrvCfg.MinGasPrices = fmt.Sprintf(\n\t\t\"%s%s,%s%s\",\n\t\tappparams.DefaultMinGasPrice,\n\t\tappparams.MicroOpenDenom,\n\t\tappparams.DefaultMinGasPrice,\n\t\tappparams.MicroCreditDenom,\n\t)\n\t// The SDK's default minimum gas price is set to \"\" (empty value) inside\n\t// app.toml. If left empty by validators, the node will halt on startup.\n\t// However, the chain developer can set a default app.toml value for their\n\t// validators here.\n\t//\n\t// In summary:\n\t// - if you leave srvCfg.MinGasPrices = \"\", all validators MUST tweak their\n\t//   own app.toml config,\n\t// - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their\n\t//   own app.toml to override, or use this default value.\n\t//\n\t// In tests, we set the min gas prices to 0.\n\t// srvCfg.MinGasPrices = \"0stake\"\n\t// srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default\n\n\tcustomAppConfig := CustomAppConfig{\n\t\tConfig: *srvCfg,\n\t\tFaucet: appparams.FaucetConfig{\n\t\t\tEnableFaucet: false,\n\t\t},\n\t}\n\n\tcustomAppTemplate := serverconfig.DefaultConfigTemplate + `\n###############################################################################\n###                           Faucet Configuration                          ###\n###############################################################################\n\n[faucet]\n\n# Defines if the faucet service should be enabled.\nenable_faucet = {{ .Faucet.EnableFaucet }}\n`\n\n\treturn customAppTemplate, customAppConfig\n}\n"
  },
  {
    "path": "cmd/sourcehubd/cmd/root.go",
    "content": "package cmd\n\nimport (\n\t\"os\"\n\t\"strings\"\n\n\t\"cosmossdk.io/client/v2/autocli\"\n\tclientv2keyring \"cosmossdk.io/client/v2/autocli/keyring\"\n\t\"cosmossdk.io/core/address\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/config\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/tx\"\n\ttxmodule \"github.com/cosmos/cosmos-sdk/x/auth/tx/config\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"github.com/spf13/cobra\"\n\t\"github.com/spf13/pflag\"\n\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n)\n\n// NewRootCmd creates a new root command for sourcehubd. It is called once in the main function.\nfunc NewRootCmd() *cobra.Command {\n\tapp.SetConfig(true)\n\n\tvar (\n\t\ttxConfigOpts       tx.ConfigOptions\n\t\tautoCliOpts        autocli.AppOptions\n\t\tmoduleBasicManager module.BasicManager\n\t\tclientCtx          client.Context\n\t)\n\n\tif err := depinject.Inject(\n\t\tdepinject.Configs(app.AppConfig(),\n\t\t\tdepinject.Supply(\n\t\t\t\tlog.NewNopLogger(),\n\t\t\t),\n\t\t\tdepinject.Provide(\n\t\t\t\tProvideClientContext,\n\t\t\t\tProvideKeyring,\n\t\t\t),\n\t\t),\n\t\t&txConfigOpts,\n\t\t&autoCliOpts,\n\t\t&moduleBasicManager,\n\t\t&clientCtx,\n\t); err != nil {\n\t\tpanic(err)\n\t}\n\n\trootCmd := &cobra.Command{\n\t\tUse:           app.Name + \"d\",\n\t\tShort:         \"Start sourcehub node\",\n\t\tSilenceErrors: true,\n\t\tPersistentPreRunE: func(cmd *cobra.Command, _ []string) error {\n\t\t\t// set the default command outputs\n\t\t\tcmd.SetOut(cmd.OutOrStdout())\n\t\t\tcmd.SetErr(cmd.ErrOrStderr())\n\n\t\t\tclientCtx = clientCtx.WithCmdContext(cmd.Context())\n\t\t\tclientCtx, err := client.ReadPersistentCommandFlags(clientCtx, cmd.Flags())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tclientCtx, err = config.ReadFromClientConfig(clientCtx)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// This needs to go after ReadFromClientConfig, as that function\n\t\t\t// sets the RPC client needed for SIGN_MODE_TEXTUAL.\n\t\t\ttxConfigOpts.EnabledSignModes = append(txConfigOpts.EnabledSignModes, signing.SignMode_SIGN_MODE_TEXTUAL)\n\t\t\ttxConfigOpts.TextualCoinMetadataQueryFn = txmodule.NewGRPCCoinMetadataQueryFn(clientCtx)\n\t\t\ttxConfigWithTextual, err := tx.NewTxConfigWithOptions(\n\t\t\t\tcodec.NewProtoCodec(clientCtx.InterfaceRegistry),\n\t\t\t\ttxConfigOpts,\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tclientCtx = clientCtx.WithTxConfig(txConfigWithTextual)\n\t\t\tif err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tcustomAppTemplate, customAppConfig := initAppConfig()\n\t\t\tcustomCMTConfig := initCometBFTConfig()\n\n\t\t\treturn server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customCMTConfig)\n\t\t},\n\t}\n\n\t// Since the IBC modules don't support dependency injection, we need to\n\t// manually register the modules on the client side.\n\t// This needs to be removed after IBC supports App Wiring.\n\tibcModules := app.RegisterIBC(clientCtx.InterfaceRegistry)\n\tfor name, module := range ibcModules {\n\t\tautoCliOpts.Modules[name] = module\n\t}\n\n\t// Manually set auto cli options for the mint module since we removed it from depinject\n\tautoCliOpts.Modules[minttypes.ModuleName] = app.RegisterMintInterfaces(clientCtx.InterfaceRegistry)\n\n\tinitRootCmd(rootCmd, clientCtx.TxConfig, clientCtx.InterfaceRegistry, clientCtx.Codec, moduleBasicManager)\n\n\toverwriteFlagDefaults(rootCmd, map[string]string{\n\t\tflags.FlagChainID:        strings.ReplaceAll(app.Name, \"-\", \"\"),\n\t\tflags.FlagKeyringBackend: \"test\",\n\t})\n\n\tif err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn rootCmd\n}\n\nfunc overwriteFlagDefaults(c *cobra.Command, defaults map[string]string) {\n\tset := func(s *pflag.FlagSet, key, val string) {\n\t\tif f := s.Lookup(key); f != nil {\n\t\t\tf.DefValue = val\n\t\t\tf.Value.Set(val)\n\t\t}\n\t}\n\tfor key, val := range defaults {\n\t\tset(c.Flags(), key, val)\n\t\tset(c.PersistentFlags(), key, val)\n\t}\n\tfor _, c := range c.Commands() {\n\t\toverwriteFlagDefaults(c, defaults)\n\t}\n}\n\nfunc ProvideClientContext(\n\tappCodec codec.Codec,\n\tinterfaceRegistry codectypes.InterfaceRegistry,\n\ttxConfig client.TxConfig,\n\tlegacyAmino *codec.LegacyAmino,\n) client.Context {\n\t// Register ante interfaces for extension options\n\tantetypes.RegisterInterfaces(interfaceRegistry)\n\n\tclientCtx := client.Context{}.\n\t\tWithCodec(appCodec).\n\t\tWithInterfaceRegistry(interfaceRegistry).\n\t\tWithTxConfig(txConfig).\n\t\tWithLegacyAmino(legacyAmino).\n\t\tWithInput(os.Stdin).\n\t\tWithAccountRetriever(types.AccountRetriever{}).\n\t\tWithHomeDir(app.DefaultNodeHome).\n\t\tWithViper(app.Name) // env variable prefix\n\n\t// Read the config again to overwrite the default values with the values from the config file\n\tclientCtx, _ = config.ReadFromClientConfig(clientCtx)\n\n\treturn clientCtx\n}\n\nfunc ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) {\n\tkb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn keyring.NewAutoCLIKeyring(kb)\n}\n"
  },
  {
    "path": "cmd/sourcehubd/cmd/testnet.go",
    "content": "package cmd\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"path/filepath\"\n\n\tcmtconfig \"github.com/cometbft/cometbft/config\"\n\tcmttime \"github.com/cometbft/cometbft/types/time\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/spf13/cobra\"\n\t\"github.com/spf13/pflag\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/math/unsafe\"\n\n\tbam \"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/server\"\n\tsrvconfig \"github.com/cosmos/cosmos-sdk/server/config\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/network\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/genutil\"\n\tgenutiltypes \"github.com/cosmos/cosmos-sdk/x/genutil/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\thubtypes \"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nvar (\n\t// Common flags\n\tflagNumValidators = \"v\"\n\tflagOutputDir     = \"output-dir\"\n\tflagNoFees        = \"no-fees\"\n\n\t// `start` command flags\n\tflagRPCAddress    = \"rpc.address\"\n\tflagAPIAddress    = \"api.address\"\n\tflagGRPCAddress   = \"grpc.address\"\n\tflagEnableLogging = \"enable-logging\"\n\tflagPrintMnemonic = \"print-mnemonic\"\n\n\t// `init-files` command flags\n\tflagStakeTokens       = \"stake-tokens\"\n\tflagOpenTokens        = \"uopen-tokens\"\n\tflagCreditTokens      = \"ucredit-tokens\"\n\tflagAddFaucet         = \"faucet-amount\"\n\tflagNodeDirPrefix     = \"node-dir-prefix\"\n\tflagNodeDaemonHome    = \"node-daemon-home\"\n\tflagStartingIPAddress = \"starting-ip-address\"\n)\n\nconst nodeDirPerm = 0o755\n\ntype startArgs struct {\n\talgo          string\n\tapiAddress    string\n\tchainID       string\n\tenableLogging bool\n\tgrpcAddress   string\n\tminGasPrices  string\n\tnumValidators int\n\toutputDir     string\n\tprintMnemonic bool\n\trpcAddress    string\n}\n\ntype initFilesArgs struct {\n\talgo              string\n\tchainID           string\n\tcreditTokens      int64\n\tfaucetAmount      int64\n\tkeyringBackend    string\n\tminGasPrices      string\n\tnodeDaemonHome    string\n\tnodeDirPrefix     string\n\tnumValidators     int\n\topenTokens        int64\n\toutputDir         string\n\tstakeTokens       int64\n\tstartingIPAddress string\n\tnoFees            bool\n}\n\n// NewTestnetCmd creates a root testnet command with subcommands to run an in-process testnet or initialize\n// validator configuration files for running a multi-validator testnet in a separate process.\nfunc NewTestnetCmd(mbm module.BasicManager, genBalIterator banktypes.GenesisBalancesIterator) *cobra.Command {\n\ttestnetCmd := &cobra.Command{\n\t\tUse:                        \"testnet\",\n\t\tShort:                      \"subcommands for starting or configuring local testnets\",\n\t\tDisableFlagParsing:         true,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\ttestnetCmd.AddCommand(testnetStartCmd())\n\ttestnetCmd.AddCommand(testnetInitFilesCmd(mbm, genBalIterator))\n\n\treturn testnetCmd\n}\n\n// addTestnetFlagsToCmd adds common testnet CLI flags to a Cobra command.\nfunc addTestnetFlagsToCmd(cmd *cobra.Command) {\n\tcmd.Flags().Int(flagNumValidators, 4, \"Number of validators to initialize the testnet with\")\n\tcmd.Flags().StringP(flagOutputDir, \"o\", \"./.testnets\", \"Directory to store initialization data for the testnet\")\n\tcmd.Flags().String(flags.FlagChainID, \"\", \"genesis file chain-id, if left blank will be randomly created\")\n\tcmd.Flags().String(\n\t\tserver.FlagMinGasPrices,\n\t\t\"0.001uopen,0.001ucredit\",\n\t\t\"Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.001uopen,0.001ucredit)\",\n\t)\n\tcmd.Flags().String(flags.FlagKeyType, string(hd.Secp256k1Type), \"Key signing algorithm to generate keys for\")\n\tcmd.Flags().Bool(flagNoFees, false, \"If set the chain will accept no fee Txs\")\n\n\t// support old flags name for backwards compatibility\n\tcmd.Flags().SetNormalizeFunc(func(f *pflag.FlagSet, name string) pflag.NormalizedName {\n\t\tif name == flags.FlagKeyAlgorithm {\n\t\t\tname = flags.FlagKeyType\n\t\t}\n\n\t\treturn pflag.NormalizedName(name)\n\t})\n}\n\n// testnetStartCmd returns a cmd to start multi validator in-process testnet.\nfunc testnetStartCmd() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"start\",\n\t\tShort: \"Launch an in-process multi-validator testnet\",\n\t\tLong: `testnet will launch an in-process multi-validator testnet,\nand generate \"v\" directories, populated with necessary validator configuration files\n(private validator, genesis, config, etc.).\n\nExample:\n\tsourcehubd testnet start --v 4 --output-dir ./.testnets\n\t`,\n\t\tRunE: func(cmd *cobra.Command, _ []string) error {\n\t\t\targs := startArgs{}\n\t\t\targs.outputDir, _ = cmd.Flags().GetString(flagOutputDir)\n\t\t\targs.chainID, _ = cmd.Flags().GetString(flags.FlagChainID)\n\t\t\targs.minGasPrices, _ = cmd.Flags().GetString(server.FlagMinGasPrices)\n\t\t\targs.numValidators, _ = cmd.Flags().GetInt(flagNumValidators)\n\t\t\targs.algo, _ = cmd.Flags().GetString(flags.FlagKeyType)\n\t\t\targs.enableLogging, _ = cmd.Flags().GetBool(flagEnableLogging)\n\t\t\targs.rpcAddress, _ = cmd.Flags().GetString(flagRPCAddress)\n\t\t\targs.apiAddress, _ = cmd.Flags().GetString(flagAPIAddress)\n\t\t\targs.grpcAddress, _ = cmd.Flags().GetString(flagGRPCAddress)\n\t\t\targs.printMnemonic, _ = cmd.Flags().GetBool(flagPrintMnemonic)\n\n\t\t\treturn startTestnet(cmd, args)\n\t\t},\n\t}\n\n\taddTestnetFlagsToCmd(cmd)\n\n\tcmd.Flags().Bool(flagEnableLogging, false, \"Enable INFO logging of CometBFT validator nodes\")\n\tcmd.Flags().String(flagRPCAddress, \"tcp://0.0.0.0:26657\", \"the RPC address to listen on\")\n\tcmd.Flags().String(flagAPIAddress, \"tcp://0.0.0.0:1317\", \"the address to listen on for REST API\")\n\tcmd.Flags().String(flagGRPCAddress, \"0.0.0.0:9090\", \"the gRPC server address to listen on\")\n\tcmd.Flags().Bool(flagPrintMnemonic, true, \"print mnemonic of first validator to stdout for manual testing\")\n\n\treturn cmd\n}\n\n// startTestnet starts an in-process testnet.\nfunc startTestnet(cmd *cobra.Command, args startArgs) error {\n\tnetworkConfig := network.DefaultConfig(newTestNetworkFixture)\n\n\t// Default networkConfig.ChainID is random, and we should only override it if chainID provided is non-empty\n\tif args.chainID != \"\" {\n\t\tnetworkConfig.ChainID = args.chainID\n\t}\n\tnetworkConfig.SigningAlgo = args.algo\n\tnetworkConfig.MinGasPrices = args.minGasPrices\n\tnetworkConfig.BondDenom = appparams.DefaultBondDenom\n\tnetworkConfig.NumValidators = args.numValidators\n\tnetworkConfig.EnableLogging = args.enableLogging\n\tnetworkConfig.RPCAddress = args.rpcAddress\n\tnetworkConfig.APIAddress = args.apiAddress\n\tnetworkConfig.GRPCAddress = args.grpcAddress\n\tnetworkConfig.PrintMnemonic = args.printMnemonic\n\tnetworkLogger := network.NewCLILogger(cmd)\n\n\tbaseDir := fmt.Sprintf(\"%s\", args.outputDir)\n\tif _, err := os.Stat(baseDir); !os.IsNotExist(err) {\n\t\treturn fmt.Errorf(\n\t\t\t\"testnests directory already exists for chain-id '%s': %s, please remove or select a new --chain-id\",\n\t\t\tnetworkConfig.ChainID, baseDir)\n\t}\n\n\ttestnet, err := network.New(networkLogger, baseDir, networkConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif _, err := testnet.WaitForHeight(1); err != nil {\n\t\treturn err\n\t}\n\tcmd.Println(\"press the Enter Key to terminate\")\n\tif _, err := fmt.Scanln(); err != nil {\n\t\treturn err\n\t}\n\ttestnet.Cleanup()\n\n\treturn nil\n}\n\n// newTestNetworkFixture returns a test fixture used in the network config.\nfunc newTestNetworkFixture() network.TestFixture {\n\tdir, err := os.MkdirTemp(\"\", \"sourceapp\")\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"failed creating temporary directory: %v\", err))\n\t}\n\tdefer os.RemoveAll(dir)\n\n\tapplication, err := app.New(log.NewNopLogger(), dbm.NewMemDB(), nil, true, sims.NewAppOptionsWithFlagHome(dir))\n\n\tappCtr := func(val network.ValidatorI) servertypes.Application {\n\t\tappInstance, _ := app.New(\n\t\t\tval.GetCtx().Logger,\n\t\t\tdbm.NewMemDB(),\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tsims.NewAppOptionsWithFlagHome(val.GetCtx().Config.RootDir),\n\t\t\tbam.SetChainID(val.GetCtx().Viper.GetString(flags.FlagChainID)),\n\t\t)\n\t\treturn appInstance\n\t}\n\n\treturn network.TestFixture{\n\t\tAppConstructor: appCtr,\n\t\tGenesisState:   application.DefaultGenesis(),\n\t\tEncodingConfig: simtestutil.TestEncodingConfig{\n\t\t\tInterfaceRegistry: application.AppCodec().InterfaceRegistry(),\n\t\t\tCodec:             application.AppCodec(),\n\t\t\tTxConfig:          application.TxConfig(),\n\t\t\tAmino:             application.LegacyAmino(),\n\t\t},\n\t}\n}\n\n// testnetInitFilesCmd returns a cmd to initialize all files for CometBFT testnet and application.\nfunc testnetInitFilesCmd(mbm module.BasicManager, genBalIterator banktypes.GenesisBalancesIterator) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"init-files\",\n\t\tShort: \"Initialize config directories & files for a multi-validator testnet running locally via separate processes\",\n\t\tLong: `init-files will setup \"v\" number of directories and populate each with\nnecessary files (private validator, genesis, config, etc.) for running \"v\" validator nodes.\n\nBooting up a network with these validator folders is intended to be used with Docker Compose,\nor a similar setup where each node has a manually configurable IP address.\n\nNote, strict routability for addresses is turned off in the config file.\n\nExample:\n\tsourcehubd testnet init-files --v 4 --output-dir ./.testnets --starting-ip-address 192.168.10.2\n\t`,\n\t\tRunE: func(cmd *cobra.Command, _ []string) error {\n\t\t\tclientCtx, err := client.GetClientQueryContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tserverCtx := server.GetServerContextFromCmd(cmd)\n\t\t\tconfig := serverCtx.Config\n\n\t\t\targs := initFilesArgs{}\n\t\t\targs.outputDir, _ = cmd.Flags().GetString(flagOutputDir)\n\t\t\targs.keyringBackend, _ = cmd.Flags().GetString(flags.FlagKeyringBackend)\n\t\t\targs.chainID, _ = cmd.Flags().GetString(flags.FlagChainID)\n\t\t\targs.minGasPrices, _ = cmd.Flags().GetString(server.FlagMinGasPrices)\n\t\t\targs.nodeDirPrefix, _ = cmd.Flags().GetString(flagNodeDirPrefix)\n\t\t\targs.nodeDaemonHome, _ = cmd.Flags().GetString(flagNodeDaemonHome)\n\t\t\targs.startingIPAddress, _ = cmd.Flags().GetString(flagStartingIPAddress)\n\t\t\targs.numValidators, _ = cmd.Flags().GetInt(flagNumValidators)\n\t\t\targs.algo, _ = cmd.Flags().GetString(flags.FlagKeyType)\n\t\t\targs.faucetAmount, _ = cmd.Flags().GetInt64(flagAddFaucet)\n\t\t\targs.openTokens, _ = cmd.Flags().GetInt64(flagOpenTokens)\n\t\t\targs.creditTokens, _ = cmd.Flags().GetInt64(flagCreditTokens)\n\t\t\targs.stakeTokens, _ = cmd.Flags().GetInt64(flagStakeTokens)\n\t\t\targs.noFees, _ = cmd.Flags().GetBool(flagNoFees)\n\n\t\t\treturn initTestnetFiles(\n\t\t\t\tclientCtx,\n\t\t\t\tcmd,\n\t\t\t\tconfig,\n\t\t\t\tmbm,\n\t\t\t\tgenBalIterator,\n\t\t\t\tclientCtx.TxConfig.SigningContext().ValidatorAddressCodec(),\n\t\t\t\targs,\n\t\t\t)\n\t\t},\n\t}\n\n\taddTestnetFlagsToCmd(cmd)\n\n\tcmd.Flags().String(flagNodeDirPrefix, \"node\", \"Prefix the directory name for each node with (node results in node0, node1, ...)\")\n\tcmd.Flags().String(flagNodeDaemonHome, \"sourcehubd\", \"Home directory of the node's daemon configuration\")\n\tcmd.Flags().String(\n\t\tflagStartingIPAddress,\n\t\t\"192.168.0.1\",\n\t\t\"Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)\",\n\t)\n\tcmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, \"Select keyring's backend (os|file|test)\")\n\tcmd.Flags().Int64(flagAddFaucet, 0, \"Create a faucet account with the given amount of uopen tokens\")\n\tcmd.Flags().Int64(flagOpenTokens, 1000, \"Amount of uopen to fund each validator account\")\n\tcmd.Flags().Int64(flagCreditTokens, 2000, \"Amount of ucredit to fund each validator account\")\n\tcmd.Flags().Int64(flagStakeTokens, 100, \"Amount of uopen to self-delegate during MsgCreateValidator\")\n\n\treturn cmd\n}\n\n// initTestnetFiles initializes testnet files for a testnet to be run in a separate process.\nfunc initTestnetFiles(\n\tclientCtx client.Context,\n\tcmd *cobra.Command,\n\tnodeConfig *cmtconfig.Config,\n\tmbm module.BasicManager,\n\tgenBalIterator banktypes.GenesisBalancesIterator,\n\tvalAddrCodec runtime.ValidatorAddressCodec,\n\targs initFilesArgs,\n) error {\n\tif args.chainID == \"\" {\n\t\targs.chainID = \"chain-\" + unsafe.Str(6)\n\t}\n\tnodeIDs := make([]string, args.numValidators)\n\tvalPubKeys := make([]cryptotypes.PubKey, args.numValidators)\n\n\tappConfig := srvconfig.DefaultConfig()\n\tappConfig.MinGasPrices = args.minGasPrices\n\tappConfig.API.Enable = true\n\tappConfig.Telemetry.Enabled = true\n\tappConfig.Telemetry.PrometheusRetentionTime = 60\n\tappConfig.Telemetry.EnableHostnameLabel = false\n\tappConfig.Telemetry.GlobalLabels = [][]string{{\"chain_id\", args.chainID}}\n\n\tvar (\n\t\tgenAccounts []authtypes.GenesisAccount\n\t\tgenBalances []banktypes.Balance\n\t\tgenFiles    []string\n\t)\n\n\t// generate private keys, node IDs, and initial transactions\n\tinBuf := bufio.NewReader(cmd.InOrStdin())\n\tfor i := 0; i < args.numValidators; i++ {\n\t\tnodeDirName := fmt.Sprintf(\"%s%d\", args.nodeDirPrefix, i)\n\t\tnodeDir := filepath.Join(args.outputDir, nodeDirName, args.nodeDaemonHome)\n\t\tgentxsDir := filepath.Join(args.outputDir, \"gentxs\")\n\n\t\tnodeConfig.SetRoot(nodeDir)\n\t\tnodeConfig.Moniker = nodeDirName\n\t\tnodeConfig.RPC.ListenAddress = \"tcp://0.0.0.0:26657\"\n\n\t\tif err := os.MkdirAll(filepath.Join(nodeDir, \"config\"), nodeDirPerm); err != nil {\n\t\t\t_ = os.RemoveAll(args.outputDir)\n\t\t\treturn err\n\t\t}\n\n\t\t_, err := getIP(i, args.startingIPAddress)\n\t\tif err != nil {\n\t\t\t_ = os.RemoveAll(args.outputDir)\n\t\t\treturn err\n\t\t}\n\n\t\tnodeIDs[i], valPubKeys[i], err = genutil.InitializeNodeValidatorFiles(nodeConfig)\n\t\tif err != nil {\n\t\t\t_ = os.RemoveAll(args.outputDir)\n\t\t\treturn err\n\t\t}\n\n\t\tbasePort := 26656\n\t\tmemo := fmt.Sprintf(\"%s@0.0.0.0:%d\", nodeIDs[i], basePort+(i*10))\n\n\t\tgenFiles = append(genFiles, nodeConfig.GenesisFile())\n\n\t\tkb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, nodeDir, inBuf, clientCtx.Codec)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tkeyringAlgos, _ := kb.SupportedAlgorithms()\n\t\talgo, err := keyring.NewSigningAlgoFromString(args.algo, keyringAlgos)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\taddr, secret, err := testutil.GenerateSaveCoinKey(kb, nodeDirName, \"\", true, algo)\n\t\tif err != nil {\n\t\t\t_ = os.RemoveAll(args.outputDir)\n\t\t\treturn err\n\t\t}\n\n\t\tinfo := map[string]string{\"secret\": secret}\n\n\t\tcliPrint, err := json.MarshalIndent(info, \"\", \"  \")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := writeFile(fmt.Sprintf(\"%v.json\", \"key_seed\"), nodeDir, cliPrint); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\taccOpenTokens := sdk.TokensFromConsensusPower(args.openTokens, sdk.DefaultPowerReduction)     // 1,000 $OPEN\n\t\taccCreditTokens := sdk.TokensFromConsensusPower(args.creditTokens, sdk.DefaultPowerReduction) // 2,000 $CREDIT\n\t\tcoins := sdk.Coins{\n\t\t\tsdk.NewCoin(appparams.DefaultBondDenom, accOpenTokens),\n\t\t\tsdk.NewCoin(appparams.MicroCreditDenom, accCreditTokens),\n\t\t}\n\n\t\tgenBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: coins.Sort()})\n\t\tgenAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0))\n\n\t\tvalStr, err := valAddrCodec.BytesToString(sdk.ValAddress(addr))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalTokens := sdk.TokensFromConsensusPower(args.stakeTokens, sdk.DefaultPowerReduction) // 100 $OPEN\n\t\tcreateValMsg, err := stakingtypes.NewMsgCreateValidator(\n\t\t\tvalStr,\n\t\t\tvalPubKeys[i],\n\t\t\tsdk.NewCoin(appparams.DefaultBondDenom, valTokens),\n\t\t\tstakingtypes.NewDescription(nodeDirName, \"\", \"\", \"\", \"\"),\n\t\t\tstakingtypes.NewCommissionRates(math.LegacyOneDec(), math.LegacyOneDec(), math.LegacyOneDec()),\n\t\t\tmath.OneInt(),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\ttxBuilder := clientCtx.TxConfig.NewTxBuilder()\n\t\tif err := txBuilder.SetMsgs(createValMsg); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\ttxBuilder.SetMemo(memo)\n\n\t\ttxFactory := tx.Factory{}\n\t\ttxFactory = txFactory.\n\t\t\tWithChainID(args.chainID).\n\t\t\tWithMemo(memo).\n\t\t\tWithKeybase(kb).\n\t\t\tWithTxConfig(clientCtx.TxConfig)\n\n\t\tif err := tx.Sign(cmd.Context(), txFactory, nodeDirName, txBuilder, true); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\ttxBz, err := clientCtx.TxConfig.TxJSONEncoder()(txBuilder.GetTx())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := writeFile(fmt.Sprintf(\"%v.json\", nodeDirName), gentxsDir, txBz); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tsrvconfig.SetConfigTemplate(srvconfig.DefaultConfigTemplate)\n\t\tsrvconfig.WriteConfigFile(filepath.Join(nodeDir, \"config\", \"app.toml\"), appConfig)\n\t}\n\n\t// initialize and fund the faucet account if faucetAmount is set via --faucet flag\n\tif args.faucetAmount > 0 {\n\t\tfaucetDir := filepath.Join(args.outputDir, \"faucet\")\n\t\tif err := os.MkdirAll(faucetDir, nodeDirPerm); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfaucetKb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, faucetDir, inBuf, clientCtx.Codec)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tkeyringAlgos, _ := faucetKb.SupportedAlgorithms()\n\t\talgo, err := keyring.NewSigningAlgoFromString(args.algo, keyringAlgos)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\taddr, secret, err := testutil.GenerateSaveCoinKey(faucetKb, \"faucet\", \"\", true, algo)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfaucetInfo := map[string]string{\n\t\t\t\"secret\":  secret,\n\t\t\t\"address\": addr.String(),\n\t\t}\n\n\t\tcliPrint, err := json.MarshalIndent(faucetInfo, \"\", \"  \")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := writeFile(fmt.Sprintf(\"%v.json\", \"key_seed\"), faucetDir, cliPrint); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tamount := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(args.faucetAmount))\n\t\tgenBalances = append(genBalances, banktypes.Balance{\n\t\t\tAddress: addr.String(),\n\t\t\tCoins:   sdk.NewCoins(amount),\n\t\t})\n\t\tgenAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0))\n\t}\n\n\tif err := initGenFiles(clientCtx, mbm, args.chainID, genAccounts, genBalances, genFiles, args.numValidators, args.noFees); err != nil {\n\t\treturn err\n\t}\n\n\terr := collectGenFiles(\n\t\tclientCtx, nodeConfig, args.chainID, nodeIDs, valPubKeys, args.numValidators,\n\t\targs.outputDir, args.nodeDirPrefix, args.nodeDaemonHome, genBalIterator, valAddrCodec,\n\t)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcmd.PrintErrf(\"Successfully initialized %d node directories\\n\", args.numValidators)\n\treturn nil\n}\n\n// initGenFiles writes genesis files including auth and bank state for all validators.\nfunc initGenFiles(\n\tclientCtx client.Context,\n\tmbm module.BasicManager,\n\tchainID string,\n\tgenAccounts []authtypes.GenesisAccount,\n\tgenBalances []banktypes.Balance,\n\tgenFiles []string,\n\tnumValidators int,\n\tnoFees bool,\n) error {\n\tappGenState := mbm.DefaultGenesis(clientCtx.Codec)\n\n\t// set the accounts in the genesis state\n\tvar authGenState authtypes.GenesisState\n\tclientCtx.Codec.MustUnmarshalJSON(appGenState[authtypes.ModuleName], &authGenState)\n\n\taccounts, err := authtypes.PackAccounts(genAccounts)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tauthGenState.Accounts = accounts\n\tappGenState[authtypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&authGenState)\n\n\t// set the balances in the genesis state\n\tvar bankGenState banktypes.GenesisState\n\tclientCtx.Codec.MustUnmarshalJSON(appGenState[banktypes.ModuleName], &bankGenState)\n\n\tbankGenState.Balances = banktypes.SanitizeGenesisBalances(genBalances)\n\tfor _, bal := range bankGenState.Balances {\n\t\tbankGenState.Supply = bankGenState.Supply.Add(bal.Coins...)\n\t}\n\tappGenState[banktypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&bankGenState)\n\n\thubGenesis := hubtypes.DefaultGenesis()\n\thubGenesis.ChainConfig.AllowZeroFeeTxs = noFees\n\tappGenState[hubtypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(hubGenesis)\n\n\tappGenStateJSON, err := json.MarshalIndent(appGenState, \"\", \"  \")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// generate empty genesis files for each validator and save\n\tappGenesis := genutiltypes.NewAppGenesisWithVersion(chainID, appGenStateJSON)\n\tfor i := 0; i < numValidators; i++ {\n\t\tif err := appGenesis.SaveAs(genFiles[i]); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// collectGenFiles collects gentxs and finalizes the genesis files with consistent app state and time.\nfunc collectGenFiles(\n\tclientCtx client.Context,\n\tnodeConfig *cmtconfig.Config,\n\tchainID string,\n\tnodeIDs []string,\n\tvalPubKeys []cryptotypes.PubKey,\n\tnumValidators int,\n\toutputDir, nodeDirPrefix, nodeDaemonHome string,\n\tgenBalIterator banktypes.GenesisBalancesIterator,\n\tvalAddrCodec runtime.ValidatorAddressCodec,\n) error {\n\tvar appState json.RawMessage\n\tgenTime := cmttime.Now()\n\n\tfor i := 0; i < numValidators; i++ {\n\t\tnodeDirName := fmt.Sprintf(\"%s%d\", nodeDirPrefix, i)\n\t\tnodeDir := filepath.Join(outputDir, nodeDirName, nodeDaemonHome)\n\t\tgentxsDir := filepath.Join(outputDir, \"gentxs\")\n\t\tnodeConfig.Moniker = nodeDirName\n\n\t\tnodeConfig.SetRoot(nodeDir)\n\n\t\tappGenesis, err := genutiltypes.AppGenesisFromFile(nodeConfig.GenesisFile())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tnodeID, valPubKey := nodeIDs[i], valPubKeys[i]\n\t\tinitCfg := genutiltypes.NewInitConfig(chainID, gentxsDir, nodeID, valPubKey)\n\n\t\tnodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.Codec, clientCtx.TxConfig, nodeConfig, initCfg, appGenesis, genBalIterator, genutiltypes.DefaultMessageValidator,\n\t\t\tvalAddrCodec)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif appState == nil {\n\t\t\t// set the canonical application state (they should not differ)\n\t\t\tappState = nodeAppState\n\t\t}\n\n\t\tgenFile := nodeConfig.GenesisFile()\n\n\t\t// overwrite each validator's genesis file to have a canonical genesis time\n\t\tif err := genutil.ExportGenesisFileWithTime(genFile, chainID, nil, appState, genTime); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// getIP returns an IP address based on the index and starting IP, or external IP if none provided.\nfunc getIP(i int, startingIPAddr string) (ip string, err error) {\n\tif len(startingIPAddr) == 0 {\n\t\tip, err = server.ExternalIP()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn ip, nil\n\t}\n\treturn calculateIP(startingIPAddr, i)\n}\n\n// calculateIP computes the nth IP address offset from a base IPv4 address.\nfunc calculateIP(ip string, i int) (string, error) {\n\tipv4 := net.ParseIP(ip).To4()\n\tif ipv4 == nil {\n\t\treturn \"\", fmt.Errorf(\"%v: non ipv4 address\", ip)\n\t}\n\tfor j := 0; j < i; j++ {\n\t\tipv4[3]++\n\t}\n\treturn ipv4.String(), nil\n}\n\n// writeFile writes a byte slice to a named file inside the given directory, creating the directory if needed.\nfunc writeFile(name, dir string, contents []byte) error {\n\tfile := filepath.Join(dir, name)\n\tif err := os.MkdirAll(dir, nodeDirPerm); err != nil {\n\t\treturn fmt.Errorf(\"could not create directory %q: %w\", dir, err)\n\t}\n\tif err := os.WriteFile(file, contents, 0o600); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "cmd/sourcehubd/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tsvrcmd \"github.com/cosmos/cosmos-sdk/server/cmd\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\t\"github.com/sourcenetwork/sourcehub/cmd/sourcehubd/cmd\"\n)\n\nfunc main() {\n\trootCmd := cmd.NewRootCmd()\n\tif err := svrcmd.Execute(rootCmd, \"\", app.DefaultNodeHome); err != nil {\n\t\tfmt.Fprintln(rootCmd.OutOrStderr(), err)\n\t\tos.Exit(1)\n\t}\n}\n"
  },
  {
    "path": "cmd/test_env_generator/main.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"strconv\"\n\t\"strings\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar rootCmd = &cobra.Command{\n\tUse:   \"test_env_generator {permutation}\",\n\tShort: \"test_env_generator permutates through SourceHub's test suite environment variables\",\n\tLong: `\n\ttest_env_generator outputs the set of environment variables which should be set for each test permutation.\n\t\t   \n\tWith no input, prints the amount of permutations available.\n\tPermutation numbering is 0 based (eg if there are permutations the allowed options arguments are 0, 1, 2)\n\t`,\n\tArgs: cobra.MaximumNArgs(1),\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tenvirons := genEnvirons()\n\n\t\tif len(args) == 0 {\n\t\t\tfmt.Printf(\"%v\\n\", len(environs))\n\t\t\treturn\n\t\t}\n\n\t\tif args[0] == \"all\" {\n\t\t\tfor _, env := range environs {\n\t\t\t\tfmt.Println(env)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tindex, err := strconv.Atoi(args[0])\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"%v is an invalid index\", args[0])\n\t\t}\n\t\tif index < 0 || index > len(environs) {\n\t\t\tlog.Fatalf(\"index must be within [0, %v]\", len(environs)-1)\n\t\t}\n\n\t\tprintln(environs[index])\n\t},\n}\n\nfunc main() {\n\trootCmd.Execute()\n}\n\nfunc writeKV(builder *strings.Builder, key, value string) {\n\tbuilder.WriteString(\"export \")\n\tbuilder.WriteString(key)\n\tbuilder.WriteRune('=')\n\tbuilder.WriteRune('\"')\n\tbuilder.WriteString(value)\n\tbuilder.WriteRune('\"')\n\tbuilder.WriteRune(' ')\n\tbuilder.WriteRune(';')\n}\n\nfunc genEnvirons() []string {\n\tcombinations := len(test.ActorKeyMap) * len(test.ExecutorStrategyMap) * len(test.AuthenticationStrategyMap)\n\tenvirons := make([]string, 0, combinations)\n\n\tfor actorKeyVar := range test.ActorKeyMap {\n\t\tfor executorVar := range test.ExecutorStrategyMap {\n\t\t\tfor authStratVar := range test.AuthenticationStrategyMap {\n\t\t\t\t// ED25519 key type is not valid for direct authentication\n\t\t\t\t// since ed25519 accounts cannot sign txs\n\t\t\t\tif actorKeyVar == \"ED25519\" && authStratVar == \"DIRECT\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tbuilder := strings.Builder{}\n\t\t\t\twriteKV(&builder, test.SourceHubActorEnvVar, actorKeyVar)\n\t\t\t\twriteKV(&builder, test.SourceHubExecutorEnvVar, executorVar)\n\t\t\t\twriteKV(&builder, test.SourceHubAuthStratEnvVar, authStratVar)\n\t\t\t\tenviron := builder.String()\n\t\t\t\tenvirons = append(environs, environ)\n\t\t\t}\n\t\t}\n\t}\n\n\tutils.SortSlice(environs)\n\n\treturn environs\n}\n"
  },
  {
    "path": "cmd/tx_listener/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar rootCmd = &cobra.Command{\n\tUse:   \"tx-listener [comet-rpc-addr]\",\n\tShort: \"listens to proposed txs and unmarshal results into structured SourceHub msgs\",\n\tLong: `tx-listener is a cli utility which connects to SourceHub's cometbft rpc connection\n\tand listens for Tx processing events.\n\tThe received events are expanded and the Tx results are unmarshaled into the correct\n\tMsg response types.\n\n\tThis is meant to be used a development tool to monitor the result of executed Txs by SourceHub.\n\t`,\n\tArgs: cobra.MaximumNArgs(1),\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\taddr := sdk.DefaultCometRPCAddr\n\t\tvar opts []sdk.Opt\n\t\tif len(args) == 1 {\n\t\t\taddr = args[0]\n\t\t}\n\t\topts = append(opts, sdk.WithCometRPCAddr(addr))\n\t\tclient, err := sdk.NewClient(opts...)\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\n\t\tlistener := client.TxListener()\n\n\t\tctx := context.Background()\n\n\t\tlistener.ListenAsync(ctx, func(ev *sdk.Event, err error) {\n\t\t\tif err != nil {\n\t\t\t\tlog.Printf(\"ERROR in Tx: %v\", err)\n\t\t\t} else {\n\t\t\t\tbytes, err := json.MarshalIndent(ev, \"\", \"  \")\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Fatalf(\"failed to marshal result: %v\", err)\n\t\t\t\t}\n\t\t\t\tlog.Print(string(bytes))\n\t\t\t}\n\t\t})\n\t\tlog.Printf(\"Listening to RPC at %v\", addr)\n\n\t\tdone := make(chan os.Signal, 1)\n\t\tsignal.Notify(done, syscall.SIGINT, syscall.SIGTERM)\n\t\tfmt.Println(\"Blocking, press ctrl+c to continue...\")\n\n\t\t<-done\n\t\tfmt.Println(\"Received interrupt: terminating listener\")\n\t\tlistener.Close()\n\t},\n}\n\nfunc main() {\n\trootCmd.Execute()\n}\n"
  },
  {
    "path": "codecov.yml",
    "content": "coverage:\n  ignore:\n    - \"api/**\"\n    - \"data/**\"\n    - \"devnet/**\"\n    - \"docs/**\"\n    - \"example/**\"\n    - \"manual/**\"\n    - \"proto/**\"\n    - \"scripts/**\"\n    - \"testutil/**\" \n    - \"**/*.pb.go\"\n    - \"**/*.pb.gw.go\"\n    - \"**/*.pulsar.go\" \n    - \"**/*_test.go\""
  },
  {
    "path": "config.yml",
    "content": "version: 1\nvalidation: sovereign\n\naccounts:\n  - name: alice\n    mnemonic: 'near smoke great nasty alley food crush nurse rubber say danger search employ under gaze today alien eager risk letter drum relief sponsor current'\n    # address: source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\n    coins:\n      - 100000000000000uopen # 100m open\n  - name: bob\n    mnemonic: 'kingdom race grab ask size settle gesture vendor certain purpose clump gauge firm kiwi muffin term hello addict laugh tornado copper all sheriff reflect'\n    # address: source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\n    coins:\n       - 100000000000000uopen # 100m open\n  - name: charlie\n    mnemonic: 'vast brand cannon priority equip comfort mixed connect belt holiday either bleak employ sauce wrong memory cover appear symptom assume faint fire bargain guide'\n    # address: source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\n    coins:\n       - 100000000000000uopen # 100m open\n  - name: frank\n    mnemonic: 'trophy space shove poverty armor trap foil siege poem keen cancel device garage item desert mention school multiply viable practice silent push flip blame'\n    # address: source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\n    coins:\n       - 100000000000000uopen # 100m open\n  - name: victor\n    mnemonic: 'divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight'\n    # address: source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\n    coins:\n      - 200000000000000uopen # 200m open\n\nfaucet:\n  name: frank\n  coins:\n    - 100000000000000uopen # 100m open\n\nvalidators:\n  - name: victor\n    # address: sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\n    bonded: 100000000000000uopen # 100m open\n\nbuild:\n  main: cmd/sourcehubd\n"
  },
  {
    "path": "devnet/Makefile",
    "content": ".PHONY: localnet\nlocalnet:\n\tdocker-compose up\n\n.PHONY: clean\nclean:\n\tdocker-compose down --volumes\n"
  },
  {
    "path": "devnet/README.md",
    "content": "# Devnet\n\nThis directory defines a docker-compose file alongside a set of scripts to generate a 3 node devnet.\n\nFor each full run, the nodes are initialized, the validator accounts are created, the genesis transaction is built and the chain is started.\n\nThis setup makes use of docker volumes to persist the chain state between runs.\n\nTo fully wipe a chain use `make clean` or `docker-compose down --volumes`.\n\nTo spin up a localnet run `make localnet` or `docker-compose up` in this directory.\n"
  },
  {
    "path": "devnet/configs/app.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n###############################################################################\n###                           Base Configuration                            ###\n###############################################################################\n\n# The minimum gas prices a validator is willing to accept for processing a\n# transaction. A transaction's fees must meet the minimum of any denomination\n# specified in this config (e.g. 0.25token1;0.0001token2).\nminimum-gas-prices = \"0stake\"\n\n# default: the last 362880 states are kept, pruning at 10 block intervals\n# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node)\n# everything: 2 latest states will be kept; pruning at 10 block intervals.\n# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval'\npruning = \"default\"\n\n# These are applied if and only if the pruning strategy is custom.\npruning-keep-recent = \"0\"\npruning-interval = \"0\"\n\n# HaltHeight contains a non-zero block height at which a node will gracefully\n# halt and shutdown that can be used to assist upgrades and testing.\n#\n# Note: Commitment of state will be attempted on the corresponding block.\nhalt-height = 0\n\n# HaltTime contains a non-zero minimum block time (in Unix seconds) at which\n# a node will gracefully halt and shutdown that can be used to assist upgrades\n# and testing.\n#\n# Note: Commitment of state will be attempted on the corresponding block.\nhalt-time = 0\n\n# MinRetainBlocks defines the minimum block height offset from the current\n# block being committed, such that all blocks past this offset are pruned\n# from Tendermint. It is used as part of the process of determining the\n# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates\n# that no blocks should be pruned.\n#\n# This configuration value is only responsible for pruning Tendermint blocks.\n# It has no bearing on application state pruning which is determined by the\n# \"pruning-*\" configurations.\n#\n# Note: Tendermint block pruning is dependant on this parameter in conunction\n# with the unbonding (safety threshold) period, state pruning and state sync\n# snapshot parameters to determine the correct minimum value of\n# ResponseCommit.RetainHeight.\nmin-retain-blocks = 0\n\n# InterBlockCache enables inter-block caching.\ninter-block-cache = true\n\n# IndexEvents defines the set of events in the form {eventType}.{attributeKey},\n# which informs Tendermint what to index. If empty, all events will be indexed.\n#\n# Example:\n# [\"message.sender\", \"message.recipient\"]\nindex-events = []\n\n# IavlCacheSize set the size of the iavl tree cache (in number of nodes).\niavl-cache-size = 781250\n\n# IAVLDisableFastNode enables or disables the fast node feature of IAVL. \n# Default is false.\niavl-disable-fastnode = false\n\n# IAVLLazyLoading enable/disable the lazy loading of iavl store.\n# Default is false.\niavl-lazy-loading = false\n\n# AppDBBackend defines the database backend type to use for the application and snapshots DBs.\n# An empty string indicates that a fallback will be used.\n# First fallback is the deprecated compile-time types.DBBackend value.\n# Second fallback (if the types.DBBackend also isn't set), is the db-backend value set in Tendermint's config.toml.\napp-db-backend = \"\"\n\n###############################################################################\n###                         Telemetry Configuration                         ###\n###############################################################################\n\n[telemetry]\n\n# Prefixed with keys to separate services.\nservice-name = \"sourcehub\"\n\n# Enabled enables the application telemetry functionality. When enabled,\n# an in-memory sink is also enabled by default. Operators may also enabled\n# other sinks such as Prometheus.\nenabled = true\n\n# Enable prefixing gauge values with hostname.\nenable-hostname = false\n\n# Enable adding hostname to labels.\nenable-hostname-label = true\n\n# Enable adding service to labels.\nenable-service-label = true\n\n# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink.\nprometheus-retention-time = 300\n\n# GlobalLabels defines a global set of name/value label tuples applied to all\n# metrics emitted using the wrapper functions defined in telemetry package.\n#\n# Example:\n# [[\"chain_id\", \"cosmoshub-1\"]]\nglobal-labels = [\n]\n\n###############################################################################\n###                           API Configuration                             ###\n###############################################################################\n\n[api]\n\n# Enable defines if the API server should be enabled.\nenable = true\n\n# Swagger defines if swagger documentation should automatically be registered.\nswagger = true\n\n# Address defines the API server to listen on.\naddress = \"tcp://0.0.0.0:1317\"\n\n# MaxOpenConnections defines the number of maximum open connections.\nmax-open-connections = 1000\n\n# RPCReadTimeout defines the Tendermint RPC read timeout (in seconds).\nrpc-read-timeout = 10\n\n# RPCWriteTimeout defines the Tendermint RPC write timeout (in seconds).\nrpc-write-timeout = 0\n\n# RPCMaxBodyBytes defines the Tendermint maximum request body (in bytes).\nrpc-max-body-bytes = 1000000\n\n# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk).\nenabled-unsafe-cors = false\n\n###############################################################################\n###                           Rosetta Configuration                         ###\n###############################################################################\n\n[rosetta]\n\n# Enable defines if the Rosetta API server should be enabled.\nenable = false\n\n# Address defines the Rosetta API server to listen on.\naddress = \":8080\"\n\n# Network defines the name of the blockchain that will be returned by Rosetta.\nblockchain = \"app\"\n\n# Network defines the name of the network that will be returned by Rosetta.\nnetwork = \"network\"\n\n# Retries defines the number of retries when connecting to the node before failing.\nretries = 3\n\n# Offline defines if Rosetta server should run in offline mode.\noffline = false\n\n# EnableDefaultSuggestedFee defines if the server should suggest fee by default.\n# If 'construction/medata' is called without gas limit and gas price,\n# suggested fee based on gas-to-suggest and denom-to-suggest will be given.\nenable-fee-suggestion = false\n\n# GasToSuggest defines gas limit when calculating the fee\ngas-to-suggest = 200000\n\n# DenomToSuggest defines the defult denom for fee suggestion.\n# Price must be in minimum-gas-prices.\ndenom-to-suggest = \"uatom\"\n\n###############################################################################\n###                           gRPC Configuration                            ###\n###############################################################################\n\n[grpc]\n\n# Enable defines if the gRPC server should be enabled.\nenable = true\n\n# Address defines the gRPC server address to bind to.\naddress = \"localhost:9090\"\n\n# MaxRecvMsgSize defines the max message size in bytes the server can receive.\n# The default value is 10MB.\nmax-recv-msg-size = \"10485760\"\n\n# MaxSendMsgSize defines the max message size in bytes the server can send.\n# The default value is math.MaxInt32.\nmax-send-msg-size = \"2147483647\"\n\n###############################################################################\n###                        gRPC Web Configuration                           ###\n###############################################################################\n\n[grpc-web]\n\n# GRPCWebEnable defines if the gRPC-web should be enabled.\n# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op.\nenable = true\n\n# Address defines the gRPC-web server address to bind to.\naddress = \"localhost:9091\"\n\n# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk).\nenable-unsafe-cors = false\n\n###############################################################################\n###                        State Sync Configuration                         ###\n###############################################################################\n\n# State sync snapshots allow other nodes to rapidly join the network without replaying historical\n# blocks, instead downloading and applying a snapshot of the application state at a given height.\n[state-sync]\n\n# snapshot-interval specifies the block interval at which local state sync snapshots are\n# taken (0 to disable).\nsnapshot-interval = 0\n\n# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all).\nsnapshot-keep-recent = 2\n\n###############################################################################\n###                         Store / State Streaming                         ###\n###############################################################################\n\n[store]\nstreamers = []\n\n[streamers]\n[streamers.file]\nkeys = [\"*\", ]\nwrite_dir = \"\"\nprefix = \"\"\n\n# output-metadata specifies if output the metadata file which includes the abci request/responses \n# during processing the block.\noutput-metadata = \"true\"\n\n# stop-node-on-error specifies if propagate the file streamer errors to consensus state machine.\nstop-node-on-error = \"true\"\n\n# fsync specifies if call fsync after writing the files.\nfsync = \"false\"\n\n###############################################################################\n###                         Mempool                                         ###\n###############################################################################\n\n[mempool]\n# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool.\n# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool.\n# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount.\n#\n# Note, this configuration only applies to SDK built-in app-side mempool\n# implementations.\nmax-txs = \"5000\"\n"
  },
  {
    "path": "devnet/configs/client.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n###############################################################################\n###                           Client Configuration                            ###\n###############################################################################\n\n# The network chain ID\nchain-id = \"sourcehub-dev\"\n# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory)\nkeyring-backend = \"test\"\n# CLI output format (text|json)\noutput = \"text\"\n# <host>:<port> to Tendermint RPC interface for this chain\nnode = \"tcp://localhost:26657\"\n# Transaction broadcasting mode (sync|async)\nbroadcast-mode = \"sync\"\n"
  },
  {
    "path": "devnet/configs/config.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n# NOTE: Any path below can be absolute (e.g. \"/var/myawesomeapp/data\") or\n# relative to the home directory (e.g. \"data\"). The home directory is\n# \"$HOME/.cometbft\" by default, but could be changed via $CMTHOME env variable\n# or --home cmd flag.\n\n#######################################################################\n###                   Main Base Config Options                      ###\n#######################################################################\n\n# TCP or UNIX socket address of the ABCI application,\n# or the name of an ABCI application compiled in with the CometBFT binary\nproxy_app = \"tcp://127.0.0.1:26658\"\n\n# A custom human readable name for this node\nmoniker = \"node\"\n\n# If this node is many blocks behind the tip of the chain, BlockSync\n# allows them to catchup quickly by downloading blocks in parallel\n# and verifying their commits\n#\n# Deprecated: this key will be removed and BlockSync will be enabled \n# unconditionally in the next major release.\nblock_sync = true\n\n# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb\n# * goleveldb (github.com/syndtr/goleveldb - most popular implementation)\n#   - pure go\n#   - stable\n# * cleveldb (uses levigo wrapper)\n#   - fast\n#   - requires gcc\n#   - use cleveldb build tag (go build -tags cleveldb)\n# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt)\n#   - EXPERIMENTAL\n#   - may be faster is some use-cases (random reads - indexer)\n#   - use boltdb build tag (go build -tags boltdb)\n# * rocksdb (uses github.com/tecbot/gorocksdb)\n#   - EXPERIMENTAL\n#   - requires gcc\n#   - use rocksdb build tag (go build -tags rocksdb)\n# * badgerdb (uses github.com/dgraph-io/badger)\n#   - EXPERIMENTAL\n#   - use badgerdb build tag (go build -tags badgerdb)\ndb_backend = \"goleveldb\"\n\n# Database directory\ndb_dir = \"data\"\n\n# Output level for logging, including package level options\nlog_level = \"info\"\n\n# Output format: 'plain' (colored text) or 'json'\nlog_format = \"plain\"\n\n##### additional base config options #####\n\n# Path to the JSON file containing the initial validator set and other meta data\ngenesis_file = \"config/genesis.json\"\n\n# Path to the JSON file containing the private key to use as a validator in the consensus protocol\npriv_validator_key_file = \"config/priv_validator_key.json\"\n\n# Path to the JSON file containing the last sign state of a validator\npriv_validator_state_file = \"data/priv_validator_state.json\"\n\n# TCP or UNIX socket address for CometBFT to listen on for\n# connections from an external PrivValidator process\npriv_validator_laddr = \"\"\n\n# Path to the JSON file containing the private key to use for node authentication in the p2p protocol\nnode_key_file = \"config/node_key.json\"\n\n# Mechanism to connect to the ABCI application: socket | grpc\nabci = \"socket\"\n\n# If true, query the ABCI app on connecting to a new peer\n# so the app can decide if we should keep the connection or not\nfilter_peers = false\n\n\n#######################################################################\n###                 Advanced Configuration Options                  ###\n#######################################################################\n\n#######################################################\n###       RPC Server Configuration Options          ###\n#######################################################\n[rpc]\n\n# TCP or UNIX socket address for the RPC server to listen on\nladdr = \"tcp://0.0.0.0:26657\"\n\n# A list of origins a cross-domain request can be executed from\n# Default value '[]' disables cors support\n# Use '[\"*\"]' to allow any origin\ncors_allowed_origins = []\n\n# A list of methods the client is allowed to use with cross-domain requests\ncors_allowed_methods = [\"HEAD\", \"GET\", \"POST\", ]\n\n# A list of non simple headers the client is allowed to use with cross-domain requests\ncors_allowed_headers = [\"Origin\", \"Accept\", \"Content-Type\", \"X-Requested-With\", \"X-Server-Time\", ]\n\n# TCP or UNIX socket address for the gRPC server to listen on\n# NOTE: This server only supports /broadcast_tx_commit\ngrpc_laddr = \"\"\n\n# Maximum number of simultaneous connections.\n# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\n# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files}\n# 1024 - 40 - 10 - 50 = 924 = ~900\ngrpc_max_open_connections = 900\n\n# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool\nunsafe = true\n\n# Maximum number of simultaneous connections (including WebSocket).\n# Does not include gRPC connections. See grpc_max_open_connections\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\n# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files}\n# 1024 - 40 - 10 - 50 = 924 = ~900\nmax_open_connections = 900\n\n# Maximum number of unique clientIDs that can /subscribe\n# If you're using /broadcast_tx_commit, set to the estimated maximum number\n# of broadcast_tx_commit calls per block.\nmax_subscription_clients = 100\n\n# Maximum number of unique queries a given client can /subscribe to\n# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to\n# the estimated # maximum number of broadcast_tx_commit calls per block.\nmax_subscriptions_per_client = 5\n\n# Experimental parameter to specify the maximum number of events a node will\n# buffer, per subscription, before returning an error and closing the\n# subscription. Must be set to at least 100, but higher values will accommodate\n# higher event throughput rates (and will use more memory).\nexperimental_subscription_buffer_size = 200\n\n# Experimental parameter to specify the maximum number of RPC responses that\n# can be buffered per WebSocket client. If clients cannot read from the\n# WebSocket endpoint fast enough, they will be disconnected, so increasing this\n# parameter may reduce the chances of them being disconnected (but will cause\n# the node to use more memory).\n#\n# Must be at least the same as \"experimental_subscription_buffer_size\",\n# otherwise connections could be dropped unnecessarily. This value should\n# ideally be somewhat higher than \"experimental_subscription_buffer_size\" to\n# accommodate non-subscription-related RPC responses.\nexperimental_websocket_write_buffer_size = 200\n\n# If a WebSocket client cannot read fast enough, at present we may\n# silently drop events instead of generating an error or disconnecting the\n# client.\n#\n# Enabling this experimental parameter will cause the WebSocket connection to\n# be closed instead if it cannot read fast enough, allowing for greater\n# predictability in subscription behavior.\nexperimental_close_on_slow_client = false\n\n# How long to wait for a tx to be committed during /broadcast_tx_commit.\n# WARNING: Using a value larger than 10s will result in increasing the\n# global HTTP write timeout, which applies to all connections and endpoints.\n# See https://github.com/tendermint/tendermint/issues/3435\ntimeout_broadcast_tx_commit = \"10s\"\n\n# Maximum size of request body, in bytes\nmax_body_bytes = 1000000\n\n# Maximum size of request header, in bytes\nmax_header_bytes = 1048576\n\n# The path to a file containing certificate that is used to create the HTTPS server.\n# Might be either absolute path or path related to CometBFT's config directory.\n# If the certificate is signed by a certificate authority,\n# the certFile should be the concatenation of the server's certificate, any intermediates,\n# and the CA's certificate.\n# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server.\n# Otherwise, HTTP server is run.\ntls_cert_file = \"\"\n\n# The path to a file containing matching private key that is used to create the HTTPS server.\n# Might be either absolute path or path related to CometBFT's config directory.\n# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server.\n# Otherwise, HTTP server is run.\ntls_key_file = \"\"\n\n# pprof listen address (https://golang.org/pkg/net/http/pprof)\npprof_laddr = \"localhost:6060\"\n\n#######################################################\n###           P2P Configuration Options             ###\n#######################################################\n[p2p]\n\n# Address to listen for incoming connections\nladdr = \"tcp://0.0.0.0:26656\"\n\n# Address to advertise to peers for them to dial\n# If empty, will use the same port as the laddr,\n# and will introspect on the listener or use UPnP\n# to figure out the address. ip and port are required\n# example: 159.89.10.97:26656\nexternal_address = \"\"\n\n# Comma separated list of seed nodes to connect to\nseeds = \"\"\n\n# Comma separated list of nodes to keep persistent connections to\npersistent_peers = \"\"\n\n# UPNP port forwarding\nupnp = false\n\n# Path to address book\naddr_book_file = \"config/addrbook.json\"\n\n# Set true for strict address routability rules\n# Set false for private or local networks\naddr_book_strict = true\n\n# Maximum number of inbound peers\nmax_num_inbound_peers = 40\n\n# Maximum number of outbound peers to connect to, excluding persistent peers\nmax_num_outbound_peers = 10\n\n# List of node IDs, to which a connection will be (re)established ignoring any existing limits\nunconditional_peer_ids = \"\"\n\n# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used)\npersistent_peers_max_dial_period = \"0s\"\n\n# Time to wait before flushing messages out on the connection\nflush_throttle_timeout = \"100ms\"\n\n# Maximum size of a message packet payload, in bytes\nmax_packet_msg_payload_size = 1024\n\n# Rate at which packets can be sent, in bytes/second\nsend_rate = 5120000\n\n# Rate at which packets can be received, in bytes/second\nrecv_rate = 5120000\n\n# Set true to enable the peer-exchange reactor\npex = true\n\n# Seed mode, in which node constantly crawls the network and looks for\n# peers. If another node asks it for addresses, it responds and disconnects.\n#\n# Does not work if the peer-exchange reactor is disabled.\nseed_mode = false\n\n# Comma separated list of peer IDs to keep private (will not be gossiped to other peers)\nprivate_peer_ids = \"\"\n\n# Toggle to disable guard against peers connecting from the same ip.\nallow_duplicate_ip = false\n\n# Peer connection configuration.\nhandshake_timeout = \"20s\"\ndial_timeout = \"3s\"\n\n#######################################################\n###          Mempool Configuration Option          ###\n#######################################################\n[mempool]\n\n# Mempool version to use:\n#   1) \"v0\" - (default) FIFO mempool.\n#   2) \"v1\" - prioritized mempool (deprecated; will be removed in the next release).\nversion = \"v0\"\n\nrecheck = true\nbroadcast = true\nwal_dir = \"\"\n\n# Maximum number of transactions in the mempool\nsize = 5000\n\n# Limit the total size of all txs in the mempool.\n# This only accounts for raw transactions (e.g. given 1MB transactions and\n# max_txs_bytes=5MB, mempool will only accept 5 transactions).\nmax_txs_bytes = 1073741824\n\n# Size of the cache (used to filter transactions we saw earlier) in transactions\ncache_size = 10000\n\n# Do not remove invalid transactions from the cache (default: false)\n# Set to true if it's not possible for any invalid transaction to become valid\n# again in the future.\nkeep-invalid-txs-in-cache = false\n\n# Maximum size of a single transaction.\n# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}.\nmax_tx_bytes = 1048576\n\n# Maximum size of a batch of transactions to send to a peer\n# Including space needed by encoding (one varint per transaction).\n# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796\nmax_batch_bytes = 0\n\n# ttl-duration, if non-zero, defines the maximum amount of time a transaction\n# can exist for in the mempool.\n#\n# Note, if ttl-num-blocks is also defined, a transaction will be removed if it\n# has existed in the mempool at least ttl-num-blocks number of blocks or if it's\n# insertion time into the mempool is beyond ttl-duration.\nttl-duration = \"0s\"\n\n# ttl-num-blocks, if non-zero, defines the maximum number of blocks a transaction\n# can exist for in the mempool.\n#\n# Note, if ttl-duration is also defined, a transaction will be removed if it\n# has existed in the mempool at least ttl-num-blocks number of blocks or if\n# it's insertion time into the mempool is beyond ttl-duration.\nttl-num-blocks = 0\n\n#######################################################\n###         State Sync Configuration Options        ###\n#######################################################\n[statesync]\n# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine\n# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in\n# the network to take and serve state machine snapshots. State sync is not attempted if the node\n# has any local state (LastBlockHeight > 0). The node will have a truncated block history,\n# starting from the height of the snapshot.\nenable = false\n\n# RPC servers (comma-separated) for light client verification of the synced state machine and\n# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding\n# header hash obtained from a trusted source, and a period during which validators can be trusted.\n#\n# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2\n# weeks) during which they can be financially punished (slashed) for misbehavior.\nrpc_servers = \"\"\ntrust_height = 0\ntrust_hash = \"\"\ntrust_period = \"168h0m0s\"\n\n# Time to spend discovering snapshots before initiating a restore.\ndiscovery_time = \"15s\"\n\n# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp).\n# Will create a new, randomly named directory within, and remove it when done.\ntemp_dir = \"\"\n\n# The timeout duration before re-requesting a chunk, possibly from a different\n# peer (default: 1 minute).\nchunk_request_timeout = \"10s\"\n\n# The number of concurrent chunk fetchers to run (default: 1).\nchunk_fetchers = \"4\"\n\n#######################################################\n###       Block Sync Configuration Options          ###\n#######################################################\n[blocksync]\n\n# Block Sync version to use:\n# \n# In v0.37, v1 and v2 of the block sync protocols were deprecated.\n# Please use v0 instead.\n#\n#   1) \"v0\" - the default block sync implementation\nversion = \"v0\"\n\n#######################################################\n###         Consensus Configuration Options         ###\n#######################################################\n[consensus]\n\nwal_file = \"data/cs.wal/wal\"\n\n# How long we wait for a proposal block before prevoting nil\ntimeout_propose = \"3s\"\n# How much timeout_propose increases with each round\ntimeout_propose_delta = \"500ms\"\n# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil)\ntimeout_prevote = \"1s\"\n# How much the timeout_prevote increases with each round\ntimeout_prevote_delta = \"500ms\"\n# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil)\ntimeout_precommit = \"1s\"\n# How much the timeout_precommit increases with each round\ntimeout_precommit_delta = \"500ms\"\n# How long we wait after committing a block, before starting on the new\n# height (this gives us a chance to receive some more precommits, even\n# though we already have +2/3).\ntimeout_commit = \"1s\"\n\n# How many blocks to look back to check existence of the node's consensus votes before joining consensus\n# When non-zero, the node will panic upon restart\n# if the same consensus key was used to sign {double_sign_check_height} last blocks.\n# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic.\ndouble_sign_check_height = 0\n\n# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0)\nskip_timeout_commit = false\n\n# EmptyBlocks mode and possible interval between empty blocks\ncreate_empty_blocks = true\ncreate_empty_blocks_interval = \"0s\"\n\n# Reactor sleep duration parameters\npeer_gossip_sleep_duration = \"100ms\"\npeer_query_maj23_sleep_duration = \"2s\"\n\n#######################################################\n###         Storage Configuration Options           ###\n#######################################################\n[storage]\n\n# Set to true to discard ABCI responses from the state store, which can save a\n# considerable amount of disk space. Set to false to ensure ABCI responses are\n# persisted. ABCI responses are required for /block_results RPC queries, and to\n# reindex events in the command-line tool.\ndiscard_abci_responses = false\n\n#######################################################\n###   Transaction Indexer Configuration Options     ###\n#######################################################\n[tx_index]\n\n# What indexer to use for transactions\n#\n# The application will set which txs to index. In some cases a node operator will be able\n# to decide which txs to index based on configuration set in the application.\n#\n# Options:\n#   1) \"null\"\n#   2) \"kv\" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend).\n# \t\t- When \"kv\" is chosen \"tx.height\" and \"tx.hash\" will always be indexed.\n#   3) \"psql\" - the indexer services backed by PostgreSQL.\n# When \"kv\" or \"psql\" is chosen \"tx.height\" and \"tx.hash\" will always be indexed.\nindexer = \"kv\"\n\n# The PostgreSQL connection configuration, the connection format:\n#   postgresql://<user>:<password>@<host>:<port>/<db>?<opts>\npsql-conn = \"\"\n\n#######################################################\n###       Instrumentation Configuration Options     ###\n#######################################################\n[instrumentation]\n\n# When true, Prometheus metrics are served under /metrics on\n# PrometheusListenAddr.\n# Check out the documentation for the list of available metrics.\nprometheus = true\n\n# Address to listen for Prometheus collector(s) connections\nprometheus_listen_addr = \":26660\"\n\n# Maximum number of simultaneous connections.\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\nmax_open_connections = 3\n\n# Instrumentation namespace\nnamespace = \"cometbft\"\n"
  },
  {
    "path": "devnet/dial-peers.sh",
    "content": "#!/usr/bin/bash\n# dial-peers.sh informs node1 of the addresses of its peers.\n# This script performs a tendermint / cometbft rpc call to the remaining validators and queries their Id.\n# The ID is used to construct the peer address of the persistent peers in node1.\n#\n# Note: this script makes use of an 'unsafe' Tendermint RPC call, which is disabled by default.\n# To enable unsafe calls, the setting \"unsafe\" under p2p should be set to true in configs/config.toml\n\nset -e\n\nsleep 2\n\nNODE2_ID=\"$(curl 'http://node2:26657/status' 2>/dev/null | jq --raw-output '.result.node_info.id')\"\necho \"Node 2: $NODE2_ID\"\n\nNODE3_ID=\"$(curl 'http://node3:26657/status' 2>/dev/null | jq --raw-output '.result.node_info.id')\"\necho \"Node 3: $NODE3_ID\"\n\nPEERS='\\[\"'$NODE2_ID'@node2:26656\",\"'$NODE3_ID'@node3:26656''\"\\]'\necho \"Peers: $PEERS\"\n\ncurl -i \"http://node1:26657/dial_peers?persistent=true&peers=$PEERS\" 2>/dev/null\n"
  },
  {
    "path": "devnet/docker-compose.yaml",
    "content": "version: '3.9'\n\nservices:\n  node1: &node\n    build: &build\n      context: ../.\n      target: builder\n    volumes:\n      - node1:/root/sourcehub\n    depends_on:\n      gentx-builder:\n        condition: service_completed_successfully\n    entrypoint: /app/build/sourcehubd\n    command:\n      - start\n      - --home\n      - /root/sourcehub\n\n  node2: \n    <<: *node\n    volumes:\n      - node2:/root/sourcehub\n\n  node3:\n    <<: *node\n    volumes:\n      - node3:/root/sourcehub\n    ports:\n      - 26657:26657 # tendermint rpc\n      - 1317:1317 # cosmos swagger\n\n  setup-node1: &setup\n    build: *build\n    entrypoint: /app/devnet/setup-node.sh\n    volumes:\n      - node1:/root/sourcehub\n\n  setup-node2:\n    <<: *setup\n    volumes:\n      - node2:/root/sourcehub\n\n  setup-node3:\n    <<: *setup\n    volumes:\n      - node3:/root/sourcehub\n\n  gentx-builder:\n    build: *build\n    entrypoint: /app/devnet/make-update-gentx.sh\n    volumes:\n      - node1:/root/sourcehub\n      - node2:/root/node2\n      - node3:/root/node3\n    depends_on:\n      setup-node1:\n        condition: service_completed_successfully\n      setup-node2:\n        condition: service_completed_successfully\n      setup-node3:\n        condition: service_completed_successfully\n\n  dial_peers:\n    build: *build\n    entrypoint: /app/devnet/dial-peers.sh\n    depends_on:\n      - node1\n      - node2\n      - node3\n\nvolumes:\n  node1:\n  node2:\n  node3:\n"
  },
  {
    "path": "devnet/make-update-gentx.sh",
    "content": "#! /usr/bin/sh\n# make-update-gentx.sh uses node1 as a starting point and adds\n# genesis txs generated by nodes 2 and 3 to its data directory.\n# It then collects all these txs and generates the final genesis.json file\n#\n# The resulting genesis.json is then copied back into nodes 2 and 3.\n\nset -e\n\nAMOUNT=\"100000000000sourcebucks\"\nPATH=\"/app/build:$PATH\"\nSTATE_DIR=\"/root/sourcehub\"\n\nif [ -e $STATE_DIR/GENESIS_BUILT ];\nthen\n    echo \"Genesis Tx already collected\"\n    return 0;\nfi\n\necho 'Fetching Validators addresses'\nVALIDATOR2_ADDR=\"$(cat /root/node2/validator-addr)\"\nVALIDATOR3_ADDR=\"$(cat /root/node3/validator-addr)\"\necho \"Validator 2: $VALIDATOR2_ADDR\"\necho \"Validator 3: $VALIDATOR3_ADDR\"\n\necho 'Adding Validator Accounts'\nsourcehubd genesis add-genesis-account $VALIDATOR2_ADDR $AMOUNT --home $STATE_DIR\nsourcehubd genesis add-genesis-account $VALIDATOR3_ADDR $AMOUNT --home $STATE_DIR\n\ncp /root/node2/config/gentx/* /root/sourcehub/config/gentx/\ncp /root/node3/config/gentx/* /root/sourcehub/config/gentx/\n\nsourcehubd genesis collect-gentxs --home $STATE_DIR\ntouch /root/sourcehub/GENESIS_BUILT\n\n# Mission critical step: make the sourcebucks\nsed -i 's/stake/sourcebucks/g' /root/sourcehub/config/genesis.json\n\ncp /root/sourcehub/config/genesis.json /root/node2/config/\ncp /root/sourcehub/config/genesis.json /root/node3/config/\n\necho 'GenesisTx generated'\n"
  },
  {
    "path": "devnet/setup-node.sh",
    "content": "#!/usr/bin/sh\n# setup-node.sh initializes a sourcehub node,\n# creates a validator account on the test keyring\n# and self delegates some amount of sourcebucks.\n#\n# The signed tx is copied by make-update-gentx.\n\nset -e\n\n\nPATH=\"/app/build/:$PATH\"\n\nCHAIN_ID=\"sourcehub-localnet\"\nNODE_NAME=\"$(cat /etc/hostname)\"\nCHAIN_STATE=\"$HOME/sourcehub\"\nVALIDATOR_NAME=\"validator\"\nAMOUNT=\"100000000000sourcebucks\"\nCONFIGS_DIR=\"/app/devnet/configs\"\n\nif [ -d $CHAIN_STATE/config ];\nthen\n    echo \"Chain has been previously initialize; exiting\"\n    return 0\nfi\n\n\nsourcehubd init $NODE_NAME --chain-id $CHAIN_ID --home $CHAIN_STATE\n\ncp $CONFIGS_DIR/*.toml $CHAIN_STATE/config/\n\nsourcehubd keys add $VALIDATOR_NAME --home $CHAIN_STATE --keyring-backend test\n\nVALIDATOR_ADDR=$(sourcehubd keys show $VALIDATOR_NAME --address --home $CHAIN_STATE --keyring-backend test) \necho \"Validator: $VALIDATOR_ADDR\"\necho -n $VALIDATOR_ADDR > $CHAIN_STATE/validator-addr\n\nsourcehubd genesis add-genesis-account $VALIDATOR_ADDR $AMOUNT --home $CHAIN_STATE\n\nsourcehubd genesis gentx $VALIDATOR_NAME $AMOUNT --chain-id $CHAIN_ID --home $CHAIN_STATE --keyring-backend test\n"
  },
  {
    "path": "docker/README.md",
    "content": "# SourceHub Dockerfile\n\nDockerfile designed to make getting started with SourceHub easily.\n\nDockerfile can be used to join a pre-existing network or used for a standalone test envrionment.\n\nTo configure initialization set `MONIKER` for the node moniker and `CHAIN_ID` for the chain id.\n\nValidator, comet p2p and comet validator keys can be recovered and loaded for previously created keys, otherwise new keys will be generated.\n\n## Usage modes\n\n### Validator Recovery mode\nValidator recovery mode configures the sourcehub node to recover a validator credentials\n\nSet env var `MNEMONIC_PATH` to recover the sourcehub validator key.\nSet env var `CONSENSUS_KEY_PATH` to recover the CometBFT consensus key (ie. `priv_validator_key.json`).\nSet env var `COMET_NODE_KEY_PATH` to recover the CometBFT p2p key (ie. `node_key.json`)\nSet `GENESIS_PATH` to initialize the genesis file.\n\n### RPC Mode\nRPC Mode joins an existing network as an RPC Node with a new set of keys.\n\nSet `GENESIS_PATH` to specify the network genesis.\nEnsure `CHAIN_ID` matches the chain id in the genesis file.\n\n### RPC with account recovery\nTo spin up an RPC node with a previously generated account key, follow the steps in RPC Mode and additionally set `MNEMONIC_PATH`.\n\n\n## Standalone mode\nStandalone mode is ideal for local experimentation and test environments.\nDuring container startup, it generates a new network and genesis.\n\nSet `STANDALONE=1` at time of container creation to force standalone mode, all recovery variables are ignored in standalone mode.\n\n## Environment Variable Reference\n\n\n- `MONIKER` sets the node moniker\n- `CHAIN_ID` sets the id for the chain which will be initialized\n- `GENESIS_PATH` is an optional variable which if set must point to a genesis file mounted in the container.\n  The file is copied to the configuration directory during the first container initialization\n  If empty, the entrypoint will generate a new genesis\n\n- `MNEMONIC_PATH` is an optional varible which, if set, must point to a file containing a \n  cosmos key mnemonic. The mnemonic will be used to restore the node operator / validator key.\n  If empty, the entrypoint will generate a new key\n\n- `CONSENSUS_KEY_PATH` is an optional variable which, if set, must point to a file containg\n  a comebft consesus key for the validator.\n  If empty, the entrypoint will generate a new key\n\n- `COMET_NODE_KEY_PATH` is an optional variable which, if set, must point to a file containg\n  a comebft p2p node key.\n  If empty, the entrypoint will generate a new key\n\n- `COMET_CONFIG_PATH` is an optional variable which, if set, will overwrite\n  the default cofig.toml with the provided file.\n\n- `APP_CONFIG_PATH` is an optional variable which, if set, will overwrite\n  the default app.toml with the provided file.\n\n- `STANDALONE` if set to `1` will initialize a new SourceHub network / genesis for local usage.\n  The network will with no fees, a single validator and a funded faucet account."
  },
  {
    "path": "docker/configs/app.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n###############################################################################\n###                           Base Configuration                            ###\n###############################################################################\n\n# The minimum gas prices a validator is willing to accept for processing a\n# transaction. A transaction's fees must meet the minimum of any denomination\n# specified in this config (e.g. 0.25token1,0.0001token2).\nminimum-gas-prices = \"0.001uopen,0.001ucredit\"\n\n# The maximum gas a query coming over rest/grpc may consume.\n# If this is set to zero, the query can consume an unbounded amount of gas.\nquery-gas-limit = \"0\"\n\n# default: the last 362880 states are kept, pruning at 10 block intervals\n# nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node)\n# everything: 2 latest states will be kept; pruning at 10 block intervals.\n# custom: allow pruning options to be manually specified through 'pruning-keep-recent', and 'pruning-interval'\npruning = \"default\"\n\n# These are applied if and only if the pruning strategy is custom.\npruning-keep-recent = \"0\"\npruning-interval = \"0\"\n\n# HaltHeight contains a non-zero block height at which a node will gracefully\n# halt and shutdown that can be used to assist upgrades and testing.\n#\n# Note: Commitment of state will be attempted on the corresponding block.\nhalt-height = 0\n\n# HaltTime contains a non-zero minimum block time (in Unix seconds) at which\n# a node will gracefully halt and shutdown that can be used to assist upgrades\n# and testing.\n#\n# Note: Commitment of state will be attempted on the corresponding block.\nhalt-time = 0\n\n# MinRetainBlocks defines the minimum block height offset from the current\n# block being committed, such that all blocks past this offset are pruned\n# from CometBFT. It is used as part of the process of determining the\n# ResponseCommit.RetainHeight value during ABCI Commit. A value of 0 indicates\n# that no blocks should be pruned.\n#\n# This configuration value is only responsible for pruning CometBFT blocks.\n# It has no bearing on application state pruning which is determined by the\n# \"pruning-*\" configurations.\n#\n# Note: CometBFT block pruning is dependant on this parameter in conjunction\n# with the unbonding (safety threshold) period, state pruning and state sync\n# snapshot parameters to determine the correct minimum value of\n# ResponseCommit.RetainHeight.\nmin-retain-blocks = 0\n\n# InterBlockCache enables inter-block caching.\ninter-block-cache = true\n\n# IndexEvents defines the set of events in the form {eventType}.{attributeKey},\n# which informs CometBFT what to index. If empty, all events will be indexed.\n#\n# Example:\n# [\"message.sender\", \"message.recipient\"]\nindex-events = []\n\n# IavlCacheSize set the size of the iavl tree cache (in number of nodes).\niavl-cache-size = 781250\n\n# IAVLDisableFastNode enables or disables the fast node feature of IAVL. \n# Default is false.\niavl-disable-fastnode = false\n\n# AppDBBackend defines the database backend type to use for the application and snapshots DBs.\n# An empty string indicates that a fallback will be used.\n# The fallback is the db_backend value set in CometBFT's config.toml.\napp-db-backend = \"\"\n\n###############################################################################\n###                         Telemetry Configuration                         ###\n###############################################################################\n\n[telemetry]\n\n# Prefixed with keys to separate services.\nservice-name = \"\"\n\n# Enabled enables the application telemetry functionality. When enabled,\n# an in-memory sink is also enabled by default. Operators may also enabled\n# other sinks such as Prometheus.\nenabled = false\n\n# Enable prefixing gauge values with hostname.\nenable-hostname = false\n\n# Enable adding hostname to labels.\nenable-hostname-label = false\n\n# Enable adding service to labels.\nenable-service-label = false\n\n# PrometheusRetentionTime, when positive, enables a Prometheus metrics sink.\nprometheus-retention-time = 60\n\n# GlobalLabels defines a global set of name/value label tuples applied to all\n# metrics emitted using the wrapper functions defined in telemetry package.\n#\n# Example:\n# [[\"chain_id\", \"cosmoshub-1\"]]\nglobal-labels = [\n]\n\n# MetricsSink defines the type of metrics sink to use.\nmetrics-sink = \"\"\n\n# StatsdAddr defines the address of a statsd server to send metrics to.\n# Only utilized if MetricsSink is set to \"statsd\" or \"dogstatsd\".\nstatsd-addr = \"\"\n\n# DatadogHostname defines the hostname to use when emitting metrics to\n# Datadog. Only utilized if MetricsSink is set to \"dogstatsd\".\ndatadog-hostname = \"\"\n\n###############################################################################\n###                           API Configuration                             ###\n###############################################################################\n\n[api]\n\n# Enable defines if the API server should be enabled.\nenable = true\n\n# Swagger defines if swagger documentation should automatically be registered.\nswagger = true\n\n# Address defines the API server to listen on.\naddress = \"tcp://0.0.0.0:1317\"\n\n# MaxOpenConnections defines the number of maximum open connections.\nmax-open-connections = 1000\n\n# RPCReadTimeout defines the CometBFT RPC read timeout (in seconds).\nrpc-read-timeout = 10\n\n# RPCWriteTimeout defines the CometBFT RPC write timeout (in seconds).\nrpc-write-timeout = 0\n\n# RPCMaxBodyBytes defines the CometBFT maximum request body (in bytes).\nrpc-max-body-bytes = 1000000\n\n# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk).\nenabled-unsafe-cors = true\n\n###############################################################################\n###                           gRPC Configuration                            ###\n###############################################################################\n\n[grpc]\n\n# Enable defines if the gRPC server should be enabled.\nenable = true\n\n# Address defines the gRPC server address to bind to.\naddress = \"0.0.0.0:9090\"\n\n# MaxRecvMsgSize defines the max message size in bytes the server can receive.\n# The default value is 10MB.\nmax-recv-msg-size = \"10485760\"\n\n# MaxSendMsgSize defines the max message size in bytes the server can send.\n# The default value is math.MaxInt32.\nmax-send-msg-size = \"2147483647\"\n\n###############################################################################\n###                        gRPC Web Configuration                           ###\n###############################################################################\n\n[grpc-web]\n\n# GRPCWebEnable defines if the gRPC-web should be enabled.\n# NOTE: gRPC must also be enabled, otherwise, this configuration is a no-op.\n# NOTE: gRPC-Web uses the same address as the API server.\nenable = true\n\n###############################################################################\n###                        State Sync Configuration                         ###\n###############################################################################\n\n# State sync snapshots allow other nodes to rapidly join the network without replaying historical\n# blocks, instead downloading and applying a snapshot of the application state at a given height.\n[state-sync]\n\n# snapshot-interval specifies the block interval at which local state sync snapshots are\n# taken (0 to disable).\nsnapshot-interval = 0\n\n# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all).\nsnapshot-keep-recent = 2\n\n###############################################################################\n###                              State Streaming                            ###\n###############################################################################\n\n# Streaming allows nodes to stream state to external systems.\n[streaming]\n\n# streaming.abci specifies the configuration for the ABCI Listener streaming service.\n[streaming.abci]\n\n# List of kv store keys to stream out via gRPC.\n# The store key names MUST match the module's StoreKey name.\n#\n# Example:\n# [\"acc\", \"bank\", \"gov\", \"staking\", \"mint\"[,...]]\n# [\"*\"] to expose all keys.\nkeys = []\n\n# The plugin name used for streaming via gRPC.\n# Streaming is only enabled if this is set.\n# Supported plugins: abci\nplugin = \"\"\n\n# stop-node-on-err specifies whether to stop the node on message delivery error.\nstop-node-on-err = true\n\n###############################################################################\n###                         Mempool                                         ###\n###############################################################################\n\n[mempool]\n# Setting max-txs to 0 will allow for a unbounded amount of transactions in the mempool.\n# Setting max_txs to negative 1 (-1) will disable transactions from being inserted into the mempool (no-op mempool).\n# Setting max_txs to a positive number (> 0) will limit the number of transactions in the mempool, by the specified amount.\n#\n# Note, this configuration only applies to SDK built-in app-side mempool\n# implementations.\nmax-txs = -1\n\n###############################################################################\n###                           Faucet Configuration                          ###\n###############################################################################\n\n[faucet]\n\n# Defines if the faucet service should be enabled.\nenable_faucet = true\n"
  },
  {
    "path": "docker/configs/client.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n###############################################################################\n###                           Client Configuration                            ###\n###############################################################################\n\n# The network chain ID\nchain-id = \"\"\n# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory)\nkeyring-backend = \"os\"\n# CLI output format (text|json)\noutput = \"text\"\n# <host>:<port> to CometBFT RPC interface for this chain\nnode = \"tcp://localhost:26657\"\n# Transaction broadcasting mode (sync|async)\nbroadcast-mode = \"sync\"\n"
  },
  {
    "path": "docker/configs/config.toml",
    "content": "# This is a TOML config file.\n# For more information, see https://github.com/toml-lang/toml\n\n# NOTE: Any path below can be absolute (e.g. \"/var/myawesomeapp/data\") or\n# relative to the home directory (e.g. \"data\"). The home directory is\n# \"$HOME/.cometbft\" by default, but could be changed via $CMTHOME env variable\n# or --home cmd flag.\n\n# The version of the CometBFT binary that created or\n# last modified the config file. Do not modify this.\nversion = \"0.38.19\"\n\n#######################################################################\n###                   Main Base Config Options                      ###\n#######################################################################\n\n# TCP or UNIX socket address of the ABCI application,\n# or the name of an ABCI application compiled in with the CometBFT binary\nproxy_app = \"tcp://127.0.0.1:26658\"\n\n# A custom human readable name for this node\nmoniker = \"node\"\n\n# Database backend: goleveldb | cleveldb | boltdb | rocksdb | badgerdb\n# * goleveldb (github.com/syndtr/goleveldb - most popular implementation)\n#   - pure go\n#   - stable\n# * cleveldb (uses levigo wrapper)\n#   - fast\n#   - requires gcc\n#   - use cleveldb build tag (go build -tags cleveldb)\n# * boltdb (uses etcd's fork of bolt - github.com/etcd-io/bbolt)\n#   - EXPERIMENTAL\n#   - may be faster is some use-cases (random reads - indexer)\n#   - use boltdb build tag (go build -tags boltdb)\n# * rocksdb (uses github.com/tecbot/gorocksdb)\n#   - EXPERIMENTAL\n#   - requires gcc\n#   - use rocksdb build tag (go build -tags rocksdb)\n# * badgerdb (uses github.com/dgraph-io/badger)\n#   - EXPERIMENTAL\n#   - use badgerdb build tag (go build -tags badgerdb)\ndb_backend = \"goleveldb\"\n\n# Database directory\ndb_dir = \"data\"\n\n# Output level for logging, including package level options\nlog_level = \"info\"\n\n# Output format: 'plain' (colored text) or 'json'\nlog_format = \"plain\"\n\n##### additional base config options #####\n\n# Path to the JSON file containing the initial validator set and other meta data\ngenesis_file = \"config/genesis.json\"\n\n# Path to the JSON file containing the private key to use as a validator in the consensus protocol\npriv_validator_key_file = \"config/priv_validator_key.json\"\n\n# Path to the JSON file containing the last sign state of a validator\npriv_validator_state_file = \"data/priv_validator_state.json\"\n\n# TCP or UNIX socket address for CometBFT to listen on for\n# connections from an external PrivValidator process\npriv_validator_laddr = \"\"\n\n# Path to the JSON file containing the private key to use for node authentication in the p2p protocol\nnode_key_file = \"config/node_key.json\"\n\n# Mechanism to connect to the ABCI application: socket | grpc\nabci = \"socket\"\n\n# If true, query the ABCI app on connecting to a new peer\n# so the app can decide if we should keep the connection or not\nfilter_peers = false\n\n\n#######################################################################\n###                 Advanced Configuration Options                  ###\n#######################################################################\n\n#######################################################\n###       RPC Server Configuration Options          ###\n#######################################################\n[rpc]\n\n# TCP or UNIX socket address for the RPC server to listen on\nladdr = \"tcp://0.0.0.0:26657\"\n\n# A list of origins a cross-domain request can be executed from\n# Default value '[]' disables cors support\n# Use '[\"*\"]' to allow any origin\ncors_allowed_origins = [\"*\"]\n\n# A list of methods the client is allowed to use with cross-domain requests\ncors_allowed_methods = [\"HEAD\", \"GET\", \"POST\", ]\n\n# A list of non simple headers the client is allowed to use with cross-domain requests\ncors_allowed_headers = [\"Origin\", \"Accept\", \"Content-Type\", \"X-Requested-With\", \"X-Server-Time\", ]\n\n# TCP or UNIX socket address for the gRPC server to listen on\n# NOTE: This server only supports /broadcast_tx_commit\ngrpc_laddr = \"\"\n\n# Maximum number of simultaneous connections.\n# Does not include RPC (HTTP&WebSocket) connections. See max_open_connections\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\n# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files}\n# 1024 - 40 - 10 - 50 = 924 = ~900\ngrpc_max_open_connections = 900\n\n# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool\nunsafe = false\n\n# Maximum number of simultaneous connections (including WebSocket).\n# Does not include gRPC connections. See grpc_max_open_connections\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\n# Should be < {ulimit -Sn} - {MaxNumInboundPeers} - {MaxNumOutboundPeers} - {N of wal, db and other open files}\n# 1024 - 40 - 10 - 50 = 924 = ~900\nmax_open_connections = 900\n\n# Maximum number of unique clientIDs that can /subscribe\n# If you're using /broadcast_tx_commit, set to the estimated maximum number\n# of broadcast_tx_commit calls per block.\nmax_subscription_clients = 100\n\n# Maximum number of unique queries a given client can /subscribe to\n# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to\n# the estimated # maximum number of broadcast_tx_commit calls per block.\nmax_subscriptions_per_client = 5\n\n# Experimental parameter to specify the maximum number of events a node will\n# buffer, per subscription, before returning an error and closing the\n# subscription. Must be set to at least 100, but higher values will accommodate\n# higher event throughput rates (and will use more memory).\nexperimental_subscription_buffer_size = 200\n\n# Experimental parameter to specify the maximum number of RPC responses that\n# can be buffered per WebSocket client. If clients cannot read from the\n# WebSocket endpoint fast enough, they will be disconnected, so increasing this\n# parameter may reduce the chances of them being disconnected (but will cause\n# the node to use more memory).\n#\n# Must be at least the same as \"experimental_subscription_buffer_size\",\n# otherwise connections could be dropped unnecessarily. This value should\n# ideally be somewhat higher than \"experimental_subscription_buffer_size\" to\n# accommodate non-subscription-related RPC responses.\nexperimental_websocket_write_buffer_size = 200\n\n# If a WebSocket client cannot read fast enough, at present we may\n# silently drop events instead of generating an error or disconnecting the\n# client.\n#\n# Enabling this experimental parameter will cause the WebSocket connection to\n# be closed instead if it cannot read fast enough, allowing for greater\n# predictability in subscription behavior.\nexperimental_close_on_slow_client = false\n\n# How long to wait for a tx to be committed during /broadcast_tx_commit.\n# WARNING: Using a value larger than 10s will result in increasing the\n# global HTTP write timeout, which applies to all connections and endpoints.\n# See https://github.com/tendermint/tendermint/issues/3435\ntimeout_broadcast_tx_commit = \"10s\"\n\n# Maximum number of requests that can be sent in a batch\n# If the value is set to '0' (zero-value), then no maximum batch size will be\n# enforced for a JSON-RPC batch request.\nmax_request_batch_size = 10\n\n# Maximum size of request body, in bytes\nmax_body_bytes = 1000000\n\n# Maximum size of request header, in bytes\nmax_header_bytes = 1048576\n\n# The path to a file containing certificate that is used to create the HTTPS server.\n# Might be either absolute path or path related to CometBFT's config directory.\n# If the certificate is signed by a certificate authority,\n# the certFile should be the concatenation of the server's certificate, any intermediates,\n# and the CA's certificate.\n# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server.\n# Otherwise, HTTP server is run.\ntls_cert_file = \"\"\n\n# The path to a file containing matching private key that is used to create the HTTPS server.\n# Might be either absolute path or path related to CometBFT's config directory.\n# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server.\n# Otherwise, HTTP server is run.\ntls_key_file = \"\"\n\n# pprof listen address (https://golang.org/pkg/net/http/pprof)\npprof_laddr = \"localhost:6060\"\n\n#######################################################\n###           P2P Configuration Options             ###\n#######################################################\n[p2p]\n\n# Address to listen for incoming connections\nladdr = \"tcp://0.0.0.0:26656\"\n\n# Address to advertise to peers for them to dial. If empty, will use the same\n# port as the laddr, and will introspect on the listener to figure out the\n# address. IP and port are required. Example: 159.89.10.97:26656\nexternal_address = \"\"\n\n# Comma separated list of seed nodes to connect to\nseeds = \"\"\n\n# Comma separated list of nodes to keep persistent connections to\npersistent_peers = \"\"\n\n# Path to address book\naddr_book_file = \"config/addrbook.json\"\n\n# Set true for strict address routability rules\n# Set false for private or local networks\naddr_book_strict = true\n\n# Maximum number of inbound peers\nmax_num_inbound_peers = 40\n\n# Maximum number of outbound peers to connect to, excluding persistent peers\nmax_num_outbound_peers = 10\n\n# List of node IDs, to which a connection will be (re)established ignoring any existing limits\nunconditional_peer_ids = \"\"\n\n# Maximum pause when redialing a persistent peer (if zero, exponential backoff is used)\npersistent_peers_max_dial_period = \"0s\"\n\n# Time to wait before flushing messages out on the connection\nflush_throttle_timeout = \"100ms\"\n\n# Maximum size of a message packet payload, in bytes\nmax_packet_msg_payload_size = 1024\n\n# Rate at which packets can be sent, in bytes/second\nsend_rate = 5120000\n\n# Rate at which packets can be received, in bytes/second\nrecv_rate = 5120000\n\n# Set true to enable the peer-exchange reactor\npex = true\n\n# Seed mode, in which node constantly crawls the network and looks for\n# peers. If another node asks it for addresses, it responds and disconnects.\n#\n# Does not work if the peer-exchange reactor is disabled.\nseed_mode = false\n\n# Comma separated list of peer IDs to keep private (will not be gossiped to other peers)\nprivate_peer_ids = \"\"\n\n# Toggle to disable guard against peers connecting from the same ip.\nallow_duplicate_ip = false\n\n# Peer connection configuration.\nhandshake_timeout = \"20s\"\ndial_timeout = \"3s\"\n\n#######################################################\n###          Mempool Configuration Option          ###\n#######################################################\n[mempool]\n\n# The type of mempool for this node to use.\n#\n#  Possible types:\n#  - \"flood\" : concurrent linked list mempool with flooding gossip protocol\n#  (default)\n#  - \"nop\"   : nop-mempool (short for no operation; the ABCI app is responsible\n#  for storing, disseminating and proposing txs). \"create_empty_blocks=false\" is\n#  not supported.\ntype = \"flood\"\n\n# Recheck (default: true) defines whether CometBFT should recheck the\n# validity for all remaining transaction in the mempool after a block.\n# Since a block affects the application state, some transactions in the\n# mempool may become invalid. If this does not apply to your application,\n# you can disable rechecking.\nrecheck = true\n\n# recheck_timeout is the time the application has during the rechecking process\n# to return CheckTx responses, once all requests have been sent. Responses that \n# arrive after the timeout expires are discarded. It only applies to \n# non-local ABCI clients and when recheck is enabled.\n#\n# The ideal value will strongly depend on the application. It could roughly be estimated as the\n# average size of the mempool multiplied by the average time it takes the application to validate one\n# transaction. We consider that the ABCI application runs in the same location as the CometBFT binary\n# so that the recheck duration is not affected by network delays when making requests and receiving responses.\nrecheck_timeout = \"1s\"\n\n# Broadcast (default: true) defines whether the mempool should relay\n# transactions to other peers. Setting this to false will stop the mempool\n# from relaying transactions to other peers until they are included in a\n# block. In other words, if Broadcast is disabled, only the peer you send\n# the tx to will see it until it is included in a block.\nbroadcast = true\n\n# WalPath (default: \"\") configures the location of the Write Ahead Log\n# (WAL) for the mempool. The WAL is disabled by default. To enable, set\n# WalPath to where you want the WAL to be written (e.g.\n# \"data/mempool.wal\").\nwal_dir = \"\"\n\n# Maximum number of transactions in the mempool\nsize = 5000\n\n# Limit the total size of all txs in the mempool.\n# This only accounts for raw transactions (e.g. given 1MB transactions and\n# max_txs_bytes=5MB, mempool will only accept 5 transactions).\nmax_txs_bytes = 1073741824\n\n# Size of the cache (used to filter transactions we saw earlier) in transactions\ncache_size = 10000\n\n# Do not remove invalid transactions from the cache (default: false)\n# Set to true if it's not possible for any invalid transaction to become valid\n# again in the future.\nkeep-invalid-txs-in-cache = false\n\n# Maximum size of a single transaction.\n# NOTE: the max size of a tx transmitted over the network is {max_tx_bytes}.\nmax_tx_bytes = 1048576\n\n# Maximum size of a batch of transactions to send to a peer\n# Including space needed by encoding (one varint per transaction).\n# XXX: Unused due to https://github.com/tendermint/tendermint/issues/5796\nmax_batch_bytes = 0\n\n# Experimental parameters to limit gossiping txs to up to the specified number of peers.\n# We use two independent upper values for persistent and non-persistent peers.\n# Unconditional peers are not affected by this feature.\n# If we are connected to more than the specified number of persistent peers, only send txs to\n# ExperimentalMaxGossipConnectionsToPersistentPeers of them. If one of those\n# persistent peers disconnects, activate another persistent peer.\n# Similarly for non-persistent peers, with an upper limit of\n# ExperimentalMaxGossipConnectionsToNonPersistentPeers.\n# If set to 0, the feature is disabled for the corresponding group of peers, that is, the\n# number of active connections to that group of peers is not bounded.\n# For non-persistent peers, if enabled, a value of 10 is recommended based on experimental\n# performance results using the default P2P configuration.\nexperimental_max_gossip_connections_to_persistent_peers = 0\nexperimental_max_gossip_connections_to_non_persistent_peers = 0\n\n#######################################################\n###         State Sync Configuration Options        ###\n#######################################################\n[statesync]\n# State sync rapidly bootstraps a new node by discovering, fetching, and restoring a state machine\n# snapshot from peers instead of fetching and replaying historical blocks. Requires some peers in\n# the network to take and serve state machine snapshots. State sync is not attempted if the node\n# has any local state (LastBlockHeight > 0). The node will have a truncated block history,\n# starting from the height of the snapshot.\nenable = false\n\n# RPC servers (comma-separated) for light client verification of the synced state machine and\n# retrieval of state data for node bootstrapping. Also needs a trusted height and corresponding\n# header hash obtained from a trusted source, and a period during which validators can be trusted.\n#\n# For Cosmos SDK-based chains, trust_period should usually be about 2/3 of the unbonding time (~2\n# weeks) during which they can be financially punished (slashed) for misbehavior.\nrpc_servers = \"\"\ntrust_height = 0\ntrust_hash = \"\"\ntrust_period = \"168h0m0s\"\n\n# Time to spend discovering snapshots before initiating a restore.\ndiscovery_time = \"15s\"\n\n# Temporary directory for state sync snapshot chunks, defaults to the OS tempdir (typically /tmp).\n# Will create a new, randomly named directory within, and remove it when done.\ntemp_dir = \"\"\n\n# The timeout duration before re-requesting a chunk, possibly from a different\n# peer (default: 1 minute).\nchunk_request_timeout = \"10s\"\n\n# The number of concurrent chunk fetchers to run (default: 1).\nchunk_fetchers = \"4\"\n\n#######################################################\n###       Block Sync Configuration Options          ###\n#######################################################\n[blocksync]\n\n# Block Sync version to use:\n#\n# In v0.37, v1 and v2 of the block sync protocols were deprecated.\n# Please use v0 instead.\n#\n#   1) \"v0\" - the default block sync implementation\nversion = \"v0\"\n\n#######################################################\n###         Consensus Configuration Options         ###\n#######################################################\n[consensus]\n\nwal_file = \"data/cs.wal/wal\"\n\n# How long we wait for a proposal block before prevoting nil\ntimeout_propose = \"500ms\"\n# How much timeout_propose increases with each round\ntimeout_propose_delta = \"500ms\"\n# How long we wait after receiving +2/3 prevotes for “anything” (ie. not a single block or nil)\ntimeout_prevote = \"500ms\"\n# How much the timeout_prevote increases with each round\ntimeout_prevote_delta = \"500ms\"\n# How long we wait after receiving +2/3 precommits for “anything” (ie. not a single block or nil)\ntimeout_precommit = \"500ms\"\n# How much the timeout_precommit increases with each round\ntimeout_precommit_delta = \"500ms\"\n# How long we wait after committing a block, before starting on the new\n# height (this gives us a chance to receive some more precommits, even\n# though we already have +2/3).\ntimeout_commit = \"1s\"\n\n# How many blocks to look back to check existence of the node's consensus votes before joining consensus\n# When non-zero, the node will panic upon restart\n# if the same consensus key was used to sign {double_sign_check_height} last blocks.\n# So, validators should stop the state machine, wait for some blocks, and then restart the state machine to avoid panic.\ndouble_sign_check_height = 0\n\n# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0)\nskip_timeout_commit = false\n\n# EmptyBlocks mode and possible interval between empty blocks\ncreate_empty_blocks = true\ncreate_empty_blocks_interval = \"0s\"\n\n# Reactor sleep duration parameters\npeer_gossip_sleep_duration = \"100ms\"\npeer_query_maj23_sleep_duration = \"2s\"\n\n#######################################################\n###         Storage Configuration Options           ###\n#######################################################\n[storage]\n\n# Set to true to discard ABCI responses from the state store, which can save a\n# considerable amount of disk space. Set to false to ensure ABCI responses are\n# persisted. ABCI responses are required for /block_results RPC queries, and to\n# reindex events in the command-line tool.\ndiscard_abci_responses = false\n\n#######################################################\n###   Transaction Indexer Configuration Options     ###\n#######################################################\n[tx_index]\n\n# What indexer to use for transactions\n#\n# The application will set which txs to index. In some cases a node operator will be able\n# to decide which txs to index based on configuration set in the application.\n#\n# Options:\n#   1) \"null\"\n#   2) \"kv\" (default) - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend).\n# \t\t- When \"kv\" is chosen \"tx.height\" and \"tx.hash\" will always be indexed.\n#   3) \"psql\" - the indexer services backed by PostgreSQL.\n# When \"kv\" or \"psql\" is chosen \"tx.height\" and \"tx.hash\" will always be indexed.\nindexer = \"kv\"\n\n# The PostgreSQL connection configuration, the connection format:\n#   postgresql://<user>:<password>@<host>:<port>/<db>?<opts>\npsql-conn = \"\"\n\n#######################################################\n###       Instrumentation Configuration Options     ###\n#######################################################\n[instrumentation]\n\n# When true, Prometheus metrics are served under /metrics on\n# PrometheusListenAddr.\n# Check out the documentation for the list of available metrics.\nprometheus = true\n\n# Address to listen for Prometheus collector(s) connections\nprometheus_listen_addr = \":26660\"\n\n# Maximum number of simultaneous connections.\n# If you want to accept a larger number than the default, make sure\n# you increase your OS limits.\n# 0 - unlimited.\nmax_open_connections = 3\n\n# Instrumentation namespace\nnamespace = \"cometbft\"\n"
  },
  {
    "path": "docker/entrypoint.sh",
    "content": "#!/bin/bash\n\nset -e \n\nDEFAULT_CHAIN_ID=\"sourcehub\"\nDEFAULT_MONIKER=\"node\"\nDEV_FACUET_MNEMONIC=\"comic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\"\n\nif [ ! -d /sourcehub/.initialized ]; then\n    echo \"Initializing SourceHub\"\n\n    if [ -z \"$CHAIN_ID\" ]; then \n        echo \"CHAIN_ID not set: using default\"\n        CHAIN_ID=$DEFAULT_CHAIN_ID\n    fi\n\n    if [ -z \"$MONIKER\" ]; then \n        echo \"MONIKER not set: using default\"\n        MONIKER=$DEFAULT_MONIKER\n    fi\n\n    sourcehubd init \"$MONIKER\" --chain-id $CHAIN_ID --default-denom=\"uopen\" 2>/dev/null\n\n    # copy the container specific default config files,\n    # which overrides some settings such as listening address\n    cp /etc/sourcehub/*.toml /sourcehub/config/\n\n    # recover account mnemonic\n    if [ -n \"$MNEMONIC_PATH\" ]; then\n        echo \"MNEMONIC_PATH set: recovering key\"\n        sourcehubd keys add validator --recover --source $MNEMONIC_PATH --keyring-backend test\n    fi\n\n    # if consensus key is set, we recover the full\n    # node, including p2p and consensus key\n    if [ -n \"$CONSENSUS_KEY_PATH\" ]; then\n        echo \"CONSENSUS_KEY_PATH set: recovering validator\"\n        test -s $CONSENSUS_KEY_PATH || (echo \"error: consensus key file is empty\" && exit 1)\n        test -s $COMET_NODE_KEY_PATH || (echo \"error: comet node key file is empty\" && exit 1)\n\n        cp $CONSENSUS_KEY_PATH /sourcehub/config/priv_validator_key.json\n        cp $COMET_NODE_KEY_PATH /sourcehub/config/node_key.json\n    fi\n\n    # initialize chain in standalone\n    if [ \"$STANDALONE\" = \"1\" ]; then \n        echo \"Standalone mode: generating new genesis\"\n        # initialize chain / create genesis\n        sourcehubd keys add validator --keyring-backend test\n        echo $DEV_FACUET_MNEMONIC | sourcehubd keys add faucet --keyring-backend test --recover\n        VALIDATOR_ADDR=$(sourcehubd keys show validator -a --keyring-backend test)\n        FAUCET_ADDR=$(sourcehubd keys show faucet -a --keyring-backend test)\n        sourcehubd genesis add-genesis-account $VALIDATOR_ADDR 1000000000000000uopen # 1b open\n        sourcehubd genesis add-genesis-account $FAUCET_ADDR 100000000000000uopen # 100m open\n        sourcehubd genesis gentx validator 1000000000000000uopen --chain-id $CHAIN_ID --keyring-backend test # 1b open\n        sourcehubd genesis collect-gentxs\n        sed -i 's/\"allow_zero_fee_txs\": false,/\"allow_zero_fee_txs\": true,/' /sourcehub/config/genesis.json\n        cp /etc/sourcehub/faucet-key.json /sourcehub/config/faucet-key.json\n        echo \"initialized sourcehub genesis\"\n    else \n        if [ -z \"$GENESIS_PATH\" ]; then\n            echo \"GENESIS_PATH not set and standalone is false: provide a genesis file or set env STANDALONE=1\"\n            exit 1\n        fi\n        cp $GENESIS_PATH /sourcehub/config/genesis.json\n        echo \"Loaded Genesis from $GENESIS_PATH\"\n    fi\n\n    touch /sourcehub/.initialized\nelse\n    echo \"Skipping initialization: container previously initialized\"\nfi\n\nif [ -n \"$COMET_CONFIG_PATH\" ]; then \n    echo \"COMET_CONFIG_PATH set: updating comet config with $COMET_CONFIG_PATH\"\n    cp $COMET_CONFIG_PATH /sourcehub/config/config.toml\nfi\n\nif [ -n \"$APP_CONFIG_PATH\" ]; then \n    echo \"APP_CONFIG_PATH set: updating app config with $APP_CONFIG_PATH\"\n    cp $APP_CONFIG_PATH /sourcehub/config/app.toml\nfi\n\nexec $@"
  },
  {
    "path": "docker/faucet-key.json",
    "content": "{\n  \"mnemonic\": \"comic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\",\n  \"name\": \"faucet\",\n  \"address\": \"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\"\n} "
  },
  {
    "path": "docker-compose.yaml",
    "content": "services:\n  sourcehub:\n    build:\n      context: .\n    ports:\n      - 1317:1317\n      - 26656:26656\n      - 26657:26657\n      - 9090:9090\n    environment:\n      STANDALONE: 1\n    volumes:\n      - data:/sourcehub\nvolumes:\n  data:"
  },
  {
    "path": "docs/docs.go",
    "content": "package docs\n\nimport (\n\t\"embed\"\n\thttptemplate \"html/template\"\n\t\"net/http\"\n\n\t\"github.com/gorilla/mux\"\n)\n\nconst (\n\tapiFile   = \"/static/openapi.yml\"\n\tindexFile = \"template/index.tpl\"\n)\n\n//go:embed static\nvar Static embed.FS\n\n//go:embed template\nvar template embed.FS\n\nfunc RegisterOpenAPIService(appName string, rtr *mux.Router) {\n\trtr.Handle(apiFile, http.FileServer(http.FS(Static)))\n\trtr.HandleFunc(\"/\", handler(appName))\n}\n\n// handler returns an http handler that servers OpenAPI console for an OpenAPI spec at specURL.\nfunc handler(title string) http.HandlerFunc {\n\tt, _ := httptemplate.ParseFS(template, indexFile)\n\n\treturn func(w http.ResponseWriter, req *http.Request) {\n\t\tt.Execute(w, struct {\n\t\t\tTitle string\n\t\t\tURL   string\n\t\t}{\n\t\t\ttitle,\n\t\t\tapiFile,\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "docs/static/openapi.yml",
    "content": "swagger: '2.0'\ninfo:\n  title: HTTP API Console\n  name: ''\n  description: ''\npaths:\n  /cosmos.auth.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a (governance) operation for updating the x/auth\n        module\n\n        parameters. The authority defaults to the x/gov module account.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosAuthV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/auth parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  max_memo_characters:\n                    type: string\n                    format: uint64\n                  tx_sig_limit:\n                    type: string\n                    format: uint64\n                  tx_size_cost_per_byte:\n                    type: string\n                    format: uint64\n                  sig_verify_cost_ed25519:\n                    type: string\n                    format: uint64\n                  sig_verify_cost_secp256k1:\n                    type: string\n                    format: uint64\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos/auth/v1beta1/account_info/{address}:\n    get:\n      summary: AccountInfo queries account info which is common to all account types.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosAuthV1Beta1Query_AccountInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              info:\n                description: info is the account info which is represented by BaseAccount.\n                type: object\n                properties:\n                  address:\n                    type: string\n                  pub_key:\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                    description: >-\n                      `Any` contains an arbitrary serialized protocol buffer\n                      message along with a\n\n                      URL that describes the type of the serialized message.\n\n\n                      Protobuf library provides support to pack/unpack Any\n                      values in the form\n\n                      of utility functions or additional generated methods of\n                      the Any type.\n\n\n                      Example 1: Pack and unpack a message in C++.\n\n                          Foo foo = ...;\n                          Any any;\n                          any.PackFrom(foo);\n                          ...\n                          if (any.UnpackTo(&foo)) {\n                            ...\n                          }\n\n                      Example 2: Pack and unpack a message in Java.\n\n                          Foo foo = ...;\n                          Any any = Any.pack(foo);\n                          ...\n                          if (any.is(Foo.class)) {\n                            foo = any.unpack(Foo.class);\n                          }\n                          // or ...\n                          if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                            foo = any.unpack(Foo.getDefaultInstance());\n                          }\n\n                      Example 3: Pack and unpack a message in Python.\n\n                          foo = Foo(...)\n                          any = Any()\n                          any.Pack(foo)\n                          ...\n                          if any.Is(Foo.DESCRIPTOR):\n                            any.Unpack(foo)\n                            ...\n\n                      Example 4: Pack and unpack a message in Go\n\n                           foo := &pb.Foo{...}\n                           any, err := anypb.New(foo)\n                           if err != nil {\n                             ...\n                           }\n                           ...\n                           foo := &pb.Foo{}\n                           if err := any.UnmarshalTo(foo); err != nil {\n                             ...\n                           }\n\n                      The pack methods provided by protobuf library will by\n                      default use\n\n                      'type.googleapis.com/full.type.name' as the type URL and\n                      the unpack\n\n                      methods only use the fully qualified type name after the\n                      last '/'\n\n                      in the type URL, for example \"foo.bar.com/x/y.z\" will\n                      yield type\n\n                      name \"y.z\".\n\n\n                      JSON\n\n\n                      The JSON representation of an `Any` value uses the regular\n\n                      representation of the deserialized, embedded message, with\n                      an\n\n                      additional field `@type` which contains the type URL.\n                      Example:\n\n                          package google.profile;\n                          message Person {\n                            string first_name = 1;\n                            string last_name = 2;\n                          }\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.profile.Person\",\n                            \"firstName\": <string>,\n                            \"lastName\": <string>\n                          }\n\n                      If the embedded message type is well-known and has a\n                      custom JSON\n\n                      representation, that representation will be embedded\n                      adding a field\n\n                      `value` which holds the custom JSON in addition to the\n                      `@type`\n\n                      field. Example (for message [google.protobuf.Duration][]):\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                            \"value\": \"1.212s\"\n                          }\n                  account_number:\n                    type: string\n                    format: uint64\n                  sequence:\n                    type: string\n                    format: uint64\n            description: |-\n              QueryAccountInfoResponse is the Query/AccountInfo response type.\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address\n          description: address is the account address string.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/accounts:\n    get:\n      summary: Accounts returns all the existing accounts.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n\n\n        Since: cosmos-sdk 0.43\n      operationId: CosmosAuthV1Beta1Query_Accounts\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              accounts:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n                title: accounts are the existing accounts\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryAccountsResponse is the response type for the Query/Accounts\n              RPC method.\n\n\n              Since: cosmos-sdk 0.43\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/accounts/{address}:\n    get:\n      summary: Account returns account details based on address.\n      operationId: CosmosAuthV1Beta1Query_Account\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              account:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n            description: >-\n              QueryAccountResponse is the response type for the Query/Account\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address\n          description: address defines the address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/address_by_id/{id}:\n    get:\n      summary: AccountAddressByID returns account address based on account number.\n      description: 'Since: cosmos-sdk 0.46.2'\n      operationId: CosmosAuthV1Beta1Query_AccountAddressByID\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              account_address:\n                type: string\n            description: 'Since: cosmos-sdk 0.46.2'\n            title: >-\n              QueryAccountAddressByIDResponse is the response type for\n              AccountAddressByID rpc method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: id\n          description: |-\n            Deprecated, use account_id instead\n\n            id is the account number of the address to be queried. This field\n            should have been an uint64 (like all account numbers), and will be\n            updated to uint64 in a future version of the auth query.\n          in: path\n          required: true\n          type: string\n          format: int64\n        - name: account_id\n          description: |-\n            account_id is the account number of the address to be queried.\n\n            Since: cosmos-sdk 0.47\n          in: query\n          required: false\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/bech32:\n    get:\n      summary: Bech32Prefix queries bech32Prefix\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthV1Beta1Query_Bech32Prefix\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              bech32_prefix:\n                type: string\n            description: >-\n              Bech32PrefixResponse is the response type for Bech32Prefix rpc\n              method.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/bech32/{address_bytes}:\n    get:\n      summary: AddressBytesToString converts Account Address bytes to string\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthV1Beta1Query_AddressBytesToString\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              address_string:\n                type: string\n            description: >-\n              AddressBytesToStringResponse is the response type for\n              AddressString rpc method.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address_bytes\n          in: path\n          required: true\n          type: string\n          format: byte\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/bech32/{address_string}:\n    get:\n      summary: AddressStringToBytes converts Address string to bytes\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthV1Beta1Query_AddressStringToBytes\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              address_bytes:\n                type: string\n                format: byte\n            description: >-\n              AddressStringToBytesResponse is the response type for AddressBytes\n              rpc method.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address_string\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/module_accounts:\n    get:\n      summary: ModuleAccounts returns all the existing module accounts.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthV1Beta1Query_ModuleAccounts\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              accounts:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n            description: >-\n              QueryModuleAccountsResponse is the response type for the\n              Query/ModuleAccounts RPC method.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/module_accounts/{name}:\n    get:\n      summary: ModuleAccountByName returns the module account info by module name\n      operationId: CosmosAuthV1Beta1Query_ModuleAccountByName\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              account:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n            description: >-\n              QueryModuleAccountByNameResponse is the response type for the\n              Query/ModuleAccountByName RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: name\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/auth/v1beta1/params:\n    get:\n      summary: Params queries all parameters.\n      operationId: CosmosAuthV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  max_memo_characters:\n                    type: string\n                    format: uint64\n                  tx_sig_limit:\n                    type: string\n                    format: uint64\n                  tx_size_cost_per_byte:\n                    type: string\n                    format: uint64\n                  sig_verify_cost_ed25519:\n                    type: string\n                    format: uint64\n                  sig_verify_cost_secp256k1:\n                    type: string\n                    format: uint64\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/authz/v1beta1/grants:\n    get:\n      summary: Returns list of `Authorization`, granted to the grantee by the granter.\n      operationId: CosmosAuthzV1Beta1Query_Grants\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              grants:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    authorization:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    expiration:\n                      type: string\n                      format: date-time\n                      title: >-\n                        time when the grant will expire and will be pruned. If\n                        null, then the grant\n\n                        doesn't have a time expiration (other conditions  in\n                        `authorization`\n\n                        may apply to invalidate the grant)\n                  description: |-\n                    Grant gives permissions to execute\n                    the provide method with expiration time.\n                description: >-\n                  authorizations is a list of grants granted for grantee by\n                  granter.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGrantsResponse is the response type for the\n              Query/Authorizations RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: granter\n          in: query\n          required: false\n          type: string\n        - name: grantee\n          in: query\n          required: false\n          type: string\n        - name: msg_type_url\n          description: >-\n            Optional, msg_type_url, when set, will query only grants matching\n            given msg type.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/authz/v1beta1/grants/grantee/{grantee}:\n    get:\n      summary: GranteeGrants returns a list of `GrantAuthorization` by grantee.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthzV1Beta1Query_GranteeGrants\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              grants:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    granter:\n                      type: string\n                    grantee:\n                      type: string\n                    authorization:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    expiration:\n                      type: string\n                      format: date-time\n                  title: >-\n                    GrantAuthorization extends a grant with both the addresses\n                    of the grantee and granter.\n\n                    It is used in genesis.proto and query.proto\n                description: grants is a list of grants granted to the grantee.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGranteeGrantsResponse is the response type for the\n              Query/GranteeGrants RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: grantee\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/authz/v1beta1/grants/granter/{granter}:\n    get:\n      summary: GranterGrants returns list of `GrantAuthorization`, granted by granter.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosAuthzV1Beta1Query_GranterGrants\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              grants:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    granter:\n                      type: string\n                    grantee:\n                      type: string\n                    authorization:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    expiration:\n                      type: string\n                      format: date-time\n                  title: >-\n                    GrantAuthorization extends a grant with both the addresses\n                    of the grantee and granter.\n\n                    It is used in genesis.proto and query.proto\n                description: grants is a list of grants granted by the granter.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGranterGrantsResponse is the response type for the\n              Query/GranterGrants RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: granter\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos.authz.v1beta1.Msg/Exec:\n    post:\n      summary: |-\n        Exec attempts to execute the provided messages using\n        authorizations granted to the grantee. Each message should have only\n        one signer corresponding to the granter of the authorization.\n      operationId: CosmosAuthzV1Beta1Msg_Exec\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              results:\n                type: array\n                items:\n                  type: string\n                  format: byte\n            description: MsgExecResponse defines the Msg/MsgExecResponse response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgExec attempts to execute the provided messages using\n            authorizations granted to the grantee. Each message should have only\n            one signer corresponding to the granter of the authorization.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              grantee:\n                type: string\n              msgs:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n                description: >-\n                  Execute Msg.\n\n                  The x/authz will try to find a grant matching (msg.signers[0],\n                  grantee, MsgTypeURL(msg))\n\n                  triple and validate it.\n            description: >-\n              MsgExec attempts to execute the provided messages using\n\n              authorizations granted to the grantee. Each message should have\n              only\n\n              one signer corresponding to the granter of the authorization.\n      tags:\n        - Msg\n  /cosmos.authz.v1beta1.Msg/Grant:\n    post:\n      summary: |-\n        Grant grants the provided authorization to the grantee on the granter's\n        account with the provided expiration time. If there is already a grant\n        for the given (granter, grantee, Authorization) triple, then the grant\n        will be overwritten.\n      operationId: CosmosAuthzV1Beta1Msg_Grant\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgGrantResponse defines the Msg/MsgGrant response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgGrant is a request type for Grant method. It declares\n            authorization to the grantee\n\n            on behalf of the granter with the provided expiration time.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              granter:\n                type: string\n              grantee:\n                type: string\n              grant:\n                type: object\n                properties:\n                  authorization:\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                    description: >-\n                      `Any` contains an arbitrary serialized protocol buffer\n                      message along with a\n\n                      URL that describes the type of the serialized message.\n\n\n                      Protobuf library provides support to pack/unpack Any\n                      values in the form\n\n                      of utility functions or additional generated methods of\n                      the Any type.\n\n\n                      Example 1: Pack and unpack a message in C++.\n\n                          Foo foo = ...;\n                          Any any;\n                          any.PackFrom(foo);\n                          ...\n                          if (any.UnpackTo(&foo)) {\n                            ...\n                          }\n\n                      Example 2: Pack and unpack a message in Java.\n\n                          Foo foo = ...;\n                          Any any = Any.pack(foo);\n                          ...\n                          if (any.is(Foo.class)) {\n                            foo = any.unpack(Foo.class);\n                          }\n                          // or ...\n                          if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                            foo = any.unpack(Foo.getDefaultInstance());\n                          }\n\n                      Example 3: Pack and unpack a message in Python.\n\n                          foo = Foo(...)\n                          any = Any()\n                          any.Pack(foo)\n                          ...\n                          if any.Is(Foo.DESCRIPTOR):\n                            any.Unpack(foo)\n                            ...\n\n                      Example 4: Pack and unpack a message in Go\n\n                           foo := &pb.Foo{...}\n                           any, err := anypb.New(foo)\n                           if err != nil {\n                             ...\n                           }\n                           ...\n                           foo := &pb.Foo{}\n                           if err := any.UnmarshalTo(foo); err != nil {\n                             ...\n                           }\n\n                      The pack methods provided by protobuf library will by\n                      default use\n\n                      'type.googleapis.com/full.type.name' as the type URL and\n                      the unpack\n\n                      methods only use the fully qualified type name after the\n                      last '/'\n\n                      in the type URL, for example \"foo.bar.com/x/y.z\" will\n                      yield type\n\n                      name \"y.z\".\n\n\n                      JSON\n\n\n                      The JSON representation of an `Any` value uses the regular\n\n                      representation of the deserialized, embedded message, with\n                      an\n\n                      additional field `@type` which contains the type URL.\n                      Example:\n\n                          package google.profile;\n                          message Person {\n                            string first_name = 1;\n                            string last_name = 2;\n                          }\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.profile.Person\",\n                            \"firstName\": <string>,\n                            \"lastName\": <string>\n                          }\n\n                      If the embedded message type is well-known and has a\n                      custom JSON\n\n                      representation, that representation will be embedded\n                      adding a field\n\n                      `value` which holds the custom JSON in addition to the\n                      `@type`\n\n                      field. Example (for message [google.protobuf.Duration][]):\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                            \"value\": \"1.212s\"\n                          }\n                  expiration:\n                    type: string\n                    format: date-time\n                    title: >-\n                      time when the grant will expire and will be pruned. If\n                      null, then the grant\n\n                      doesn't have a time expiration (other conditions  in\n                      `authorization`\n\n                      may apply to invalidate the grant)\n                description: |-\n                  Grant gives permissions to execute\n                  the provide method with expiration time.\n            description: >-\n              MsgGrant is a request type for Grant method. It declares\n              authorization to the grantee\n\n              on behalf of the granter with the provided expiration time.\n      tags:\n        - Msg\n  /cosmos.authz.v1beta1.Msg/Revoke:\n    post:\n      summary: >-\n        Revoke revokes any authorization corresponding to the provided method\n        name on the\n\n        granter's account that has been granted to the grantee.\n      operationId: CosmosAuthzV1Beta1Msg_Revoke\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgRevoke revokes any authorization with the provided sdk.Msg type\n            on the\n\n            granter's account with that has been granted to the grantee.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              granter:\n                type: string\n              grantee:\n                type: string\n              msg_type_url:\n                type: string\n            description: >-\n              MsgRevoke revokes any authorization with the provided sdk.Msg type\n              on the\n\n              granter's account with that has been granted to the grantee.\n      tags:\n        - Msg\n  /cosmos.bank.v1beta1.Msg/MultiSend:\n    post:\n      summary: >-\n        MultiSend defines a method for sending coins from some accounts to other\n        accounts.\n      operationId: CosmosBankV1Beta1Msg_MultiSend\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgMultiSendResponse defines the Msg/MultiSend response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgMultiSend represents an arbitrary multi-in, multi-out send\n            message.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              inputs:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    coins:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                  description: Input models transaction input.\n                description: >-\n                  Inputs, despite being `repeated`, only allows one sender\n                  input. This is\n\n                  checked in MsgMultiSend's ValidateBasic.\n              outputs:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    coins:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                  description: Output models transaction outputs.\n            description: >-\n              MsgMultiSend represents an arbitrary multi-in, multi-out send\n              message.\n      tags:\n        - Msg\n  /cosmos.bank.v1beta1.Msg/Send:\n    post:\n      summary: >-\n        Send defines a method for sending coins from one account to another\n        account.\n      operationId: CosmosBankV1Beta1Msg_Send\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgSendResponse defines the Msg/Send response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgSend represents a message to send coins from one account to\n            another.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              from_address:\n                type: string\n              to_address:\n                type: string\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n            description: >-\n              MsgSend represents a message to send coins from one account to\n              another.\n      tags:\n        - Msg\n  /cosmos.bank.v1beta1.Msg/SetSendEnabled:\n    post:\n      summary: >-\n        SetSendEnabled is a governance operation for setting the SendEnabled\n        flag\n\n        on any number of Denoms. Only the entries to add or update should be\n\n        included. Entries that already exist in the store, but that aren't\n\n        included in this message, will be left unchanged.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosBankV1Beta1Msg_SetSendEnabled\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response\n              type.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\n            Only entries to add/update/delete need to be included.\n            Existing SendEnabled entries that are not included in this\n            message are left unchanged.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: authority is the address that controls the module.\n              send_enabled:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    enabled:\n                      type: boolean\n                  description: >-\n                    SendEnabled maps coin denom to a send_enabled status\n                    (whether a denom is\n\n                    sendable).\n                description: send_enabled is the list of entries to add or update.\n              use_default_for:\n                type: array\n                items:\n                  type: string\n                description: >-\n                  use_default_for is a list of denoms that should use the\n                  params.default_send_enabled value.\n\n                  Denoms listed here will have their SendEnabled entries\n                  deleted.\n\n                  If a denom is included that doesn't have a SendEnabled entry,\n\n                  it will be ignored.\n            description: |-\n              MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\n              Only entries to add/update/delete need to be included.\n              Existing SendEnabled entries that are not included in this\n              message are left unchanged.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos.bank.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/bank\n        module parameters.\n\n        The authority is defined in the keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosBankV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/bank parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  send_enabled:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        enabled:\n                          type: boolean\n                      description: >-\n                        SendEnabled maps coin denom to a send_enabled status\n                        (whether a denom is\n\n                        sendable).\n                    description: >-\n                      Deprecated: Use of SendEnabled in params is deprecated.\n\n                      For genesis, use the newly added send_enabled field in the\n                      genesis object.\n\n                      Storage, lookup, and manipulation of this information is\n                      now in the keeper.\n\n\n                      As of cosmos-sdk 0.47, this only exists for backwards\n                      compatibility of genesis files.\n                  default_send_enabled:\n                    type: boolean\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos/bank/v1beta1/balances/{address}:\n    get:\n      summary: AllBalances queries the balance of all coins for a single account.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosBankV1Beta1Query_AllBalances\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              balances:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: balances is the balances of all the coins.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryAllBalancesResponse is the response type for the\n              Query/AllBalances RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: address\n          description: address is the address to query balances for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: resolve_denom\n          description: >-\n            resolve_denom is the flag to resolve the denom into a human-readable\n            form from the metadata.\n\n\n            Since: cosmos-sdk 0.50\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/balances/{address}/by_denom:\n    get:\n      summary: Balance queries the balance of a single coin for a single account.\n      operationId: CosmosBankV1Beta1Query_Balance\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              balance:\n                description: balance is the balance of the coin.\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n            description: >-\n              QueryBalanceResponse is the response type for the Query/Balance\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: address\n          description: address is the address to query balances for.\n          in: path\n          required: true\n          type: string\n        - name: denom\n          description: denom is the coin denom to query balances for.\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/denom_owners/{denom}:\n    get:\n      summary: >-\n        DenomOwners queries for all account addresses that own a particular\n        token\n\n        denomination.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n\n\n        Since: cosmos-sdk 0.46\n      operationId: CosmosBankV1Beta1Query_DenomOwners\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              denom_owners:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: >-\n                        address defines the address that owns a particular\n                        denomination.\n                    balance:\n                      description: >-\n                        balance is the balance of the denominated coin for an\n                        account.\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                  description: >-\n                    DenomOwner defines structure representing an account that\n                    owns or holds a\n\n                    particular denominated token. It contains the account\n                    address and account\n\n                    balance of the denominated token.\n\n\n                    Since: cosmos-sdk 0.46\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryDenomOwnersResponse defines the RPC response of a DenomOwners\n              RPC query.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          description: >-\n            denom defines the coin denomination to query all account holders\n            for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/denom_owners_by_query:\n    get:\n      summary: >-\n        DenomOwnersByQuery queries for all account addresses that own a\n        particular token\n\n        denomination.\n      description: 'Since: cosmos-sdk 0.50.3'\n      operationId: CosmosBankV1Beta1Query_DenomOwnersByQuery\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              denom_owners:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: >-\n                        address defines the address that owns a particular\n                        denomination.\n                    balance:\n                      description: >-\n                        balance is the balance of the denominated coin for an\n                        account.\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                  description: >-\n                    DenomOwner defines structure representing an account that\n                    owns or holds a\n\n                    particular denominated token. It contains the account\n                    address and account\n\n                    balance of the denominated token.\n\n\n                    Since: cosmos-sdk 0.46\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryDenomOwnersByQueryResponse defines the RPC response of a\n              DenomOwnersByQuery RPC query.\n\n\n              Since: cosmos-sdk 0.50.3\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          description: >-\n            denom defines the coin denomination to query all account holders\n            for.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/denoms_metadata:\n    get:\n      summary: |-\n        DenomsMetadata queries the client metadata for all registered coin\n        denominations.\n      operationId: CosmosBankV1Beta1Query_DenomsMetadata\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              metadatas:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    description:\n                      type: string\n                    denom_units:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                            description: >-\n                              denom represents the string name of the given\n                              denom unit (e.g uatom).\n                          exponent:\n                            type: integer\n                            format: int64\n                            description: >-\n                              exponent represents power of 10 exponent that one\n                              must\n\n                              raise the base_denom to in order to equal the\n                              given DenomUnit's denom\n\n                              1 denom = 10^exponent base_denom\n\n                              (e.g. with a base_denom of uatom, one can create a\n                              DenomUnit of 'atom' with\n\n                              exponent = 6, thus: 1 atom = 10^6 uatom).\n                          aliases:\n                            type: array\n                            items:\n                              type: string\n                            title: >-\n                              aliases is a list of string aliases for the given\n                              denom\n                        description: |-\n                          DenomUnit represents a struct that describes a given\n                          denomination unit of the basic token.\n                      title: >-\n                        denom_units represents the list of DenomUnit's for a\n                        given coin\n                    base:\n                      type: string\n                      description: >-\n                        base represents the base denom (should be the DenomUnit\n                        with exponent = 0).\n                    display:\n                      type: string\n                      description: |-\n                        display indicates the suggested denom that should be\n                        displayed in clients.\n                    name:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.43'\n                      title: 'name defines the name of the token (eg: Cosmos Atom)'\n                    symbol:\n                      type: string\n                      description: >-\n                        symbol is the token symbol usually shown on exchanges\n                        (eg: ATOM). This can\n\n                        be the same as the display.\n\n\n                        Since: cosmos-sdk 0.43\n                    uri:\n                      type: string\n                      description: >-\n                        URI to a document (on or off-chain) that contains\n                        additional information. Optional.\n\n\n                        Since: cosmos-sdk 0.46\n                    uri_hash:\n                      type: string\n                      description: >-\n                        URIHash is a sha256 hash of a document pointed by URI.\n                        It's used to verify that\n\n                        the document didn't change. Optional.\n\n\n                        Since: cosmos-sdk 0.46\n                  description: |-\n                    Metadata represents a struct that describes\n                    a basic token.\n                description: >-\n                  metadata provides the client information for all the\n                  registered tokens.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryDenomsMetadataResponse is the response type for the\n              Query/DenomsMetadata RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/denoms_metadata/{denom}:\n    get:\n      summary: DenomMetadata queries the client metadata of a given coin denomination.\n      operationId: CosmosBankV1Beta1Query_DenomMetadata\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              metadata:\n                description: >-\n                  metadata describes and provides all the client information for\n                  the requested token.\n                type: object\n                properties:\n                  description:\n                    type: string\n                  denom_units:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                          description: >-\n                            denom represents the string name of the given denom\n                            unit (e.g uatom).\n                        exponent:\n                          type: integer\n                          format: int64\n                          description: >-\n                            exponent represents power of 10 exponent that one\n                            must\n\n                            raise the base_denom to in order to equal the given\n                            DenomUnit's denom\n\n                            1 denom = 10^exponent base_denom\n\n                            (e.g. with a base_denom of uatom, one can create a\n                            DenomUnit of 'atom' with\n\n                            exponent = 6, thus: 1 atom = 10^6 uatom).\n                        aliases:\n                          type: array\n                          items:\n                            type: string\n                          title: >-\n                            aliases is a list of string aliases for the given\n                            denom\n                      description: |-\n                        DenomUnit represents a struct that describes a given\n                        denomination unit of the basic token.\n                    title: >-\n                      denom_units represents the list of DenomUnit's for a given\n                      coin\n                  base:\n                    type: string\n                    description: >-\n                      base represents the base denom (should be the DenomUnit\n                      with exponent = 0).\n                  display:\n                    type: string\n                    description: |-\n                      display indicates the suggested denom that should be\n                      displayed in clients.\n                  name:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.43'\n                    title: 'name defines the name of the token (eg: Cosmos Atom)'\n                  symbol:\n                    type: string\n                    description: >-\n                      symbol is the token symbol usually shown on exchanges (eg:\n                      ATOM). This can\n\n                      be the same as the display.\n\n\n                      Since: cosmos-sdk 0.43\n                  uri:\n                    type: string\n                    description: >-\n                      URI to a document (on or off-chain) that contains\n                      additional information. Optional.\n\n\n                      Since: cosmos-sdk 0.46\n                  uri_hash:\n                    type: string\n                    description: >-\n                      URIHash is a sha256 hash of a document pointed by URI.\n                      It's used to verify that\n\n                      the document didn't change. Optional.\n\n\n                      Since: cosmos-sdk 0.46\n            description: >-\n              QueryDenomMetadataResponse is the response type for the\n              Query/DenomMetadata RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          description: denom is the coin denom to query the metadata for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/denoms_metadata_by_query_string:\n    get:\n      summary: >-\n        DenomMetadataByQueryString queries the client metadata of a given coin\n        denomination.\n      operationId: CosmosBankV1Beta1Query_DenomMetadataByQueryString\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              metadata:\n                description: >-\n                  metadata describes and provides all the client information for\n                  the requested token.\n                type: object\n                properties:\n                  description:\n                    type: string\n                  denom_units:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                          description: >-\n                            denom represents the string name of the given denom\n                            unit (e.g uatom).\n                        exponent:\n                          type: integer\n                          format: int64\n                          description: >-\n                            exponent represents power of 10 exponent that one\n                            must\n\n                            raise the base_denom to in order to equal the given\n                            DenomUnit's denom\n\n                            1 denom = 10^exponent base_denom\n\n                            (e.g. with a base_denom of uatom, one can create a\n                            DenomUnit of 'atom' with\n\n                            exponent = 6, thus: 1 atom = 10^6 uatom).\n                        aliases:\n                          type: array\n                          items:\n                            type: string\n                          title: >-\n                            aliases is a list of string aliases for the given\n                            denom\n                      description: |-\n                        DenomUnit represents a struct that describes a given\n                        denomination unit of the basic token.\n                    title: >-\n                      denom_units represents the list of DenomUnit's for a given\n                      coin\n                  base:\n                    type: string\n                    description: >-\n                      base represents the base denom (should be the DenomUnit\n                      with exponent = 0).\n                  display:\n                    type: string\n                    description: |-\n                      display indicates the suggested denom that should be\n                      displayed in clients.\n                  name:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.43'\n                    title: 'name defines the name of the token (eg: Cosmos Atom)'\n                  symbol:\n                    type: string\n                    description: >-\n                      symbol is the token symbol usually shown on exchanges (eg:\n                      ATOM). This can\n\n                      be the same as the display.\n\n\n                      Since: cosmos-sdk 0.43\n                  uri:\n                    type: string\n                    description: >-\n                      URI to a document (on or off-chain) that contains\n                      additional information. Optional.\n\n\n                      Since: cosmos-sdk 0.46\n                  uri_hash:\n                    type: string\n                    description: >-\n                      URIHash is a sha256 hash of a document pointed by URI.\n                      It's used to verify that\n\n                      the document didn't change. Optional.\n\n\n                      Since: cosmos-sdk 0.46\n            description: >-\n              QueryDenomMetadataByQueryStringResponse is the response type for\n              the Query/DenomMetadata RPC\n\n              method. Identical with QueryDenomMetadataResponse but receives\n              denom as query string in request.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          description: denom is the coin denom to query the metadata for.\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/params:\n    get:\n      summary: Params queries the parameters of x/bank module.\n      operationId: CosmosBankV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params provides the parameters of the bank module.\n                type: object\n                properties:\n                  send_enabled:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        enabled:\n                          type: boolean\n                      description: >-\n                        SendEnabled maps coin denom to a send_enabled status\n                        (whether a denom is\n\n                        sendable).\n                    description: >-\n                      Deprecated: Use of SendEnabled in params is deprecated.\n\n                      For genesis, use the newly added send_enabled field in the\n                      genesis object.\n\n                      Storage, lookup, and manipulation of this information is\n                      now in the keeper.\n\n\n                      As of cosmos-sdk 0.47, this only exists for backwards\n                      compatibility of genesis files.\n                  default_send_enabled:\n                    type: boolean\n            description: >-\n              QueryParamsResponse defines the response type for querying x/bank\n              parameters.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/send_enabled:\n    get:\n      summary: SendEnabled queries for SendEnabled entries.\n      description: >-\n        This query only returns denominations that have specific SendEnabled\n        settings.\n\n        Any denomination that does not have a specific setting will use the\n        default\n\n        params.default_send_enabled, and will not be returned by this query.\n\n\n        Since: cosmos-sdk 0.47\n      operationId: CosmosBankV1Beta1Query_SendEnabled\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              send_enabled:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    enabled:\n                      type: boolean\n                  description: >-\n                    SendEnabled maps coin denom to a send_enabled status\n                    (whether a denom is\n\n                    sendable).\n              pagination:\n                description: >-\n                  pagination defines the pagination in the response. This field\n                  is only\n\n                  populated if the denoms field in the request is empty.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QuerySendEnabledResponse defines the RPC response of a SendEnable\n              query.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denoms\n          description: >-\n            denoms is the specific denoms you want look up. Leave empty to get\n            all entries.\n          in: query\n          required: false\n          type: array\n          items:\n            type: string\n          collectionFormat: multi\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/spendable_balances/{address}:\n    get:\n      summary: >-\n        SpendableBalances queries the spendable balance of all coins for a\n        single\n\n        account.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n\n\n        Since: cosmos-sdk 0.46\n      operationId: CosmosBankV1Beta1Query_SpendableBalances\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              balances:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: balances is the spendable balances of all the coins.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QuerySpendableBalancesResponse defines the gRPC response structure\n              for querying\n\n              an account's spendable balances.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: address\n          description: address is the address to query spendable balances for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/spendable_balances/{address}/by_denom:\n    get:\n      summary: >-\n        SpendableBalanceByDenom queries the spendable balance of a single denom\n        for\n\n        a single account.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n\n\n        Since: cosmos-sdk 0.47\n      operationId: CosmosBankV1Beta1Query_SpendableBalanceByDenom\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              balance:\n                description: balance is the balance of the coin.\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n            description: >-\n              QuerySpendableBalanceByDenomResponse defines the gRPC response\n              structure for\n\n              querying an account's spendable balance for a specific denom.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: address\n          description: address is the address to query balances for.\n          in: path\n          required: true\n          type: string\n        - name: denom\n          description: denom is the coin denom to query balances for.\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/supply:\n    get:\n      summary: TotalSupply queries the total supply of all coins.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosBankV1Beta1Query_TotalSupply\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              supply:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: supply is the supply of the coins\n              pagination:\n                description: |-\n                  pagination defines the pagination in the response.\n\n                  Since: cosmos-sdk 0.43\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: >-\n              QueryTotalSupplyResponse is the response type for the\n              Query/TotalSupply RPC\n\n              method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/bank/v1beta1/supply/by_denom:\n    get:\n      summary: SupplyOf queries the supply of a single coin.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosBankV1Beta1Query_SupplyOf\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amount:\n                description: amount is the supply of the coin.\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n            description: >-\n              QuerySupplyOfResponse is the response type for the Query/SupplyOf\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          description: denom is the coin denom to query balances for.\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/base/node/v1beta1/config:\n    get:\n      summary: Config queries for the operator configuration.\n      operationId: CosmosBaseNodeV1Beta1Service_Config\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              minimum_gas_price:\n                type: string\n              pruning_keep_recent:\n                type: string\n              pruning_interval:\n                type: string\n              halt_height:\n                type: string\n                format: uint64\n            description: >-\n              ConfigResponse defines the response structure for the Config gRPC\n              query.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Service\n  /cosmos/base/node/v1beta1/status:\n    get:\n      summary: Status queries for the node status.\n      operationId: CosmosBaseNodeV1Beta1Service_Status\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              earliest_store_height:\n                type: string\n                format: uint64\n                title: earliest block height available in the store\n              height:\n                type: string\n                format: uint64\n                title: current block height\n              timestamp:\n                type: string\n                format: date-time\n                title: block height timestamp\n              app_hash:\n                type: string\n                format: byte\n                title: app hash of the current block\n              validator_hash:\n                type: string\n                format: byte\n                title: validator hash provided by the consensus header\n            description: >-\n              StateResponse defines the response structure for the status of a\n              node.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/abci_query:\n    get:\n      summary: >-\n        ABCIQuery defines a query handler that supports ABCI queries directly to\n        the\n\n        application, bypassing Tendermint completely. The ABCI query must\n        contain\n\n        a valid and supported path, including app, custom, p2p, and store.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosBaseTendermintV1Beta1Service_ABCIQuery\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int64\n              log:\n                type: string\n                title: nondeterministic\n              info:\n                type: string\n                title: nondeterministic\n              index:\n                type: string\n                format: int64\n              key:\n                type: string\n                format: byte\n              value:\n                type: string\n                format: byte\n              proof_ops:\n                type: object\n                properties:\n                  ops:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                        key:\n                          type: string\n                          format: byte\n                        data:\n                          type: string\n                          format: byte\n                      description: >-\n                        ProofOp defines an operation used for calculating Merkle\n                        root. The data could\n\n                        be arbitrary format, providing necessary data for\n                        example neighbouring node\n\n                        hash.\n\n\n                        Note: This type is a duplicate of the ProofOp proto type\n                        defined in Tendermint.\n                description: >-\n                  ProofOps is Merkle proof defined by the list of ProofOps.\n\n\n                  Note: This type is a duplicate of the ProofOps proto type\n                  defined in Tendermint.\n              height:\n                type: string\n                format: int64\n              codespace:\n                type: string\n            description: >-\n              ABCIQueryResponse defines the response structure for the ABCIQuery\n              gRPC query.\n\n\n              Note: This type is a duplicate of the ResponseQuery proto type\n              defined in\n\n              Tendermint.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: data\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: path\n          in: query\n          required: false\n          type: string\n        - name: height\n          in: query\n          required: false\n          type: string\n          format: int64\n        - name: prove\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/blocks/latest:\n    get:\n      summary: GetLatestBlock returns the latest block.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetLatestBlock\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              block:\n                title: 'Deprecated: please use `sdk_block` instead'\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        format: byte\n                        title: original proposer of the block\n                    description: Header defines the structure of a block header.\n                  data:\n                    type: object\n                    properties:\n                      txs:\n                        type: array\n                        items:\n                          type: string\n                          format: byte\n                        description: >-\n                          Txs that will be applied by state @ block.Height+1.\n\n                          NOTE: not all txs here are valid.  We're just agreeing\n                          on the order first.\n\n                          This means that block.AppHash does not include these\n                          txs.\n                    title: >-\n                      Data contains the set of transactions included in the\n                      block\n                  evidence:\n                    type: object\n                    properties:\n                      evidence:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            duplicate_vote_evidence:\n                              type: object\n                              properties:\n                                vote_a:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                vote_b:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                validator_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                DuplicateVoteEvidence contains evidence of a\n                                validator signed two conflicting votes.\n                            light_client_attack_evidence:\n                              type: object\n                              properties:\n                                conflicting_block:\n                                  type: object\n                                  properties:\n                                    signed_header:\n                                      type: object\n                                      properties:\n                                        header:\n                                          type: object\n                                          properties:\n                                            version:\n                                              title: basic block info\n                                              type: object\n                                              properties:\n                                                block:\n                                                  type: string\n                                                  format: uint64\n                                                app:\n                                                  type: string\n                                                  format: uint64\n                                              description: >-\n                                                Consensus captures the consensus rules\n                                                for processing a block in the\n                                                blockchain,\n\n                                                including all blockchain data structures\n                                                and the rules of the application's\n\n                                                state transition machine.\n                                            chain_id:\n                                              type: string\n                                            height:\n                                              type: string\n                                              format: int64\n                                            time:\n                                              type: string\n                                              format: date-time\n                                            last_block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            last_commit_hash:\n                                              type: string\n                                              format: byte\n                                              description: >-\n                                                commit from validators from the last\n                                                block\n                                              title: hashes of block data\n                                            data_hash:\n                                              type: string\n                                              format: byte\n                                              title: transactions\n                                            validators_hash:\n                                              type: string\n                                              format: byte\n                                              description: validators for the current block\n                                              title: >-\n                                                hashes from the app output from the prev\n                                                block\n                                            next_validators_hash:\n                                              type: string\n                                              format: byte\n                                              title: validators for the next block\n                                            consensus_hash:\n                                              type: string\n                                              format: byte\n                                              title: consensus params for current block\n                                            app_hash:\n                                              type: string\n                                              format: byte\n                                              title: state after txs from the previous block\n                                            last_results_hash:\n                                              type: string\n                                              format: byte\n                                              title: >-\n                                                root hash of all results from the txs\n                                                from the previous block\n                                            evidence_hash:\n                                              type: string\n                                              format: byte\n                                              description: evidence included in the block\n                                              title: consensus info\n                                            proposer_address:\n                                              type: string\n                                              format: byte\n                                              title: original proposer of the block\n                                          description: >-\n                                            Header defines the structure of a block\n                                            header.\n                                        commit:\n                                          type: object\n                                          properties:\n                                            height:\n                                              type: string\n                                              format: int64\n                                            round:\n                                              type: integer\n                                              format: int32\n                                            block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            signatures:\n                                              type: array\n                                              items:\n                                                type: object\n                                                properties:\n                                                  block_id_flag:\n                                                    type: string\n                                                    enum:\n                                                      - BLOCK_ID_FLAG_UNKNOWN\n                                                      - BLOCK_ID_FLAG_ABSENT\n                                                      - BLOCK_ID_FLAG_COMMIT\n                                                      - BLOCK_ID_FLAG_NIL\n                                                    default: BLOCK_ID_FLAG_UNKNOWN\n                                                    description: >-\n                                                      - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                                      error condition\n                                                       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                                       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                                       - BLOCK_ID_FLAG_NIL: voted for nil\n                                                    title: >-\n                                                      BlockIdFlag indicates which BlockID the\n                                                      signature is for\n                                                  validator_address:\n                                                    type: string\n                                                    format: byte\n                                                  timestamp:\n                                                    type: string\n                                                    format: date-time\n                                                  signature:\n                                                    type: string\n                                                    format: byte\n                                                description: >-\n                                                  CommitSig is a part of the Vote included\n                                                  in a Commit.\n                                          description: >-\n                                            Commit contains the evidence that a\n                                            block was committed by a set of\n                                            validators.\n                                    validator_set:\n                                      type: object\n                                      properties:\n                                        validators:\n                                          type: array\n                                          items:\n                                            type: object\n                                            properties:\n                                              address:\n                                                type: string\n                                                format: byte\n                                              pub_key:\n                                                type: object\n                                                properties:\n                                                  ed25519:\n                                                    type: string\n                                                    format: byte\n                                                  secp256k1:\n                                                    type: string\n                                                    format: byte\n                                                title: >-\n                                                  PublicKey defines the keys available for\n                                                  use with Validators\n                                              voting_power:\n                                                type: string\n                                                format: int64\n                                              proposer_priority:\n                                                type: string\n                                                format: int64\n                                        proposer:\n                                          type: object\n                                          properties:\n                                            address:\n                                              type: string\n                                              format: byte\n                                            pub_key:\n                                              type: object\n                                              properties:\n                                                ed25519:\n                                                  type: string\n                                                  format: byte\n                                                secp256k1:\n                                                  type: string\n                                                  format: byte\n                                              title: >-\n                                                PublicKey defines the keys available for\n                                                use with Validators\n                                            voting_power:\n                                              type: string\n                                              format: int64\n                                            proposer_priority:\n                                              type: string\n                                              format: int64\n                                        total_voting_power:\n                                          type: string\n                                          format: int64\n                                common_height:\n                                  type: string\n                                  format: int64\n                                byzantine_validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                LightClientAttackEvidence contains evidence of a\n                                set of validators attempting to mislead a light\n                                client.\n                  last_commit:\n                    type: object\n                    properties:\n                      height:\n                        type: string\n                        format: int64\n                      round:\n                        type: integer\n                        format: int32\n                      block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      signatures:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            block_id_flag:\n                              type: string\n                              enum:\n                                - BLOCK_ID_FLAG_UNKNOWN\n                                - BLOCK_ID_FLAG_ABSENT\n                                - BLOCK_ID_FLAG_COMMIT\n                                - BLOCK_ID_FLAG_NIL\n                              default: BLOCK_ID_FLAG_UNKNOWN\n                              description: >-\n                                - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                                condition\n                                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                 - BLOCK_ID_FLAG_NIL: voted for nil\n                              title: >-\n                                BlockIdFlag indicates which BlockID the\n                                signature is for\n                            validator_address:\n                              type: string\n                              format: byte\n                            timestamp:\n                              type: string\n                              format: date-time\n                            signature:\n                              type: string\n                              format: byte\n                          description: >-\n                            CommitSig is a part of the Vote included in a\n                            Commit.\n                    description: >-\n                      Commit contains the evidence that a block was committed by\n                      a set of validators.\n              sdk_block:\n                title: 'Since: cosmos-sdk 0.47'\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        description: >-\n                          proposer_address is the original block proposer\n                          address, formatted as a Bech32 string.\n\n                          In Tendermint, this type is `bytes`, but in the SDK,\n                          we convert it to a Bech32 string\n\n                          for better UX.\n\n\n                          original proposer of the block\n                    description: Header defines the structure of a Tendermint block header.\n                  data:\n                    type: object\n                    properties:\n                      txs:\n                        type: array\n                        items:\n                          type: string\n                          format: byte\n                        description: >-\n                          Txs that will be applied by state @ block.Height+1.\n\n                          NOTE: not all txs here are valid.  We're just agreeing\n                          on the order first.\n\n                          This means that block.AppHash does not include these\n                          txs.\n                    title: >-\n                      Data contains the set of transactions included in the\n                      block\n                  evidence:\n                    type: object\n                    properties:\n                      evidence:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            duplicate_vote_evidence:\n                              type: object\n                              properties:\n                                vote_a:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                vote_b:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                validator_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                DuplicateVoteEvidence contains evidence of a\n                                validator signed two conflicting votes.\n                            light_client_attack_evidence:\n                              type: object\n                              properties:\n                                conflicting_block:\n                                  type: object\n                                  properties:\n                                    signed_header:\n                                      type: object\n                                      properties:\n                                        header:\n                                          type: object\n                                          properties:\n                                            version:\n                                              title: basic block info\n                                              type: object\n                                              properties:\n                                                block:\n                                                  type: string\n                                                  format: uint64\n                                                app:\n                                                  type: string\n                                                  format: uint64\n                                              description: >-\n                                                Consensus captures the consensus rules\n                                                for processing a block in the\n                                                blockchain,\n\n                                                including all blockchain data structures\n                                                and the rules of the application's\n\n                                                state transition machine.\n                                            chain_id:\n                                              type: string\n                                            height:\n                                              type: string\n                                              format: int64\n                                            time:\n                                              type: string\n                                              format: date-time\n                                            last_block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            last_commit_hash:\n                                              type: string\n                                              format: byte\n                                              description: >-\n                                                commit from validators from the last\n                                                block\n                                              title: hashes of block data\n                                            data_hash:\n                                              type: string\n                                              format: byte\n                                              title: transactions\n                                            validators_hash:\n                                              type: string\n                                              format: byte\n                                              description: validators for the current block\n                                              title: >-\n                                                hashes from the app output from the prev\n                                                block\n                                            next_validators_hash:\n                                              type: string\n                                              format: byte\n                                              title: validators for the next block\n                                            consensus_hash:\n                                              type: string\n                                              format: byte\n                                              title: consensus params for current block\n                                            app_hash:\n                                              type: string\n                                              format: byte\n                                              title: state after txs from the previous block\n                                            last_results_hash:\n                                              type: string\n                                              format: byte\n                                              title: >-\n                                                root hash of all results from the txs\n                                                from the previous block\n                                            evidence_hash:\n                                              type: string\n                                              format: byte\n                                              description: evidence included in the block\n                                              title: consensus info\n                                            proposer_address:\n                                              type: string\n                                              format: byte\n                                              title: original proposer of the block\n                                          description: >-\n                                            Header defines the structure of a block\n                                            header.\n                                        commit:\n                                          type: object\n                                          properties:\n                                            height:\n                                              type: string\n                                              format: int64\n                                            round:\n                                              type: integer\n                                              format: int32\n                                            block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            signatures:\n                                              type: array\n                                              items:\n                                                type: object\n                                                properties:\n                                                  block_id_flag:\n                                                    type: string\n                                                    enum:\n                                                      - BLOCK_ID_FLAG_UNKNOWN\n                                                      - BLOCK_ID_FLAG_ABSENT\n                                                      - BLOCK_ID_FLAG_COMMIT\n                                                      - BLOCK_ID_FLAG_NIL\n                                                    default: BLOCK_ID_FLAG_UNKNOWN\n                                                    description: >-\n                                                      - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                                      error condition\n                                                       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                                       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                                       - BLOCK_ID_FLAG_NIL: voted for nil\n                                                    title: >-\n                                                      BlockIdFlag indicates which BlockID the\n                                                      signature is for\n                                                  validator_address:\n                                                    type: string\n                                                    format: byte\n                                                  timestamp:\n                                                    type: string\n                                                    format: date-time\n                                                  signature:\n                                                    type: string\n                                                    format: byte\n                                                description: >-\n                                                  CommitSig is a part of the Vote included\n                                                  in a Commit.\n                                          description: >-\n                                            Commit contains the evidence that a\n                                            block was committed by a set of\n                                            validators.\n                                    validator_set:\n                                      type: object\n                                      properties:\n                                        validators:\n                                          type: array\n                                          items:\n                                            type: object\n                                            properties:\n                                              address:\n                                                type: string\n                                                format: byte\n                                              pub_key:\n                                                type: object\n                                                properties:\n                                                  ed25519:\n                                                    type: string\n                                                    format: byte\n                                                  secp256k1:\n                                                    type: string\n                                                    format: byte\n                                                title: >-\n                                                  PublicKey defines the keys available for\n                                                  use with Validators\n                                              voting_power:\n                                                type: string\n                                                format: int64\n                                              proposer_priority:\n                                                type: string\n                                                format: int64\n                                        proposer:\n                                          type: object\n                                          properties:\n                                            address:\n                                              type: string\n                                              format: byte\n                                            pub_key:\n                                              type: object\n                                              properties:\n                                                ed25519:\n                                                  type: string\n                                                  format: byte\n                                                secp256k1:\n                                                  type: string\n                                                  format: byte\n                                              title: >-\n                                                PublicKey defines the keys available for\n                                                use with Validators\n                                            voting_power:\n                                              type: string\n                                              format: int64\n                                            proposer_priority:\n                                              type: string\n                                              format: int64\n                                        total_voting_power:\n                                          type: string\n                                          format: int64\n                                common_height:\n                                  type: string\n                                  format: int64\n                                byzantine_validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                LightClientAttackEvidence contains evidence of a\n                                set of validators attempting to mislead a light\n                                client.\n                  last_commit:\n                    type: object\n                    properties:\n                      height:\n                        type: string\n                        format: int64\n                      round:\n                        type: integer\n                        format: int32\n                      block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      signatures:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            block_id_flag:\n                              type: string\n                              enum:\n                                - BLOCK_ID_FLAG_UNKNOWN\n                                - BLOCK_ID_FLAG_ABSENT\n                                - BLOCK_ID_FLAG_COMMIT\n                                - BLOCK_ID_FLAG_NIL\n                              default: BLOCK_ID_FLAG_UNKNOWN\n                              description: >-\n                                - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                                condition\n                                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                 - BLOCK_ID_FLAG_NIL: voted for nil\n                              title: >-\n                                BlockIdFlag indicates which BlockID the\n                                signature is for\n                            validator_address:\n                              type: string\n                              format: byte\n                            timestamp:\n                              type: string\n                              format: date-time\n                            signature:\n                              type: string\n                              format: byte\n                          description: >-\n                            CommitSig is a part of the Vote included in a\n                            Commit.\n                    description: >-\n                      Commit contains the evidence that a block was committed by\n                      a set of validators.\n                description: >-\n                  Block is tendermint type Block, with the Header proposer\n                  address\n\n                  field converted to bech32 string.\n            description: >-\n              GetLatestBlockResponse is the response type for the\n              Query/GetLatestBlock RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/blocks/{height}:\n    get:\n      summary: GetBlockByHeight queries block for given height.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetBlockByHeight\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              block:\n                title: 'Deprecated: please use `sdk_block` instead'\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        format: byte\n                        title: original proposer of the block\n                    description: Header defines the structure of a block header.\n                  data:\n                    type: object\n                    properties:\n                      txs:\n                        type: array\n                        items:\n                          type: string\n                          format: byte\n                        description: >-\n                          Txs that will be applied by state @ block.Height+1.\n\n                          NOTE: not all txs here are valid.  We're just agreeing\n                          on the order first.\n\n                          This means that block.AppHash does not include these\n                          txs.\n                    title: >-\n                      Data contains the set of transactions included in the\n                      block\n                  evidence:\n                    type: object\n                    properties:\n                      evidence:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            duplicate_vote_evidence:\n                              type: object\n                              properties:\n                                vote_a:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                vote_b:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                validator_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                DuplicateVoteEvidence contains evidence of a\n                                validator signed two conflicting votes.\n                            light_client_attack_evidence:\n                              type: object\n                              properties:\n                                conflicting_block:\n                                  type: object\n                                  properties:\n                                    signed_header:\n                                      type: object\n                                      properties:\n                                        header:\n                                          type: object\n                                          properties:\n                                            version:\n                                              title: basic block info\n                                              type: object\n                                              properties:\n                                                block:\n                                                  type: string\n                                                  format: uint64\n                                                app:\n                                                  type: string\n                                                  format: uint64\n                                              description: >-\n                                                Consensus captures the consensus rules\n                                                for processing a block in the\n                                                blockchain,\n\n                                                including all blockchain data structures\n                                                and the rules of the application's\n\n                                                state transition machine.\n                                            chain_id:\n                                              type: string\n                                            height:\n                                              type: string\n                                              format: int64\n                                            time:\n                                              type: string\n                                              format: date-time\n                                            last_block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            last_commit_hash:\n                                              type: string\n                                              format: byte\n                                              description: >-\n                                                commit from validators from the last\n                                                block\n                                              title: hashes of block data\n                                            data_hash:\n                                              type: string\n                                              format: byte\n                                              title: transactions\n                                            validators_hash:\n                                              type: string\n                                              format: byte\n                                              description: validators for the current block\n                                              title: >-\n                                                hashes from the app output from the prev\n                                                block\n                                            next_validators_hash:\n                                              type: string\n                                              format: byte\n                                              title: validators for the next block\n                                            consensus_hash:\n                                              type: string\n                                              format: byte\n                                              title: consensus params for current block\n                                            app_hash:\n                                              type: string\n                                              format: byte\n                                              title: state after txs from the previous block\n                                            last_results_hash:\n                                              type: string\n                                              format: byte\n                                              title: >-\n                                                root hash of all results from the txs\n                                                from the previous block\n                                            evidence_hash:\n                                              type: string\n                                              format: byte\n                                              description: evidence included in the block\n                                              title: consensus info\n                                            proposer_address:\n                                              type: string\n                                              format: byte\n                                              title: original proposer of the block\n                                          description: >-\n                                            Header defines the structure of a block\n                                            header.\n                                        commit:\n                                          type: object\n                                          properties:\n                                            height:\n                                              type: string\n                                              format: int64\n                                            round:\n                                              type: integer\n                                              format: int32\n                                            block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            signatures:\n                                              type: array\n                                              items:\n                                                type: object\n                                                properties:\n                                                  block_id_flag:\n                                                    type: string\n                                                    enum:\n                                                      - BLOCK_ID_FLAG_UNKNOWN\n                                                      - BLOCK_ID_FLAG_ABSENT\n                                                      - BLOCK_ID_FLAG_COMMIT\n                                                      - BLOCK_ID_FLAG_NIL\n                                                    default: BLOCK_ID_FLAG_UNKNOWN\n                                                    description: >-\n                                                      - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                                      error condition\n                                                       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                                       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                                       - BLOCK_ID_FLAG_NIL: voted for nil\n                                                    title: >-\n                                                      BlockIdFlag indicates which BlockID the\n                                                      signature is for\n                                                  validator_address:\n                                                    type: string\n                                                    format: byte\n                                                  timestamp:\n                                                    type: string\n                                                    format: date-time\n                                                  signature:\n                                                    type: string\n                                                    format: byte\n                                                description: >-\n                                                  CommitSig is a part of the Vote included\n                                                  in a Commit.\n                                          description: >-\n                                            Commit contains the evidence that a\n                                            block was committed by a set of\n                                            validators.\n                                    validator_set:\n                                      type: object\n                                      properties:\n                                        validators:\n                                          type: array\n                                          items:\n                                            type: object\n                                            properties:\n                                              address:\n                                                type: string\n                                                format: byte\n                                              pub_key:\n                                                type: object\n                                                properties:\n                                                  ed25519:\n                                                    type: string\n                                                    format: byte\n                                                  secp256k1:\n                                                    type: string\n                                                    format: byte\n                                                title: >-\n                                                  PublicKey defines the keys available for\n                                                  use with Validators\n                                              voting_power:\n                                                type: string\n                                                format: int64\n                                              proposer_priority:\n                                                type: string\n                                                format: int64\n                                        proposer:\n                                          type: object\n                                          properties:\n                                            address:\n                                              type: string\n                                              format: byte\n                                            pub_key:\n                                              type: object\n                                              properties:\n                                                ed25519:\n                                                  type: string\n                                                  format: byte\n                                                secp256k1:\n                                                  type: string\n                                                  format: byte\n                                              title: >-\n                                                PublicKey defines the keys available for\n                                                use with Validators\n                                            voting_power:\n                                              type: string\n                                              format: int64\n                                            proposer_priority:\n                                              type: string\n                                              format: int64\n                                        total_voting_power:\n                                          type: string\n                                          format: int64\n                                common_height:\n                                  type: string\n                                  format: int64\n                                byzantine_validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                LightClientAttackEvidence contains evidence of a\n                                set of validators attempting to mislead a light\n                                client.\n                  last_commit:\n                    type: object\n                    properties:\n                      height:\n                        type: string\n                        format: int64\n                      round:\n                        type: integer\n                        format: int32\n                      block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      signatures:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            block_id_flag:\n                              type: string\n                              enum:\n                                - BLOCK_ID_FLAG_UNKNOWN\n                                - BLOCK_ID_FLAG_ABSENT\n                                - BLOCK_ID_FLAG_COMMIT\n                                - BLOCK_ID_FLAG_NIL\n                              default: BLOCK_ID_FLAG_UNKNOWN\n                              description: >-\n                                - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                                condition\n                                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                 - BLOCK_ID_FLAG_NIL: voted for nil\n                              title: >-\n                                BlockIdFlag indicates which BlockID the\n                                signature is for\n                            validator_address:\n                              type: string\n                              format: byte\n                            timestamp:\n                              type: string\n                              format: date-time\n                            signature:\n                              type: string\n                              format: byte\n                          description: >-\n                            CommitSig is a part of the Vote included in a\n                            Commit.\n                    description: >-\n                      Commit contains the evidence that a block was committed by\n                      a set of validators.\n              sdk_block:\n                title: 'Since: cosmos-sdk 0.47'\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        description: >-\n                          proposer_address is the original block proposer\n                          address, formatted as a Bech32 string.\n\n                          In Tendermint, this type is `bytes`, but in the SDK,\n                          we convert it to a Bech32 string\n\n                          for better UX.\n\n\n                          original proposer of the block\n                    description: Header defines the structure of a Tendermint block header.\n                  data:\n                    type: object\n                    properties:\n                      txs:\n                        type: array\n                        items:\n                          type: string\n                          format: byte\n                        description: >-\n                          Txs that will be applied by state @ block.Height+1.\n\n                          NOTE: not all txs here are valid.  We're just agreeing\n                          on the order first.\n\n                          This means that block.AppHash does not include these\n                          txs.\n                    title: >-\n                      Data contains the set of transactions included in the\n                      block\n                  evidence:\n                    type: object\n                    properties:\n                      evidence:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            duplicate_vote_evidence:\n                              type: object\n                              properties:\n                                vote_a:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                vote_b:\n                                  type: object\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - SIGNED_MSG_TYPE_UNKNOWN\n                                        - SIGNED_MSG_TYPE_PREVOTE\n                                        - SIGNED_MSG_TYPE_PRECOMMIT\n                                        - SIGNED_MSG_TYPE_PROPOSAL\n                                      default: SIGNED_MSG_TYPE_UNKNOWN\n                                      description: >-\n                                        SignedMsgType is a type of signed\n                                        message in the consensus.\n\n                                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                      description: zero if vote is nil.\n                                    timestamp:\n                                      type: string\n                                      format: date-time\n                                    validator_address:\n                                      type: string\n                                      format: byte\n                                    validator_index:\n                                      type: integer\n                                      format: int32\n                                    signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote signature by the validator if they\n                                        participated in consensus for the\n\n                                        associated block.\n                                    extension:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension provided by the\n                                        application. Only valid for precommit\n\n                                        messages.\n                                    extension_signature:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        Vote extension signature by the\n                                        validator if they participated in\n\n                                        consensus for the associated block.\n\n                                        Only valid for precommit messages.\n                                  description: >-\n                                    Vote represents a prevote or precommit vote\n                                    from validators for\n\n                                    consensus.\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                validator_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                DuplicateVoteEvidence contains evidence of a\n                                validator signed two conflicting votes.\n                            light_client_attack_evidence:\n                              type: object\n                              properties:\n                                conflicting_block:\n                                  type: object\n                                  properties:\n                                    signed_header:\n                                      type: object\n                                      properties:\n                                        header:\n                                          type: object\n                                          properties:\n                                            version:\n                                              title: basic block info\n                                              type: object\n                                              properties:\n                                                block:\n                                                  type: string\n                                                  format: uint64\n                                                app:\n                                                  type: string\n                                                  format: uint64\n                                              description: >-\n                                                Consensus captures the consensus rules\n                                                for processing a block in the\n                                                blockchain,\n\n                                                including all blockchain data structures\n                                                and the rules of the application's\n\n                                                state transition machine.\n                                            chain_id:\n                                              type: string\n                                            height:\n                                              type: string\n                                              format: int64\n                                            time:\n                                              type: string\n                                              format: date-time\n                                            last_block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            last_commit_hash:\n                                              type: string\n                                              format: byte\n                                              description: >-\n                                                commit from validators from the last\n                                                block\n                                              title: hashes of block data\n                                            data_hash:\n                                              type: string\n                                              format: byte\n                                              title: transactions\n                                            validators_hash:\n                                              type: string\n                                              format: byte\n                                              description: validators for the current block\n                                              title: >-\n                                                hashes from the app output from the prev\n                                                block\n                                            next_validators_hash:\n                                              type: string\n                                              format: byte\n                                              title: validators for the next block\n                                            consensus_hash:\n                                              type: string\n                                              format: byte\n                                              title: consensus params for current block\n                                            app_hash:\n                                              type: string\n                                              format: byte\n                                              title: state after txs from the previous block\n                                            last_results_hash:\n                                              type: string\n                                              format: byte\n                                              title: >-\n                                                root hash of all results from the txs\n                                                from the previous block\n                                            evidence_hash:\n                                              type: string\n                                              format: byte\n                                              description: evidence included in the block\n                                              title: consensus info\n                                            proposer_address:\n                                              type: string\n                                              format: byte\n                                              title: original proposer of the block\n                                          description: >-\n                                            Header defines the structure of a block\n                                            header.\n                                        commit:\n                                          type: object\n                                          properties:\n                                            height:\n                                              type: string\n                                              format: int64\n                                            round:\n                                              type: integer\n                                              format: int32\n                                            block_id:\n                                              type: object\n                                              properties:\n                                                hash:\n                                                  type: string\n                                                  format: byte\n                                                part_set_header:\n                                                  type: object\n                                                  properties:\n                                                    total:\n                                                      type: integer\n                                                      format: int64\n                                                    hash:\n                                                      type: string\n                                                      format: byte\n                                                  title: PartsetHeader\n                                              title: BlockID\n                                            signatures:\n                                              type: array\n                                              items:\n                                                type: object\n                                                properties:\n                                                  block_id_flag:\n                                                    type: string\n                                                    enum:\n                                                      - BLOCK_ID_FLAG_UNKNOWN\n                                                      - BLOCK_ID_FLAG_ABSENT\n                                                      - BLOCK_ID_FLAG_COMMIT\n                                                      - BLOCK_ID_FLAG_NIL\n                                                    default: BLOCK_ID_FLAG_UNKNOWN\n                                                    description: >-\n                                                      - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                                      error condition\n                                                       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                                       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                                       - BLOCK_ID_FLAG_NIL: voted for nil\n                                                    title: >-\n                                                      BlockIdFlag indicates which BlockID the\n                                                      signature is for\n                                                  validator_address:\n                                                    type: string\n                                                    format: byte\n                                                  timestamp:\n                                                    type: string\n                                                    format: date-time\n                                                  signature:\n                                                    type: string\n                                                    format: byte\n                                                description: >-\n                                                  CommitSig is a part of the Vote included\n                                                  in a Commit.\n                                          description: >-\n                                            Commit contains the evidence that a\n                                            block was committed by a set of\n                                            validators.\n                                    validator_set:\n                                      type: object\n                                      properties:\n                                        validators:\n                                          type: array\n                                          items:\n                                            type: object\n                                            properties:\n                                              address:\n                                                type: string\n                                                format: byte\n                                              pub_key:\n                                                type: object\n                                                properties:\n                                                  ed25519:\n                                                    type: string\n                                                    format: byte\n                                                  secp256k1:\n                                                    type: string\n                                                    format: byte\n                                                title: >-\n                                                  PublicKey defines the keys available for\n                                                  use with Validators\n                                              voting_power:\n                                                type: string\n                                                format: int64\n                                              proposer_priority:\n                                                type: string\n                                                format: int64\n                                        proposer:\n                                          type: object\n                                          properties:\n                                            address:\n                                              type: string\n                                              format: byte\n                                            pub_key:\n                                              type: object\n                                              properties:\n                                                ed25519:\n                                                  type: string\n                                                  format: byte\n                                                secp256k1:\n                                                  type: string\n                                                  format: byte\n                                              title: >-\n                                                PublicKey defines the keys available for\n                                                use with Validators\n                                            voting_power:\n                                              type: string\n                                              format: int64\n                                            proposer_priority:\n                                              type: string\n                                              format: int64\n                                        total_voting_power:\n                                          type: string\n                                          format: int64\n                                common_height:\n                                  type: string\n                                  format: int64\n                                byzantine_validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                                timestamp:\n                                  type: string\n                                  format: date-time\n                              description: >-\n                                LightClientAttackEvidence contains evidence of a\n                                set of validators attempting to mislead a light\n                                client.\n                  last_commit:\n                    type: object\n                    properties:\n                      height:\n                        type: string\n                        format: int64\n                      round:\n                        type: integer\n                        format: int32\n                      block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      signatures:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            block_id_flag:\n                              type: string\n                              enum:\n                                - BLOCK_ID_FLAG_UNKNOWN\n                                - BLOCK_ID_FLAG_ABSENT\n                                - BLOCK_ID_FLAG_COMMIT\n                                - BLOCK_ID_FLAG_NIL\n                              default: BLOCK_ID_FLAG_UNKNOWN\n                              description: >-\n                                - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                                condition\n                                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                 - BLOCK_ID_FLAG_NIL: voted for nil\n                              title: >-\n                                BlockIdFlag indicates which BlockID the\n                                signature is for\n                            validator_address:\n                              type: string\n                              format: byte\n                            timestamp:\n                              type: string\n                              format: date-time\n                            signature:\n                              type: string\n                              format: byte\n                          description: >-\n                            CommitSig is a part of the Vote included in a\n                            Commit.\n                    description: >-\n                      Commit contains the evidence that a block was committed by\n                      a set of validators.\n                description: >-\n                  Block is tendermint type Block, with the Header proposer\n                  address\n\n                  field converted to bech32 string.\n            description: >-\n              GetBlockByHeightResponse is the response type for the\n              Query/GetBlockByHeight RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: height\n          in: path\n          required: true\n          type: string\n          format: int64\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/node_info:\n    get:\n      summary: GetNodeInfo queries the current node info.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetNodeInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              default_node_info:\n                type: object\n                properties:\n                  protocol_version:\n                    type: object\n                    properties:\n                      p2p:\n                        type: string\n                        format: uint64\n                      block:\n                        type: string\n                        format: uint64\n                      app:\n                        type: string\n                        format: uint64\n                  default_node_id:\n                    type: string\n                  listen_addr:\n                    type: string\n                  network:\n                    type: string\n                  version:\n                    type: string\n                  channels:\n                    type: string\n                    format: byte\n                  moniker:\n                    type: string\n                  other:\n                    type: object\n                    properties:\n                      tx_index:\n                        type: string\n                      rpc_address:\n                        type: string\n              application_version:\n                type: object\n                properties:\n                  name:\n                    type: string\n                  app_name:\n                    type: string\n                  version:\n                    type: string\n                  git_commit:\n                    type: string\n                  build_tags:\n                    type: string\n                  go_version:\n                    type: string\n                  build_deps:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        path:\n                          type: string\n                          title: module path\n                        version:\n                          type: string\n                          title: module version\n                        sum:\n                          type: string\n                          title: checksum\n                      title: Module is the type for VersionInfo\n                  cosmos_sdk_version:\n                    type: string\n                    title: 'Since: cosmos-sdk 0.43'\n                description: VersionInfo is the type for the GetNodeInfoResponse message.\n            description: >-\n              GetNodeInfoResponse is the response type for the Query/GetNodeInfo\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/syncing:\n    get:\n      summary: GetSyncing queries node syncing.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetSyncing\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              syncing:\n                type: boolean\n            description: >-\n              GetSyncingResponse is the response type for the Query/GetSyncing\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/validatorsets/latest:\n    get:\n      summary: GetLatestValidatorSet queries latest validator-set.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetLatestValidatorSet\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              block_height:\n                type: string\n                format: int64\n              validators:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    pub_key:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    voting_power:\n                      type: string\n                      format: int64\n                    proposer_priority:\n                      type: string\n                      format: int64\n                  description: Validator is the type for the validator-set.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              GetLatestValidatorSetResponse is the response type for the\n              Query/GetValidatorSetByHeight RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Service\n  /cosmos/base/tendermint/v1beta1/validatorsets/{height}:\n    get:\n      summary: GetValidatorSetByHeight queries validator-set at a given height.\n      operationId: CosmosBaseTendermintV1Beta1Service_GetValidatorSetByHeight\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              block_height:\n                type: string\n                format: int64\n              validators:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    pub_key:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    voting_power:\n                      type: string\n                      format: int64\n                    proposer_priority:\n                      type: string\n                      format: int64\n                  description: Validator is the type for the validator-set.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              GetValidatorSetByHeightResponse is the response type for the\n              Query/GetValidatorSetByHeight RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: height\n          in: path\n          required: true\n          type: string\n          format: int64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Service\n  /cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker:\n    post:\n      summary: >-\n        AuthorizeCircuitBreaker allows a super-admin to grant (or revoke)\n        another\n\n        account's circuit breaker permissions.\n      operationId: CosmosCircuitV1Msg_AuthorizeCircuitBreaker\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              success:\n                type: boolean\n            description: >-\n              MsgAuthorizeCircuitBreakerResponse defines the\n              Msg/AuthorizeCircuitBreaker response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker\n            request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              granter:\n                type: string\n                description: >-\n                  granter is the granter of the circuit breaker permissions and\n                  must have\n\n                  LEVEL_SUPER_ADMIN.\n              grantee:\n                type: string\n                description: >-\n                  grantee is the account authorized with the provided\n                  permissions.\n              permissions:\n                description: >-\n                  permissions are the circuit breaker permissions that the\n                  grantee receives.\n\n                  These will overwrite any existing permissions.\n                  LEVEL_NONE_UNSPECIFIED can\n\n                  be specified to revoke all permissions.\n                type: object\n                properties:\n                  level:\n                    description: level is the level of permissions granted to this account.\n                    type: string\n                    enum:\n                      - LEVEL_NONE_UNSPECIFIED\n                      - LEVEL_SOME_MSGS\n                      - LEVEL_ALL_MSGS\n                      - LEVEL_SUPER_ADMIN\n                    default: LEVEL_NONE_UNSPECIFIED\n                  limit_type_urls:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      limit_type_urls is used with LEVEL_SOME_MSGS to limit the\n                      lists of Msg type\n\n                      URLs that the account can trip. It is an error to use\n                      limit_type_urls with\n\n                      a level other than LEVEL_SOME_MSGS.\n            description: >-\n              MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker\n              request type.\n      tags:\n        - Msg\n  /cosmos.circuit.v1.Msg/ResetCircuitBreaker:\n    post:\n      summary: >-\n        ResetCircuitBreaker resumes processing of Msg's in the state machine\n        that\n\n        have been been paused using TripCircuitBreaker.\n      operationId: CosmosCircuitV1Msg_ResetCircuitBreaker\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              success:\n                type: boolean\n            description: >-\n              MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request\n            type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the account authorized to trip or reset the\n                  circuit breaker.\n              msg_type_urls:\n                type: array\n                items:\n                  type: string\n                description: >-\n                  msg_type_urls specifies a list of Msg type URLs to resume\n                  processing. If\n\n                  it is left empty all Msg processing for type URLs that the\n                  account is\n\n                  authorized to trip will resume.\n            description: >-\n              MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request\n              type.\n      tags:\n        - Msg\n  /cosmos.circuit.v1.Msg/TripCircuitBreaker:\n    post:\n      summary: TripCircuitBreaker pauses processing of Msg's in the state machine.\n      operationId: CosmosCircuitV1Msg_TripCircuitBreaker\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              success:\n                type: boolean\n            description: >-\n              MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request\n            type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the account authorized to trip the circuit\n                  breaker.\n              msg_type_urls:\n                type: array\n                items:\n                  type: string\n                description: >-\n                  msg_type_urls specifies a list of type URLs to immediately\n                  stop processing.\n\n                  IF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\n\n                  This value is validated against the authority's permissions\n                  and if the\n\n                  authority does not have permissions to trip the specified msg\n                  type URLs\n\n                  (or all URLs), the operation will fail.\n            description: >-\n              MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request\n              type.\n      tags:\n        - Msg\n  /cosmos/circuit/v1/accounts:\n    get:\n      summary: Account returns account permissions.\n      operationId: CosmosCircuitV1Query_Accounts\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              accounts:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    permissions:\n                      type: object\n                      properties:\n                        level:\n                          description: >-\n                            level is the level of permissions granted to this\n                            account.\n                          type: string\n                          enum:\n                            - LEVEL_NONE_UNSPECIFIED\n                            - LEVEL_SOME_MSGS\n                            - LEVEL_ALL_MSGS\n                            - LEVEL_SUPER_ADMIN\n                          default: LEVEL_NONE_UNSPECIFIED\n                        limit_type_urls:\n                          type: array\n                          items:\n                            type: string\n                          description: >-\n                            limit_type_urls is used with LEVEL_SOME_MSGS to\n                            limit the lists of Msg type\n\n                            URLs that the account can trip. It is an error to\n                            use limit_type_urls with\n\n                            a level other than LEVEL_SOME_MSGS.\n                      description: >-\n                        Permissions are the permissions that an account has to\n                        trip\n\n                        or reset the circuit breaker.\n                  title: >-\n                    GenesisAccountPermissions is the account permissions for the\n                    circuit breaker in genesis\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              AccountsResponse is the response type for the Query/Accounts RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/circuit/v1/accounts/{address}:\n    get:\n      summary: Account returns account permissions.\n      operationId: CosmosCircuitV1Query_Account\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              permission:\n                type: object\n                properties:\n                  level:\n                    description: level is the level of permissions granted to this account.\n                    type: string\n                    enum:\n                      - LEVEL_NONE_UNSPECIFIED\n                      - LEVEL_SOME_MSGS\n                      - LEVEL_ALL_MSGS\n                      - LEVEL_SUPER_ADMIN\n                    default: LEVEL_NONE_UNSPECIFIED\n                  limit_type_urls:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      limit_type_urls is used with LEVEL_SOME_MSGS to limit the\n                      lists of Msg type\n\n                      URLs that the account can trip. It is an error to use\n                      limit_type_urls with\n\n                      a level other than LEVEL_SOME_MSGS.\n                description: |-\n                  Permissions are the permissions that an account has to trip\n                  or reset the circuit breaker.\n            description: >-\n              AccountResponse is the response type for the Query/Account RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: address\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/circuit/v1/disable_list:\n    get:\n      summary: DisabledList returns a list of disabled message urls\n      operationId: CosmosCircuitV1Query_DisabledList\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              disabled_list:\n                type: array\n                items:\n                  type: string\n            description: >-\n              DisabledListResponse is the response type for the\n              Query/DisabledList RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/consensus/v1/params:\n    get:\n      summary: Params queries the parameters of x/consensus module.\n      operationId: CosmosConsensusV1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: >-\n                  params are the tendermint consensus params stored in the\n                  consensus module.\n\n                  Please note that `params.version` is not populated in this\n                  response, it is\n\n                  tracked separately in the x/upgrade module.\n                type: object\n                properties:\n                  block:\n                    type: object\n                    properties:\n                      max_bytes:\n                        type: string\n                        format: int64\n                        title: |-\n                          Max block size, in bytes.\n                          Note: must be greater than 0\n                      max_gas:\n                        type: string\n                        format: int64\n                        title: |-\n                          Max gas per block.\n                          Note: must be greater or equal to -1\n                    description: BlockParams contains limits on the block size.\n                  evidence:\n                    type: object\n                    properties:\n                      max_age_num_blocks:\n                        type: string\n                        format: int64\n                        description: >-\n                          Max age of evidence, in blocks.\n\n\n                          The basic formula for calculating this is:\n                          MaxAgeDuration / {average block\n\n                          time}.\n                      max_age_duration:\n                        type: string\n                        description: >-\n                          Max age of evidence, in time.\n\n\n                          It should correspond with an app's \"unbonding period\"\n                          or other similar\n\n                          mechanism for handling [Nothing-At-Stake\n\n                          attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n                      max_bytes:\n                        type: string\n                        format: int64\n                        title: >-\n                          This sets the maximum size of total evidence in bytes\n                          that can be committed in a single block.\n\n                          and should fall comfortably under the max block bytes.\n\n                          Default is 1048576 or 1MB\n                    description: >-\n                      EvidenceParams determine how we handle evidence of\n                      malfeasance.\n                  validator:\n                    type: object\n                    properties:\n                      pub_key_types:\n                        type: array\n                        items:\n                          type: string\n                    description: >-\n                      ValidatorParams restrict the public key types validators\n                      can use.\n\n                      NOTE: uses ABCI pubkey naming, not Amino names.\n                  version:\n                    type: object\n                    properties:\n                      app:\n                        type: string\n                        format: uint64\n                    description: VersionParams contains the ABCI application version.\n                  abci:\n                    type: object\n                    properties:\n                      vote_extensions_enable_height:\n                        type: string\n                        format: int64\n                        description: >-\n                          vote_extensions_enable_height configures the first\n                          height during which\n\n                          vote extensions will be enabled. During this specified\n                          height, and for all\n\n                          subsequent heights, precommit messages that do not\n                          contain valid extension data\n\n                          will be considered invalid. Prior to this height, vote\n                          extensions will not\n\n                          be used or accepted by validators on the network.\n\n\n                          Once enabled, vote extensions will be created by the\n                          application in ExtendVote,\n\n                          passed to the application for validation in\n                          VerifyVoteExtension and given\n\n                          to the application to use when proposing a block\n                          during PrepareProposal.\n                    description: >-\n                      ABCIParams configure functionality specific to the\n                      Application Blockchain Interface.\n            description: >-\n              QueryParamsResponse defines the response type for querying\n              x/consensus parameters.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos.consensus.v1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/consensus\n        module parameters.\n\n        The authority is defined in the keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosConsensusV1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: MsgUpdateParams is the Msg/UpdateParams request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              block:\n                description: >-\n                  params defines the x/consensus parameters to update.\n\n                  VersionsParams is not included in this Msg because it is\n                  tracked\n\n                  separarately in x/upgrade.\n\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  max_bytes:\n                    type: string\n                    format: int64\n                    title: |-\n                      Max block size, in bytes.\n                      Note: must be greater than 0\n                  max_gas:\n                    type: string\n                    format: int64\n                    title: |-\n                      Max gas per block.\n                      Note: must be greater or equal to -1\n              evidence:\n                type: object\n                properties:\n                  max_age_num_blocks:\n                    type: string\n                    format: int64\n                    description: >-\n                      Max age of evidence, in blocks.\n\n\n                      The basic formula for calculating this is: MaxAgeDuration\n                      / {average block\n\n                      time}.\n                  max_age_duration:\n                    type: string\n                    description: >-\n                      Max age of evidence, in time.\n\n\n                      It should correspond with an app's \"unbonding period\" or\n                      other similar\n\n                      mechanism for handling [Nothing-At-Stake\n\n                      attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n                  max_bytes:\n                    type: string\n                    format: int64\n                    title: >-\n                      This sets the maximum size of total evidence in bytes that\n                      can be committed in a single block.\n\n                      and should fall comfortably under the max block bytes.\n\n                      Default is 1048576 or 1MB\n                description: >-\n                  EvidenceParams determine how we handle evidence of\n                  malfeasance.\n              validator:\n                type: object\n                properties:\n                  pub_key_types:\n                    type: array\n                    items:\n                      type: string\n                description: >-\n                  ValidatorParams restrict the public key types validators can\n                  use.\n\n                  NOTE: uses ABCI pubkey naming, not Amino names.\n              abci:\n                title: 'Since: cosmos-sdk 0.50'\n                type: object\n                properties:\n                  vote_extensions_enable_height:\n                    type: string\n                    format: int64\n                    description: >-\n                      vote_extensions_enable_height configures the first height\n                      during which\n\n                      vote extensions will be enabled. During this specified\n                      height, and for all\n\n                      subsequent heights, precommit messages that do not contain\n                      valid extension data\n\n                      will be considered invalid. Prior to this height, vote\n                      extensions will not\n\n                      be used or accepted by validators on the network.\n\n\n                      Once enabled, vote extensions will be created by the\n                      application in ExtendVote,\n\n                      passed to the application for validation in\n                      VerifyVoteExtension and given\n\n                      to the application to use when proposing a block during\n                      PrepareProposal.\n                description: >-\n                  ABCIParams configure functionality specific to the Application\n                  Blockchain Interface.\n            description: MsgUpdateParams is the Msg/UpdateParams request type.\n      tags:\n        - Msg\n  /cosmos.crisis.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/crisis\n        module\n\n        parameters. The authority is defined in the keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosCrisisV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              constant_fee:\n                description: constant_fee defines the x/crisis parameter.\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos.crisis.v1beta1.Msg/VerifyInvariant:\n    post:\n      summary: VerifyInvariant defines a method to verify a particular invariant.\n      operationId: CosmosCrisisV1Beta1Msg_VerifyInvariant\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgVerifyInvariantResponse defines the Msg/VerifyInvariant\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgVerifyInvariant represents a message to verify a particular\n            invariance.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              sender:\n                type: string\n                description: >-\n                  sender is the account address of private key to send coins to\n                  fee collector account.\n              invariant_module_name:\n                type: string\n                description: name of the invariant module.\n              invariant_route:\n                type: string\n                description: invariant_route is the msg's invariant route.\n            description: >-\n              MsgVerifyInvariant represents a message to verify a particular\n              invariance.\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/CommunityPoolSpend:\n    post:\n      summary: >-\n        CommunityPoolSpend defines a governance operation for sending tokens\n        from\n\n        the community pool in the x/distribution module to another account,\n        which\n\n        could be the governance module itself. The authority is defined in the\n\n        keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosDistributionV1Beta1Msg_CommunityPoolSpend\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: |-\n              MsgCommunityPoolSpendResponse defines the response to executing a\n              MsgCommunityPoolSpend message.\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgCommunityPoolSpend defines a message for sending tokens from the\n            community\n\n            pool to another account. This message is typically executed via a\n            governance\n\n            proposal with the governance module being the executing authority.\n\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              recipient:\n                type: string\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n            description: >-\n              MsgCommunityPoolSpend defines a message for sending tokens from\n              the community\n\n              pool to another account. This message is typically executed via a\n              governance\n\n              proposal with the governance module being the executing authority.\n\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool:\n    post:\n      summary: >-\n        DepositValidatorRewardsPool defines a method to provide additional\n        rewards\n\n        to delegators to a specific validator.\n      description: 'Since: cosmos-sdk 0.50'\n      operationId: CosmosDistributionV1Beta1Msg_DepositValidatorRewardsPool\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgDepositValidatorRewardsPoolResponse defines the response to\n              executing a\n\n              MsgDepositValidatorRewardsPool message.\n\n\n              Since: cosmos-sdk 0.50\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            DepositValidatorRewardsPool defines the request structure to provide\n            additional rewards to delegators from a specific validator.\n\n            Since: cosmos-sdk 0.50\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              depositor:\n                type: string\n              validator_address:\n                type: string\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n            description: >-\n              DepositValidatorRewardsPool defines the request structure to\n              provide\n\n              additional rewards to delegators from a specific validator.\n\n\n              Since: cosmos-sdk 0.50\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/FundCommunityPool:\n    post:\n      summary: |-\n        FundCommunityPool defines a method to allow an account to directly\n        fund the community pool.\n      operationId: CosmosDistributionV1Beta1Msg_FundCommunityPool\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgFundCommunityPool allows an account to directly\n            fund the community pool.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n              depositor:\n                type: string\n            description: |-\n              MsgFundCommunityPool allows an account to directly\n              fund the community pool.\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/SetWithdrawAddress:\n    post:\n      summary: |-\n        SetWithdrawAddress defines a method to change the withdraw address\n        for a delegator (or validator self-delegation).\n      operationId: CosmosDistributionV1Beta1Msg_SetWithdrawAddress\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress\n              response\n\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgSetWithdrawAddress sets the withdraw address for\n            a delegator (or validator self-delegation).\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              withdraw_address:\n                type: string\n            description: |-\n              MsgSetWithdrawAddress sets the withdraw address for\n              a delegator (or validator self-delegation).\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the\n        x/distribution\n\n        module parameters. The authority is defined in the keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosDistributionV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/distribution parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  community_tax:\n                    type: string\n                  base_proposer_reward:\n                    type: string\n                    description: >-\n                      Deprecated: The base_proposer_reward field is deprecated\n                      and is no longer used\n\n                      in the x/distribution module's reward mechanism.\n                  bonus_proposer_reward:\n                    type: string\n                    description: >-\n                      Deprecated: The bonus_proposer_reward field is deprecated\n                      and is no longer used\n\n                      in the x/distribution module's reward mechanism.\n                  withdraw_addr_enabled:\n                    type: boolean\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward:\n    post:\n      summary: >-\n        WithdrawDelegatorReward defines a method to withdraw rewards of\n        delegator\n\n        from a single validator.\n      operationId: CosmosDistributionV1Beta1Msg_WithdrawDelegatorReward\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: 'Since: cosmos-sdk 0.46'\n            description: >-\n              MsgWithdrawDelegatorRewardResponse defines the\n              Msg/WithdrawDelegatorReward\n\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgWithdrawDelegatorReward represents delegation withdrawal to a\n            delegator\n\n            from a single validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              validator_address:\n                type: string\n            description: >-\n              MsgWithdrawDelegatorReward represents delegation withdrawal to a\n              delegator\n\n              from a single validator.\n      tags:\n        - Msg\n  /cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission:\n    post:\n      summary: |-\n        WithdrawValidatorCommission defines a method to withdraw the\n        full commission to the validator address.\n      operationId: CosmosDistributionV1Beta1Msg_WithdrawValidatorCommission\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: 'Since: cosmos-sdk 0.46'\n            description: |-\n              MsgWithdrawValidatorCommissionResponse defines the\n              Msg/WithdrawValidatorCommission response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: >-\n            MsgWithdrawValidatorCommission withdraws the full commission to the\n            validator\n\n            address.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              validator_address:\n                type: string\n            description: >-\n              MsgWithdrawValidatorCommission withdraws the full commission to\n              the validator\n\n              address.\n      tags:\n        - Msg\n  /cosmos/distribution/v1beta1/community_pool:\n    get:\n      summary: CommunityPool queries the community pool coins.\n      operationId: CosmosDistributionV1Beta1Query_CommunityPool\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              pool:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    DecCoin defines a token with a denomination and a decimal\n                    amount.\n\n\n                    NOTE: The amount field is an Dec which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: pool defines community pool's coins.\n            description: >-\n              QueryCommunityPoolResponse is the response type for the\n              Query/CommunityPool\n\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards:\n    get:\n      summary: |-\n        DelegationTotalRewards queries the total rewards accrued by each\n        validator.\n      operationId: CosmosDistributionV1Beta1Query_DelegationTotalRewards\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              rewards:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    validator_address:\n                      type: string\n                    reward:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          DecCoin defines a token with a denomination and a\n                          decimal amount.\n\n\n                          NOTE: The amount field is an Dec which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                  description: |-\n                    DelegationDelegatorReward represents the properties\n                    of a delegator's delegation reward.\n                description: rewards defines all the rewards accrued by a delegator.\n              total:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    DecCoin defines a token with a denomination and a decimal\n                    amount.\n\n\n                    NOTE: The amount field is an Dec which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: total defines the sum of all the rewards.\n            description: |-\n              QueryDelegationTotalRewardsResponse is the response type for the\n              Query/DelegationTotalRewards RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: delegator_address\n          description: delegator_address defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}:\n    get:\n      summary: DelegationRewards queries the total rewards accrued by a delegation.\n      operationId: CosmosDistributionV1Beta1Query_DelegationRewards\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              rewards:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    DecCoin defines a token with a denomination and a decimal\n                    amount.\n\n\n                    NOTE: The amount field is an Dec which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: rewards defines the rewards accrued by a delegation.\n            description: |-\n              QueryDelegationRewardsResponse is the response type for the\n              Query/DelegationRewards RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: delegator_address\n          description: delegator_address defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: validator_address\n          description: validator_address defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/delegators/{delegator_address}/validators:\n    get:\n      summary: DelegatorValidators queries the validators of a delegator.\n      operationId: CosmosDistributionV1Beta1Query_DelegatorValidators\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              validators:\n                type: array\n                items:\n                  type: string\n                description: >-\n                  validators defines the validators a delegator is delegating\n                  for.\n            description: |-\n              QueryDelegatorValidatorsResponse is the response type for the\n              Query/DelegatorValidators RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: delegator_address\n          description: delegator_address defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address:\n    get:\n      summary: DelegatorWithdrawAddress queries withdraw address of a delegator.\n      operationId: CosmosDistributionV1Beta1Query_DelegatorWithdrawAddress\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              withdraw_address:\n                type: string\n                description: withdraw_address defines the delegator address to query for.\n            description: |-\n              QueryDelegatorWithdrawAddressResponse is the response type for the\n              Query/DelegatorWithdrawAddress RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: delegator_address\n          description: delegator_address defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/params:\n    get:\n      summary: Params queries params of the distribution module.\n      operationId: CosmosDistributionV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  community_tax:\n                    type: string\n                  base_proposer_reward:\n                    type: string\n                    description: >-\n                      Deprecated: The base_proposer_reward field is deprecated\n                      and is no longer used\n\n                      in the x/distribution module's reward mechanism.\n                  bonus_proposer_reward:\n                    type: string\n                    description: >-\n                      Deprecated: The bonus_proposer_reward field is deprecated\n                      and is no longer used\n\n                      in the x/distribution module's reward mechanism.\n                  withdraw_addr_enabled:\n                    type: boolean\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/validators/{validator_address}:\n    get:\n      summary: >-\n        ValidatorDistributionInfo queries validator commission and\n        self-delegation rewards for validator\n      operationId: CosmosDistributionV1Beta1Query_ValidatorDistributionInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              operator_address:\n                type: string\n                description: operator_address defines the validator operator address.\n              self_bond_rewards:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    DecCoin defines a token with a denomination and a decimal\n                    amount.\n\n\n                    NOTE: The amount field is an Dec which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: self_bond_rewards defines the self delegations rewards.\n              commission:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    DecCoin defines a token with a denomination and a decimal\n                    amount.\n\n\n                    NOTE: The amount field is an Dec which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: commission defines the commission the validator received.\n            description: >-\n              QueryValidatorDistributionInfoResponse is the response type for\n              the Query/ValidatorDistributionInfo RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: validator_address\n          description: validator_address defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/validators/{validator_address}/commission:\n    get:\n      summary: ValidatorCommission queries accumulated commission for a validator.\n      operationId: CosmosDistributionV1Beta1Query_ValidatorCommission\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              commission:\n                description: commission defines the commission the validator received.\n                type: object\n                properties:\n                  commission:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        DecCoin defines a token with a denomination and a\n                        decimal amount.\n\n\n                        NOTE: The amount field is an Dec which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n            title: |-\n              QueryValidatorCommissionResponse is the response type for the\n              Query/ValidatorCommission RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: validator_address\n          description: validator_address defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards:\n    get:\n      summary: ValidatorOutstandingRewards queries rewards of a validator address.\n      operationId: CosmosDistributionV1Beta1Query_ValidatorOutstandingRewards\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              rewards:\n                type: object\n                properties:\n                  rewards:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        DecCoin defines a token with a denomination and a\n                        decimal amount.\n\n\n                        NOTE: The amount field is an Dec which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                description: >-\n                  ValidatorOutstandingRewards represents outstanding\n                  (un-withdrawn) rewards\n\n                  for a validator inexpensive to track, allows simple sanity\n                  checks.\n            description: >-\n              QueryValidatorOutstandingRewardsResponse is the response type for\n              the\n\n              Query/ValidatorOutstandingRewards RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: validator_address\n          description: validator_address defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/distribution/v1beta1/validators/{validator_address}/slashes:\n    get:\n      summary: ValidatorSlashes queries slash events of a validator.\n      operationId: CosmosDistributionV1Beta1Query_ValidatorSlashes\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              slashes:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    validator_period:\n                      type: string\n                      format: uint64\n                    fraction:\n                      type: string\n                  description: >-\n                    ValidatorSlashEvent represents a validator slash event.\n\n                    Height is implicit within the store key.\n\n                    This is needed to calculate appropriate amount of staking\n                    tokens\n\n                    for delegations which are withdrawn after a slash has\n                    occurred.\n                description: slashes defines the slashes the validator received.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: |-\n              QueryValidatorSlashesResponse is the response type for the\n              Query/ValidatorSlashes RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: validator_address\n          description: validator_address defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: starting_height\n          description: >-\n            starting_height defines the optional starting height to query the\n            slashes.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: ending_height\n          description: >-\n            starting_height defines the optional ending height to query the\n            slashes.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos.evidence.v1beta1.Msg/SubmitEvidence:\n    post:\n      summary: >-\n        SubmitEvidence submits an arbitrary Evidence of misbehavior such as\n        equivocation or\n\n        counterfactual signing.\n      operationId: CosmosEvidenceV1Beta1Msg_SubmitEvidence\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n                description: hash defines the hash of the evidence.\n            description: >-\n              MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgSubmitEvidence represents a message that supports submitting\n            arbitrary\n\n            Evidence of misbehavior such as equivocation or counterfactual\n            signing.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              submitter:\n                type: string\n                description: submitter is the signer account address of evidence.\n              evidence:\n                description: evidence defines the evidence of misbehavior.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: >-\n              MsgSubmitEvidence represents a message that supports submitting\n              arbitrary\n\n              Evidence of misbehavior such as equivocation or counterfactual\n              signing.\n      tags:\n        - Msg\n  /cosmos/evidence/v1beta1/evidence:\n    get:\n      summary: AllEvidence queries all evidence.\n      operationId: CosmosEvidenceV1Beta1Query_AllEvidence\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n                description: evidence returns all evidences.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryAllEvidenceResponse is the response type for the\n              Query/AllEvidence RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/evidence/v1beta1/evidence/{hash}:\n    get:\n      summary: Evidence queries evidence based on evidence hash.\n      operationId: CosmosEvidenceV1Beta1Query_Evidence\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              evidence:\n                description: evidence returns the requested evidence.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: >-\n              QueryEvidenceResponse is the response type for the Query/Evidence\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: hash\n          description: |-\n            hash defines the evidence hash of the requested evidence.\n\n            Since: cosmos-sdk 0.47\n          in: path\n          required: true\n          type: string\n        - name: evidence_hash\n          description: |-\n            evidence_hash defines the hash of the requested evidence.\n            Deprecated: Use hash, a HEX encoded string, instead.\n          in: query\n          required: false\n          type: string\n          format: byte\n      tags:\n        - Query\n  /sourcehub/feegrant/v1beta1/allowance/{granter}/{grantee}:\n    get:\n      summary: Allowance returns granted allwance to the grantee by the granter.\n      operationId: SourcehubFeegrantV1Beta1Query_Allowance\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              allowance:\n                description: allowance is a allowance granted for grantee by granter.\n                type: object\n                properties:\n                  granter:\n                    type: string\n                    description: >-\n                      granter is the address of the user granting an allowance\n                      of their funds.\n                  grantee:\n                    type: string\n                    description: >-\n                      grantee is the address of the user being granted an\n                      allowance of another user's funds.\n                  allowance:\n                    description: >-\n                      allowance can be any of basic, periodic, allowed fee\n                      allowance.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                title: >-\n                  Grant is stored in the KVStore to record a grant with full\n                  context\n            description: >-\n              QueryAllowanceResponse is the response type for the\n              Query/Allowance RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: granter\n          description: >-\n            granter is the address of the user granting an allowance of their\n            funds.\n          in: path\n          required: true\n          type: string\n        - name: grantee\n          description: >-\n            grantee is the address of the user being granted an allowance of\n            another user's funds.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /sourcehub/feegrant/v1beta1/allowances/{grantee}:\n    get:\n      summary: Allowances returns all the grants for the given grantee address.\n      operationId: SourcehubFeegrantV1Beta1Query_Allowances\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              allowances:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    granter:\n                      type: string\n                      description: >-\n                        granter is the address of the user granting an allowance\n                        of their funds.\n                    grantee:\n                      type: string\n                      description: >-\n                        grantee is the address of the user being granted an\n                        allowance of another user's funds.\n                    allowance:\n                      description: >-\n                        allowance can be any of basic, periodic, allowed fee\n                        allowance.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                  title: >-\n                    Grant is stored in the KVStore to record a grant with full\n                    context\n                description: allowances are allowance's granted for grantee by granter.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryAllowancesResponse is the response type for the\n              Query/Allowances RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: grantee\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /sourcehub/feegrant/v1beta1/issued/{granter}:\n    get:\n      summary: AllowancesByGranter returns all the grants given by an address\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: SourcehubFeegrantV1Beta1Query_AllowancesByGranter\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              allowances:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    granter:\n                      type: string\n                      description: >-\n                        granter is the address of the user granting an allowance\n                        of their funds.\n                    grantee:\n                      type: string\n                      description: >-\n                        grantee is the address of the user being granted an\n                        allowance of another user's funds.\n                    allowance:\n                      description: >-\n                        allowance can be any of basic, periodic, allowed fee\n                        allowance.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                  title: >-\n                    Grant is stored in the KVStore to record a grant with full\n                    context\n                description: allowances that have been issued by the granter.\n              pagination:\n                description: pagination defines an pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryAllowancesByGranterResponse is the response type for the\n              Query/AllowancesByGranter RPC method.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: granter\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /sourcehub/feegrant/v1beta1/did_allowance/{granter}/{grantee_did}:\n    get:\n      summary: DIDAllowance returns granted allowance to the DID by the granter.\n      operationId: SourcehubFeegrantV1Beta1Query_DIDAllowance\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              allowance:\n                type: object\n                properties:\n                  granter:\n                    type: string\n                    description: granter is the address of the user granting an allowance of their funds.\n                  grantee:\n                    type: string\n                    description: grantee is the DID being granted an allowance of another user's funds.\n                  allowance:\n                    description: allowance can be any of basic, periodic, allowed fee allowance.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                    additionalProperties: {}\n                title: Grant is stored in the KVStore to record a grant with full context\n            description: QueryDIDAllowanceResponse is the response type for the Query/DIDAllowance RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: granter\n          description: granter is the address of the user granting an allowance of their funds.\n          in: path\n          required: true\n          type: string\n        - name: grantee_did\n          description: grantee_did is the DID being granted an allowance of another user's funds.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /sourcehub/feegrant/v1beta1/did_issued/{granter}:\n    get:\n      summary: DIDAllowancesByGranter returns all the DID grants given by an address.\n      operationId: SourcehubFeegrantV1Beta1Query_DIDAllowancesByGranter\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              allowances:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    granter:\n                      type: string\n                      description: granter is the address of the user granting an allowance of their funds.\n                    grantee:\n                      type: string\n                      description: grantee is the DID being granted an allowance of another user's funds.\n                    allowance:\n                      description: allowance can be any of basic, periodic, allowed fee allowance.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                      additionalProperties: {}\n                  title: Grant is stored in the KVStore to record a grant with full context\n                description: allowances that have been issued by the granter to DIDs.\n              pagination:\n                description: pagination defines a pagination for the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                  total:\n                    type: string\n                    format: uint64\n            description: QueryDIDAllowancesByGranterResponse is the response type for the Query/DIDAllowancesByGranter RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: granter\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /sourcehub.feegrant.v1beta1.Msg/GrantAllowance:\n    post:\n      summary: |-\n        GrantAllowance grants fee allowance to the grantee on the granter's\n        account with the provided expiration time.\n      operationId: SourcehubFeegrantV1Beta1Msg_GrantAllowance\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgGrantAllowance adds permission for Grantee to spend up to\n            Allowance\n\n            of fees from the account of Granter.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              granter:\n                type: string\n                description: >-\n                  granter is the address of the user granting an allowance of\n                  their funds.\n              grantee:\n                type: string\n                description: >-\n                  grantee is the address of the user being granted an allowance\n                  of another user's funds.\n              allowance:\n                description: >-\n                  allowance can be any of basic, periodic, allowed fee\n                  allowance.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: >-\n              MsgGrantAllowance adds permission for Grantee to spend up to\n              Allowance\n\n              of fees from the account of Granter.\n      tags:\n        - Msg\n  /sourcehub.feegrant.v1beta1.Msg/PruneAllowances:\n    post:\n      summary: >-\n        PruneAllowances prunes expired fee allowances, currently up to 75 at a\n        time.\n      description: Since cosmos-sdk 0.50\n      operationId: SourcehubFeegrantV1Beta1Msg_PruneAllowances\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse\n              response type.\n\n\n              Since cosmos-sdk 0.50\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgPruneAllowances prunes expired fee allowances.\n\n            Since cosmos-sdk 0.50\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              pruner:\n                type: string\n                description: pruner is the address of the user pruning expired allowances.\n            description: |-\n              MsgPruneAllowances prunes expired fee allowances.\n\n              Since cosmos-sdk 0.50\n      tags:\n        - Msg\n  /sourcehub.feegrant.v1beta1.Msg/RevokeAllowance:\n    post:\n      summary: |-\n        RevokeAllowance revokes any fee allowance of granter's account that\n        has been granted to the grantee.\n      operationId: SourcehubFeegrantV1Beta1Msg_RevokeAllowance\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgRevokeAllowance removes any existing Allowance from Granter to\n            Grantee.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              granter:\n                type: string\n                description: >-\n                  granter is the address of the user granting an allowance of\n                  their funds.\n              grantee:\n                type: string\n                description: >-\n                  grantee is the address of the user being granted an allowance\n                  of another user's funds.\n            description: >-\n              MsgRevokeAllowance removes any existing Allowance from Granter to\n              Grantee.\n      tags:\n        - Msg\n  /cosmos/gov/v1/constitution:\n    get:\n      summary: Constitution queries the chain's constitution.\n      operationId: CosmosGovV1Query_Constitution\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              constitution:\n                type: string\n            title: >-\n              QueryConstitutionResponse is the response type for the\n              Query/Constitution RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/gov/v1/params/{params_type}:\n    get:\n      summary: Params queries all parameters of the gov module.\n      operationId: CosmosGovV1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              voting_params:\n                description: |-\n                  Deprecated: Prefer to use `params` instead.\n                  voting_params defines the parameters related to voting.\n                type: object\n                properties:\n                  voting_period:\n                    type: string\n                    description: Duration of the voting period.\n              deposit_params:\n                description: |-\n                  Deprecated: Prefer to use `params` instead.\n                  deposit_params defines the parameters related to deposit.\n                type: object\n                properties:\n                  min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: Minimum deposit for a proposal to enter voting period.\n                  max_deposit_period:\n                    type: string\n                    description: >-\n                      Maximum period for Atom holders to deposit on a proposal.\n                      Initial value: 2\n\n                      months.\n              tally_params:\n                description: |-\n                  Deprecated: Prefer to use `params` instead.\n                  tally_params defines the parameters related to tally.\n                type: object\n                properties:\n                  quorum:\n                    type: string\n                    description: >-\n                      Minimum percentage of total stake needed to vote for a\n                      result to be\n\n                      considered valid.\n                  threshold:\n                    type: string\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.5.\n                  veto_threshold:\n                    type: string\n                    description: >-\n                      Minimum value of Veto votes to Total votes ratio for\n                      proposal to be\n\n                      vetoed. Default value: 1/3.\n              params:\n                description: |-\n                  params defines all the paramaters of x/gov module.\n\n                  Since: cosmos-sdk 0.47\n                type: object\n                properties:\n                  min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: Minimum deposit for a proposal to enter voting period.\n                  max_deposit_period:\n                    type: string\n                    description: >-\n                      Maximum period for Atom holders to deposit on a proposal.\n                      Initial value: 2\n\n                      months.\n                  voting_period:\n                    type: string\n                    description: Duration of the voting period.\n                  quorum:\n                    type: string\n                    description: >-\n                      Minimum percentage of total stake needed to vote for a\n                      result to be\n                       considered valid.\n                  threshold:\n                    type: string\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.5.\n                  veto_threshold:\n                    type: string\n                    description: >-\n                      Minimum value of Veto votes to Total votes ratio for\n                      proposal to be\n                       vetoed. Default value: 1/3.\n                  min_initial_deposit_ratio:\n                    type: string\n                    description: >-\n                      The ratio representing the proportion of the deposit value\n                      that must be paid at proposal submission.\n                  proposal_cancel_ratio:\n                    type: string\n                    description: >-\n                      The cancel ratio which will not be returned back to the\n                      depositors when a proposal is cancelled.\n\n\n                      Since: cosmos-sdk 0.50\n                  proposal_cancel_dest:\n                    type: string\n                    description: >-\n                      The address which will receive (proposal_cancel_ratio *\n                      deposit) proposal deposits.\n\n                      If empty, the (proposal_cancel_ratio * deposit) proposal\n                      deposits will be burned.\n\n\n                      Since: cosmos-sdk 0.50\n                  expedited_voting_period:\n                    type: string\n                    description: |-\n                      Duration of the voting period of an expedited proposal.\n\n                      Since: cosmos-sdk 0.50\n                  expedited_threshold:\n                    type: string\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.67.\n\n\n                      Since: cosmos-sdk 0.50\n                  expedited_min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: >-\n                      Minimum expedited deposit for a proposal to enter voting\n                      period.\n                  burn_vote_quorum:\n                    type: boolean\n                    title: burn deposits if a proposal does not meet quorum\n                  burn_proposal_deposit_prevote:\n                    type: boolean\n                    title: burn deposits if the proposal does not enter voting period\n                  burn_vote_veto:\n                    type: boolean\n                    title: burn deposits if quorum with vote type no_veto is met\n                  min_deposit_ratio:\n                    type: string\n                    description: >-\n                      The ratio representing the proportion of the deposit value\n                      minimum that must be met when making a deposit.\n\n                      Default value: 0.01. Meaning that for a chain with a\n                      min_deposit of 100stake, a deposit of 1stake would be\n\n                      required.\n\n\n                      Since: cosmos-sdk 0.50\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: params_type\n          description: >-\n            params_type defines which parameters to query for, can be one of\n            \"voting\",\n\n            \"tallying\" or \"deposit\".\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals:\n    get:\n      summary: Proposals queries all proposals based on given status.\n      operationId: CosmosGovV1Query_Proposals\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposals:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      format: uint64\n                      description: id defines the unique id of the proposal.\n                    messages:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          '@type':\n                            type: string\n                            description: >-\n                              A URL/resource name that uniquely identifies the\n                              type of the serialized\n\n                              protocol buffer message. This string must contain\n                              at least\n\n                              one \"/\" character. The last segment of the URL's\n                              path must represent\n\n                              the fully qualified name of the type (as in\n\n                              `path/google.protobuf.Duration`). The name should\n                              be in a canonical form\n\n                              (e.g., leading \".\" is not accepted).\n\n\n                              In practice, teams usually precompile into the\n                              binary all types that they\n\n                              expect it to use in the context of Any. However,\n                              for URLs which use the\n\n                              scheme `http`, `https`, or no scheme, one can\n                              optionally set up a type\n\n                              server that maps type URLs to message definitions\n                              as follows:\n\n\n                              * If no scheme is provided, `https` is assumed.\n\n                              * An HTTP GET on the URL must yield a\n                              [google.protobuf.Type][]\n                                value in binary format, or produce an error.\n                              * Applications are allowed to cache lookup results\n                              based on the\n                                URL, or have them precompiled into a binary to avoid any\n                                lookup. Therefore, binary compatibility needs to be preserved\n                                on changes to types. (Use versioned type names to manage\n                                breaking changes.)\n\n                              Note: this functionality is not currently\n                              available in the official\n\n                              protobuf release, and it is not used for type URLs\n                              beginning with\n\n                              type.googleapis.com.\n\n\n                              Schemes other than `http`, `https` (or the empty\n                              scheme) might be\n\n                              used with implementation specific semantics.\n                        additionalProperties: {}\n                        description: >-\n                          `Any` contains an arbitrary serialized protocol buffer\n                          message along with a\n\n                          URL that describes the type of the serialized message.\n\n\n                          Protobuf library provides support to pack/unpack Any\n                          values in the form\n\n                          of utility functions or additional generated methods\n                          of the Any type.\n\n\n                          Example 1: Pack and unpack a message in C++.\n\n                              Foo foo = ...;\n                              Any any;\n                              any.PackFrom(foo);\n                              ...\n                              if (any.UnpackTo(&foo)) {\n                                ...\n                              }\n\n                          Example 2: Pack and unpack a message in Java.\n\n                              Foo foo = ...;\n                              Any any = Any.pack(foo);\n                              ...\n                              if (any.is(Foo.class)) {\n                                foo = any.unpack(Foo.class);\n                              }\n                              // or ...\n                              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                                foo = any.unpack(Foo.getDefaultInstance());\n                              }\n\n                          Example 3: Pack and unpack a message in Python.\n\n                              foo = Foo(...)\n                              any = Any()\n                              any.Pack(foo)\n                              ...\n                              if any.Is(Foo.DESCRIPTOR):\n                                any.Unpack(foo)\n                                ...\n\n                          Example 4: Pack and unpack a message in Go\n\n                               foo := &pb.Foo{...}\n                               any, err := anypb.New(foo)\n                               if err != nil {\n                                 ...\n                               }\n                               ...\n                               foo := &pb.Foo{}\n                               if err := any.UnmarshalTo(foo); err != nil {\n                                 ...\n                               }\n\n                          The pack methods provided by protobuf library will by\n                          default use\n\n                          'type.googleapis.com/full.type.name' as the type URL\n                          and the unpack\n\n                          methods only use the fully qualified type name after\n                          the last '/'\n\n                          in the type URL, for example \"foo.bar.com/x/y.z\" will\n                          yield type\n\n                          name \"y.z\".\n\n\n                          JSON\n\n\n                          The JSON representation of an `Any` value uses the\n                          regular\n\n                          representation of the deserialized, embedded message,\n                          with an\n\n                          additional field `@type` which contains the type URL.\n                          Example:\n\n                              package google.profile;\n                              message Person {\n                                string first_name = 1;\n                                string last_name = 2;\n                              }\n\n                              {\n                                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                                \"firstName\": <string>,\n                                \"lastName\": <string>\n                              }\n\n                          If the embedded message type is well-known and has a\n                          custom JSON\n\n                          representation, that representation will be embedded\n                          adding a field\n\n                          `value` which holds the custom JSON in addition to the\n                          `@type`\n\n                          field. Example (for message\n                          [google.protobuf.Duration][]):\n\n                              {\n                                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                                \"value\": \"1.212s\"\n                              }\n                      description: >-\n                        messages are the arbitrary messages to be executed if\n                        the proposal passes.\n                    status:\n                      description: status defines the proposal status.\n                      type: string\n                      enum:\n                        - PROPOSAL_STATUS_UNSPECIFIED\n                        - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                        - PROPOSAL_STATUS_VOTING_PERIOD\n                        - PROPOSAL_STATUS_PASSED\n                        - PROPOSAL_STATUS_REJECTED\n                        - PROPOSAL_STATUS_FAILED\n                      default: PROPOSAL_STATUS_UNSPECIFIED\n                    final_tally_result:\n                      description: >-\n                        final_tally_result is the final tally result of the\n                        proposal. When\n\n                        querying a proposal via gRPC, this field is not\n                        populated until the\n\n                        proposal's voting period has ended.\n                      type: object\n                      properties:\n                        yes_count:\n                          type: string\n                          description: yes_count is the number of yes votes on a proposal.\n                        abstain_count:\n                          type: string\n                          description: >-\n                            abstain_count is the number of abstain votes on a\n                            proposal.\n                        no_count:\n                          type: string\n                          description: no_count is the number of no votes on a proposal.\n                        no_with_veto_count:\n                          type: string\n                          description: >-\n                            no_with_veto_count is the number of no with veto\n                            votes on a proposal.\n                    submit_time:\n                      type: string\n                      format: date-time\n                      description: submit_time is the time of proposal submission.\n                    deposit_end_time:\n                      type: string\n                      format: date-time\n                      description: deposit_end_time is the end time for deposition.\n                    total_deposit:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      description: total_deposit is the total deposit on the proposal.\n                    voting_start_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        voting_start_time is the starting time to vote on a\n                        proposal.\n                    voting_end_time:\n                      type: string\n                      format: date-time\n                      description: voting_end_time is the end time of voting on a proposal.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the\n                        proposal.\n\n                        the recommended format of the metadata is to be found\n                        here:\n\n                        https://docs.cosmos.network/v0.47/modules/gov#proposal-3\n                    title:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.47'\n                      title: title is the title of the proposal\n                    summary:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.47'\n                      title: summary is a short summary of the proposal\n                    proposer:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.47'\n                      title: proposer is the address of the proposal sumbitter\n                    expedited:\n                      type: boolean\n                      description: 'Since: cosmos-sdk 0.50'\n                      title: expedited defines if the proposal is expedited\n                    failed_reason:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.50'\n                      title: failed_reason defines the reason why the proposal failed\n                  description: >-\n                    Proposal defines the core field members of a governance\n                    proposal.\n                description: proposals defines all the requested governance proposals.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryProposalsResponse is the response type for the\n              Query/Proposals RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_status\n          description: |-\n            proposal_status defines the status of the proposals.\n\n             - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n             - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\n            period.\n             - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\n            period.\n             - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\n            passed.\n             - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\n            been rejected.\n             - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\n            failed.\n          in: query\n          required: false\n          type: string\n          enum:\n            - PROPOSAL_STATUS_UNSPECIFIED\n            - PROPOSAL_STATUS_DEPOSIT_PERIOD\n            - PROPOSAL_STATUS_VOTING_PERIOD\n            - PROPOSAL_STATUS_PASSED\n            - PROPOSAL_STATUS_REJECTED\n            - PROPOSAL_STATUS_FAILED\n          default: PROPOSAL_STATUS_UNSPECIFIED\n        - name: voter\n          description: voter defines the voter address for the proposals.\n          in: query\n          required: false\n          type: string\n        - name: depositor\n          description: depositor defines the deposit addresses from the proposals.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}:\n    get:\n      summary: Proposal queries proposal details based on ProposalID.\n      operationId: CosmosGovV1Query_Proposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal:\n                description: proposal is the requested governance proposal.\n                type: object\n                properties:\n                  id:\n                    type: string\n                    format: uint64\n                    description: id defines the unique id of the proposal.\n                  messages:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    description: >-\n                      messages are the arbitrary messages to be executed if the\n                      proposal passes.\n                  status:\n                    description: status defines the proposal status.\n                    type: string\n                    enum:\n                      - PROPOSAL_STATUS_UNSPECIFIED\n                      - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                      - PROPOSAL_STATUS_VOTING_PERIOD\n                      - PROPOSAL_STATUS_PASSED\n                      - PROPOSAL_STATUS_REJECTED\n                      - PROPOSAL_STATUS_FAILED\n                    default: PROPOSAL_STATUS_UNSPECIFIED\n                  final_tally_result:\n                    description: >-\n                      final_tally_result is the final tally result of the\n                      proposal. When\n\n                      querying a proposal via gRPC, this field is not populated\n                      until the\n\n                      proposal's voting period has ended.\n                    type: object\n                    properties:\n                      yes_count:\n                        type: string\n                        description: yes_count is the number of yes votes on a proposal.\n                      abstain_count:\n                        type: string\n                        description: >-\n                          abstain_count is the number of abstain votes on a\n                          proposal.\n                      no_count:\n                        type: string\n                        description: no_count is the number of no votes on a proposal.\n                      no_with_veto_count:\n                        type: string\n                        description: >-\n                          no_with_veto_count is the number of no with veto votes\n                          on a proposal.\n                  submit_time:\n                    type: string\n                    format: date-time\n                    description: submit_time is the time of proposal submission.\n                  deposit_end_time:\n                    type: string\n                    format: date-time\n                    description: deposit_end_time is the end time for deposition.\n                  total_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: total_deposit is the total deposit on the proposal.\n                  voting_start_time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      voting_start_time is the starting time to vote on a\n                      proposal.\n                  voting_end_time:\n                    type: string\n                    format: date-time\n                    description: voting_end_time is the end time of voting on a proposal.\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata attached to the\n                      proposal.\n\n                      the recommended format of the metadata is to be found\n                      here:\n\n                      https://docs.cosmos.network/v0.47/modules/gov#proposal-3\n                  title:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.47'\n                    title: title is the title of the proposal\n                  summary:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.47'\n                    title: summary is a short summary of the proposal\n                  proposer:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.47'\n                    title: proposer is the address of the proposal sumbitter\n                  expedited:\n                    type: boolean\n                    description: 'Since: cosmos-sdk 0.50'\n                    title: expedited defines if the proposal is expedited\n                  failed_reason:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.50'\n                    title: failed_reason defines the reason why the proposal failed\n            description: >-\n              QueryProposalResponse is the response type for the Query/Proposal\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}/deposits:\n    get:\n      summary: Deposits queries all deposits of a single proposal.\n      operationId: CosmosGovV1Query_Deposits\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              deposits:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal_id defines the unique id of the proposal.\n                    depositor:\n                      type: string\n                      description: >-\n                        depositor defines the deposit addresses from the\n                        proposals.\n                    amount:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      description: amount to be deposited by depositor.\n                  description: >-\n                    Deposit defines an amount deposited by an account address to\n                    an active\n\n                    proposal.\n                description: deposits defines the requested deposits.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryDepositsResponse is the response type for the Query/Deposits\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}:\n    get:\n      summary: >-\n        Deposit queries single deposit information based on proposalID,\n        depositAddr.\n      operationId: CosmosGovV1Query_Deposit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              deposit:\n                description: deposit defines the requested deposit.\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal_id defines the unique id of the proposal.\n                  depositor:\n                    type: string\n                    description: >-\n                      depositor defines the deposit addresses from the\n                      proposals.\n                  amount:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: amount to be deposited by depositor.\n            description: >-\n              QueryDepositResponse is the response type for the Query/Deposit\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: depositor\n          description: depositor defines the deposit addresses from the proposals.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}/tally:\n    get:\n      summary: TallyResult queries the tally of a proposal vote.\n      operationId: CosmosGovV1Query_TallyResult\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              tally:\n                description: tally defines the requested tally.\n                type: object\n                properties:\n                  yes_count:\n                    type: string\n                    description: yes_count is the number of yes votes on a proposal.\n                  abstain_count:\n                    type: string\n                    description: >-\n                      abstain_count is the number of abstain votes on a\n                      proposal.\n                  no_count:\n                    type: string\n                    description: no_count is the number of no votes on a proposal.\n                  no_with_veto_count:\n                    type: string\n                    description: >-\n                      no_with_veto_count is the number of no with veto votes on\n                      a proposal.\n            description: >-\n              QueryTallyResultResponse is the response type for the Query/Tally\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}/votes:\n    get:\n      summary: Votes queries votes of a given proposal.\n      operationId: CosmosGovV1Query_Votes\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              votes:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal_id defines the unique id of the proposal.\n                    voter:\n                      type: string\n                      description: voter is the voter address of the proposal.\n                    options:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          option:\n                            description: >-\n                              option defines the valid vote options, it must not\n                              contain duplicate vote options.\n                            type: string\n                            enum:\n                              - VOTE_OPTION_UNSPECIFIED\n                              - VOTE_OPTION_YES\n                              - VOTE_OPTION_ABSTAIN\n                              - VOTE_OPTION_NO\n                              - VOTE_OPTION_NO_WITH_VETO\n                            default: VOTE_OPTION_UNSPECIFIED\n                          weight:\n                            type: string\n                            description: >-\n                              weight is the vote weight associated with the vote\n                              option.\n                        description: >-\n                          WeightedVoteOption defines a unit of vote for vote\n                          split.\n                      description: options is the weighted vote options.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the vote.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/gov#vote-5\n                  description: >-\n                    Vote defines a vote on a governance proposal.\n\n                    A Vote consists of a proposal ID, the voter, and the vote\n                    option.\n                description: votes defines the queried votes.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryVotesResponse is the response type for the Query/Votes RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}:\n    get:\n      summary: Vote queries voted information based on proposalID, voterAddr.\n      operationId: CosmosGovV1Query_Vote\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              vote:\n                description: vote defines the queried vote.\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal_id defines the unique id of the proposal.\n                  voter:\n                    type: string\n                    description: voter is the voter address of the proposal.\n                  options:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        option:\n                          description: >-\n                            option defines the valid vote options, it must not\n                            contain duplicate vote options.\n                          type: string\n                          enum:\n                            - VOTE_OPTION_UNSPECIFIED\n                            - VOTE_OPTION_YES\n                            - VOTE_OPTION_ABSTAIN\n                            - VOTE_OPTION_NO\n                            - VOTE_OPTION_NO_WITH_VETO\n                          default: VOTE_OPTION_UNSPECIFIED\n                        weight:\n                          type: string\n                          description: >-\n                            weight is the vote weight associated with the vote\n                            option.\n                      description: >-\n                        WeightedVoteOption defines a unit of vote for vote\n                        split.\n                    description: options is the weighted vote options.\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata attached to the vote.\n\n                      the recommended format of the metadata is to be found\n                      here: https://docs.cosmos.network/v0.47/modules/gov#vote-5\n            description: >-\n              QueryVoteResponse is the response type for the Query/Vote RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: voter\n          description: voter defines the voter address for the proposals.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos.gov.v1.Msg/CancelProposal:\n    post:\n      summary: CancelProposal defines a method to cancel governance proposal\n      description: 'Since: cosmos-sdk 0.50'\n      operationId: CosmosGovV1Msg_CancelProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              canceled_time:\n                type: string\n                format: date-time\n                description: canceled_time is the time when proposal is canceled.\n              canceled_height:\n                type: string\n                format: uint64\n                description: >-\n                  canceled_height defines the block height at which the proposal\n                  is canceled.\n            description: >-\n              MsgCancelProposalResponse defines the response structure for\n              executing a\n\n              MsgCancelProposal message.\n\n\n              Since: cosmos-sdk 0.50\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgCancelProposal is the Msg/CancelProposal request type.\n\n            Since: cosmos-sdk 0.50\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              proposer:\n                type: string\n                description: proposer is the account address of the proposer.\n            description: |-\n              MsgCancelProposal is the Msg/CancelProposal request type.\n\n              Since: cosmos-sdk 0.50\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/Deposit:\n    post:\n      summary: Deposit defines a method to add deposit on a specific proposal.\n      operationId: CosmosGovV1Msg_Deposit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgDepositResponse defines the Msg/Deposit response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgDeposit defines a message to submit a deposit to an existing\n            proposal.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              depositor:\n                type: string\n                description: depositor defines the deposit addresses from the proposals.\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: amount to be deposited by depositor.\n            description: >-\n              MsgDeposit defines a message to submit a deposit to an existing\n              proposal.\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/ExecLegacyContent:\n    post:\n      summary: |-\n        ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\n        to execute a legacy content-based proposal.\n      operationId: CosmosGovV1Msg_ExecLegacyContent\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgExecLegacyContent is used to wrap the legacy content field into a\n            message.\n\n            This ensures backwards compatibility with v1beta1.MsgSubmitProposal.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              content:\n                description: content is the proposal's content.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n              authority:\n                type: string\n                description: authority must be the gov module address.\n            description: >-\n              MsgExecLegacyContent is used to wrap the legacy content field into\n              a message.\n\n              This ensures backwards compatibility with\n              v1beta1.MsgSubmitProposal.\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/SubmitProposal:\n    post:\n      summary: >-\n        SubmitProposal defines a method to create new proposal given the\n        messages.\n      operationId: CosmosGovV1Msg_SubmitProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n            description: >-\n              MsgSubmitProposalResponse defines the Msg/SubmitProposal response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgSubmitProposal defines an sdk.Msg type that supports submitting\n            arbitrary\n\n            proposal Content.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              messages:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n                description: >-\n                  messages are the arbitrary messages to be executed if proposal\n                  passes.\n              initial_deposit:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: >-\n                  initial_deposit is the deposit value that must be paid at\n                  proposal submission.\n              proposer:\n                type: string\n                description: proposer is the account address of the proposer.\n              metadata:\n                type: string\n                description: metadata is any arbitrary metadata attached to the proposal.\n              title:\n                type: string\n                description: |-\n                  title is the title of the proposal.\n\n                  Since: cosmos-sdk 0.47\n              summary:\n                type: string\n                description: 'Since: cosmos-sdk 0.47'\n                title: summary is the summary of the proposal\n              expedited:\n                type: boolean\n                description: 'Since: cosmos-sdk 0.50'\n                title: expedited defines if the proposal is expedited or not\n            description: >-\n              MsgSubmitProposal defines an sdk.Msg type that supports submitting\n              arbitrary\n\n              proposal Content.\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/gov\n        module\n\n        parameters. The authority is defined in the keeper.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosGovV1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/gov parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: Minimum deposit for a proposal to enter voting period.\n                  max_deposit_period:\n                    type: string\n                    description: >-\n                      Maximum period for Atom holders to deposit on a proposal.\n                      Initial value: 2\n\n                      months.\n                  voting_period:\n                    type: string\n                    description: Duration of the voting period.\n                  quorum:\n                    type: string\n                    description: >-\n                      Minimum percentage of total stake needed to vote for a\n                      result to be\n                       considered valid.\n                  threshold:\n                    type: string\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.5.\n                  veto_threshold:\n                    type: string\n                    description: >-\n                      Minimum value of Veto votes to Total votes ratio for\n                      proposal to be\n                       vetoed. Default value: 1/3.\n                  min_initial_deposit_ratio:\n                    type: string\n                    description: >-\n                      The ratio representing the proportion of the deposit value\n                      that must be paid at proposal submission.\n                  proposal_cancel_ratio:\n                    type: string\n                    description: >-\n                      The cancel ratio which will not be returned back to the\n                      depositors when a proposal is cancelled.\n\n\n                      Since: cosmos-sdk 0.50\n                  proposal_cancel_dest:\n                    type: string\n                    description: >-\n                      The address which will receive (proposal_cancel_ratio *\n                      deposit) proposal deposits.\n\n                      If empty, the (proposal_cancel_ratio * deposit) proposal\n                      deposits will be burned.\n\n\n                      Since: cosmos-sdk 0.50\n                  expedited_voting_period:\n                    type: string\n                    description: |-\n                      Duration of the voting period of an expedited proposal.\n\n                      Since: cosmos-sdk 0.50\n                  expedited_threshold:\n                    type: string\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.67.\n\n\n                      Since: cosmos-sdk 0.50\n                  expedited_min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: >-\n                      Minimum expedited deposit for a proposal to enter voting\n                      period.\n                  burn_vote_quorum:\n                    type: boolean\n                    title: burn deposits if a proposal does not meet quorum\n                  burn_proposal_deposit_prevote:\n                    type: boolean\n                    title: burn deposits if the proposal does not enter voting period\n                  burn_vote_veto:\n                    type: boolean\n                    title: burn deposits if quorum with vote type no_veto is met\n                  min_deposit_ratio:\n                    type: string\n                    description: >-\n                      The ratio representing the proportion of the deposit value\n                      minimum that must be met when making a deposit.\n\n                      Default value: 0.01. Meaning that for a chain with a\n                      min_deposit of 100stake, a deposit of 1stake would be\n\n                      required.\n\n\n                      Since: cosmos-sdk 0.50\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/Vote:\n    post:\n      summary: Vote defines a method to add a vote on a specific proposal.\n      operationId: CosmosGovV1Msg_Vote\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgVoteResponse defines the Msg/Vote response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgVote defines a message to cast a vote.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              voter:\n                type: string\n                description: voter is the voter address for the proposal.\n              option:\n                description: option defines the vote option.\n                type: string\n                enum:\n                  - VOTE_OPTION_UNSPECIFIED\n                  - VOTE_OPTION_YES\n                  - VOTE_OPTION_ABSTAIN\n                  - VOTE_OPTION_NO\n                  - VOTE_OPTION_NO_WITH_VETO\n                default: VOTE_OPTION_UNSPECIFIED\n              metadata:\n                type: string\n                description: metadata is any arbitrary metadata attached to the Vote.\n            description: MsgVote defines a message to cast a vote.\n      tags:\n        - Msg\n  /cosmos.gov.v1.Msg/VoteWeighted:\n    post:\n      summary: >-\n        VoteWeighted defines a method to add a weighted vote on a specific\n        proposal.\n      operationId: CosmosGovV1Msg_VoteWeighted\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgVoteWeightedResponse defines the Msg/VoteWeighted response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgVoteWeighted defines a message to cast a vote.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              voter:\n                type: string\n                description: voter is the voter address for the proposal.\n              options:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    option:\n                      description: >-\n                        option defines the valid vote options, it must not\n                        contain duplicate vote options.\n                      type: string\n                      enum:\n                        - VOTE_OPTION_UNSPECIFIED\n                        - VOTE_OPTION_YES\n                        - VOTE_OPTION_ABSTAIN\n                        - VOTE_OPTION_NO\n                        - VOTE_OPTION_NO_WITH_VETO\n                      default: VOTE_OPTION_UNSPECIFIED\n                    weight:\n                      type: string\n                      description: >-\n                        weight is the vote weight associated with the vote\n                        option.\n                  description: WeightedVoteOption defines a unit of vote for vote split.\n                description: options defines the weighted vote options.\n              metadata:\n                type: string\n                description: >-\n                  metadata is any arbitrary metadata attached to the\n                  VoteWeighted.\n            description: MsgVoteWeighted defines a message to cast a vote.\n      tags:\n        - Msg\n  /cosmos.gov.v1beta1.Msg/Deposit:\n    post:\n      summary: Deposit defines a method to add deposit on a specific proposal.\n      operationId: CosmosGovV1Beta1Msg_Deposit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgDepositResponse defines the Msg/Deposit response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgDeposit defines a message to submit a deposit to an existing\n            proposal.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              depositor:\n                type: string\n                description: depositor defines the deposit addresses from the proposals.\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: amount to be deposited by depositor.\n            description: >-\n              MsgDeposit defines a message to submit a deposit to an existing\n              proposal.\n      tags:\n        - Msg\n  /cosmos.gov.v1beta1.Msg/SubmitProposal:\n    post:\n      summary: SubmitProposal defines a method to create new proposal given a content.\n      operationId: CosmosGovV1Beta1Msg_SubmitProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n            description: >-\n              MsgSubmitProposalResponse defines the Msg/SubmitProposal response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgSubmitProposal defines an sdk.Msg type that supports submitting\n            arbitrary\n\n            proposal Content.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              content:\n                description: content is the proposal's content.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n              initial_deposit:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                description: >-\n                  initial_deposit is the deposit value that must be paid at\n                  proposal submission.\n              proposer:\n                type: string\n                description: proposer is the account address of the proposer.\n            description: >-\n              MsgSubmitProposal defines an sdk.Msg type that supports submitting\n              arbitrary\n\n              proposal Content.\n      tags:\n        - Msg\n  /cosmos.gov.v1beta1.Msg/Vote:\n    post:\n      summary: Vote defines a method to add a vote on a specific proposal.\n      operationId: CosmosGovV1Beta1Msg_Vote\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgVoteResponse defines the Msg/Vote response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgVote defines a message to cast a vote.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              voter:\n                type: string\n                description: voter is the voter address for the proposal.\n              option:\n                description: option defines the vote option.\n                type: string\n                enum:\n                  - VOTE_OPTION_UNSPECIFIED\n                  - VOTE_OPTION_YES\n                  - VOTE_OPTION_ABSTAIN\n                  - VOTE_OPTION_NO\n                  - VOTE_OPTION_NO_WITH_VETO\n                default: VOTE_OPTION_UNSPECIFIED\n            description: MsgVote defines a message to cast a vote.\n      tags:\n        - Msg\n  /cosmos.gov.v1beta1.Msg/VoteWeighted:\n    post:\n      summary: >-\n        VoteWeighted defines a method to add a weighted vote on a specific\n        proposal.\n      description: 'Since: cosmos-sdk 0.43'\n      operationId: CosmosGovV1Beta1Msg_VoteWeighted\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgVoteWeightedResponse defines the Msg/VoteWeighted response\n              type.\n\n\n              Since: cosmos-sdk 0.43\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgVoteWeighted defines a message to cast a vote.\n\n            Since: cosmos-sdk 0.43\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal_id defines the unique id of the proposal.\n              voter:\n                type: string\n                description: voter is the voter address for the proposal.\n              options:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    option:\n                      description: >-\n                        option defines the valid vote options, it must not\n                        contain duplicate vote options.\n                      type: string\n                      enum:\n                        - VOTE_OPTION_UNSPECIFIED\n                        - VOTE_OPTION_YES\n                        - VOTE_OPTION_ABSTAIN\n                        - VOTE_OPTION_NO\n                        - VOTE_OPTION_NO_WITH_VETO\n                      default: VOTE_OPTION_UNSPECIFIED\n                    weight:\n                      type: string\n                      description: >-\n                        weight is the vote weight associated with the vote\n                        option.\n                  description: |-\n                    WeightedVoteOption defines a unit of vote for vote split.\n\n                    Since: cosmos-sdk 0.43\n                description: options defines the weighted vote options.\n            description: |-\n              MsgVoteWeighted defines a message to cast a vote.\n\n              Since: cosmos-sdk 0.43\n      tags:\n        - Msg\n  /cosmos/gov/v1beta1/params/{params_type}:\n    get:\n      summary: Params queries all parameters of the gov module.\n      operationId: CosmosGovV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              voting_params:\n                description: voting_params defines the parameters related to voting.\n                type: object\n                properties:\n                  voting_period:\n                    type: string\n                    description: Duration of the voting period.\n              deposit_params:\n                description: deposit_params defines the parameters related to deposit.\n                type: object\n                properties:\n                  min_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: Minimum deposit for a proposal to enter voting period.\n                  max_deposit_period:\n                    type: string\n                    description: >-\n                      Maximum period for Atom holders to deposit on a proposal.\n                      Initial value: 2\n\n                      months.\n              tally_params:\n                description: tally_params defines the parameters related to tally.\n                type: object\n                properties:\n                  quorum:\n                    type: string\n                    format: byte\n                    description: >-\n                      Minimum percentage of total stake needed to vote for a\n                      result to be\n\n                      considered valid.\n                  threshold:\n                    type: string\n                    format: byte\n                    description: >-\n                      Minimum proportion of Yes votes for proposal to pass.\n                      Default value: 0.5.\n                  veto_threshold:\n                    type: string\n                    format: byte\n                    description: >-\n                      Minimum value of Veto votes to Total votes ratio for\n                      proposal to be\n\n                      vetoed. Default value: 1/3.\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: params_type\n          description: >-\n            params_type defines which parameters to query for, can be one of\n            \"voting\",\n\n            \"tallying\" or \"deposit\".\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals:\n    get:\n      summary: Proposals queries all proposals based on given status.\n      operationId: CosmosGovV1Beta1Query_Proposals\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposals:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal_id defines the unique id of the proposal.\n                    content:\n                      description: content is the proposal's content.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                    status:\n                      description: status defines the proposal status.\n                      type: string\n                      enum:\n                        - PROPOSAL_STATUS_UNSPECIFIED\n                        - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                        - PROPOSAL_STATUS_VOTING_PERIOD\n                        - PROPOSAL_STATUS_PASSED\n                        - PROPOSAL_STATUS_REJECTED\n                        - PROPOSAL_STATUS_FAILED\n                      default: PROPOSAL_STATUS_UNSPECIFIED\n                    final_tally_result:\n                      description: >-\n                        final_tally_result is the final tally result of the\n                        proposal. When\n\n                        querying a proposal via gRPC, this field is not\n                        populated until the\n\n                        proposal's voting period has ended.\n                      type: object\n                      properties:\n                        'yes':\n                          type: string\n                          description: yes is the number of yes votes on a proposal.\n                        abstain:\n                          type: string\n                          description: >-\n                            abstain is the number of abstain votes on a\n                            proposal.\n                        'no':\n                          type: string\n                          description: no is the number of no votes on a proposal.\n                        no_with_veto:\n                          type: string\n                          description: >-\n                            no_with_veto is the number of no with veto votes on\n                            a proposal.\n                    submit_time:\n                      type: string\n                      format: date-time\n                      description: submit_time is the time of proposal submission.\n                    deposit_end_time:\n                      type: string\n                      format: date-time\n                      description: deposit_end_time is the end time for deposition.\n                    total_deposit:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      description: total_deposit is the total deposit on the proposal.\n                    voting_start_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        voting_start_time is the starting time to vote on a\n                        proposal.\n                    voting_end_time:\n                      type: string\n                      format: date-time\n                      description: voting_end_time is the end time of voting on a proposal.\n                  description: >-\n                    Proposal defines the core field members of a governance\n                    proposal.\n                description: proposals defines all the requested governance proposals.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryProposalsResponse is the response type for the\n              Query/Proposals RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_status\n          description: |-\n            proposal_status defines the status of the proposals.\n\n             - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n             - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\n            period.\n             - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\n            period.\n             - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\n            passed.\n             - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\n            been rejected.\n             - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\n            failed.\n          in: query\n          required: false\n          type: string\n          enum:\n            - PROPOSAL_STATUS_UNSPECIFIED\n            - PROPOSAL_STATUS_DEPOSIT_PERIOD\n            - PROPOSAL_STATUS_VOTING_PERIOD\n            - PROPOSAL_STATUS_PASSED\n            - PROPOSAL_STATUS_REJECTED\n            - PROPOSAL_STATUS_FAILED\n          default: PROPOSAL_STATUS_UNSPECIFIED\n        - name: voter\n          description: voter defines the voter address for the proposals.\n          in: query\n          required: false\n          type: string\n        - name: depositor\n          description: depositor defines the deposit addresses from the proposals.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}:\n    get:\n      summary: Proposal queries proposal details based on ProposalID.\n      operationId: CosmosGovV1Beta1Query_Proposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal:\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal_id defines the unique id of the proposal.\n                  content:\n                    description: content is the proposal's content.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                  status:\n                    description: status defines the proposal status.\n                    type: string\n                    enum:\n                      - PROPOSAL_STATUS_UNSPECIFIED\n                      - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                      - PROPOSAL_STATUS_VOTING_PERIOD\n                      - PROPOSAL_STATUS_PASSED\n                      - PROPOSAL_STATUS_REJECTED\n                      - PROPOSAL_STATUS_FAILED\n                    default: PROPOSAL_STATUS_UNSPECIFIED\n                  final_tally_result:\n                    description: >-\n                      final_tally_result is the final tally result of the\n                      proposal. When\n\n                      querying a proposal via gRPC, this field is not populated\n                      until the\n\n                      proposal's voting period has ended.\n                    type: object\n                    properties:\n                      'yes':\n                        type: string\n                        description: yes is the number of yes votes on a proposal.\n                      abstain:\n                        type: string\n                        description: abstain is the number of abstain votes on a proposal.\n                      'no':\n                        type: string\n                        description: no is the number of no votes on a proposal.\n                      no_with_veto:\n                        type: string\n                        description: >-\n                          no_with_veto is the number of no with veto votes on a\n                          proposal.\n                  submit_time:\n                    type: string\n                    format: date-time\n                    description: submit_time is the time of proposal submission.\n                  deposit_end_time:\n                    type: string\n                    format: date-time\n                    description: deposit_end_time is the end time for deposition.\n                  total_deposit:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: total_deposit is the total deposit on the proposal.\n                  voting_start_time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      voting_start_time is the starting time to vote on a\n                      proposal.\n                  voting_end_time:\n                    type: string\n                    format: date-time\n                    description: voting_end_time is the end time of voting on a proposal.\n                description: >-\n                  Proposal defines the core field members of a governance\n                  proposal.\n            description: >-\n              QueryProposalResponse is the response type for the Query/Proposal\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits:\n    get:\n      summary: Deposits queries all deposits of a single proposal.\n      operationId: CosmosGovV1Beta1Query_Deposits\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              deposits:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal_id defines the unique id of the proposal.\n                    depositor:\n                      type: string\n                      description: >-\n                        depositor defines the deposit addresses from the\n                        proposals.\n                    amount:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      description: amount to be deposited by depositor.\n                  description: >-\n                    Deposit defines an amount deposited by an account address to\n                    an active\n\n                    proposal.\n                description: deposits defines the requested deposits.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryDepositsResponse is the response type for the Query/Deposits\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}:\n    get:\n      summary: >-\n        Deposit queries single deposit information based on proposalID,\n        depositor address.\n      operationId: CosmosGovV1Beta1Query_Deposit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              deposit:\n                description: deposit defines the requested deposit.\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal_id defines the unique id of the proposal.\n                  depositor:\n                    type: string\n                    description: >-\n                      depositor defines the deposit addresses from the\n                      proposals.\n                  amount:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    description: amount to be deposited by depositor.\n            description: >-\n              QueryDepositResponse is the response type for the Query/Deposit\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: depositor\n          description: depositor defines the deposit addresses from the proposals.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}/tally:\n    get:\n      summary: TallyResult queries the tally of a proposal vote.\n      operationId: CosmosGovV1Beta1Query_TallyResult\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              tally:\n                description: tally defines the requested tally.\n                type: object\n                properties:\n                  'yes':\n                    type: string\n                    description: yes is the number of yes votes on a proposal.\n                  abstain:\n                    type: string\n                    description: abstain is the number of abstain votes on a proposal.\n                  'no':\n                    type: string\n                    description: no is the number of no votes on a proposal.\n                  no_with_veto:\n                    type: string\n                    description: >-\n                      no_with_veto is the number of no with veto votes on a\n                      proposal.\n            description: >-\n              QueryTallyResultResponse is the response type for the Query/Tally\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}/votes:\n    get:\n      summary: Votes queries votes of a given proposal.\n      operationId: CosmosGovV1Beta1Query_Votes\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              votes:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal_id defines the unique id of the proposal.\n                    voter:\n                      type: string\n                      description: voter is the voter address of the proposal.\n                    option:\n                      description: >-\n                        Deprecated: Prefer to use `options` instead. This field\n                        is set in queries\n\n                        if and only if `len(options) == 1` and that option has\n                        weight 1. In all\n\n                        other cases, this field will default to\n                        VOTE_OPTION_UNSPECIFIED.\n                      type: string\n                      enum:\n                        - VOTE_OPTION_UNSPECIFIED\n                        - VOTE_OPTION_YES\n                        - VOTE_OPTION_ABSTAIN\n                        - VOTE_OPTION_NO\n                        - VOTE_OPTION_NO_WITH_VETO\n                      default: VOTE_OPTION_UNSPECIFIED\n                    options:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          option:\n                            description: >-\n                              option defines the valid vote options, it must not\n                              contain duplicate vote options.\n                            type: string\n                            enum:\n                              - VOTE_OPTION_UNSPECIFIED\n                              - VOTE_OPTION_YES\n                              - VOTE_OPTION_ABSTAIN\n                              - VOTE_OPTION_NO\n                              - VOTE_OPTION_NO_WITH_VETO\n                            default: VOTE_OPTION_UNSPECIFIED\n                          weight:\n                            type: string\n                            description: >-\n                              weight is the vote weight associated with the vote\n                              option.\n                        description: >-\n                          WeightedVoteOption defines a unit of vote for vote\n                          split.\n\n\n                          Since: cosmos-sdk 0.43\n                      description: |-\n                        options is the weighted vote options.\n\n                        Since: cosmos-sdk 0.43\n                  description: >-\n                    Vote defines a vote on a governance proposal.\n\n                    A Vote consists of a proposal ID, the voter, and the vote\n                    option.\n                description: votes defines the queried votes.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryVotesResponse is the response type for the Query/Votes RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}:\n    get:\n      summary: Vote queries voted information based on proposalID, voterAddr.\n      operationId: CosmosGovV1Beta1Query_Vote\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              vote:\n                description: vote defines the queried vote.\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal_id defines the unique id of the proposal.\n                  voter:\n                    type: string\n                    description: voter is the voter address of the proposal.\n                  option:\n                    description: >-\n                      Deprecated: Prefer to use `options` instead. This field is\n                      set in queries\n\n                      if and only if `len(options) == 1` and that option has\n                      weight 1. In all\n\n                      other cases, this field will default to\n                      VOTE_OPTION_UNSPECIFIED.\n                    type: string\n                    enum:\n                      - VOTE_OPTION_UNSPECIFIED\n                      - VOTE_OPTION_YES\n                      - VOTE_OPTION_ABSTAIN\n                      - VOTE_OPTION_NO\n                      - VOTE_OPTION_NO_WITH_VETO\n                    default: VOTE_OPTION_UNSPECIFIED\n                  options:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        option:\n                          description: >-\n                            option defines the valid vote options, it must not\n                            contain duplicate vote options.\n                          type: string\n                          enum:\n                            - VOTE_OPTION_UNSPECIFIED\n                            - VOTE_OPTION_YES\n                            - VOTE_OPTION_ABSTAIN\n                            - VOTE_OPTION_NO\n                            - VOTE_OPTION_NO_WITH_VETO\n                          default: VOTE_OPTION_UNSPECIFIED\n                        weight:\n                          type: string\n                          description: >-\n                            weight is the vote weight associated with the vote\n                            option.\n                      description: >-\n                        WeightedVoteOption defines a unit of vote for vote\n                        split.\n\n\n                        Since: cosmos-sdk 0.43\n                    description: |-\n                      options is the weighted vote options.\n\n                      Since: cosmos-sdk 0.43\n            description: >-\n              QueryVoteResponse is the response type for the Query/Vote RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id defines the unique id of the proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: voter\n          description: voter defines the voter address for the proposals.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos.group.v1.Msg/CreateGroup:\n    post:\n      summary: >-\n        CreateGroup creates a new group with an admin account address, a list of\n        members and some optional metadata.\n      operationId: CosmosGroupV1Msg_CreateGroup\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the newly created group.\n            description: MsgCreateGroupResponse is the Msg/CreateGroup response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgCreateGroup is the Msg/CreateGroup request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              members:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: address is the member's account address.\n                    weight:\n                      type: string\n                      description: >-\n                        weight is the member's voting weight that should be\n                        greater than 0.\n                    metadata:\n                      type: string\n                      description: >-\n                        metadata is any arbitrary metadata attached to the\n                        member.\n                  description: >-\n                    MemberRequest represents a group member to be used in Msg\n                    server requests.\n\n                    Contrary to `Member`, it doesn't have any `added_at` field\n\n                    since this field cannot be set as part of requests.\n                description: members defines the group members.\n              metadata:\n                type: string\n                description: metadata is any arbitrary metadata to attached to the group.\n            description: MsgCreateGroup is the Msg/CreateGroup request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/CreateGroupPolicy:\n    post:\n      summary: CreateGroupPolicy creates a new group policy using given DecisionPolicy.\n      operationId: CosmosGroupV1Msg_CreateGroupPolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              address:\n                type: string\n                description: >-\n                  address is the account address of the newly created group\n                  policy.\n            description: >-\n              MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the group.\n              metadata:\n                type: string\n                description: >-\n                  metadata is any arbitrary metadata attached to the group\n                  policy.\n              decision_policy:\n                description: decision_policy specifies the group policy's decision policy.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/CreateGroupWithPolicy:\n    post:\n      summary: CreateGroupWithPolicy creates a new group with policy.\n      operationId: CosmosGroupV1Msg_CreateGroupWithPolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              group_id:\n                type: string\n                format: uint64\n                description: >-\n                  group_id is the unique ID of the newly created group with\n                  policy.\n              group_policy_address:\n                type: string\n                description: >-\n                  group_policy_address is the account address of the newly\n                  created group policy.\n            description: >-\n              MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request\n            type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: >-\n                  admin is the account address of the group and group policy\n                  admin.\n              members:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: address is the member's account address.\n                    weight:\n                      type: string\n                      description: >-\n                        weight is the member's voting weight that should be\n                        greater than 0.\n                    metadata:\n                      type: string\n                      description: >-\n                        metadata is any arbitrary metadata attached to the\n                        member.\n                  description: >-\n                    MemberRequest represents a group member to be used in Msg\n                    server requests.\n\n                    Contrary to `Member`, it doesn't have any `added_at` field\n\n                    since this field cannot be set as part of requests.\n                description: members defines the group members.\n              group_metadata:\n                type: string\n                description: >-\n                  group_metadata is any arbitrary metadata attached to the\n                  group.\n              group_policy_metadata:\n                type: string\n                description: >-\n                  group_policy_metadata is any arbitrary metadata attached to\n                  the group policy.\n              group_policy_as_admin:\n                type: boolean\n                description: >-\n                  group_policy_as_admin is a boolean field, if set to true, the\n                  group policy account address will be used as group\n\n                  and group policy admin.\n              decision_policy:\n                description: decision_policy specifies the group policy's decision policy.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: >-\n              MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request\n              type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/Exec:\n    post:\n      summary: Exec executes a proposal.\n      operationId: CosmosGroupV1Msg_Exec\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                description: result is the final result of the proposal execution.\n                type: string\n                enum:\n                  - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                  - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n                  - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n                  - PROPOSAL_EXECUTOR_RESULT_FAILURE\n                default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n            description: MsgExecResponse is the Msg/Exec request type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgExec is the Msg/Exec request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal is the unique ID of the proposal.\n              executor:\n                type: string\n                description: executor is the account address used to execute the proposal.\n            description: MsgExec is the Msg/Exec request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/LeaveGroup:\n    post:\n      summary: LeaveGroup allows a group member to leave the group.\n      operationId: CosmosGroupV1Msg_LeaveGroup\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgLeaveGroupResponse is the Msg/LeaveGroup response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgLeaveGroup is the Msg/LeaveGroup request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              address:\n                type: string\n                description: address is the account address of the group member.\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the group.\n            description: MsgLeaveGroup is the Msg/LeaveGroup request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/SubmitProposal:\n    post:\n      summary: SubmitProposal submits a new proposal.\n      operationId: CosmosGroupV1Msg_SubmitProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal is the unique ID of the proposal.\n            description: MsgSubmitProposalResponse is the Msg/SubmitProposal response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgSubmitProposal is the Msg/SubmitProposal request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              group_policy_address:\n                type: string\n                description: group_policy_address is the account address of group policy.\n              proposers:\n                type: array\n                items:\n                  type: string\n                description: |-\n                  proposers are the account addresses of the proposers.\n                  Proposers signatures will be counted as yes votes.\n              metadata:\n                type: string\n                description: metadata is any arbitrary metadata attached to the proposal.\n              messages:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n                description: >-\n                  messages is a list of `sdk.Msg`s that will be executed if the\n                  proposal passes.\n              exec:\n                description: |-\n                  exec defines the mode of execution of the proposal,\n                  whether it should be executed immediately on creation or not.\n                  If so, proposers signatures are considered as Yes votes.\n                type: string\n                enum:\n                  - EXEC_UNSPECIFIED\n                  - EXEC_TRY\n                default: EXEC_UNSPECIFIED\n              title:\n                type: string\n                description: |-\n                  title is the title of the proposal.\n\n                  Since: cosmos-sdk 0.47\n              summary:\n                type: string\n                description: |-\n                  summary is the summary of the proposal.\n\n                  Since: cosmos-sdk 0.47\n            description: MsgSubmitProposal is the Msg/SubmitProposal request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupAdmin:\n    post:\n      summary: >-\n        UpdateGroupAdmin updates the group admin with given group id and\n        previous admin address.\n      operationId: CosmosGroupV1Msg_UpdateGroupAdmin\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the current account address of the group admin.\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the group.\n              new_admin:\n                type: string\n                description: new_admin is the group new admin account address.\n            description: MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupMembers:\n    post:\n      summary: >-\n        UpdateGroupMembers updates the group members with given group id and\n        admin address.\n      operationId: CosmosGroupV1Msg_UpdateGroupMembers\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the group.\n              member_updates:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: address is the member's account address.\n                    weight:\n                      type: string\n                      description: >-\n                        weight is the member's voting weight that should be\n                        greater than 0.\n                    metadata:\n                      type: string\n                      description: >-\n                        metadata is any arbitrary metadata attached to the\n                        member.\n                  description: >-\n                    MemberRequest represents a group member to be used in Msg\n                    server requests.\n\n                    Contrary to `Member`, it doesn't have any `added_at` field\n\n                    since this field cannot be set as part of requests.\n                description: |-\n                  member_updates is the list of members to update,\n                  set weight to 0 to remove a member.\n            description: MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupMetadata:\n    post:\n      summary: >-\n        UpdateGroupMetadata updates the group metadata with given group id and\n        admin address.\n      operationId: CosmosGroupV1Msg_UpdateGroupMetadata\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_id:\n                type: string\n                format: uint64\n                description: group_id is the unique ID of the group.\n              metadata:\n                type: string\n                description: metadata is the updated group's metadata.\n            description: >-\n              MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request\n              type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupPolicyAdmin:\n    post:\n      summary: UpdateGroupPolicyAdmin updates a group policy admin.\n      operationId: CosmosGroupV1Msg_UpdateGroupPolicyAdmin\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupPolicyAdminResponse is the\n              Msg/UpdateGroupPolicyAdmin response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request\n            type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_policy_address:\n                type: string\n                description: >-\n                  group_policy_address is the account address of the group\n                  policy.\n              new_admin:\n                type: string\n                description: new_admin is the new group policy admin.\n            description: >-\n              MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin\n              request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy:\n    post:\n      summary: >-\n        UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy\n        to be updated.\n      operationId: CosmosGroupV1Msg_UpdateGroupPolicyDecisionPolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupPolicyDecisionPolicyResponse is the\n              Msg/UpdateGroupPolicyDecisionPolicy response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateGroupPolicyDecisionPolicy is the\n            Msg/UpdateGroupPolicyDecisionPolicy request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_policy_address:\n                type: string\n                description: group_policy_address is the account address of group policy.\n              decision_policy:\n                description: decision_policy is the updated group policy's decision policy.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n            description: >-\n              MsgUpdateGroupPolicyDecisionPolicy is the\n              Msg/UpdateGroupPolicyDecisionPolicy request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/UpdateGroupPolicyMetadata:\n    post:\n      summary: UpdateGroupPolicyMetadata updates a group policy metadata.\n      operationId: CosmosGroupV1Msg_UpdateGroupPolicyMetadata\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateGroupPolicyMetadataResponse is the\n              Msg/UpdateGroupPolicyMetadata response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata\n            request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              admin:\n                type: string\n                description: admin is the account address of the group admin.\n              group_policy_address:\n                type: string\n                description: group_policy_address is the account address of group policy.\n              metadata:\n                type: string\n                description: metadata is the group policy metadata to be updated.\n            description: >-\n              MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata\n              request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/Vote:\n    post:\n      summary: Vote allows a voter to vote on a proposal.\n      operationId: CosmosGroupV1Msg_Vote\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgVoteResponse is the Msg/Vote response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgVote is the Msg/Vote request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal is the unique ID of the proposal.\n              voter:\n                type: string\n                description: voter is the voter account address.\n              option:\n                description: option is the voter's choice on the proposal.\n                type: string\n                enum:\n                  - VOTE_OPTION_UNSPECIFIED\n                  - VOTE_OPTION_YES\n                  - VOTE_OPTION_ABSTAIN\n                  - VOTE_OPTION_NO\n                  - VOTE_OPTION_NO_WITH_VETO\n                default: VOTE_OPTION_UNSPECIFIED\n              metadata:\n                type: string\n                description: metadata is any arbitrary metadata attached to the vote.\n              exec:\n                description: |-\n                  exec defines whether the proposal should be executed\n                  immediately after voting or not.\n                type: string\n                enum:\n                  - EXEC_UNSPECIFIED\n                  - EXEC_TRY\n                default: EXEC_UNSPECIFIED\n            description: MsgVote is the Msg/Vote request type.\n      tags:\n        - Msg\n  /cosmos.group.v1.Msg/WithdrawProposal:\n    post:\n      summary: WithdrawProposal withdraws a proposal.\n      operationId: CosmosGroupV1Msg_WithdrawProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgWithdrawProposalResponse is the Msg/WithdrawProposal response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgWithdrawProposal is the Msg/WithdrawProposal request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              proposal_id:\n                type: string\n                format: uint64\n                description: proposal is the unique ID of the proposal.\n              address:\n                type: string\n                description: >-\n                  address is the admin of the group policy or one of the\n                  proposer of the proposal.\n            description: MsgWithdrawProposal is the Msg/WithdrawProposal request type.\n      tags:\n        - Msg\n  /cosmos/group/v1/group_info/{group_id}:\n    get:\n      summary: GroupInfo queries group info based on group id.\n      operationId: CosmosGroupV1Query_GroupInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              info:\n                description: info is the GroupInfo of the group.\n                type: object\n                properties:\n                  id:\n                    type: string\n                    format: uint64\n                    description: id is the unique ID of the group.\n                  admin:\n                    type: string\n                    description: admin is the account address of the group's admin.\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata to attached to the\n                      group.\n\n                      the recommended format of the metadata is to be found\n                      here:\n                      https://docs.cosmos.network/v0.47/modules/group#group-1\n                  version:\n                    type: string\n                    format: uint64\n                    title: >-\n                      version is used to track changes to a group's membership\n                      structure that\n\n                      would break existing proposals. Whenever any members\n                      weight is changed,\n\n                      or any member is added or removed this version is\n                      incremented and will\n\n                      cause proposals based on older versions of this group to\n                      fail\n                  total_weight:\n                    type: string\n                    description: total_weight is the sum of the group members' weights.\n                  created_at:\n                    type: string\n                    format: date-time\n                    description: >-\n                      created_at is a timestamp specifying when a group was\n                      created.\n            description: QueryGroupInfoResponse is the Query/GroupInfo response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: group_id\n          description: group_id is the unique ID of the group.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/group/v1/group_members/{group_id}:\n    get:\n      summary: GroupMembers queries members of a group by group id.\n      operationId: CosmosGroupV1Query_GroupMembers\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              members:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    group_id:\n                      type: string\n                      format: uint64\n                      description: group_id is the unique ID of the group.\n                    member:\n                      description: member is the member data.\n                      type: object\n                      properties:\n                        address:\n                          type: string\n                          description: address is the member's account address.\n                        weight:\n                          type: string\n                          description: >-\n                            weight is the member's voting weight that should be\n                            greater than 0.\n                        metadata:\n                          type: string\n                          description: >-\n                            metadata is any arbitrary metadata attached to the\n                            member.\n                        added_at:\n                          type: string\n                          format: date-time\n                          description: >-\n                            added_at is a timestamp specifying when a member was\n                            added.\n                  description: >-\n                    GroupMember represents the relationship between a group and\n                    a member.\n                description: members are the members of the group with given group_id.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGroupMembersResponse is the Query/GroupMembersResponse\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: group_id\n          description: group_id is the unique ID of the group.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/group_policies_by_admin/{admin}:\n    get:\n      summary: GroupPoliciesByAdmin queries group policies by admin address.\n      operationId: CosmosGroupV1Query_GroupPoliciesByAdmin\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              group_policies:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: address is the account address of group policy.\n                    group_id:\n                      type: string\n                      format: uint64\n                      description: group_id is the unique ID of the group.\n                    admin:\n                      type: string\n                      description: admin is the account address of the group admin.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the group\n                        policy.\n\n                        the recommended format of the metadata is to be found\n                        here:\n\n                        https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n                    version:\n                      type: string\n                      format: uint64\n                      description: >-\n                        version is used to track changes to a group's\n                        GroupPolicyInfo structure that\n\n                        would create a different result on a running proposal.\n                    decision_policy:\n                      description: >-\n                        decision_policy specifies the group policy's decision\n                        policy.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                    created_at:\n                      type: string\n                      format: date-time\n                      description: >-\n                        created_at is a timestamp specifying when a group policy\n                        was created.\n                  description: >-\n                    GroupPolicyInfo represents the high-level on-chain\n                    information for a group policy.\n                description: >-\n                  group_policies are the group policies info with provided\n                  admin.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGroupPoliciesByAdminResponse is the\n              Query/GroupPoliciesByAdmin response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: admin\n          description: admin is the admin address of the group policy.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/group_policies_by_group/{group_id}:\n    get:\n      summary: GroupPoliciesByGroup queries group policies by group id.\n      operationId: CosmosGroupV1Query_GroupPoliciesByGroup\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              group_policies:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      description: address is the account address of group policy.\n                    group_id:\n                      type: string\n                      format: uint64\n                      description: group_id is the unique ID of the group.\n                    admin:\n                      type: string\n                      description: admin is the account address of the group admin.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the group\n                        policy.\n\n                        the recommended format of the metadata is to be found\n                        here:\n\n                        https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n                    version:\n                      type: string\n                      format: uint64\n                      description: >-\n                        version is used to track changes to a group's\n                        GroupPolicyInfo structure that\n\n                        would create a different result on a running proposal.\n                    decision_policy:\n                      description: >-\n                        decision_policy specifies the group policy's decision\n                        policy.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                    created_at:\n                      type: string\n                      format: date-time\n                      description: >-\n                        created_at is a timestamp specifying when a group policy\n                        was created.\n                  description: >-\n                    GroupPolicyInfo represents the high-level on-chain\n                    information for a group policy.\n                description: >-\n                  group_policies are the group policies info associated with the\n                  provided group.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGroupPoliciesByGroupResponse is the\n              Query/GroupPoliciesByGroup response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: group_id\n          description: group_id is the unique ID of the group policy's group.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/group_policy_info/{address}:\n    get:\n      summary: >-\n        GroupPolicyInfo queries group policy info based on account address of\n        group policy.\n      operationId: CosmosGroupV1Query_GroupPolicyInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              info:\n                description: info is the GroupPolicyInfo of the group policy.\n                type: object\n                properties:\n                  address:\n                    type: string\n                    description: address is the account address of group policy.\n                  group_id:\n                    type: string\n                    format: uint64\n                    description: group_id is the unique ID of the group.\n                  admin:\n                    type: string\n                    description: admin is the account address of the group admin.\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata attached to the group\n                      policy.\n\n                      the recommended format of the metadata is to be found\n                      here:\n\n                      https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n                  version:\n                    type: string\n                    format: uint64\n                    description: >-\n                      version is used to track changes to a group's\n                      GroupPolicyInfo structure that\n\n                      would create a different result on a running proposal.\n                  decision_policy:\n                    description: >-\n                      decision_policy specifies the group policy's decision\n                      policy.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                  created_at:\n                    type: string\n                    format: date-time\n                    description: >-\n                      created_at is a timestamp specifying when a group policy\n                      was created.\n            description: >-\n              QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address\n          description: address is the account address of the group policy.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/group/v1/groups:\n    get:\n      summary: Groups queries all groups in state.\n      description: 'Since: cosmos-sdk 0.47.1'\n      operationId: CosmosGroupV1Query_Groups\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              groups:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      format: uint64\n                      description: id is the unique ID of the group.\n                    admin:\n                      type: string\n                      description: admin is the account address of the group's admin.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata to attached to the\n                        group.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/group#group-1\n                    version:\n                      type: string\n                      format: uint64\n                      title: >-\n                        version is used to track changes to a group's membership\n                        structure that\n\n                        would break existing proposals. Whenever any members\n                        weight is changed,\n\n                        or any member is added or removed this version is\n                        incremented and will\n\n                        cause proposals based on older versions of this group to\n                        fail\n                    total_weight:\n                      type: string\n                      description: total_weight is the sum of the group members' weights.\n                    created_at:\n                      type: string\n                      format: date-time\n                      description: >-\n                        created_at is a timestamp specifying when a group was\n                        created.\n                  description: >-\n                    GroupInfo represents the high-level on-chain information for\n                    a group.\n                description: '`groups` is all the groups present in state.'\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: |-\n              QueryGroupsResponse is the Query/Groups response type.\n\n              Since: cosmos-sdk 0.47.1\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/groups_by_admin/{admin}:\n    get:\n      summary: GroupsByAdmin queries groups by admin address.\n      operationId: CosmosGroupV1Query_GroupsByAdmin\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              groups:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      format: uint64\n                      description: id is the unique ID of the group.\n                    admin:\n                      type: string\n                      description: admin is the account address of the group's admin.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata to attached to the\n                        group.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/group#group-1\n                    version:\n                      type: string\n                      format: uint64\n                      title: >-\n                        version is used to track changes to a group's membership\n                        structure that\n\n                        would break existing proposals. Whenever any members\n                        weight is changed,\n\n                        or any member is added or removed this version is\n                        incremented and will\n\n                        cause proposals based on older versions of this group to\n                        fail\n                    total_weight:\n                      type: string\n                      description: total_weight is the sum of the group members' weights.\n                    created_at:\n                      type: string\n                      format: date-time\n                      description: >-\n                        created_at is a timestamp specifying when a group was\n                        created.\n                  description: >-\n                    GroupInfo represents the high-level on-chain information for\n                    a group.\n                description: groups are the groups info with the provided admin.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: admin\n          description: admin is the account address of a group's admin.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/groups_by_member/{address}:\n    get:\n      summary: GroupsByMember queries groups by member address.\n      operationId: CosmosGroupV1Query_GroupsByMember\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              groups:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      format: uint64\n                      description: id is the unique ID of the group.\n                    admin:\n                      type: string\n                      description: admin is the account address of the group's admin.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata to attached to the\n                        group.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/group#group-1\n                    version:\n                      type: string\n                      format: uint64\n                      title: >-\n                        version is used to track changes to a group's membership\n                        structure that\n\n                        would break existing proposals. Whenever any members\n                        weight is changed,\n\n                        or any member is added or removed this version is\n                        incremented and will\n\n                        cause proposals based on older versions of this group to\n                        fail\n                    total_weight:\n                      type: string\n                      description: total_weight is the sum of the group members' weights.\n                    created_at:\n                      type: string\n                      format: date-time\n                      description: >-\n                        created_at is a timestamp specifying when a group was\n                        created.\n                  description: >-\n                    GroupInfo represents the high-level on-chain information for\n                    a group.\n                description: groups are the groups info with the provided group member.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryGroupsByMemberResponse is the Query/GroupsByMember response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address\n          description: address is the group member address.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/proposal/{proposal_id}:\n    get:\n      summary: Proposal queries a proposal based on proposal id.\n      operationId: CosmosGroupV1Query_Proposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposal:\n                description: proposal is the proposal info.\n                type: object\n                properties:\n                  id:\n                    type: string\n                    format: uint64\n                    description: id is the unique id of the proposal.\n                  group_policy_address:\n                    type: string\n                    description: >-\n                      group_policy_address is the account address of group\n                      policy.\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata attached to the\n                      proposal.\n\n                      the recommended format of the metadata is to be found\n                      here:\n\n                      https://docs.cosmos.network/v0.47/modules/group#proposal-4\n                  proposers:\n                    type: array\n                    items:\n                      type: string\n                    description: proposers are the account addresses of the proposers.\n                  submit_time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      submit_time is a timestamp specifying when a proposal was\n                      submitted.\n                  group_version:\n                    type: string\n                    format: uint64\n                    description: >-\n                      group_version tracks the version of the group at proposal\n                      submission.\n\n                      This field is here for informational purposes only.\n                  group_policy_version:\n                    type: string\n                    format: uint64\n                    description: >-\n                      group_policy_version tracks the version of the group\n                      policy at proposal submission.\n\n                      When a decision policy is changed, existing proposals from\n                      previous policy\n\n                      versions will become invalid with the `ABORTED` status.\n\n                      This field is here for informational purposes only.\n                  status:\n                    description: >-\n                      status represents the high level position in the life\n                      cycle of the proposal. Initial value is Submitted.\n                    type: string\n                    enum:\n                      - PROPOSAL_STATUS_UNSPECIFIED\n                      - PROPOSAL_STATUS_SUBMITTED\n                      - PROPOSAL_STATUS_ACCEPTED\n                      - PROPOSAL_STATUS_REJECTED\n                      - PROPOSAL_STATUS_ABORTED\n                      - PROPOSAL_STATUS_WITHDRAWN\n                    default: PROPOSAL_STATUS_UNSPECIFIED\n                  final_tally_result:\n                    description: >-\n                      final_tally_result contains the sums of all weighted votes\n                      for this\n\n                      proposal for each vote option. It is empty at submission,\n                      and only\n\n                      populated after tallying, at voting period end or at\n                      proposal execution,\n\n                      whichever happens first.\n                    type: object\n                    properties:\n                      yes_count:\n                        type: string\n                        description: yes_count is the weighted sum of yes votes.\n                      abstain_count:\n                        type: string\n                        description: abstain_count is the weighted sum of abstainers.\n                      no_count:\n                        type: string\n                        description: no_count is the weighted sum of no votes.\n                      no_with_veto_count:\n                        type: string\n                        description: no_with_veto_count is the weighted sum of veto.\n                  voting_period_end:\n                    type: string\n                    format: date-time\n                    description: >-\n                      voting_period_end is the timestamp before which voting\n                      must be done.\n\n                      Unless a successful MsgExec is called before (to execute a\n                      proposal whose\n\n                      tally is successful before the voting period ends),\n                      tallying will be done\n\n                      at this point, and the `final_tally_result`and `status`\n                      fields will be\n\n                      accordingly updated.\n                  executor_result:\n                    description: >-\n                      executor_result is the final result of the proposal\n                      execution. Initial value is NotRun.\n                    type: string\n                    enum:\n                      - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                      - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n                      - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n                      - PROPOSAL_EXECUTOR_RESULT_FAILURE\n                    default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                  messages:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    description: >-\n                      messages is a list of `sdk.Msg`s that will be executed if\n                      the proposal passes.\n                  title:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.47'\n                    title: title is the title of the proposal\n                  summary:\n                    type: string\n                    description: 'Since: cosmos-sdk 0.47'\n                    title: summary is a short summary of the proposal\n            description: QueryProposalResponse is the Query/Proposal response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id is the unique ID of a proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/group/v1/proposals/{proposal_id}/tally:\n    get:\n      summary: >-\n        TallyResult returns the tally result of a proposal. If the proposal is\n\n        still in voting period, then this query computes the current tally\n        state,\n\n        which might not be final. On the other hand, if the proposal is final,\n\n        then it simply returns the `final_tally_result` state stored in the\n\n        proposal itself.\n      operationId: CosmosGroupV1Query_TallyResult\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              tally:\n                description: tally defines the requested tally.\n                type: object\n                properties:\n                  yes_count:\n                    type: string\n                    description: yes_count is the weighted sum of yes votes.\n                  abstain_count:\n                    type: string\n                    description: abstain_count is the weighted sum of abstainers.\n                  no_count:\n                    type: string\n                    description: no_count is the weighted sum of no votes.\n                  no_with_veto_count:\n                    type: string\n                    description: no_with_veto_count is the weighted sum of veto.\n            description: QueryTallyResultResponse is the Query/TallyResult response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id is the unique id of a proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /cosmos/group/v1/proposals_by_group_policy/{address}:\n    get:\n      summary: >-\n        ProposalsByGroupPolicy queries proposals based on account address of\n        group policy.\n      operationId: CosmosGroupV1Query_ProposalsByGroupPolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              proposals:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      format: uint64\n                      description: id is the unique id of the proposal.\n                    group_policy_address:\n                      type: string\n                      description: >-\n                        group_policy_address is the account address of group\n                        policy.\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the\n                        proposal.\n\n                        the recommended format of the metadata is to be found\n                        here:\n\n                        https://docs.cosmos.network/v0.47/modules/group#proposal-4\n                    proposers:\n                      type: array\n                      items:\n                        type: string\n                      description: proposers are the account addresses of the proposers.\n                    submit_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        submit_time is a timestamp specifying when a proposal\n                        was submitted.\n                    group_version:\n                      type: string\n                      format: uint64\n                      description: >-\n                        group_version tracks the version of the group at\n                        proposal submission.\n\n                        This field is here for informational purposes only.\n                    group_policy_version:\n                      type: string\n                      format: uint64\n                      description: >-\n                        group_policy_version tracks the version of the group\n                        policy at proposal submission.\n\n                        When a decision policy is changed, existing proposals\n                        from previous policy\n\n                        versions will become invalid with the `ABORTED` status.\n\n                        This field is here for informational purposes only.\n                    status:\n                      description: >-\n                        status represents the high level position in the life\n                        cycle of the proposal. Initial value is Submitted.\n                      type: string\n                      enum:\n                        - PROPOSAL_STATUS_UNSPECIFIED\n                        - PROPOSAL_STATUS_SUBMITTED\n                        - PROPOSAL_STATUS_ACCEPTED\n                        - PROPOSAL_STATUS_REJECTED\n                        - PROPOSAL_STATUS_ABORTED\n                        - PROPOSAL_STATUS_WITHDRAWN\n                      default: PROPOSAL_STATUS_UNSPECIFIED\n                    final_tally_result:\n                      description: >-\n                        final_tally_result contains the sums of all weighted\n                        votes for this\n\n                        proposal for each vote option. It is empty at\n                        submission, and only\n\n                        populated after tallying, at voting period end or at\n                        proposal execution,\n\n                        whichever happens first.\n                      type: object\n                      properties:\n                        yes_count:\n                          type: string\n                          description: yes_count is the weighted sum of yes votes.\n                        abstain_count:\n                          type: string\n                          description: abstain_count is the weighted sum of abstainers.\n                        no_count:\n                          type: string\n                          description: no_count is the weighted sum of no votes.\n                        no_with_veto_count:\n                          type: string\n                          description: no_with_veto_count is the weighted sum of veto.\n                    voting_period_end:\n                      type: string\n                      format: date-time\n                      description: >-\n                        voting_period_end is the timestamp before which voting\n                        must be done.\n\n                        Unless a successful MsgExec is called before (to execute\n                        a proposal whose\n\n                        tally is successful before the voting period ends),\n                        tallying will be done\n\n                        at this point, and the `final_tally_result`and `status`\n                        fields will be\n\n                        accordingly updated.\n                    executor_result:\n                      description: >-\n                        executor_result is the final result of the proposal\n                        execution. Initial value is NotRun.\n                      type: string\n                      enum:\n                        - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                        - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n                        - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n                        - PROPOSAL_EXECUTOR_RESULT_FAILURE\n                      default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                    messages:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          '@type':\n                            type: string\n                            description: >-\n                              A URL/resource name that uniquely identifies the\n                              type of the serialized\n\n                              protocol buffer message. This string must contain\n                              at least\n\n                              one \"/\" character. The last segment of the URL's\n                              path must represent\n\n                              the fully qualified name of the type (as in\n\n                              `path/google.protobuf.Duration`). The name should\n                              be in a canonical form\n\n                              (e.g., leading \".\" is not accepted).\n\n\n                              In practice, teams usually precompile into the\n                              binary all types that they\n\n                              expect it to use in the context of Any. However,\n                              for URLs which use the\n\n                              scheme `http`, `https`, or no scheme, one can\n                              optionally set up a type\n\n                              server that maps type URLs to message definitions\n                              as follows:\n\n\n                              * If no scheme is provided, `https` is assumed.\n\n                              * An HTTP GET on the URL must yield a\n                              [google.protobuf.Type][]\n                                value in binary format, or produce an error.\n                              * Applications are allowed to cache lookup results\n                              based on the\n                                URL, or have them precompiled into a binary to avoid any\n                                lookup. Therefore, binary compatibility needs to be preserved\n                                on changes to types. (Use versioned type names to manage\n                                breaking changes.)\n\n                              Note: this functionality is not currently\n                              available in the official\n\n                              protobuf release, and it is not used for type URLs\n                              beginning with\n\n                              type.googleapis.com.\n\n\n                              Schemes other than `http`, `https` (or the empty\n                              scheme) might be\n\n                              used with implementation specific semantics.\n                        additionalProperties: {}\n                        description: >-\n                          `Any` contains an arbitrary serialized protocol buffer\n                          message along with a\n\n                          URL that describes the type of the serialized message.\n\n\n                          Protobuf library provides support to pack/unpack Any\n                          values in the form\n\n                          of utility functions or additional generated methods\n                          of the Any type.\n\n\n                          Example 1: Pack and unpack a message in C++.\n\n                              Foo foo = ...;\n                              Any any;\n                              any.PackFrom(foo);\n                              ...\n                              if (any.UnpackTo(&foo)) {\n                                ...\n                              }\n\n                          Example 2: Pack and unpack a message in Java.\n\n                              Foo foo = ...;\n                              Any any = Any.pack(foo);\n                              ...\n                              if (any.is(Foo.class)) {\n                                foo = any.unpack(Foo.class);\n                              }\n                              // or ...\n                              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                                foo = any.unpack(Foo.getDefaultInstance());\n                              }\n\n                          Example 3: Pack and unpack a message in Python.\n\n                              foo = Foo(...)\n                              any = Any()\n                              any.Pack(foo)\n                              ...\n                              if any.Is(Foo.DESCRIPTOR):\n                                any.Unpack(foo)\n                                ...\n\n                          Example 4: Pack and unpack a message in Go\n\n                               foo := &pb.Foo{...}\n                               any, err := anypb.New(foo)\n                               if err != nil {\n                                 ...\n                               }\n                               ...\n                               foo := &pb.Foo{}\n                               if err := any.UnmarshalTo(foo); err != nil {\n                                 ...\n                               }\n\n                          The pack methods provided by protobuf library will by\n                          default use\n\n                          'type.googleapis.com/full.type.name' as the type URL\n                          and the unpack\n\n                          methods only use the fully qualified type name after\n                          the last '/'\n\n                          in the type URL, for example \"foo.bar.com/x/y.z\" will\n                          yield type\n\n                          name \"y.z\".\n\n\n                          JSON\n\n\n                          The JSON representation of an `Any` value uses the\n                          regular\n\n                          representation of the deserialized, embedded message,\n                          with an\n\n                          additional field `@type` which contains the type URL.\n                          Example:\n\n                              package google.profile;\n                              message Person {\n                                string first_name = 1;\n                                string last_name = 2;\n                              }\n\n                              {\n                                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                                \"firstName\": <string>,\n                                \"lastName\": <string>\n                              }\n\n                          If the embedded message type is well-known and has a\n                          custom JSON\n\n                          representation, that representation will be embedded\n                          adding a field\n\n                          `value` which holds the custom JSON in addition to the\n                          `@type`\n\n                          field. Example (for message\n                          [google.protobuf.Duration][]):\n\n                              {\n                                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                                \"value\": \"1.212s\"\n                              }\n                      description: >-\n                        messages is a list of `sdk.Msg`s that will be executed\n                        if the proposal passes.\n                    title:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.47'\n                      title: title is the title of the proposal\n                    summary:\n                      type: string\n                      description: 'Since: cosmos-sdk 0.47'\n                      title: summary is a short summary of the proposal\n                  description: >-\n                    Proposal defines a group proposal. Any member of a group can\n                    submit a proposal\n\n                    for a group policy to decide upon.\n\n                    A proposal consists of a set of `sdk.Msg`s that will be\n                    executed if the proposal\n\n                    passes as well as some optional metadata associated with the\n                    proposal.\n                description: proposals are the proposals with given group policy.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryProposalsByGroupPolicyResponse is the\n              Query/ProposalByGroupPolicy response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: address\n          description: >-\n            address is the account address of the group policy related to\n            proposals.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}:\n    get:\n      summary: VoteByProposalVoter queries a vote by proposal id and voter.\n      operationId: CosmosGroupV1Query_VoteByProposalVoter\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              vote:\n                description: vote is the vote with given proposal_id and voter.\n                type: object\n                properties:\n                  proposal_id:\n                    type: string\n                    format: uint64\n                    description: proposal is the unique ID of the proposal.\n                  voter:\n                    type: string\n                    description: voter is the account address of the voter.\n                  option:\n                    description: option is the voter's choice on the proposal.\n                    type: string\n                    enum:\n                      - VOTE_OPTION_UNSPECIFIED\n                      - VOTE_OPTION_YES\n                      - VOTE_OPTION_ABSTAIN\n                      - VOTE_OPTION_NO\n                      - VOTE_OPTION_NO_WITH_VETO\n                    default: VOTE_OPTION_UNSPECIFIED\n                  metadata:\n                    type: string\n                    title: >-\n                      metadata is any arbitrary metadata attached to the vote.\n\n                      the recommended format of the metadata is to be found\n                      here:\n                      https://docs.cosmos.network/v0.47/modules/group#vote-2\n                  submit_time:\n                    type: string\n                    format: date-time\n                    description: submit_time is the timestamp when the vote was submitted.\n                title: Vote represents a vote for a proposal.string metadata\n            description: >-\n              QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id is the unique ID of a proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: voter\n          description: voter is a proposal voter account address.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/group/v1/votes_by_proposal/{proposal_id}:\n    get:\n      summary: VotesByProposal queries a vote by proposal id.\n      operationId: CosmosGroupV1Query_VotesByProposal\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              votes:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal is the unique ID of the proposal.\n                    voter:\n                      type: string\n                      description: voter is the account address of the voter.\n                    option:\n                      description: option is the voter's choice on the proposal.\n                      type: string\n                      enum:\n                        - VOTE_OPTION_UNSPECIFIED\n                        - VOTE_OPTION_YES\n                        - VOTE_OPTION_ABSTAIN\n                        - VOTE_OPTION_NO\n                        - VOTE_OPTION_NO_WITH_VETO\n                      default: VOTE_OPTION_UNSPECIFIED\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the vote.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/group#vote-2\n                    submit_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        submit_time is the timestamp when the vote was\n                        submitted.\n                  title: Vote represents a vote for a proposal.string metadata\n                description: votes are the list of votes for given proposal_id.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryVotesByProposalResponse is the Query/VotesByProposal response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: proposal_id\n          description: proposal_id is the unique ID of a proposal.\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/group/v1/votes_by_voter/{voter}:\n    get:\n      summary: VotesByVoter queries a vote by voter.\n      operationId: CosmosGroupV1Query_VotesByVoter\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              votes:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    proposal_id:\n                      type: string\n                      format: uint64\n                      description: proposal is the unique ID of the proposal.\n                    voter:\n                      type: string\n                      description: voter is the account address of the voter.\n                    option:\n                      description: option is the voter's choice on the proposal.\n                      type: string\n                      enum:\n                        - VOTE_OPTION_UNSPECIFIED\n                        - VOTE_OPTION_YES\n                        - VOTE_OPTION_ABSTAIN\n                        - VOTE_OPTION_NO\n                        - VOTE_OPTION_NO_WITH_VETO\n                      default: VOTE_OPTION_UNSPECIFIED\n                    metadata:\n                      type: string\n                      title: >-\n                        metadata is any arbitrary metadata attached to the vote.\n\n                        the recommended format of the metadata is to be found\n                        here:\n                        https://docs.cosmos.network/v0.47/modules/group#vote-2\n                    submit_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        submit_time is the timestamp when the vote was\n                        submitted.\n                  title: Vote represents a vote for a proposal.string metadata\n                description: votes are the list of votes by given voter.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: QueryVotesByVoterResponse is the Query/VotesByVoter response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: voter\n          description: voter is a proposal voter account address.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos.mint.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/mint\n        module\n\n        parameters. The authority is defaults to the x/gov module account.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosMintV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/mint parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  mint_denom:\n                    type: string\n                    title: type of coin to mint\n                  inflation_rate_change:\n                    type: string\n                    title: maximum annual change in inflation rate\n                  inflation_max:\n                    type: string\n                    title: maximum inflation rate\n                  inflation_min:\n                    type: string\n                    title: minimum inflation rate\n                  goal_bonded:\n                    type: string\n                    title: goal of percent bonded atoms\n                  blocks_per_year:\n                    type: string\n                    format: uint64\n                    title: expected blocks per year\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos/mint/v1beta1/annual_provisions:\n    get:\n      summary: AnnualProvisions current minting annual provisions value.\n      operationId: CosmosMintV1Beta1Query_AnnualProvisions\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              annual_provisions:\n                type: string\n                format: byte\n                description: >-\n                  annual_provisions is the current minting annual provisions\n                  value.\n            description: |-\n              QueryAnnualProvisionsResponse is the response type for the\n              Query/AnnualProvisions RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/mint/v1beta1/inflation:\n    get:\n      summary: Inflation returns the current minting inflation value.\n      operationId: CosmosMintV1Beta1Query_Inflation\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              inflation:\n                type: string\n                format: byte\n                description: inflation is the current minting inflation value.\n            description: >-\n              QueryInflationResponse is the response type for the\n              Query/Inflation RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/mint/v1beta1/params:\n    get:\n      summary: Params returns the total set of minting parameters.\n      operationId: CosmosMintV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  mint_denom:\n                    type: string\n                    title: type of coin to mint\n                  inflation_rate_change:\n                    type: string\n                    title: maximum annual change in inflation rate\n                  inflation_max:\n                    type: string\n                    title: maximum inflation rate\n                  inflation_min:\n                    type: string\n                    title: minimum inflation rate\n                  goal_bonded:\n                    type: string\n                    title: goal of percent bonded atoms\n                  blocks_per_year:\n                    type: string\n                    format: uint64\n                    title: expected blocks per year\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/params/v1beta1/params:\n    get:\n      summary: |-\n        Params queries a specific parameter of a module, given its subspace and\n        key.\n      operationId: CosmosParamsV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              param:\n                description: param defines the queried parameter.\n                type: object\n                properties:\n                  subspace:\n                    type: string\n                  key:\n                    type: string\n                  value:\n                    type: string\n            description: >-\n              QueryParamsResponse is response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: subspace\n          description: subspace defines the module to query the parameter for.\n          in: query\n          required: false\n          type: string\n        - name: key\n          description: key defines the key of the parameter in the subspace.\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/params/v1beta1/subspaces:\n    get:\n      summary: >-\n        Subspaces queries for all registered subspaces and all keys for a\n        subspace.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosParamsV1Beta1Query_Subspaces\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              subspaces:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    subspace:\n                      type: string\n                    keys:\n                      type: array\n                      items:\n                        type: string\n                  description: >-\n                    Subspace defines a parameter subspace name and all the keys\n                    that exist for\n\n                    the subspace.\n\n\n                    Since: cosmos-sdk 0.46\n            description: >-\n              QuerySubspacesResponse defines the response types for querying for\n              all\n\n              registered subspaces and all keys for a subspace.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos.slashing.v1beta1.Msg/Unjail:\n    post:\n      summary: >-\n        Unjail defines a method for unjailing a jailed validator, thus returning\n\n        them into the bonded validator set, so they can begin receiving\n        provisions\n\n        and rewards again.\n      operationId: CosmosSlashingV1Beta1Msg_Unjail\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: MsgUnjailResponse defines the Msg/Unjail response type\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              validator_addr:\n                type: string\n            title: MsgUnjail defines the Msg/Unjail request type\n      tags:\n        - Msg\n  /cosmos.slashing.v1beta1.Msg/UpdateParams:\n    post:\n      summary: >-\n        UpdateParams defines a governance operation for updating the x/slashing\n        module\n\n        parameters. The authority defaults to the x/gov module account.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosSlashingV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/slashing parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  signed_blocks_window:\n                    type: string\n                    format: int64\n                  min_signed_per_window:\n                    type: string\n                    format: byte\n                  downtime_jail_duration:\n                    type: string\n                  slash_fraction_double_sign:\n                    type: string\n                    format: byte\n                  slash_fraction_downtime:\n                    type: string\n                    format: byte\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos/slashing/v1beta1/params:\n    get:\n      summary: Params queries the parameters of slashing module\n      operationId: CosmosSlashingV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                type: object\n                properties:\n                  signed_blocks_window:\n                    type: string\n                    format: int64\n                  min_signed_per_window:\n                    type: string\n                    format: byte\n                  downtime_jail_duration:\n                    type: string\n                  slash_fraction_double_sign:\n                    type: string\n                    format: byte\n                  slash_fraction_downtime:\n                    type: string\n                    format: byte\n                description: >-\n                  Params represents the parameters used for by the slashing\n                  module.\n            title: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /cosmos/slashing/v1beta1/signing_infos:\n    get:\n      summary: SigningInfos queries signing info of all validators\n      operationId: CosmosSlashingV1Beta1Query_SigningInfos\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              info:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                    start_height:\n                      type: string\n                      format: int64\n                      title: >-\n                        Height at which validator was first a candidate OR was\n                        un-jailed\n                    index_offset:\n                      type: string\n                      format: int64\n                      description: >-\n                        Index which is incremented every time a validator is\n                        bonded in a block and\n\n                        _may_ have signed a pre-commit or not. This in\n                        conjunction with the\n\n                        signed_blocks_window param determines the index in the\n                        missed block bitmap.\n                    jailed_until:\n                      type: string\n                      format: date-time\n                      description: >-\n                        Timestamp until which the validator is jailed due to\n                        liveness downtime.\n                    tombstoned:\n                      type: boolean\n                      description: >-\n                        Whether or not a validator has been tombstoned (killed\n                        out of validator\n\n                        set). It is set once the validator commits an\n                        equivocation or for any other\n\n                        configured misbehavior.\n                    missed_blocks_counter:\n                      type: string\n                      format: int64\n                      description: >-\n                        A counter of missed (unsigned) blocks. It is used to\n                        avoid unnecessary\n\n                        reads in the missed block bitmap.\n                  description: >-\n                    ValidatorSigningInfo defines a validator's signing info for\n                    monitoring their\n\n                    liveness activity.\n                title: info is the signing info of all validators\n              pagination:\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n            title: >-\n              QuerySigningInfosResponse is the response type for the\n              Query/SigningInfos RPC\n\n              method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/slashing/v1beta1/signing_infos/{cons_address}:\n    get:\n      summary: SigningInfo queries the signing info of given cons address\n      operationId: CosmosSlashingV1Beta1Query_SigningInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              val_signing_info:\n                title: >-\n                  val_signing_info is the signing info of requested val cons\n                  address\n                type: object\n                properties:\n                  address:\n                    type: string\n                  start_height:\n                    type: string\n                    format: int64\n                    title: >-\n                      Height at which validator was first a candidate OR was\n                      un-jailed\n                  index_offset:\n                    type: string\n                    format: int64\n                    description: >-\n                      Index which is incremented every time a validator is\n                      bonded in a block and\n\n                      _may_ have signed a pre-commit or not. This in conjunction\n                      with the\n\n                      signed_blocks_window param determines the index in the\n                      missed block bitmap.\n                  jailed_until:\n                    type: string\n                    format: date-time\n                    description: >-\n                      Timestamp until which the validator is jailed due to\n                      liveness downtime.\n                  tombstoned:\n                    type: boolean\n                    description: >-\n                      Whether or not a validator has been tombstoned (killed out\n                      of validator\n\n                      set). It is set once the validator commits an equivocation\n                      or for any other\n\n                      configured misbehavior.\n                  missed_blocks_counter:\n                    type: string\n                    format: int64\n                    description: >-\n                      A counter of missed (unsigned) blocks. It is used to avoid\n                      unnecessary\n\n                      reads in the missed block bitmap.\n                description: >-\n                  ValidatorSigningInfo defines a validator's signing info for\n                  monitoring their\n\n                  liveness activity.\n            title: >-\n              QuerySigningInfoResponse is the response type for the\n              Query/SigningInfo RPC\n\n              method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: cons_address\n          description: cons_address is the address to query signing info of\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/delegations/{delegator_addr}:\n    get:\n      summary: >-\n        DelegatorDelegations queries all delegations of a given delegator\n        address.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_DelegatorDelegations\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              delegation_responses:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    delegation:\n                      type: object\n                      properties:\n                        delegator_address:\n                          type: string\n                          description: >-\n                            delegator_address is the encoded address of the\n                            delegator.\n                        validator_address:\n                          type: string\n                          description: >-\n                            validator_address is the encoded address of the\n                            validator.\n                        shares:\n                          type: string\n                          description: shares define the delegation shares received.\n                      description: >-\n                        Delegation represents the bond with tokens held by an\n                        account. It is\n\n                        owned by one delegator, and is associated with the\n                        voting power of one\n\n                        validator.\n                    balance:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                  description: >-\n                    DelegationResponse is equivalent to Delegation except that\n                    it contains a\n\n                    balance in addition to shares which is more suitable for\n                    client responses.\n                description: >-\n                  delegation_responses defines all the delegations' info of a\n                  delegator.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: |-\n              QueryDelegatorDelegationsResponse is response type for the\n              Query/DelegatorDelegations RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations:\n    get:\n      summary: Redelegations queries redelegations of given address.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_Redelegations\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              redelegation_responses:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    redelegation:\n                      type: object\n                      properties:\n                        delegator_address:\n                          type: string\n                          description: >-\n                            delegator_address is the bech32-encoded address of\n                            the delegator.\n                        validator_src_address:\n                          type: string\n                          description: >-\n                            validator_src_address is the validator redelegation\n                            source operator address.\n                        validator_dst_address:\n                          type: string\n                          description: >-\n                            validator_dst_address is the validator redelegation\n                            destination operator address.\n                        entries:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              creation_height:\n                                type: string\n                                format: int64\n                                description: >-\n                                  creation_height  defines the height which the\n                                  redelegation took place.\n                              completion_time:\n                                type: string\n                                format: date-time\n                                description: >-\n                                  completion_time defines the unix time for\n                                  redelegation completion.\n                              initial_balance:\n                                type: string\n                                description: >-\n                                  initial_balance defines the initial balance\n                                  when redelegation started.\n                              shares_dst:\n                                type: string\n                                description: >-\n                                  shares_dst is the amount of\n                                  destination-validator shares created by\n                                  redelegation.\n                              unbonding_id:\n                                type: string\n                                format: uint64\n                                title: >-\n                                  Incrementing id that uniquely identifies this\n                                  entry\n                              unbonding_on_hold_ref_count:\n                                type: string\n                                format: int64\n                                title: >-\n                                  Strictly positive if this entry's unbonding\n                                  has been stopped by external modules\n                            description: >-\n                              RedelegationEntry defines a redelegation object\n                              with relevant metadata.\n                          description: |-\n                            entries are the redelegation entries.\n\n                            redelegation entries\n                      description: >-\n                        Redelegation contains the list of a particular\n                        delegator's redelegating bonds\n\n                        from a particular source validator to a particular\n                        destination validator.\n                    entries:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          redelegation_entry:\n                            type: object\n                            properties:\n                              creation_height:\n                                type: string\n                                format: int64\n                                description: >-\n                                  creation_height  defines the height which the\n                                  redelegation took place.\n                              completion_time:\n                                type: string\n                                format: date-time\n                                description: >-\n                                  completion_time defines the unix time for\n                                  redelegation completion.\n                              initial_balance:\n                                type: string\n                                description: >-\n                                  initial_balance defines the initial balance\n                                  when redelegation started.\n                              shares_dst:\n                                type: string\n                                description: >-\n                                  shares_dst is the amount of\n                                  destination-validator shares created by\n                                  redelegation.\n                              unbonding_id:\n                                type: string\n                                format: uint64\n                                title: >-\n                                  Incrementing id that uniquely identifies this\n                                  entry\n                              unbonding_on_hold_ref_count:\n                                type: string\n                                format: int64\n                                title: >-\n                                  Strictly positive if this entry's unbonding\n                                  has been stopped by external modules\n                            description: >-\n                              RedelegationEntry defines a redelegation object\n                              with relevant metadata.\n                          balance:\n                            type: string\n                        description: >-\n                          RedelegationEntryResponse is equivalent to a\n                          RedelegationEntry except that it\n\n                          contains a balance in addition to shares which is more\n                          suitable for client\n\n                          responses.\n                  description: >-\n                    RedelegationResponse is equivalent to a Redelegation except\n                    that its entries\n\n                    contain a balance in addition to shares which is more\n                    suitable for client\n\n                    responses.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryRedelegationsResponse is response type for the\n              Query/Redelegations RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: src_validator_addr\n          description: src_validator_addr defines the validator address to redelegate from.\n          in: query\n          required: false\n          type: string\n        - name: dst_validator_addr\n          description: dst_validator_addr defines the validator address to redelegate to.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations:\n    get:\n      summary: >-\n        DelegatorUnbondingDelegations queries all unbonding delegations of a\n        given\n\n        delegator address.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_DelegatorUnbondingDelegations\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              unbonding_responses:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    delegator_address:\n                      type: string\n                      description: >-\n                        delegator_address is the encoded address of the\n                        delegator.\n                    validator_address:\n                      type: string\n                      description: >-\n                        validator_address is the encoded address of the\n                        validator.\n                    entries:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          creation_height:\n                            type: string\n                            format: int64\n                            description: >-\n                              creation_height is the height which the unbonding\n                              took place.\n                          completion_time:\n                            type: string\n                            format: date-time\n                            description: >-\n                              completion_time is the unix time for unbonding\n                              completion.\n                          initial_balance:\n                            type: string\n                            description: >-\n                              initial_balance defines the tokens initially\n                              scheduled to receive at completion.\n                          balance:\n                            type: string\n                            description: >-\n                              balance defines the tokens to receive at\n                              completion.\n                          unbonding_id:\n                            type: string\n                            format: uint64\n                            title: >-\n                              Incrementing id that uniquely identifies this\n                              entry\n                          unbonding_on_hold_ref_count:\n                            type: string\n                            format: int64\n                            title: >-\n                              Strictly positive if this entry's unbonding has\n                              been stopped by external modules\n                        description: >-\n                          UnbondingDelegationEntry defines an unbonding object\n                          with relevant metadata.\n                      description: |-\n                        entries are the unbonding delegation entries.\n\n                        unbonding delegation entries\n                  description: >-\n                    UnbondingDelegation stores all of a single delegator's\n                    unbonding bonds\n\n                    for a single validator in an time-ordered list.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryUnbondingDelegatorDelegationsResponse is response type for\n              the\n\n              Query/UnbondingDelegatorDelegations RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators:\n    get:\n      summary: |-\n        DelegatorValidators queries all validators info for given delegator\n        address.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_DelegatorValidators\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              validators:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    operator_address:\n                      type: string\n                      description: >-\n                        operator_address defines the address of the validator's\n                        operator; bech encoded in JSON.\n                    consensus_pubkey:\n                      description: >-\n                        consensus_pubkey is the consensus public key of the\n                        validator, as a Protobuf Any.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                    jailed:\n                      type: boolean\n                      description: >-\n                        jailed defined whether the validator has been jailed\n                        from bonded status or not.\n                    status:\n                      description: >-\n                        status is the validator status\n                        (bonded/unbonding/unbonded).\n                      type: string\n                      enum:\n                        - BOND_STATUS_UNSPECIFIED\n                        - BOND_STATUS_UNBONDED\n                        - BOND_STATUS_UNBONDING\n                        - BOND_STATUS_BONDED\n                      default: BOND_STATUS_UNSPECIFIED\n                    tokens:\n                      type: string\n                      description: >-\n                        tokens define the delegated tokens (incl.\n                        self-delegation).\n                    delegator_shares:\n                      type: string\n                      description: >-\n                        delegator_shares defines total shares issued to a\n                        validator's delegators.\n                    description:\n                      description: >-\n                        description defines the description terms for the\n                        validator.\n                      type: object\n                      properties:\n                        moniker:\n                          type: string\n                          description: >-\n                            moniker defines a human-readable name for the\n                            validator.\n                        identity:\n                          type: string\n                          description: >-\n                            identity defines an optional identity signature (ex.\n                            UPort or Keybase).\n                        website:\n                          type: string\n                          description: website defines an optional website link.\n                        security_contact:\n                          type: string\n                          description: >-\n                            security_contact defines an optional email for\n                            security contact.\n                        details:\n                          type: string\n                          description: details define other optional details.\n                    unbonding_height:\n                      type: string\n                      format: int64\n                      description: >-\n                        unbonding_height defines, if unbonding, the height at\n                        which this validator has begun unbonding.\n                    unbonding_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        unbonding_time defines, if unbonding, the min time for\n                        the validator to complete unbonding.\n                    commission:\n                      description: commission defines the commission parameters.\n                      type: object\n                      properties:\n                        commission_rates:\n                          description: >-\n                            commission_rates defines the initial commission\n                            rates to be used for creating a validator.\n                          type: object\n                          properties:\n                            rate:\n                              type: string\n                              description: >-\n                                rate is the commission rate charged to\n                                delegators, as a fraction.\n                            max_rate:\n                              type: string\n                              description: >-\n                                max_rate defines the maximum commission rate\n                                which validator can ever charge, as a fraction.\n                            max_change_rate:\n                              type: string\n                              description: >-\n                                max_change_rate defines the maximum daily\n                                increase of the validator commission, as a\n                                fraction.\n                        update_time:\n                          type: string\n                          format: date-time\n                          description: >-\n                            update_time is the last time the commission rate was\n                            changed.\n                    min_self_delegation:\n                      type: string\n                      description: >-\n                        min_self_delegation is the validator's self declared\n                        minimum self delegation.\n\n\n                        Since: cosmos-sdk 0.46\n                    unbonding_on_hold_ref_count:\n                      type: string\n                      format: int64\n                      title: >-\n                        strictly positive if this validator's unbonding has been\n                        stopped by external modules\n                    unbonding_ids:\n                      type: array\n                      items:\n                        type: string\n                        format: uint64\n                      title: >-\n                        list of unbonding ids, each uniquely identifing an\n                        unbonding of this validator\n                  description: >-\n                    Validator defines a validator, together with the total\n                    amount of the\n\n                    Validator's bond shares and their exchange rate to coins.\n                    Slashing results in\n\n                    a decrease in the exchange rate, allowing correct\n                    calculation of future\n\n                    undelegations without iterating over delegators. When coins\n                    are delegated to\n\n                    this validator, the validator is credited with a delegation\n                    whose number of\n\n                    bond shares is based on the amount of coins delegated\n                    divided by the current\n\n                    exchange rate. Voting power can be calculated as total\n                    bonded shares\n\n                    multiplied by exchange rate.\n                description: validators defines the validators' info of a delegator.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: |-\n              QueryDelegatorValidatorsResponse is response type for the\n              Query/DelegatorValidators RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}:\n    get:\n      summary: |-\n        DelegatorValidator queries validator info for given delegator validator\n        pair.\n      operationId: CosmosStakingV1Beta1Query_DelegatorValidator\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              validator:\n                description: validator defines the validator info.\n                type: object\n                properties:\n                  operator_address:\n                    type: string\n                    description: >-\n                      operator_address defines the address of the validator's\n                      operator; bech encoded in JSON.\n                  consensus_pubkey:\n                    description: >-\n                      consensus_pubkey is the consensus public key of the\n                      validator, as a Protobuf Any.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                  jailed:\n                    type: boolean\n                    description: >-\n                      jailed defined whether the validator has been jailed from\n                      bonded status or not.\n                  status:\n                    description: >-\n                      status is the validator status\n                      (bonded/unbonding/unbonded).\n                    type: string\n                    enum:\n                      - BOND_STATUS_UNSPECIFIED\n                      - BOND_STATUS_UNBONDED\n                      - BOND_STATUS_UNBONDING\n                      - BOND_STATUS_BONDED\n                    default: BOND_STATUS_UNSPECIFIED\n                  tokens:\n                    type: string\n                    description: >-\n                      tokens define the delegated tokens (incl.\n                      self-delegation).\n                  delegator_shares:\n                    type: string\n                    description: >-\n                      delegator_shares defines total shares issued to a\n                      validator's delegators.\n                  description:\n                    description: >-\n                      description defines the description terms for the\n                      validator.\n                    type: object\n                    properties:\n                      moniker:\n                        type: string\n                        description: >-\n                          moniker defines a human-readable name for the\n                          validator.\n                      identity:\n                        type: string\n                        description: >-\n                          identity defines an optional identity signature (ex.\n                          UPort or Keybase).\n                      website:\n                        type: string\n                        description: website defines an optional website link.\n                      security_contact:\n                        type: string\n                        description: >-\n                          security_contact defines an optional email for\n                          security contact.\n                      details:\n                        type: string\n                        description: details define other optional details.\n                  unbonding_height:\n                    type: string\n                    format: int64\n                    description: >-\n                      unbonding_height defines, if unbonding, the height at\n                      which this validator has begun unbonding.\n                  unbonding_time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      unbonding_time defines, if unbonding, the min time for the\n                      validator to complete unbonding.\n                  commission:\n                    description: commission defines the commission parameters.\n                    type: object\n                    properties:\n                      commission_rates:\n                        description: >-\n                          commission_rates defines the initial commission rates\n                          to be used for creating a validator.\n                        type: object\n                        properties:\n                          rate:\n                            type: string\n                            description: >-\n                              rate is the commission rate charged to delegators,\n                              as a fraction.\n                          max_rate:\n                            type: string\n                            description: >-\n                              max_rate defines the maximum commission rate which\n                              validator can ever charge, as a fraction.\n                          max_change_rate:\n                            type: string\n                            description: >-\n                              max_change_rate defines the maximum daily increase\n                              of the validator commission, as a fraction.\n                      update_time:\n                        type: string\n                        format: date-time\n                        description: >-\n                          update_time is the last time the commission rate was\n                          changed.\n                  min_self_delegation:\n                    type: string\n                    description: >-\n                      min_self_delegation is the validator's self declared\n                      minimum self delegation.\n\n\n                      Since: cosmos-sdk 0.46\n                  unbonding_on_hold_ref_count:\n                    type: string\n                    format: int64\n                    title: >-\n                      strictly positive if this validator's unbonding has been\n                      stopped by external modules\n                  unbonding_ids:\n                    type: array\n                    items:\n                      type: string\n                      format: uint64\n                    title: >-\n                      list of unbonding ids, each uniquely identifing an\n                      unbonding of this validator\n            description: |-\n              QueryDelegatorValidatorResponse response type for the\n              Query/DelegatorValidator RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/historical_info/{height}:\n    get:\n      summary: HistoricalInfo queries the historical info for given height.\n      operationId: CosmosStakingV1Beta1Query_HistoricalInfo\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              hist:\n                description: hist defines the historical info at the given height.\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        title: prev block info\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        format: byte\n                        title: original proposer of the block\n                    description: Header defines the structure of a block header.\n                  valset:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        operator_address:\n                          type: string\n                          description: >-\n                            operator_address defines the address of the\n                            validator's operator; bech encoded in JSON.\n                        consensus_pubkey:\n                          description: >-\n                            consensus_pubkey is the consensus public key of the\n                            validator, as a Protobuf Any.\n                          type: object\n                          properties:\n                            '@type':\n                              type: string\n                              description: >-\n                                A URL/resource name that uniquely identifies the\n                                type of the serialized\n\n                                protocol buffer message. This string must\n                                contain at least\n\n                                one \"/\" character. The last segment of the URL's\n                                path must represent\n\n                                the fully qualified name of the type (as in\n\n                                `path/google.protobuf.Duration`). The name\n                                should be in a canonical form\n\n                                (e.g., leading \".\" is not accepted).\n\n\n                                In practice, teams usually precompile into the\n                                binary all types that they\n\n                                expect it to use in the context of Any. However,\n                                for URLs which use the\n\n                                scheme `http`, `https`, or no scheme, one can\n                                optionally set up a type\n\n                                server that maps type URLs to message\n                                definitions as follows:\n\n\n                                * If no scheme is provided, `https` is assumed.\n\n                                * An HTTP GET on the URL must yield a\n                                [google.protobuf.Type][]\n                                  value in binary format, or produce an error.\n                                * Applications are allowed to cache lookup\n                                results based on the\n                                  URL, or have them precompiled into a binary to avoid any\n                                  lookup. Therefore, binary compatibility needs to be preserved\n                                  on changes to types. (Use versioned type names to manage\n                                  breaking changes.)\n\n                                Note: this functionality is not currently\n                                available in the official\n\n                                protobuf release, and it is not used for type\n                                URLs beginning with\n\n                                type.googleapis.com.\n\n\n                                Schemes other than `http`, `https` (or the empty\n                                scheme) might be\n\n                                used with implementation specific semantics.\n                          additionalProperties: {}\n                        jailed:\n                          type: boolean\n                          description: >-\n                            jailed defined whether the validator has been jailed\n                            from bonded status or not.\n                        status:\n                          description: >-\n                            status is the validator status\n                            (bonded/unbonding/unbonded).\n                          type: string\n                          enum:\n                            - BOND_STATUS_UNSPECIFIED\n                            - BOND_STATUS_UNBONDED\n                            - BOND_STATUS_UNBONDING\n                            - BOND_STATUS_BONDED\n                          default: BOND_STATUS_UNSPECIFIED\n                        tokens:\n                          type: string\n                          description: >-\n                            tokens define the delegated tokens (incl.\n                            self-delegation).\n                        delegator_shares:\n                          type: string\n                          description: >-\n                            delegator_shares defines total shares issued to a\n                            validator's delegators.\n                        description:\n                          description: >-\n                            description defines the description terms for the\n                            validator.\n                          type: object\n                          properties:\n                            moniker:\n                              type: string\n                              description: >-\n                                moniker defines a human-readable name for the\n                                validator.\n                            identity:\n                              type: string\n                              description: >-\n                                identity defines an optional identity signature\n                                (ex. UPort or Keybase).\n                            website:\n                              type: string\n                              description: website defines an optional website link.\n                            security_contact:\n                              type: string\n                              description: >-\n                                security_contact defines an optional email for\n                                security contact.\n                            details:\n                              type: string\n                              description: details define other optional details.\n                        unbonding_height:\n                          type: string\n                          format: int64\n                          description: >-\n                            unbonding_height defines, if unbonding, the height\n                            at which this validator has begun unbonding.\n                        unbonding_time:\n                          type: string\n                          format: date-time\n                          description: >-\n                            unbonding_time defines, if unbonding, the min time\n                            for the validator to complete unbonding.\n                        commission:\n                          description: commission defines the commission parameters.\n                          type: object\n                          properties:\n                            commission_rates:\n                              description: >-\n                                commission_rates defines the initial commission\n                                rates to be used for creating a validator.\n                              type: object\n                              properties:\n                                rate:\n                                  type: string\n                                  description: >-\n                                    rate is the commission rate charged to\n                                    delegators, as a fraction.\n                                max_rate:\n                                  type: string\n                                  description: >-\n                                    max_rate defines the maximum commission rate\n                                    which validator can ever charge, as a\n                                    fraction.\n                                max_change_rate:\n                                  type: string\n                                  description: >-\n                                    max_change_rate defines the maximum daily\n                                    increase of the validator commission, as a\n                                    fraction.\n                            update_time:\n                              type: string\n                              format: date-time\n                              description: >-\n                                update_time is the last time the commission rate\n                                was changed.\n                        min_self_delegation:\n                          type: string\n                          description: >-\n                            min_self_delegation is the validator's self declared\n                            minimum self delegation.\n\n\n                            Since: cosmos-sdk 0.46\n                        unbonding_on_hold_ref_count:\n                          type: string\n                          format: int64\n                          title: >-\n                            strictly positive if this validator's unbonding has\n                            been stopped by external modules\n                        unbonding_ids:\n                          type: array\n                          items:\n                            type: string\n                            format: uint64\n                          title: >-\n                            list of unbonding ids, each uniquely identifing an\n                            unbonding of this validator\n                      description: >-\n                        Validator defines a validator, together with the total\n                        amount of the\n\n                        Validator's bond shares and their exchange rate to\n                        coins. Slashing results in\n\n                        a decrease in the exchange rate, allowing correct\n                        calculation of future\n\n                        undelegations without iterating over delegators. When\n                        coins are delegated to\n\n                        this validator, the validator is credited with a\n                        delegation whose number of\n\n                        bond shares is based on the amount of coins delegated\n                        divided by the current\n\n                        exchange rate. Voting power can be calculated as total\n                        bonded shares\n\n                        multiplied by exchange rate.\n            description: >-\n              QueryHistoricalInfoResponse is response type for the\n              Query/HistoricalInfo RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: height\n          description: height defines at which height to query the historical info.\n          in: path\n          required: true\n          type: string\n          format: int64\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/params:\n    get:\n      summary: Parameters queries the staking parameters.\n      operationId: CosmosStakingV1Beta1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params holds all the parameters of this module.\n                type: object\n                properties:\n                  unbonding_time:\n                    type: string\n                    description: unbonding_time is the time duration of unbonding.\n                  max_validators:\n                    type: integer\n                    format: int64\n                    description: max_validators is the maximum number of validators.\n                  max_entries:\n                    type: integer\n                    format: int64\n                    description: >-\n                      max_entries is the max entries for either unbonding\n                      delegation or redelegation (per pair/trio).\n                  historical_entries:\n                    type: integer\n                    format: int64\n                    description: >-\n                      historical_entries is the number of historical entries to\n                      persist.\n                  bond_denom:\n                    type: string\n                    description: bond_denom defines the bondable coin denomination.\n                  min_commission_rate:\n                    type: string\n                    title: >-\n                      min_commission_rate is the chain-wide minimum commission\n                      rate that a validator can charge their delegators\n            description: >-\n              QueryParamsResponse is response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/pool:\n    get:\n      summary: Pool queries the pool info.\n      operationId: CosmosStakingV1Beta1Query_Pool\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              pool:\n                description: pool defines the pool info.\n                type: object\n                properties:\n                  not_bonded_tokens:\n                    type: string\n                  bonded_tokens:\n                    type: string\n            description: QueryPoolResponse is response type for the Query/Pool RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators:\n    get:\n      summary: Validators queries all validators that match the given status.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_Validators\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              validators:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    operator_address:\n                      type: string\n                      description: >-\n                        operator_address defines the address of the validator's\n                        operator; bech encoded in JSON.\n                    consensus_pubkey:\n                      description: >-\n                        consensus_pubkey is the consensus public key of the\n                        validator, as a Protobuf Any.\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                    jailed:\n                      type: boolean\n                      description: >-\n                        jailed defined whether the validator has been jailed\n                        from bonded status or not.\n                    status:\n                      description: >-\n                        status is the validator status\n                        (bonded/unbonding/unbonded).\n                      type: string\n                      enum:\n                        - BOND_STATUS_UNSPECIFIED\n                        - BOND_STATUS_UNBONDED\n                        - BOND_STATUS_UNBONDING\n                        - BOND_STATUS_BONDED\n                      default: BOND_STATUS_UNSPECIFIED\n                    tokens:\n                      type: string\n                      description: >-\n                        tokens define the delegated tokens (incl.\n                        self-delegation).\n                    delegator_shares:\n                      type: string\n                      description: >-\n                        delegator_shares defines total shares issued to a\n                        validator's delegators.\n                    description:\n                      description: >-\n                        description defines the description terms for the\n                        validator.\n                      type: object\n                      properties:\n                        moniker:\n                          type: string\n                          description: >-\n                            moniker defines a human-readable name for the\n                            validator.\n                        identity:\n                          type: string\n                          description: >-\n                            identity defines an optional identity signature (ex.\n                            UPort or Keybase).\n                        website:\n                          type: string\n                          description: website defines an optional website link.\n                        security_contact:\n                          type: string\n                          description: >-\n                            security_contact defines an optional email for\n                            security contact.\n                        details:\n                          type: string\n                          description: details define other optional details.\n                    unbonding_height:\n                      type: string\n                      format: int64\n                      description: >-\n                        unbonding_height defines, if unbonding, the height at\n                        which this validator has begun unbonding.\n                    unbonding_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        unbonding_time defines, if unbonding, the min time for\n                        the validator to complete unbonding.\n                    commission:\n                      description: commission defines the commission parameters.\n                      type: object\n                      properties:\n                        commission_rates:\n                          description: >-\n                            commission_rates defines the initial commission\n                            rates to be used for creating a validator.\n                          type: object\n                          properties:\n                            rate:\n                              type: string\n                              description: >-\n                                rate is the commission rate charged to\n                                delegators, as a fraction.\n                            max_rate:\n                              type: string\n                              description: >-\n                                max_rate defines the maximum commission rate\n                                which validator can ever charge, as a fraction.\n                            max_change_rate:\n                              type: string\n                              description: >-\n                                max_change_rate defines the maximum daily\n                                increase of the validator commission, as a\n                                fraction.\n                        update_time:\n                          type: string\n                          format: date-time\n                          description: >-\n                            update_time is the last time the commission rate was\n                            changed.\n                    min_self_delegation:\n                      type: string\n                      description: >-\n                        min_self_delegation is the validator's self declared\n                        minimum self delegation.\n\n\n                        Since: cosmos-sdk 0.46\n                    unbonding_on_hold_ref_count:\n                      type: string\n                      format: int64\n                      title: >-\n                        strictly positive if this validator's unbonding has been\n                        stopped by external modules\n                    unbonding_ids:\n                      type: array\n                      items:\n                        type: string\n                        format: uint64\n                      title: >-\n                        list of unbonding ids, each uniquely identifing an\n                        unbonding of this validator\n                  description: >-\n                    Validator defines a validator, together with the total\n                    amount of the\n\n                    Validator's bond shares and their exchange rate to coins.\n                    Slashing results in\n\n                    a decrease in the exchange rate, allowing correct\n                    calculation of future\n\n                    undelegations without iterating over delegators. When coins\n                    are delegated to\n\n                    this validator, the validator is credited with a delegation\n                    whose number of\n\n                    bond shares is based on the amount of coins delegated\n                    divided by the current\n\n                    exchange rate. Voting power can be calculated as total\n                    bonded shares\n\n                    multiplied by exchange rate.\n                description: validators contains all the queried validators.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: >-\n              QueryValidatorsResponse is response type for the Query/Validators\n              RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: status\n          description: status enables to query for validators matching a given status.\n          in: query\n          required: false\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators/{validator_addr}:\n    get:\n      summary: Validator queries validator info for given validator address.\n      operationId: CosmosStakingV1Beta1Query_Validator\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              validator:\n                description: validator defines the validator info.\n                type: object\n                properties:\n                  operator_address:\n                    type: string\n                    description: >-\n                      operator_address defines the address of the validator's\n                      operator; bech encoded in JSON.\n                  consensus_pubkey:\n                    description: >-\n                      consensus_pubkey is the consensus public key of the\n                      validator, as a Protobuf Any.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                  jailed:\n                    type: boolean\n                    description: >-\n                      jailed defined whether the validator has been jailed from\n                      bonded status or not.\n                  status:\n                    description: >-\n                      status is the validator status\n                      (bonded/unbonding/unbonded).\n                    type: string\n                    enum:\n                      - BOND_STATUS_UNSPECIFIED\n                      - BOND_STATUS_UNBONDED\n                      - BOND_STATUS_UNBONDING\n                      - BOND_STATUS_BONDED\n                    default: BOND_STATUS_UNSPECIFIED\n                  tokens:\n                    type: string\n                    description: >-\n                      tokens define the delegated tokens (incl.\n                      self-delegation).\n                  delegator_shares:\n                    type: string\n                    description: >-\n                      delegator_shares defines total shares issued to a\n                      validator's delegators.\n                  description:\n                    description: >-\n                      description defines the description terms for the\n                      validator.\n                    type: object\n                    properties:\n                      moniker:\n                        type: string\n                        description: >-\n                          moniker defines a human-readable name for the\n                          validator.\n                      identity:\n                        type: string\n                        description: >-\n                          identity defines an optional identity signature (ex.\n                          UPort or Keybase).\n                      website:\n                        type: string\n                        description: website defines an optional website link.\n                      security_contact:\n                        type: string\n                        description: >-\n                          security_contact defines an optional email for\n                          security contact.\n                      details:\n                        type: string\n                        description: details define other optional details.\n                  unbonding_height:\n                    type: string\n                    format: int64\n                    description: >-\n                      unbonding_height defines, if unbonding, the height at\n                      which this validator has begun unbonding.\n                  unbonding_time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      unbonding_time defines, if unbonding, the min time for the\n                      validator to complete unbonding.\n                  commission:\n                    description: commission defines the commission parameters.\n                    type: object\n                    properties:\n                      commission_rates:\n                        description: >-\n                          commission_rates defines the initial commission rates\n                          to be used for creating a validator.\n                        type: object\n                        properties:\n                          rate:\n                            type: string\n                            description: >-\n                              rate is the commission rate charged to delegators,\n                              as a fraction.\n                          max_rate:\n                            type: string\n                            description: >-\n                              max_rate defines the maximum commission rate which\n                              validator can ever charge, as a fraction.\n                          max_change_rate:\n                            type: string\n                            description: >-\n                              max_change_rate defines the maximum daily increase\n                              of the validator commission, as a fraction.\n                      update_time:\n                        type: string\n                        format: date-time\n                        description: >-\n                          update_time is the last time the commission rate was\n                          changed.\n                  min_self_delegation:\n                    type: string\n                    description: >-\n                      min_self_delegation is the validator's self declared\n                      minimum self delegation.\n\n\n                      Since: cosmos-sdk 0.46\n                  unbonding_on_hold_ref_count:\n                    type: string\n                    format: int64\n                    title: >-\n                      strictly positive if this validator's unbonding has been\n                      stopped by external modules\n                  unbonding_ids:\n                    type: array\n                    items:\n                      type: string\n                      format: uint64\n                    title: >-\n                      list of unbonding ids, each uniquely identifing an\n                      unbonding of this validator\n            title: >-\n              QueryValidatorResponse is response type for the Query/Validator\n              RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators/{validator_addr}/delegations:\n    get:\n      summary: ValidatorDelegations queries delegate info for given validator.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_ValidatorDelegations\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              delegation_responses:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    delegation:\n                      type: object\n                      properties:\n                        delegator_address:\n                          type: string\n                          description: >-\n                            delegator_address is the encoded address of the\n                            delegator.\n                        validator_address:\n                          type: string\n                          description: >-\n                            validator_address is the encoded address of the\n                            validator.\n                        shares:\n                          type: string\n                          description: shares define the delegation shares received.\n                      description: >-\n                        Delegation represents the bond with tokens held by an\n                        account. It is\n\n                        owned by one delegator, and is associated with the\n                        voting power of one\n\n                        validator.\n                    balance:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                  description: >-\n                    DelegationResponse is equivalent to Delegation except that\n                    it contains a\n\n                    balance in addition to shares which is more suitable for\n                    client responses.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: |-\n              QueryValidatorDelegationsResponse is response type for the\n              Query/ValidatorDelegations RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}:\n    get:\n      summary: Delegation queries delegate info for given validator delegator pair.\n      operationId: CosmosStakingV1Beta1Query_Delegation\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              delegation_response:\n                description: >-\n                  delegation_responses defines the delegation info of a\n                  delegation.\n                type: object\n                properties:\n                  delegation:\n                    type: object\n                    properties:\n                      delegator_address:\n                        type: string\n                        description: >-\n                          delegator_address is the encoded address of the\n                          delegator.\n                      validator_address:\n                        type: string\n                        description: >-\n                          validator_address is the encoded address of the\n                          validator.\n                      shares:\n                        type: string\n                        description: shares define the delegation shares received.\n                    description: >-\n                      Delegation represents the bond with tokens held by an\n                      account. It is\n\n                      owned by one delegator, and is associated with the voting\n                      power of one\n\n                      validator.\n                  balance:\n                    type: object\n                    properties:\n                      denom:\n                        type: string\n                      amount:\n                        type: string\n                    description: >-\n                      Coin defines a token with a denomination and an amount.\n\n\n                      NOTE: The amount field is an Int which implements the\n                      custom method\n\n                      signatures required by gogoproto.\n            description: >-\n              QueryDelegationResponse is response type for the Query/Delegation\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation:\n    get:\n      summary: |-\n        UnbondingDelegation queries unbonding info for given validator delegator\n        pair.\n      operationId: CosmosStakingV1Beta1Query_UnbondingDelegation\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              unbond:\n                description: unbond defines the unbonding information of a delegation.\n                type: object\n                properties:\n                  delegator_address:\n                    type: string\n                    description: delegator_address is the encoded address of the delegator.\n                  validator_address:\n                    type: string\n                    description: validator_address is the encoded address of the validator.\n                  entries:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        creation_height:\n                          type: string\n                          format: int64\n                          description: >-\n                            creation_height is the height which the unbonding\n                            took place.\n                        completion_time:\n                          type: string\n                          format: date-time\n                          description: >-\n                            completion_time is the unix time for unbonding\n                            completion.\n                        initial_balance:\n                          type: string\n                          description: >-\n                            initial_balance defines the tokens initially\n                            scheduled to receive at completion.\n                        balance:\n                          type: string\n                          description: balance defines the tokens to receive at completion.\n                        unbonding_id:\n                          type: string\n                          format: uint64\n                          title: Incrementing id that uniquely identifies this entry\n                        unbonding_on_hold_ref_count:\n                          type: string\n                          format: int64\n                          title: >-\n                            Strictly positive if this entry's unbonding has been\n                            stopped by external modules\n                      description: >-\n                        UnbondingDelegationEntry defines an unbonding object\n                        with relevant metadata.\n                    description: |-\n                      entries are the unbonding delegation entries.\n\n                      unbonding delegation entries\n            description: >-\n              QueryDelegationResponse is response type for the\n              Query/UnbondingDelegation\n\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: delegator_addr\n          description: delegator_addr defines the delegator address to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations:\n    get:\n      summary: >-\n        ValidatorUnbondingDelegations queries unbonding delegations of a\n        validator.\n      description: >-\n        When called from another module, this query might consume a high amount\n        of\n\n        gas if the pagination field is incorrectly set.\n      operationId: CosmosStakingV1Beta1Query_ValidatorUnbondingDelegations\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              unbonding_responses:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    delegator_address:\n                      type: string\n                      description: >-\n                        delegator_address is the encoded address of the\n                        delegator.\n                    validator_address:\n                      type: string\n                      description: >-\n                        validator_address is the encoded address of the\n                        validator.\n                    entries:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          creation_height:\n                            type: string\n                            format: int64\n                            description: >-\n                              creation_height is the height which the unbonding\n                              took place.\n                          completion_time:\n                            type: string\n                            format: date-time\n                            description: >-\n                              completion_time is the unix time for unbonding\n                              completion.\n                          initial_balance:\n                            type: string\n                            description: >-\n                              initial_balance defines the tokens initially\n                              scheduled to receive at completion.\n                          balance:\n                            type: string\n                            description: >-\n                              balance defines the tokens to receive at\n                              completion.\n                          unbonding_id:\n                            type: string\n                            format: uint64\n                            title: >-\n                              Incrementing id that uniquely identifies this\n                              entry\n                          unbonding_on_hold_ref_count:\n                            type: string\n                            format: int64\n                            title: >-\n                              Strictly positive if this entry's unbonding has\n                              been stopped by external modules\n                        description: >-\n                          UnbondingDelegationEntry defines an unbonding object\n                          with relevant metadata.\n                      description: |-\n                        entries are the unbonding delegation entries.\n\n                        unbonding delegation entries\n                  description: >-\n                    UnbondingDelegation stores all of a single delegator's\n                    unbonding bonds\n\n                    for a single validator in an time-ordered list.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryValidatorUnbondingDelegationsResponse is response type for\n              the\n\n              Query/ValidatorUnbondingDelegations RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: validator_addr\n          description: validator_addr defines the validator address to query for.\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /cosmos.staking.v1beta1.Msg/BeginRedelegate:\n    post:\n      summary: >-\n        BeginRedelegate defines a method for performing a redelegation\n\n        of coins from a delegator and source validator to a destination\n        validator.\n      operationId: CosmosStakingV1Beta1Msg_BeginRedelegate\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              completion_time:\n                type: string\n                format: date-time\n            description: >-\n              MsgBeginRedelegateResponse defines the Msg/BeginRedelegate\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgBeginRedelegate defines a SDK message for performing a\n            redelegation\n\n            of coins from a delegator and source validator to a destination\n            validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              validator_src_address:\n                type: string\n              validator_dst_address:\n                type: string\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n            description: >-\n              MsgBeginRedelegate defines a SDK message for performing a\n              redelegation\n\n              of coins from a delegator and source validator to a destination\n              validator.\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation:\n    post:\n      summary: >-\n        CancelUnbondingDelegation defines a method for performing canceling the\n        unbonding delegation\n\n        and delegate back to previous validator.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosStakingV1Beta1Msg_CancelUnbondingDelegation\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: 'Since: cosmos-sdk 0.46'\n            title: MsgCancelUnbondingDelegationResponse\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: 'Since: cosmos-sdk 0.46'\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              validator_address:\n                type: string\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n                title: >-\n                  amount is always less than or equal to unbonding delegation\n                  entry balance\n              creation_height:\n                type: string\n                format: int64\n                description: creation_height is the height which the unbonding took place.\n            description: 'Since: cosmos-sdk 0.46'\n            title: >-\n              MsgCancelUnbondingDelegation defines the SDK message for\n              performing a cancel unbonding delegation for delegator\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/CreateValidator:\n    post:\n      summary: CreateValidator defines a method for creating a new validator.\n      operationId: CosmosStakingV1Beta1Msg_CreateValidator\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgCreateValidatorResponse defines the Msg/CreateValidator\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgCreateValidator defines a SDK message for creating a new\n            validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              description:\n                type: object\n                properties:\n                  moniker:\n                    type: string\n                    description: moniker defines a human-readable name for the validator.\n                  identity:\n                    type: string\n                    description: >-\n                      identity defines an optional identity signature (ex. UPort\n                      or Keybase).\n                  website:\n                    type: string\n                    description: website defines an optional website link.\n                  security_contact:\n                    type: string\n                    description: >-\n                      security_contact defines an optional email for security\n                      contact.\n                  details:\n                    type: string\n                    description: details define other optional details.\n                description: Description defines a validator description.\n              commission:\n                type: object\n                properties:\n                  rate:\n                    type: string\n                    description: >-\n                      rate is the commission rate charged to delegators, as a\n                      fraction.\n                  max_rate:\n                    type: string\n                    description: >-\n                      max_rate defines the maximum commission rate which\n                      validator can ever charge, as a fraction.\n                  max_change_rate:\n                    type: string\n                    description: >-\n                      max_change_rate defines the maximum daily increase of the\n                      validator commission, as a fraction.\n                description: >-\n                  CommissionRates defines the initial commission rates to be\n                  used for creating\n\n                  a validator.\n              min_self_delegation:\n                type: string\n              delegator_address:\n                type: string\n                description: >-\n                  Deprecated: Use of Delegator Address in MsgCreateValidator is\n                  deprecated.\n\n                  The validator address bytes and delegator address bytes refer\n                  to the same account while creating validator (defer\n\n                  only in bech32 notation).\n              validator_address:\n                type: string\n              pubkey:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              value:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n            description: >-\n              MsgCreateValidator defines a SDK message for creating a new\n              validator.\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/Delegate:\n    post:\n      summary: |-\n        Delegate defines a method for performing a delegation of coins\n        from a delegator to a validator.\n      operationId: CosmosStakingV1Beta1Msg_Delegate\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgDelegateResponse defines the Msg/Delegate response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgDelegate defines a SDK message for performing a delegation of\n            coins\n\n            from a delegator to a validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              validator_address:\n                type: string\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n            description: >-\n              MsgDelegate defines a SDK message for performing a delegation of\n              coins\n\n              from a delegator to a validator.\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/EditValidator:\n    post:\n      summary: EditValidator defines a method for editing an existing validator.\n      operationId: CosmosStakingV1Beta1Msg_EditValidator\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgEditValidatorResponse defines the Msg/EditValidator response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgEditValidator defines a SDK message for editing an existing\n            validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              description:\n                type: object\n                properties:\n                  moniker:\n                    type: string\n                    description: moniker defines a human-readable name for the validator.\n                  identity:\n                    type: string\n                    description: >-\n                      identity defines an optional identity signature (ex. UPort\n                      or Keybase).\n                  website:\n                    type: string\n                    description: website defines an optional website link.\n                  security_contact:\n                    type: string\n                    description: >-\n                      security_contact defines an optional email for security\n                      contact.\n                  details:\n                    type: string\n                    description: details define other optional details.\n                description: Description defines a validator description.\n              validator_address:\n                type: string\n              commission_rate:\n                type: string\n                title: >-\n                  We pass a reference to the new commission rate and min self\n                  delegation as\n\n                  it's not mandatory to update. If not updated, the deserialized\n                  rate will be\n\n                  zero with no way to distinguish if an update was intended.\n\n                  REF: #2373\n              min_self_delegation:\n                type: string\n            description: >-\n              MsgEditValidator defines a SDK message for editing an existing\n              validator.\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/Undelegate:\n    post:\n      summary: |-\n        Undelegate defines a method for performing an undelegation from a\n        delegate and a validator.\n      operationId: CosmosStakingV1Beta1Msg_Undelegate\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              completion_time:\n                type: string\n                format: date-time\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n                title: amount returns the amount of undelegated coins\n            description: MsgUndelegateResponse defines the Msg/Undelegate response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUndelegate defines a SDK message for performing an undelegation\n            from a\n\n            delegate and a validator.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n              validator_address:\n                type: string\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n            description: >-\n              MsgUndelegate defines a SDK message for performing an undelegation\n              from a\n\n              delegate and a validator.\n      tags:\n        - Msg\n  /cosmos.staking.v1beta1.Msg/UpdateParams:\n    post:\n      summary: |-\n        UpdateParams defines an operation for updating the x/staking module\n        parameters.\n        Since: cosmos-sdk 0.47\n      operationId: CosmosStakingV1Beta1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgUpdateParams is the Msg/UpdateParams request type.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: |-\n                  params defines the x/staking parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  unbonding_time:\n                    type: string\n                    description: unbonding_time is the time duration of unbonding.\n                  max_validators:\n                    type: integer\n                    format: int64\n                    description: max_validators is the maximum number of validators.\n                  max_entries:\n                    type: integer\n                    format: int64\n                    description: >-\n                      max_entries is the max entries for either unbonding\n                      delegation or redelegation (per pair/trio).\n                  historical_entries:\n                    type: integer\n                    format: int64\n                    description: >-\n                      historical_entries is the number of historical entries to\n                      persist.\n                  bond_denom:\n                    type: string\n                    description: bond_denom defines the bondable coin denomination.\n                  min_commission_rate:\n                    type: string\n                    title: >-\n                      min_commission_rate is the chain-wide minimum commission\n                      rate that a validator can charge their delegators\n            description: |-\n              MsgUpdateParams is the Msg/UpdateParams request type.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Msg\n  /cosmos/tx/v1beta1/decode:\n    post:\n      summary: TxDecode decodes the transaction.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosTxV1Beta1Service_TxDecode\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeResponse'\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            TxDecodeRequest is the request type for the Service.TxDecode\n            RPC method.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              tx_bytes:\n                type: string\n                format: byte\n                description: tx_bytes is the raw transaction.\n            description: |-\n              TxDecodeRequest is the request type for the Service.TxDecode\n              RPC method.\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/decode/amino:\n    post:\n      summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosTxV1Beta1Service_TxDecodeAmino\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amino_json:\n                type: string\n            description: >-\n              TxDecodeAminoResponse is the response type for the\n              Service.TxDecodeAmino\n\n              RPC method.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            TxDecodeAminoRequest is the request type for the\n            Service.TxDecodeAmino\n\n            RPC method.\n\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              amino_binary:\n                type: string\n                format: byte\n            description: >-\n              TxDecodeAminoRequest is the request type for the\n              Service.TxDecodeAmino\n\n              RPC method.\n\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/encode:\n    post:\n      summary: TxEncode encodes the transaction.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosTxV1Beta1Service_TxEncode\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              tx_bytes:\n                type: string\n                format: byte\n                description: tx_bytes is the encoded transaction bytes.\n            description: |-\n              TxEncodeResponse is the response type for the\n              Service.TxEncode method.\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            TxEncodeRequest is the request type for the Service.TxEncode\n            RPC method.\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeRequest'\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/encode/amino:\n    post:\n      summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.\n      description: 'Since: cosmos-sdk 0.47'\n      operationId: CosmosTxV1Beta1Service_TxEncodeAmino\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amino_binary:\n                type: string\n                format: byte\n            description: >-\n              TxEncodeAminoResponse is the response type for the\n              Service.TxEncodeAmino\n\n              RPC method.\n\n\n              Since: cosmos-sdk 0.47\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            TxEncodeAminoRequest is the request type for the\n            Service.TxEncodeAmino\n\n            RPC method.\n\n\n            Since: cosmos-sdk 0.47\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              amino_json:\n                type: string\n            description: >-\n              TxEncodeAminoRequest is the request type for the\n              Service.TxEncodeAmino\n\n              RPC method.\n\n\n              Since: cosmos-sdk 0.47\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/simulate:\n    post:\n      summary: Simulate simulates executing a transaction for estimating gas usage.\n      operationId: CosmosTxV1Beta1Service_Simulate\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              gas_info:\n                description: gas_info is the information about gas used in the simulation.\n                type: object\n                properties:\n                  gas_wanted:\n                    type: string\n                    format: uint64\n                    description: >-\n                      GasWanted is the maximum units of work we allow this tx to\n                      perform.\n                  gas_used:\n                    type: string\n                    format: uint64\n                    description: GasUsed is the amount of gas actually consumed.\n              result:\n                description: result is the result of the simulation.\n                type: object\n                properties:\n                  data:\n                    type: string\n                    format: byte\n                    description: >-\n                      Data is any data returned from message or handler\n                      execution. It MUST be\n\n                      length prefixed in order to separate data from multiple\n                      message executions.\n\n                      Deprecated. This field is still populated, but prefer\n                      msg_response instead\n\n                      because it also contains the Msg response typeURL.\n                  log:\n                    type: string\n                    description: >-\n                      Log contains the log information from message or handler\n                      execution.\n                  events:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                        attributes:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              key:\n                                type: string\n                              value:\n                                type: string\n                              index:\n                                type: boolean\n                                title: nondeterministic\n                            description: >-\n                              EventAttribute is a single key-value pair,\n                              associated with an event.\n                      description: >-\n                        Event allows application developers to attach additional\n                        information to\n\n                        ResponseFinalizeBlock and ResponseCheckTx.\n\n                        Later, transactions may be queried using these events.\n                    description: >-\n                      Events contains a slice of Event objects that were emitted\n                      during message\n\n                      or handler execution.\n                  msg_responses:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                    description: >-\n                      msg_responses contains the Msg handler responses type\n                      packed in Anys.\n\n\n                      Since: cosmos-sdk 0.46\n            description: |-\n              SimulateResponse is the response type for the\n              Service.SimulateRPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            SimulateRequest is the request type for the Service.Simulate\n            RPC method.\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest'\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/txs:\n    get:\n      summary: GetTxsEvent fetches txs by event.\n      operationId: CosmosTxV1Beta1Service_GetTxsEvent\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse'\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: events\n          description: >-\n            events is the list of transaction event type.\n\n            Deprecated post v0.47.x: use query instead, which should contain a\n            valid\n\n            events query.\n          in: query\n          required: false\n          type: array\n          items:\n            type: string\n          collectionFormat: multi\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: order_by\n          description: |2-\n             - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\n            to ASC in this case.\n             - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n             - ORDER_BY_DESC: ORDER_BY_DESC defines descending order\n          in: query\n          required: false\n          type: string\n          enum:\n            - ORDER_BY_UNSPECIFIED\n            - ORDER_BY_ASC\n            - ORDER_BY_DESC\n          default: ORDER_BY_UNSPECIFIED\n        - name: page\n          description: |-\n            page is the page number to query, starts at 1. If not provided, will\n            default to first page.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: query\n          description: >-\n            query defines the transaction event query that is proxied to\n            Tendermint's\n\n            TxSearch RPC method. The query must be valid.\n\n\n            Since cosmos-sdk 0.50\n          in: query\n          required: false\n          type: string\n      tags:\n        - Service\n    post:\n      summary: BroadcastTx broadcast transaction.\n      operationId: CosmosTxV1Beta1Service_BroadcastTx\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              tx_response:\n                description: tx_response is the queried TxResponses.\n                type: object\n                properties:\n                  height:\n                    type: string\n                    format: int64\n                    title: The block height\n                  txhash:\n                    type: string\n                    description: The transaction hash.\n                  codespace:\n                    type: string\n                    title: Namespace for the Code\n                  code:\n                    type: integer\n                    format: int64\n                    description: Response code.\n                  data:\n                    type: string\n                    description: Result bytes, if any.\n                  raw_log:\n                    type: string\n                    description: >-\n                      The output of the application's logger (raw string). May\n                      be\n\n                      non-deterministic.\n                  logs:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        msg_index:\n                          type: integer\n                          format: int64\n                        log:\n                          type: string\n                        events:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              type:\n                                type: string\n                              attributes:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    key:\n                                      type: string\n                                    value:\n                                      type: string\n                                  description: >-\n                                    Attribute defines an attribute wrapper where\n                                    the key and value are\n\n                                    strings instead of raw bytes.\n                            description: >-\n                              StringEvent defines en Event object wrapper where\n                              all the attributes\n\n                              contain key/value pairs that are strings instead\n                              of raw bytes.\n                          description: >-\n                            Events contains a slice of Event objects that were\n                            emitted during some\n\n                            execution.\n                      description: >-\n                        ABCIMessageLog defines a structure containing an indexed\n                        tx ABCI message log.\n                    description: >-\n                      The output of the application's logger (typed). May be\n                      non-deterministic.\n                  info:\n                    type: string\n                    description: Additional information. May be non-deterministic.\n                  gas_wanted:\n                    type: string\n                    format: int64\n                    description: Amount of gas requested for transaction.\n                  gas_used:\n                    type: string\n                    format: int64\n                    description: Amount of gas consumed by transaction.\n                  tx:\n                    description: The request transaction bytes.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                  timestamp:\n                    type: string\n                    description: >-\n                      Time of the previous block. For heights > 1, it's the\n                      weighted median of\n\n                      the timestamps of the valid votes in the block.LastCommit.\n                      For height == 1,\n\n                      it's genesis time.\n                  events:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                        attributes:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              key:\n                                type: string\n                              value:\n                                type: string\n                              index:\n                                type: boolean\n                                title: nondeterministic\n                            description: >-\n                              EventAttribute is a single key-value pair,\n                              associated with an event.\n                      description: >-\n                        Event allows application developers to attach additional\n                        information to\n\n                        ResponseFinalizeBlock and ResponseCheckTx.\n\n                        Later, transactions may be queried using these events.\n                    description: >-\n                      Events defines all the events emitted by processing a\n                      transaction. Note,\n\n                      these events include those emitted by processing all the\n                      messages and those\n\n                      emitted from the ante. Whereas Logs contains the events,\n                      with\n\n                      additional metadata, emitted only by processing the\n                      messages.\n\n\n                      Since: cosmos-sdk 0.42.11, 0.44.5, 0.45\n            description: |-\n              BroadcastTxResponse is the response type for the\n              Service.BroadcastTx method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            BroadcastTxRequest is the request type for the\n            Service.BroadcastTxRequest\n\n            RPC method.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              tx_bytes:\n                type: string\n                format: byte\n                description: tx_bytes is the raw transaction.\n              mode:\n                type: string\n                enum:\n                  - BROADCAST_MODE_UNSPECIFIED\n                  - BROADCAST_MODE_BLOCK\n                  - BROADCAST_MODE_SYNC\n                  - BROADCAST_MODE_ASYNC\n                default: BROADCAST_MODE_UNSPECIFIED\n                description: >-\n                  BroadcastMode specifies the broadcast mode for the\n                  TxService.Broadcast RPC\n\n                  method.\n\n                   - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n                   - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\n                  BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x\n                  onwards.\n                   - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\n                  for a CheckTx execution response only.\n                   - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\n                  returns immediately.\n            description: >-\n              BroadcastTxRequest is the request type for the\n              Service.BroadcastTxRequest\n\n              RPC method.\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/txs/block/{height}:\n    get:\n      summary: GetBlockWithTxs fetches a block with decoded txs.\n      description: 'Since: cosmos-sdk 0.45.2'\n      operationId: CosmosTxV1Beta1Service_GetBlockWithTxs\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse'\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: height\n          description: height is the height of the block to query.\n          in: path\n          required: true\n          type: string\n          format: int64\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Service\n  /cosmos/tx/v1beta1/txs/{hash}:\n    get:\n      summary: GetTx fetches a tx by hash.\n      operationId: CosmosTxV1Beta1Service_GetTx\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse'\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: hash\n          description: hash is the tx hash to query, encoded as a hex string.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Service\n  /cosmos.upgrade.v1beta1.Msg/CancelUpgrade:\n    post:\n      summary: |-\n        CancelUpgrade is a governance operation for cancelling a previously\n        approved software upgrade.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosUpgradeV1Beta1Msg_CancelUpgrade\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: |-\n              MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\n            Since: cosmos-sdk 0.46\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n            description: |-\n              MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\n              Since: cosmos-sdk 0.46\n      tags:\n        - Msg\n  /cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade:\n    post:\n      summary: >-\n        SoftwareUpgrade is a governance operation for initiating a software\n        upgrade.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosUpgradeV1Beta1Msg_SoftwareUpgrade\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response\n              type.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\n            Since: cosmos-sdk 0.46\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              plan:\n                description: plan is the upgrade plan.\n                type: object\n                properties:\n                  name:\n                    type: string\n                    description: >-\n                      Sets the name for the upgrade. This name will be used by\n                      the upgraded\n\n                      version of the software to apply any special \"on-upgrade\"\n                      commands during\n\n                      the first BeginBlock method after the upgrade is applied.\n                      It is also used\n\n                      to detect whether a software version can handle a given\n                      upgrade. If no\n\n                      upgrade handler with this name has been set in the\n                      software, it will be\n\n                      assumed that the software is out-of-date when the upgrade\n                      Time or Height is\n\n                      reached and the software will exit.\n                  time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      Deprecated: Time based upgrades have been deprecated. Time\n                      based upgrade logic\n\n                      has been removed from the SDK.\n\n                      If this field is not empty, an error will be thrown.\n                  height:\n                    type: string\n                    format: int64\n                    description: The height at which the upgrade must be performed.\n                  info:\n                    type: string\n                    title: >-\n                      Any application specific upgrade info to be included\n                      on-chain\n\n                      such as a git commit that validators could automatically\n                      upgrade to\n                  upgraded_client_state:\n                    description: >-\n                      Deprecated: UpgradedClientState field has been deprecated.\n                      IBC upgrade logic has been\n\n                      moved to the IBC module in the sub module 02-client.\n\n                      If this field is not empty, an error will be thrown.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n            description: |-\n              MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\n              Since: cosmos-sdk 0.46\n      tags:\n        - Msg\n  /cosmos/upgrade/v1beta1/applied_plan/{name}:\n    get:\n      summary: AppliedPlan queries a previously applied upgrade plan by its name.\n      operationId: CosmosUpgradeV1Beta1Query_AppliedPlan\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n                description: height is the block height at which the plan was applied.\n            description: >-\n              QueryAppliedPlanResponse is the response type for the\n              Query/AppliedPlan RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: name\n          description: name is the name of the applied plan to query for.\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /cosmos/upgrade/v1beta1/authority:\n    get:\n      summary: Returns the account with authority to conduct upgrades\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosUpgradeV1Beta1Query_Authority\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              address:\n                type: string\n            description: 'Since: cosmos-sdk 0.46'\n            title: QueryAuthorityResponse is the response type for Query/Authority\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/upgrade/v1beta1/current_plan:\n    get:\n      summary: CurrentPlan queries the current upgrade plan.\n      operationId: CosmosUpgradeV1Beta1Query_CurrentPlan\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              plan:\n                description: plan is the current upgrade plan.\n                type: object\n                properties:\n                  name:\n                    type: string\n                    description: >-\n                      Sets the name for the upgrade. This name will be used by\n                      the upgraded\n\n                      version of the software to apply any special \"on-upgrade\"\n                      commands during\n\n                      the first BeginBlock method after the upgrade is applied.\n                      It is also used\n\n                      to detect whether a software version can handle a given\n                      upgrade. If no\n\n                      upgrade handler with this name has been set in the\n                      software, it will be\n\n                      assumed that the software is out-of-date when the upgrade\n                      Time or Height is\n\n                      reached and the software will exit.\n                  time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      Deprecated: Time based upgrades have been deprecated. Time\n                      based upgrade logic\n\n                      has been removed from the SDK.\n\n                      If this field is not empty, an error will be thrown.\n                  height:\n                    type: string\n                    format: int64\n                    description: The height at which the upgrade must be performed.\n                  info:\n                    type: string\n                    title: >-\n                      Any application specific upgrade info to be included\n                      on-chain\n\n                      such as a git commit that validators could automatically\n                      upgrade to\n                  upgraded_client_state:\n                    description: >-\n                      Deprecated: UpgradedClientState field has been deprecated.\n                      IBC upgrade logic has been\n\n                      moved to the IBC module in the sub module 02-client.\n\n                      If this field is not empty, an error will be thrown.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n            description: >-\n              QueryCurrentPlanResponse is the response type for the\n              Query/CurrentPlan RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /cosmos/upgrade/v1beta1/module_versions:\n    get:\n      summary: ModuleVersions queries the list of module versions from state.\n      description: 'Since: cosmos-sdk 0.43'\n      operationId: CosmosUpgradeV1Beta1Query_ModuleVersions\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              module_versions:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    name:\n                      type: string\n                      title: name of the app module\n                    version:\n                      type: string\n                      format: uint64\n                      title: consensus version of the app module\n                  description: |-\n                    ModuleVersion specifies a module and its consensus version.\n\n                    Since: cosmos-sdk 0.43\n                description: >-\n                  module_versions is a list of module names with their consensus\n                  versions.\n            description: >-\n              QueryModuleVersionsResponse is the response type for the\n              Query/ModuleVersions\n\n              RPC method.\n\n\n              Since: cosmos-sdk 0.43\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: module_name\n          description: |-\n            module_name is a field to query a specific module\n            consensus version from state. Leaving this empty will\n            fetch the full list of module versions from state\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}:\n    get:\n      summary: >-\n        UpgradedConsensusState queries the consensus state that will serve\n\n        as a trusted kernel for the next version of this chain. It will only be\n\n        stored at the last height of this chain.\n\n        UpgradedConsensusState RPC not supported with legacy querier\n\n        This rpc is deprecated now that IBC has its own replacement\n\n        (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)\n      operationId: CosmosUpgradeV1Beta1Query_UpgradedConsensusState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              upgraded_consensus_state:\n                type: string\n                format: byte\n                title: 'Since: cosmos-sdk 0.43'\n            description: >-\n              QueryUpgradedConsensusStateResponse is the response type for the\n              Query/UpgradedConsensusState\n\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: last_height\n          description: |-\n            last height of the current chain must be sent in request\n            as this is the height under which next consensus state is stored\n          in: path\n          required: true\n          type: string\n          format: int64\n      tags:\n        - Query\n  /cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount:\n    post:\n      summary: |-\n        CreatePeriodicVestingAccount defines a method that enables creating a\n        periodic vesting account.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosVestingV1Beta1Msg_CreatePeriodicVestingAccount\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgCreateVestingAccountResponse defines the\n              Msg/CreatePeriodicVestingAccount\n\n              response type.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgCreateVestingAccount defines a message that enables creating a\n            vesting\n\n            account.\n\n\n            Since: cosmos-sdk 0.46\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              from_address:\n                type: string\n              to_address:\n                type: string\n              start_time:\n                type: string\n                format: int64\n                description: start of vesting as unix time (in seconds).\n              vesting_periods:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    length:\n                      type: string\n                      format: int64\n                      description: Period duration in seconds.\n                    amount:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                  description: >-\n                    Period defines a length of time and amount of coins that\n                    will vest.\n            description: >-\n              MsgCreateVestingAccount defines a message that enables creating a\n              vesting\n\n              account.\n\n\n              Since: cosmos-sdk 0.46\n      tags:\n        - Msg\n  /cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount:\n    post:\n      summary: >-\n        CreatePermanentLockedAccount defines a method that enables creating a\n        permanent\n\n        locked account.\n      description: 'Since: cosmos-sdk 0.46'\n      operationId: CosmosVestingV1Beta1Msg_CreatePermanentLockedAccount\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgCreatePermanentLockedAccountResponse defines the\n              Msg/CreatePermanentLockedAccount response type.\n\n\n              Since: cosmos-sdk 0.46\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgCreatePermanentLockedAccount defines a message that enables\n            creating a permanent\n\n            locked account.\n\n\n            Since: cosmos-sdk 0.46\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              from_address:\n                type: string\n              to_address:\n                type: string\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n            description: >-\n              MsgCreatePermanentLockedAccount defines a message that enables\n              creating a permanent\n\n              locked account.\n\n\n              Since: cosmos-sdk 0.46\n      tags:\n        - Msg\n  /cosmos.vesting.v1beta1.Msg/CreateVestingAccount:\n    post:\n      summary: |-\n        CreateVestingAccount defines a method that enables creating a vesting\n        account.\n      operationId: CosmosVestingV1Beta1Msg_CreateVestingAccount\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgCreateVestingAccountResponse defines the\n              Msg/CreateVestingAccount response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgCreateVestingAccount defines a message that enables creating a\n            vesting\n\n            account.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              from_address:\n                type: string\n              to_address:\n                type: string\n              amount:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n              end_time:\n                type: string\n                format: int64\n                description: end of vesting as unix time (in seconds).\n              delayed:\n                type: boolean\n            description: >-\n              MsgCreateVestingAccount defines a message that enables creating a\n              vesting\n\n              account.\n      tags:\n        - Msg\n  /ibc.applications.fee.v1.Msg/PayPacketFee:\n    post:\n      summary: >-\n        PayPacketFee defines a rpc handler method for MsgPayPacketFee\n\n        PayPacketFee is an open callback that may be called by any module/user\n        that wishes to escrow funds in order to\n\n        incentivize the relaying of the packet at the next sequence\n\n        NOTE: This method is intended to be used within a multi msg transaction,\n        where the subsequent msg that follows\n\n        initiates the lifecycle of the incentivized packet\n      operationId: IbcApplicationsFeeV1Msg_PayPacketFee\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: >-\n              MsgPayPacketFeeResponse defines the response type for the\n              PayPacketFee rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              fee:\n                title: >-\n                  fee encapsulates the recv, ack and timeout fees associated\n                  with an IBC packet\n                type: object\n                properties:\n                  recv_fee:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    title: the packet receive fee\n                  ack_fee:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    title: the packet acknowledgement fee\n                  timeout_fee:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        denom:\n                          type: string\n                        amount:\n                          type: string\n                      description: >-\n                        Coin defines a token with a denomination and an amount.\n\n\n                        NOTE: The amount field is an Int which implements the\n                        custom method\n\n                        signatures required by gogoproto.\n                    title: the packet timeout fee\n              source_port_id:\n                type: string\n                title: the source port unique identifier\n              source_channel_id:\n                type: string\n                title: the source channel unique identifer\n              signer:\n                type: string\n                title: account address to refund fee if necessary\n              relayers:\n                type: array\n                items:\n                  type: string\n                title: optional list of relayers permitted to the receive packet fees\n            title: >-\n              MsgPayPacketFee defines the request type for the PayPacketFee rpc\n\n              This Msg can be used to pay for a packet at the next sequence send\n              & should be combined with the Msg that will be\n\n              paid for\n      tags:\n        - Msg\n  /ibc.applications.fee.v1.Msg/PayPacketFeeAsync:\n    post:\n      summary: >-\n        PayPacketFeeAsync defines a rpc handler method for MsgPayPacketFeeAsync\n\n        PayPacketFeeAsync is an open callback that may be called by any\n        module/user that wishes to escrow funds in order to\n\n        incentivize the relaying of a known packet (i.e. at a particular\n        sequence)\n      operationId: IbcApplicationsFeeV1Msg_PayPacketFeeAsync\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: >-\n              MsgPayPacketFeeAsyncResponse defines the response type for the\n              PayPacketFeeAsync rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              packet_id:\n                title: >-\n                  unique packet identifier comprised of the channel ID, port ID\n                  and sequence\n                type: object\n                properties:\n                  port_id:\n                    type: string\n                    title: channel port identifier\n                  channel_id:\n                    type: string\n                    title: channel unique identifier\n                  sequence:\n                    type: string\n                    format: uint64\n                    title: packet sequence\n              packet_fee:\n                title: the packet fee associated with a particular IBC packet\n                type: object\n                properties:\n                  fee:\n                    title: >-\n                      fee encapsulates the recv, ack and timeout fees associated\n                      with an IBC packet\n                    type: object\n                    properties:\n                      recv_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet receive fee\n                      ack_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet acknowledgement fee\n                      timeout_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet timeout fee\n                  refund_address:\n                    type: string\n                    title: the refund address for unspent fees\n                  relayers:\n                    type: array\n                    items:\n                      type: string\n                    title: optional list of relayers permitted to receive fees\n            title: >-\n              MsgPayPacketFeeAsync defines the request type for the\n              PayPacketFeeAsync rpc\n\n              This Msg can be used to pay for a packet at a specified sequence\n              (instead of the next sequence send)\n      tags:\n        - Msg\n  /ibc.applications.fee.v1.Msg/RegisterCounterpartyPayee:\n    post:\n      summary: >-\n        RegisterCounterpartyPayee defines a rpc handler method for\n        MsgRegisterCounterpartyPayee\n\n        RegisterCounterpartyPayee is called by the relayer on each channelEnd\n        and allows them to specify the counterparty\n\n        payee address before relaying. This ensures they will be properly\n        compensated for forward relaying since\n\n        the destination chain must include the registered counterparty payee\n        address in the acknowledgement. This function\n\n        may be called more than once by a relayer, in which case, the latest\n        counterparty payee address is always used.\n      operationId: IbcApplicationsFeeV1Msg_RegisterCounterpartyPayee\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: >-\n              MsgRegisterCounterpartyPayeeResponse defines the response type for\n              the RegisterCounterpartyPayee rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n                title: unique port identifier\n              channel_id:\n                type: string\n                title: unique channel identifier\n              relayer:\n                type: string\n                title: the relayer address\n              counterparty_payee:\n                type: string\n                title: the counterparty payee address\n            title: >-\n              MsgRegisterCounterpartyPayee defines the request type for the\n              RegisterCounterpartyPayee rpc\n      tags:\n        - Msg\n  /ibc.applications.fee.v1.Msg/RegisterPayee:\n    post:\n      summary: >-\n        RegisterPayee defines a rpc handler method for MsgRegisterPayee\n\n        RegisterPayee is called by the relayer on each channelEnd and allows\n        them to set an optional\n\n        payee to which reverse and timeout relayer packet fees will be paid out.\n        The payee should be registered on\n\n        the source chain from which packets originate as this is where fee\n        distribution takes place. This function may be\n\n        called more than once by a relayer, in which case, the latest payee is\n        always used.\n      operationId: IbcApplicationsFeeV1Msg_RegisterPayee\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: >-\n              MsgRegisterPayeeResponse defines the response type for the\n              RegisterPayee rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n                title: unique port identifier\n              channel_id:\n                type: string\n                title: unique channel identifier\n              relayer:\n                type: string\n                title: the relayer address\n              payee:\n                type: string\n                title: the payee address\n            title: >-\n              MsgRegisterPayee defines the request type for the RegisterPayee\n              rpc\n      tags:\n        - Msg\n  /ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/fee_enabled:\n    get:\n      summary: >-\n        FeeEnabledChannel returns true if the provided port and channel\n        identifiers belong to a fee enabled channel\n      operationId: IbcApplicationsFeeV1Query_FeeEnabledChannel\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              fee_enabled:\n                type: boolean\n                title: boolean flag representing the fee enabled channel status\n            title: >-\n              QueryFeeEnabledChannelResponse defines the response type for the\n              FeeEnabledChannel rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: unique channel identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: unique port identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{channel_id}/ports/{port_id}/incentivized_packets:\n    get:\n      summary: Gets all incentivized packets for a specific channel\n      operationId: IbcApplicationsFeeV1Query_IncentivizedPacketsForChannel\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              incentivized_packets:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    packet_id:\n                      title: >-\n                        unique packet identifier comprised of the channel ID,\n                        port ID and sequence\n                      type: object\n                      properties:\n                        port_id:\n                          type: string\n                          title: channel port identifier\n                        channel_id:\n                          type: string\n                          title: channel unique identifier\n                        sequence:\n                          type: string\n                          format: uint64\n                          title: packet sequence\n                    packet_fees:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          fee:\n                            title: >-\n                              fee encapsulates the recv, ack and timeout fees\n                              associated with an IBC packet\n                            type: object\n                            properties:\n                              recv_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet receive fee\n                              ack_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet acknowledgement fee\n                              timeout_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet timeout fee\n                          refund_address:\n                            type: string\n                            title: the refund address for unspent fees\n                          relayers:\n                            type: array\n                            items:\n                              type: string\n                            title: >-\n                              optional list of relayers permitted to receive\n                              fees\n                        title: >-\n                          PacketFee contains ICS29 relayer fees, refund address\n                          and optional list of permitted relayers\n                      title: list of packet fees\n                  title: >-\n                    IdentifiedPacketFees contains a list of type PacketFee and\n                    associated PacketId\n                title: Map of all incentivized_packets\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: >-\n              QueryIncentivizedPacketsResponse defines the response type for the\n              incentivized packets RPC\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: query_height\n          description: Height to query at\n          in: query\n          required: false\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/counterparty_payee:\n    get:\n      summary: >-\n        CounterpartyPayee returns the registered counterparty payee for forward\n        relaying\n      operationId: IbcApplicationsFeeV1Query_CounterpartyPayee\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              counterparty_payee:\n                type: string\n                title: >-\n                  the counterparty payee address used to compensate forward\n                  relaying\n            title: >-\n              QueryCounterpartyPayeeResponse defines the response type for the\n              CounterpartyPayee rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: unique channel identifier\n          in: path\n          required: true\n          type: string\n        - name: relayer\n          description: the relayer address to which the counterparty is registered\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{channel_id}/relayers/{relayer}/payee:\n    get:\n      summary: >-\n        Payee returns the registered payee address for a specific channel given\n        the relayer address\n      operationId: IbcApplicationsFeeV1Query_Payee\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              payee_address:\n                type: string\n                title: the payee address to which packet fees are paid out\n            title: QueryPayeeResponse defines the response type for the Payee rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: unique channel identifier\n          in: path\n          required: true\n          type: string\n        - name: relayer\n          description: the relayer address to which the distribution address is registered\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/incentivized_packet:\n    get:\n      summary: >-\n        IncentivizedPacket returns all packet fees for a packet given its\n        identifier\n      operationId: IbcApplicationsFeeV1Query_IncentivizedPacket\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              incentivized_packet:\n                title: the identified fees for the incentivized packet\n                type: object\n                properties:\n                  packet_id:\n                    title: >-\n                      unique packet identifier comprised of the channel ID, port\n                      ID and sequence\n                    type: object\n                    properties:\n                      port_id:\n                        type: string\n                        title: channel port identifier\n                      channel_id:\n                        type: string\n                        title: channel unique identifier\n                      sequence:\n                        type: string\n                        format: uint64\n                        title: packet sequence\n                  packet_fees:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        fee:\n                          title: >-\n                            fee encapsulates the recv, ack and timeout fees\n                            associated with an IBC packet\n                          type: object\n                          properties:\n                            recv_fee:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  denom:\n                                    type: string\n                                  amount:\n                                    type: string\n                                description: >-\n                                  Coin defines a token with a denomination and\n                                  an amount.\n\n\n                                  NOTE: The amount field is an Int which\n                                  implements the custom method\n\n                                  signatures required by gogoproto.\n                              title: the packet receive fee\n                            ack_fee:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  denom:\n                                    type: string\n                                  amount:\n                                    type: string\n                                description: >-\n                                  Coin defines a token with a denomination and\n                                  an amount.\n\n\n                                  NOTE: The amount field is an Int which\n                                  implements the custom method\n\n                                  signatures required by gogoproto.\n                              title: the packet acknowledgement fee\n                            timeout_fee:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  denom:\n                                    type: string\n                                  amount:\n                                    type: string\n                                description: >-\n                                  Coin defines a token with a denomination and\n                                  an amount.\n\n\n                                  NOTE: The amount field is an Int which\n                                  implements the custom method\n\n                                  signatures required by gogoproto.\n                              title: the packet timeout fee\n                        refund_address:\n                          type: string\n                          title: the refund address for unspent fees\n                        relayers:\n                          type: array\n                          items:\n                            type: string\n                          title: optional list of relayers permitted to receive fees\n                      title: >-\n                        PacketFee contains ICS29 relayer fees, refund address\n                        and optional list of permitted relayers\n                    title: list of packet fees\n            title: >-\n              QueryIncentivizedPacketsResponse defines the response type for the\n              IncentivizedPacket rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: packet_id.channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.port_id\n          description: channel port identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: query_height\n          description: block height at which to query\n          in: query\n          required: false\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_ack_fees:\n    get:\n      summary: >-\n        TotalAckFees returns the total acknowledgement fees for a packet given\n        its identifier\n      operationId: IbcApplicationsFeeV1Query_TotalAckFees\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              ack_fees:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the total packet acknowledgement fees\n            title: >-\n              QueryTotalAckFeesResponse defines the response type for the\n              TotalAckFees rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: packet_id.channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.port_id\n          description: channel port identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_recv_fees:\n    get:\n      summary: >-\n        TotalRecvFees returns the total receive fees for a packet given its\n        identifier\n      operationId: IbcApplicationsFeeV1Query_TotalRecvFees\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              recv_fees:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the total packet receive fees\n            title: >-\n              QueryTotalRecvFeesResponse defines the response type for the\n              TotalRecvFees rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: packet_id.channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.port_id\n          description: channel port identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/channels/{packet_id.channel_id}/ports/{packet_id.port_id}/sequences/{packet_id.sequence}/total_timeout_fees:\n    get:\n      summary: >-\n        TotalTimeoutFees returns the total timeout fees for a packet given its\n        identifier\n      operationId: IbcApplicationsFeeV1Query_TotalTimeoutFees\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              timeout_fees:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the total packet timeout fees\n            title: >-\n              QueryTotalTimeoutFeesResponse defines the response type for the\n              TotalTimeoutFees rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: packet_id.channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.port_id\n          description: channel port identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_id.sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/fee_enabled:\n    get:\n      summary: FeeEnabledChannels returns a list of all fee enabled channels\n      operationId: IbcApplicationsFeeV1Query_FeeEnabledChannels\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              fee_enabled_channels:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    port_id:\n                      type: string\n                      title: unique port identifier\n                    channel_id:\n                      type: string\n                      title: unique channel identifier\n                  title: >-\n                    FeeEnabledChannel contains the PortID & ChannelID for a fee\n                    enabled channel\n                title: list of fee enabled channels\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: >-\n              QueryFeeEnabledChannelsResponse defines the response type for the\n              FeeEnabledChannels rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: query_height\n          description: block height at which to query\n          in: query\n          required: false\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/apps/fee/v1/incentivized_packets:\n    get:\n      summary: >-\n        IncentivizedPackets returns all incentivized packets and their\n        associated fees\n      operationId: IbcApplicationsFeeV1Query_IncentivizedPackets\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              incentivized_packets:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    packet_id:\n                      title: >-\n                        unique packet identifier comprised of the channel ID,\n                        port ID and sequence\n                      type: object\n                      properties:\n                        port_id:\n                          type: string\n                          title: channel port identifier\n                        channel_id:\n                          type: string\n                          title: channel unique identifier\n                        sequence:\n                          type: string\n                          format: uint64\n                          title: packet sequence\n                    packet_fees:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          fee:\n                            title: >-\n                              fee encapsulates the recv, ack and timeout fees\n                              associated with an IBC packet\n                            type: object\n                            properties:\n                              recv_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet receive fee\n                              ack_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet acknowledgement fee\n                              timeout_fee:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    denom:\n                                      type: string\n                                    amount:\n                                      type: string\n                                  description: >-\n                                    Coin defines a token with a denomination and\n                                    an amount.\n\n\n                                    NOTE: The amount field is an Int which\n                                    implements the custom method\n\n                                    signatures required by gogoproto.\n                                title: the packet timeout fee\n                          refund_address:\n                            type: string\n                            title: the refund address for unspent fees\n                          relayers:\n                            type: array\n                            items:\n                              type: string\n                            title: >-\n                              optional list of relayers permitted to receive\n                              fees\n                        title: >-\n                          PacketFee contains ICS29 relayer fees, refund address\n                          and optional list of permitted relayers\n                      title: list of packet fees\n                  title: >-\n                    IdentifiedPacketFees contains a list of type PacketFee and\n                    associated PacketId\n                title: list of identified fees for incentivized packets\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            title: >-\n              QueryIncentivizedPacketsResponse defines the response type for the\n              IncentivizedPackets rpc\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: query_height\n          description: block height at which to query\n          in: query\n          required: false\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount:\n    post:\n      summary: >-\n        RegisterInterchainAccount defines a rpc handler for\n        MsgRegisterInterchainAccount.\n      operationId: >-\n        IbcApplicationsInterchainAccountsControllerV1Msg_RegisterInterchainAccount\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              channel_id:\n                type: string\n              port_id:\n                type: string\n            title: >-\n              MsgRegisterInterchainAccountResponse defines the response for\n              Msg/RegisterAccount\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              owner:\n                type: string\n              connection_id:\n                type: string\n              version:\n                type: string\n            title: >-\n              MsgRegisterInterchainAccount defines the payload for\n              Msg/RegisterAccount\n      tags:\n        - Msg\n  /ibc.applications.interchain_accounts.controller.v1.Msg/SendTx:\n    post:\n      summary: SendTx defines a rpc handler for MsgSendTx.\n      operationId: IbcApplicationsInterchainAccountsControllerV1Msg_SendTx\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              sequence:\n                type: string\n                format: uint64\n            title: MsgSendTxResponse defines the response for MsgSendTx\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              owner:\n                type: string\n              connection_id:\n                type: string\n              packet_data:\n                type: object\n                properties:\n                  type:\n                    type: string\n                    enum:\n                      - TYPE_UNSPECIFIED\n                      - TYPE_EXECUTE_TX\n                    default: TYPE_UNSPECIFIED\n                    description: |-\n                      - TYPE_UNSPECIFIED: Default zero value enumeration\n                       - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain\n                    title: >-\n                      Type defines a classification of message issued from a\n                      controller chain to its associated interchain accounts\n\n                      host\n                  data:\n                    type: string\n                    format: byte\n                  memo:\n                    type: string\n                description: >-\n                  InterchainAccountPacketData is comprised of a raw transaction,\n                  type of transaction and optional memo field.\n              relative_timeout:\n                type: string\n                format: uint64\n                description: >-\n                  Relative timeout timestamp provided will be added to the\n                  current block time during transaction execution.\n\n                  The timeout timestamp must be non-zero.\n            title: MsgSendTx defines the payload for Msg/SendTx\n      tags:\n        - Msg\n  /ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams:\n    post:\n      summary: UpdateParams defines a rpc handler for MsgUpdateParams.\n      operationId: IbcApplicationsInterchainAccountsControllerV1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              signer:\n                type: string\n                title: signer address\n              params:\n                description: >-\n                  params defines the 27-interchain-accounts/controller\n                  parameters to update.\n\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  controller_enabled:\n                    type: boolean\n                    description: >-\n                      controller_enabled enables or disables the controller\n                      submodule.\n            title: MsgUpdateParams defines the payload for Msg/UpdateParams\n      tags:\n        - Msg\n  /ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}:\n    get:\n      summary: >-\n        InterchainAccount returns the interchain account address for a given\n        owner address on a given connection\n      operationId: IbcApplicationsInterchainAccountsControllerV1Query_InterchainAccount\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              address:\n                type: string\n            description: >-\n              QueryInterchainAccountResponse the response type for the\n              Query/InterchainAccount RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: owner\n          in: path\n          required: true\n          type: string\n        - name: connection_id\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/apps/interchain_accounts/controller/v1/params:\n    get:\n      summary: Params queries all parameters of the ICA controller submodule.\n      operationId: IbcApplicationsInterchainAccountsControllerV1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  controller_enabled:\n                    type: boolean\n                    description: >-\n                      controller_enabled enables or disables the controller\n                      submodule.\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams:\n    post:\n      summary: UpdateParams defines a rpc handler for MsgUpdateParams.\n      operationId: IbcApplicationsInterchainAccountsHostV1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              signer:\n                type: string\n                title: signer address\n              params:\n                description: >-\n                  params defines the 27-interchain-accounts/host parameters to\n                  update.\n\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  host_enabled:\n                    type: boolean\n                    description: host_enabled enables or disables the host submodule.\n                  allow_messages:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      allow_messages defines a list of sdk message typeURLs\n                      allowed to be executed on a host chain.\n            title: MsgUpdateParams defines the payload for Msg/UpdateParams\n      tags:\n        - Msg\n  /ibc/apps/interchain_accounts/host/v1/params:\n    get:\n      summary: Params queries all parameters of the ICA host submodule.\n      operationId: IbcApplicationsInterchainAccountsHostV1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  host_enabled:\n                    type: boolean\n                    description: host_enabled enables or disables the host submodule.\n                  allow_messages:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      allow_messages defines a list of sdk message typeURLs\n                      allowed to be executed on a host chain.\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /ibc.applications.transfer.v1.Msg/Transfer:\n    post:\n      summary: Transfer defines a rpc handler method for MsgTransfer.\n      operationId: IbcApplicationsTransferV1Msg_Transfer\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              sequence:\n                type: string\n                format: uint64\n                title: sequence number of the transfer packet sent\n            description: MsgTransferResponse defines the Msg/Transfer response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              source_port:\n                type: string\n                title: the port on which the packet will be sent\n              source_channel:\n                type: string\n                title: the channel by which the packet will be sent\n              token:\n                title: the tokens to be transferred\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n              sender:\n                type: string\n                title: the sender address\n              receiver:\n                type: string\n                title: the recipient address on the destination chain\n              timeout_height:\n                description: |-\n                  Timeout height relative to the current block height.\n                  The timeout is disabled when set to 0.\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              timeout_timestamp:\n                type: string\n                format: uint64\n                description: |-\n                  Timeout timestamp in absolute nanoseconds since unix epoch.\n                  The timeout is disabled when set to 0.\n              memo:\n                type: string\n                title: optional memo\n            title: >-\n              MsgTransfer defines a msg to transfer fungible tokens (i.e Coins)\n              between\n\n              ICS20 enabled chains. See ICS Spec here:\n\n              https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures\n      tags:\n        - Msg\n  /ibc.applications.transfer.v1.Msg/UpdateParams:\n    post:\n      summary: UpdateParams defines a rpc handler for MsgUpdateParams.\n      operationId: IbcApplicationsTransferV1Msg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: MsgUpdateParams is the Msg/UpdateParams request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              signer:\n                type: string\n                title: signer address\n              params:\n                description: |-\n                  params defines the transfer parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  send_enabled:\n                    type: boolean\n                    description: >-\n                      send_enabled enables or disables all cross-chain token\n                      transfers from this\n\n                      chain.\n                  receive_enabled:\n                    type: boolean\n                    description: >-\n                      receive_enabled enables or disables all cross-chain token\n                      transfers to this\n\n                      chain.\n            description: MsgUpdateParams is the Msg/UpdateParams request type.\n      tags:\n        - Msg\n  /ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address:\n    get:\n      summary: >-\n        EscrowAddress returns the escrow address for a particular port and\n        channel id.\n      operationId: IbcApplicationsTransferV1Query_EscrowAddress\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              escrow_address:\n                type: string\n                title: the escrow account address\n            description: >-\n              QueryEscrowAddressResponse is the response type of the\n              EscrowAddress RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: channel_id\n          description: unique channel identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: unique port identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/apps/transfer/v1/denom_hashes/{trace}:\n    get:\n      summary: DenomHash queries a denomination hash information.\n      operationId: IbcApplicationsTransferV1Query_DenomHash\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              hash:\n                type: string\n                description: hash (in hex format) of the denomination trace information.\n            description: >-\n              QueryDenomHashResponse is the response type for the\n              Query/DenomHash RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: trace\n          description: The denomination trace ([port_id]/[channel_id])+/[denom]\n          in: path\n          required: true\n          type: string\n          pattern: .+\n      tags:\n        - Query\n  /ibc/apps/transfer/v1/denom_traces:\n    get:\n      summary: DenomTraces queries all denomination traces.\n      operationId: IbcApplicationsTransferV1Query_DenomTraces\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              denom_traces:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    path:\n                      type: string\n                      description: >-\n                        path defines the chain of port/channel identifiers used\n                        for tracing the\n\n                        source of the fungible token.\n                    base_denom:\n                      type: string\n                      description: base denomination of the relayed fungible token.\n                  description: >-\n                    DenomTrace contains the base denomination for ICS20 fungible\n                    tokens and the\n\n                    source tracing information path.\n                description: denom_traces returns all denominations trace information.\n              pagination:\n                description: pagination defines the pagination in the response.\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n            description: >-\n              QueryConnectionsResponse is the response type for the\n              Query/DenomTraces RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/apps/transfer/v1/denom_traces/{hash}:\n    get:\n      summary: DenomTrace queries a denomination trace information.\n      operationId: IbcApplicationsTransferV1Query_DenomTrace\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              denom_trace:\n                description: >-\n                  denom_trace returns the requested denomination trace\n                  information.\n                type: object\n                properties:\n                  path:\n                    type: string\n                    description: >-\n                      path defines the chain of port/channel identifiers used\n                      for tracing the\n\n                      source of the fungible token.\n                  base_denom:\n                    type: string\n                    description: base denomination of the relayed fungible token.\n            description: >-\n              QueryDenomTraceResponse is the response type for the\n              Query/DenomTrace RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: hash\n          description: >-\n            hash (in hex format) or denom (full denom with ibc prefix) of the\n            denomination trace information.\n          in: path\n          required: true\n          type: string\n          pattern: .+\n      tags:\n        - Query\n  /ibc/apps/transfer/v1/denoms/{denom}/total_escrow:\n    get:\n      summary: >-\n        TotalEscrowForDenom returns the total amount of tokens in escrow based\n        on the denom.\n      operationId: IbcApplicationsTransferV1Query_TotalEscrowForDenom\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              amount:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n            description: >-\n              QueryTotalEscrowForDenomResponse is the response type for\n              TotalEscrowForDenom RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: denom\n          in: path\n          required: true\n          type: string\n          pattern: .+\n      tags:\n        - Query\n  /ibc/apps/transfer/v1/params:\n    get:\n      summary: Params queries all parameters of the ibc-transfer module.\n      operationId: IbcApplicationsTransferV1Query_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  send_enabled:\n                    type: boolean\n                    description: >-\n                      send_enabled enables or disables all cross-chain token\n                      transfers from this\n\n                      chain.\n                  receive_enabled:\n                    type: boolean\n                    description: >-\n                      receive_enabled enables or disables all cross-chain token\n                      transfers to this\n\n                      chain.\n            description: >-\n              QueryParamsResponse is the response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /ibc.core.channel.v1.Msg/Acknowledgement:\n    post:\n      summary: Acknowledgement defines a rpc handler method for MsgAcknowledgement.\n      operationId: IbcCoreChannelV1Msg_Acknowledgement\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED\n                  - RESPONSE_RESULT_TYPE_NOOP\n                  - RESPONSE_RESULT_TYPE_SUCCESS\n                default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n                description: >-\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value\n                  enumeration\n                   - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n                   - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n                title: >-\n                  ResponseResultType defines the possible outcomes of the\n                  execution of a message\n            description: >-\n              MsgAcknowledgementResponse defines the Msg/Acknowledgement\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              packet:\n                type: object\n                properties:\n                  sequence:\n                    type: string\n                    format: uint64\n                    description: >-\n                      number corresponds to the order of sends and receives,\n                      where a Packet\n\n                      with an earlier sequence number must be sent and received\n                      before a Packet\n\n                      with a later sequence number.\n                  source_port:\n                    type: string\n                    description: identifies the port on the sending chain.\n                  source_channel:\n                    type: string\n                    description: identifies the channel end on the sending chain.\n                  destination_port:\n                    type: string\n                    description: identifies the port on the receiving chain.\n                  destination_channel:\n                    type: string\n                    description: identifies the channel end on the receiving chain.\n                  data:\n                    type: string\n                    format: byte\n                    title: >-\n                      actual opaque bytes transferred directly to the\n                      application module\n                  timeout_height:\n                    title: block height after which the packet times out\n                    type: object\n                    properties:\n                      revision_number:\n                        type: string\n                        format: uint64\n                        title: the revision that the client is currently on\n                      revision_height:\n                        type: string\n                        format: uint64\n                        title: the height within the given revision\n                    description: >-\n                      Normally the RevisionHeight is incremented at each height\n                      while keeping\n\n                      RevisionNumber the same. However some consensus algorithms\n                      may choose to\n\n                      reset the height in certain conditions e.g. hard forks,\n                      state-machine\n\n                      breaking changes In these cases, the RevisionNumber is\n                      incremented so that\n\n                      height continues to be monitonically increasing even as\n                      the RevisionHeight\n\n                      gets reset\n                  timeout_timestamp:\n                    type: string\n                    format: uint64\n                    title: >-\n                      block timestamp (in nanoseconds) after which the packet\n                      times out\n                title: >-\n                  Packet defines a type that carries data across different\n                  chains through IBC\n              acknowledgement:\n                type: string\n                format: byte\n              proof_acked:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            title: MsgAcknowledgement receives incoming IBC acknowledgement\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelCloseConfirm:\n    post:\n      summary: |-\n        ChannelCloseConfirm defines a rpc handler method for\n        MsgChannelCloseConfirm.\n      operationId: IbcCoreChannelV1Msg_ChannelCloseConfirm\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm\n              response\n\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\n            to acknowledge the change of channel state to CLOSED on Chain A.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              channel_id:\n                type: string\n              proof_init:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            description: |-\n              MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\n              to acknowledge the change of channel state to CLOSED on Chain A.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelCloseInit:\n    post:\n      summary: ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.\n      operationId: IbcCoreChannelV1Msg_ChannelCloseInit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\n            to close a channel with Chain B.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              channel_id:\n                type: string\n              signer:\n                type: string\n            description: |-\n              MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\n              to close a channel with Chain B.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelOpenAck:\n    post:\n      summary: ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.\n      operationId: IbcCoreChannelV1Msg_ChannelOpenAck\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to\n            acknowledge\n\n            the change of channel state to TRYOPEN on Chain B.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              channel_id:\n                type: string\n              counterparty_channel_id:\n                type: string\n              counterparty_version:\n                type: string\n              proof_try:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            description: >-\n              MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to\n              acknowledge\n\n              the change of channel state to TRYOPEN on Chain B.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelOpenConfirm:\n    post:\n      summary: >-\n        ChannelOpenConfirm defines a rpc handler method for\n        MsgChannelOpenConfirm.\n      operationId: IbcCoreChannelV1Msg_ChannelOpenConfirm\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm\n              response\n\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\n            acknowledge the change of channel state to OPEN on Chain A.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              channel_id:\n                type: string\n              proof_ack:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            description: >-\n              MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B\n              to\n\n              acknowledge the change of channel state to OPEN on Chain A.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelOpenInit:\n    post:\n      summary: ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.\n      operationId: IbcCoreChannelV1Msg_ChannelOpenInit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              channel_id:\n                type: string\n              version:\n                type: string\n            description: >-\n              MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgChannelOpenInit defines an sdk.Msg to initialize a channel\n            handshake. It\n\n            is called by a relayer on Chain A.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              channel:\n                type: object\n                properties:\n                  state:\n                    title: current state of the channel end\n                    type: string\n                    enum:\n                      - STATE_UNINITIALIZED_UNSPECIFIED\n                      - STATE_INIT\n                      - STATE_TRYOPEN\n                      - STATE_OPEN\n                      - STATE_CLOSED\n                    default: STATE_UNINITIALIZED_UNSPECIFIED\n                    description: >-\n                      State defines if a channel is in one of the following\n                      states:\n\n                      CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                       - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                       - STATE_INIT: A channel has just started the opening handshake.\n                       - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                       - STATE_OPEN: A channel has completed the handshake. Open channels are\n                      ready to send and receive packets.\n                       - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                      packets.\n                  ordering:\n                    title: whether the channel is ordered or unordered\n                    type: string\n                    enum:\n                      - ORDER_NONE_UNSPECIFIED\n                      - ORDER_UNORDERED\n                      - ORDER_ORDERED\n                    default: ORDER_NONE_UNSPECIFIED\n                    description: |-\n                      - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n                       - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                      which they were sent.\n                       - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n                  counterparty:\n                    title: counterparty channel end\n                    type: object\n                    properties:\n                      port_id:\n                        type: string\n                        description: >-\n                          port on the counterparty chain which owns the other\n                          end of the channel.\n                      channel_id:\n                        type: string\n                        title: channel end on the counterparty chain\n                  connection_hops:\n                    type: array\n                    items:\n                      type: string\n                    title: >-\n                      list of connection identifiers, in order, along which\n                      packets sent on\n\n                      this channel will travel\n                  version:\n                    type: string\n                    title: >-\n                      opaque channel version, which is agreed upon during the\n                      handshake\n                description: >-\n                  Channel defines pipeline for exactly-once packet delivery\n                  between specific\n\n                  modules on separate blockchains, which has at least one end\n                  capable of\n\n                  sending packets and one end capable of receiving packets.\n              signer:\n                type: string\n            description: >-\n              MsgChannelOpenInit defines an sdk.Msg to initialize a channel\n              handshake. It\n\n              is called by a relayer on Chain A.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/ChannelOpenTry:\n    post:\n      summary: ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.\n      operationId: IbcCoreChannelV1Msg_ChannelOpenTry\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              version:\n                type: string\n              channel_id:\n                type: string\n            description: >-\n              MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgChannelOpenInit defines a msg sent by a Relayer to try to open a\n            channel\n\n            on Chain B. The version field within the Channel field has been\n            deprecated. Its\n\n            value will be ignored by core IBC.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              port_id:\n                type: string\n              previous_channel_id:\n                type: string\n                description: >-\n                  Deprecated: this field is unused. Crossing hello's are no\n                  longer supported in core IBC.\n              channel:\n                type: object\n                properties:\n                  state:\n                    title: current state of the channel end\n                    type: string\n                    enum:\n                      - STATE_UNINITIALIZED_UNSPECIFIED\n                      - STATE_INIT\n                      - STATE_TRYOPEN\n                      - STATE_OPEN\n                      - STATE_CLOSED\n                    default: STATE_UNINITIALIZED_UNSPECIFIED\n                    description: >-\n                      State defines if a channel is in one of the following\n                      states:\n\n                      CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                       - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                       - STATE_INIT: A channel has just started the opening handshake.\n                       - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                       - STATE_OPEN: A channel has completed the handshake. Open channels are\n                      ready to send and receive packets.\n                       - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                      packets.\n                  ordering:\n                    title: whether the channel is ordered or unordered\n                    type: string\n                    enum:\n                      - ORDER_NONE_UNSPECIFIED\n                      - ORDER_UNORDERED\n                      - ORDER_ORDERED\n                    default: ORDER_NONE_UNSPECIFIED\n                    description: |-\n                      - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n                       - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                      which they were sent.\n                       - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n                  counterparty:\n                    title: counterparty channel end\n                    type: object\n                    properties:\n                      port_id:\n                        type: string\n                        description: >-\n                          port on the counterparty chain which owns the other\n                          end of the channel.\n                      channel_id:\n                        type: string\n                        title: channel end on the counterparty chain\n                  connection_hops:\n                    type: array\n                    items:\n                      type: string\n                    title: >-\n                      list of connection identifiers, in order, along which\n                      packets sent on\n\n                      this channel will travel\n                  version:\n                    type: string\n                    title: >-\n                      opaque channel version, which is agreed upon during the\n                      handshake\n                description: >-\n                  Channel defines pipeline for exactly-once packet delivery\n                  between specific\n\n                  modules on separate blockchains, which has at least one end\n                  capable of\n\n                  sending packets and one end capable of receiving packets.\n              counterparty_version:\n                type: string\n              proof_init:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            description: >-\n              MsgChannelOpenInit defines a msg sent by a Relayer to try to open\n              a channel\n\n              on Chain B. The version field within the Channel field has been\n              deprecated. Its\n\n              value will be ignored by core IBC.\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/RecvPacket:\n    post:\n      summary: RecvPacket defines a rpc handler method for MsgRecvPacket.\n      operationId: IbcCoreChannelV1Msg_RecvPacket\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED\n                  - RESPONSE_RESULT_TYPE_NOOP\n                  - RESPONSE_RESULT_TYPE_SUCCESS\n                default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n                description: >-\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value\n                  enumeration\n                   - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n                   - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n                title: >-\n                  ResponseResultType defines the possible outcomes of the\n                  execution of a message\n            description: MsgRecvPacketResponse defines the Msg/RecvPacket response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              packet:\n                type: object\n                properties:\n                  sequence:\n                    type: string\n                    format: uint64\n                    description: >-\n                      number corresponds to the order of sends and receives,\n                      where a Packet\n\n                      with an earlier sequence number must be sent and received\n                      before a Packet\n\n                      with a later sequence number.\n                  source_port:\n                    type: string\n                    description: identifies the port on the sending chain.\n                  source_channel:\n                    type: string\n                    description: identifies the channel end on the sending chain.\n                  destination_port:\n                    type: string\n                    description: identifies the port on the receiving chain.\n                  destination_channel:\n                    type: string\n                    description: identifies the channel end on the receiving chain.\n                  data:\n                    type: string\n                    format: byte\n                    title: >-\n                      actual opaque bytes transferred directly to the\n                      application module\n                  timeout_height:\n                    title: block height after which the packet times out\n                    type: object\n                    properties:\n                      revision_number:\n                        type: string\n                        format: uint64\n                        title: the revision that the client is currently on\n                      revision_height:\n                        type: string\n                        format: uint64\n                        title: the height within the given revision\n                    description: >-\n                      Normally the RevisionHeight is incremented at each height\n                      while keeping\n\n                      RevisionNumber the same. However some consensus algorithms\n                      may choose to\n\n                      reset the height in certain conditions e.g. hard forks,\n                      state-machine\n\n                      breaking changes In these cases, the RevisionNumber is\n                      incremented so that\n\n                      height continues to be monitonically increasing even as\n                      the RevisionHeight\n\n                      gets reset\n                  timeout_timestamp:\n                    type: string\n                    format: uint64\n                    title: >-\n                      block timestamp (in nanoseconds) after which the packet\n                      times out\n                title: >-\n                  Packet defines a type that carries data across different\n                  chains through IBC\n              proof_commitment:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            title: MsgRecvPacket receives incoming IBC packet\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/Timeout:\n    post:\n      summary: Timeout defines a rpc handler method for MsgTimeout.\n      operationId: IbcCoreChannelV1Msg_Timeout\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED\n                  - RESPONSE_RESULT_TYPE_NOOP\n                  - RESPONSE_RESULT_TYPE_SUCCESS\n                default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n                description: >-\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value\n                  enumeration\n                   - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n                   - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n                title: >-\n                  ResponseResultType defines the possible outcomes of the\n                  execution of a message\n            description: MsgTimeoutResponse defines the Msg/Timeout response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              packet:\n                type: object\n                properties:\n                  sequence:\n                    type: string\n                    format: uint64\n                    description: >-\n                      number corresponds to the order of sends and receives,\n                      where a Packet\n\n                      with an earlier sequence number must be sent and received\n                      before a Packet\n\n                      with a later sequence number.\n                  source_port:\n                    type: string\n                    description: identifies the port on the sending chain.\n                  source_channel:\n                    type: string\n                    description: identifies the channel end on the sending chain.\n                  destination_port:\n                    type: string\n                    description: identifies the port on the receiving chain.\n                  destination_channel:\n                    type: string\n                    description: identifies the channel end on the receiving chain.\n                  data:\n                    type: string\n                    format: byte\n                    title: >-\n                      actual opaque bytes transferred directly to the\n                      application module\n                  timeout_height:\n                    title: block height after which the packet times out\n                    type: object\n                    properties:\n                      revision_number:\n                        type: string\n                        format: uint64\n                        title: the revision that the client is currently on\n                      revision_height:\n                        type: string\n                        format: uint64\n                        title: the height within the given revision\n                    description: >-\n                      Normally the RevisionHeight is incremented at each height\n                      while keeping\n\n                      RevisionNumber the same. However some consensus algorithms\n                      may choose to\n\n                      reset the height in certain conditions e.g. hard forks,\n                      state-machine\n\n                      breaking changes In these cases, the RevisionNumber is\n                      incremented so that\n\n                      height continues to be monitonically increasing even as\n                      the RevisionHeight\n\n                      gets reset\n                  timeout_timestamp:\n                    type: string\n                    format: uint64\n                    title: >-\n                      block timestamp (in nanoseconds) after which the packet\n                      times out\n                title: >-\n                  Packet defines a type that carries data across different\n                  chains through IBC\n              proof_unreceived:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              next_sequence_recv:\n                type: string\n                format: uint64\n              signer:\n                type: string\n            title: MsgTimeout receives timed-out packet\n      tags:\n        - Msg\n  /ibc.core.channel.v1.Msg/TimeoutOnClose:\n    post:\n      summary: TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.\n      operationId: IbcCoreChannelV1Msg_TimeoutOnClose\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED\n                  - RESPONSE_RESULT_TYPE_NOOP\n                  - RESPONSE_RESULT_TYPE_SUCCESS\n                default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n                description: >-\n                  - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value\n                  enumeration\n                   - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n                   - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n                title: >-\n                  ResponseResultType defines the possible outcomes of the\n                  execution of a message\n            description: >-\n              MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgTimeoutOnClose timed-out packet upon counterparty channel\n            closure.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              packet:\n                type: object\n                properties:\n                  sequence:\n                    type: string\n                    format: uint64\n                    description: >-\n                      number corresponds to the order of sends and receives,\n                      where a Packet\n\n                      with an earlier sequence number must be sent and received\n                      before a Packet\n\n                      with a later sequence number.\n                  source_port:\n                    type: string\n                    description: identifies the port on the sending chain.\n                  source_channel:\n                    type: string\n                    description: identifies the channel end on the sending chain.\n                  destination_port:\n                    type: string\n                    description: identifies the port on the receiving chain.\n                  destination_channel:\n                    type: string\n                    description: identifies the channel end on the receiving chain.\n                  data:\n                    type: string\n                    format: byte\n                    title: >-\n                      actual opaque bytes transferred directly to the\n                      application module\n                  timeout_height:\n                    title: block height after which the packet times out\n                    type: object\n                    properties:\n                      revision_number:\n                        type: string\n                        format: uint64\n                        title: the revision that the client is currently on\n                      revision_height:\n                        type: string\n                        format: uint64\n                        title: the height within the given revision\n                    description: >-\n                      Normally the RevisionHeight is incremented at each height\n                      while keeping\n\n                      RevisionNumber the same. However some consensus algorithms\n                      may choose to\n\n                      reset the height in certain conditions e.g. hard forks,\n                      state-machine\n\n                      breaking changes In these cases, the RevisionNumber is\n                      incremented so that\n\n                      height continues to be monitonically increasing even as\n                      the RevisionHeight\n\n                      gets reset\n                  timeout_timestamp:\n                    type: string\n                    format: uint64\n                    title: >-\n                      block timestamp (in nanoseconds) after which the packet\n                      times out\n                title: >-\n                  Packet defines a type that carries data across different\n                  chains through IBC\n              proof_unreceived:\n                type: string\n                format: byte\n              proof_close:\n                type: string\n                format: byte\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              next_sequence_recv:\n                type: string\n                format: uint64\n              signer:\n                type: string\n            description: >-\n              MsgTimeoutOnClose timed-out packet upon counterparty channel\n              closure.\n      tags:\n        - Msg\n  /ibc/core/channel/v1/channels:\n    get:\n      summary: Channels queries all the IBC channels of a chain.\n      operationId: IbcCoreChannelV1Query_Channels\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              channels:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    state:\n                      title: current state of the channel end\n                      type: string\n                      enum:\n                        - STATE_UNINITIALIZED_UNSPECIFIED\n                        - STATE_INIT\n                        - STATE_TRYOPEN\n                        - STATE_OPEN\n                        - STATE_CLOSED\n                      default: STATE_UNINITIALIZED_UNSPECIFIED\n                      description: >-\n                        State defines if a channel is in one of the following\n                        states:\n\n                        CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                         - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                         - STATE_INIT: A channel has just started the opening handshake.\n                         - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                         - STATE_OPEN: A channel has completed the handshake. Open channels are\n                        ready to send and receive packets.\n                         - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                        packets.\n                    ordering:\n                      title: whether the channel is ordered or unordered\n                      type: string\n                      enum:\n                        - ORDER_NONE_UNSPECIFIED\n                        - ORDER_UNORDERED\n                        - ORDER_ORDERED\n                      default: ORDER_NONE_UNSPECIFIED\n                      description: >-\n                        - ORDER_NONE_UNSPECIFIED: zero-value for channel\n                        ordering\n                         - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                        which they were sent.\n                         - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n                    counterparty:\n                      title: counterparty channel end\n                      type: object\n                      properties:\n                        port_id:\n                          type: string\n                          description: >-\n                            port on the counterparty chain which owns the other\n                            end of the channel.\n                        channel_id:\n                          type: string\n                          title: channel end on the counterparty chain\n                    connection_hops:\n                      type: array\n                      items:\n                        type: string\n                      title: >-\n                        list of connection identifiers, in order, along which\n                        packets sent on\n\n                        this channel will travel\n                    version:\n                      type: string\n                      title: >-\n                        opaque channel version, which is agreed upon during the\n                        handshake\n                    port_id:\n                      type: string\n                      title: port identifier\n                    channel_id:\n                      type: string\n                      title: channel identifier\n                  description: >-\n                    IdentifiedChannel defines a channel with additional port and\n                    channel\n\n                    identifier fields.\n                description: list of stored channels of the chain.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            description: >-\n              QueryChannelsResponse is the response type for the Query/Channels\n              RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}:\n    get:\n      summary: Channel queries an IBC Channel.\n      operationId: IbcCoreChannelV1Query_Channel\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              channel:\n                title: channel associated with the request identifiers\n                type: object\n                properties:\n                  state:\n                    title: current state of the channel end\n                    type: string\n                    enum:\n                      - STATE_UNINITIALIZED_UNSPECIFIED\n                      - STATE_INIT\n                      - STATE_TRYOPEN\n                      - STATE_OPEN\n                      - STATE_CLOSED\n                    default: STATE_UNINITIALIZED_UNSPECIFIED\n                    description: >-\n                      State defines if a channel is in one of the following\n                      states:\n\n                      CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                       - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                       - STATE_INIT: A channel has just started the opening handshake.\n                       - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                       - STATE_OPEN: A channel has completed the handshake. Open channels are\n                      ready to send and receive packets.\n                       - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                      packets.\n                  ordering:\n                    title: whether the channel is ordered or unordered\n                    type: string\n                    enum:\n                      - ORDER_NONE_UNSPECIFIED\n                      - ORDER_UNORDERED\n                      - ORDER_ORDERED\n                    default: ORDER_NONE_UNSPECIFIED\n                    description: |-\n                      - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n                       - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                      which they were sent.\n                       - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n                  counterparty:\n                    title: counterparty channel end\n                    type: object\n                    properties:\n                      port_id:\n                        type: string\n                        description: >-\n                          port on the counterparty chain which owns the other\n                          end of the channel.\n                      channel_id:\n                        type: string\n                        title: channel end on the counterparty chain\n                  connection_hops:\n                    type: array\n                    items:\n                      type: string\n                    title: >-\n                      list of connection identifiers, in order, along which\n                      packets sent on\n\n                      this channel will travel\n                  version:\n                    type: string\n                    title: >-\n                      opaque channel version, which is agreed upon during the\n                      handshake\n                description: >-\n                  Channel defines pipeline for exactly-once packet delivery\n                  between specific\n\n                  modules on separate blockchains, which has at least one end\n                  capable of\n\n                  sending packets and one end capable of receiving packets.\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            description: >-\n              QueryChannelResponse is the response type for the Query/Channel\n              RPC method.\n\n              Besides the Channel end, it includes a proof and the height from\n              which the\n\n              proof was retrieved.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state:\n    get:\n      summary: >-\n        ChannelClientState queries for the client state for the channel\n        associated\n\n        with the provided channel identifiers.\n      operationId: IbcCoreChannelV1Query_ChannelClientState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              identified_client_state:\n                title: client state associated with the channel\n                type: object\n                properties:\n                  client_id:\n                    type: string\n                    title: client identifier\n                  client_state:\n                    title: client state\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                    description: >-\n                      `Any` contains an arbitrary serialized protocol buffer\n                      message along with a\n\n                      URL that describes the type of the serialized message.\n\n\n                      Protobuf library provides support to pack/unpack Any\n                      values in the form\n\n                      of utility functions or additional generated methods of\n                      the Any type.\n\n\n                      Example 1: Pack and unpack a message in C++.\n\n                          Foo foo = ...;\n                          Any any;\n                          any.PackFrom(foo);\n                          ...\n                          if (any.UnpackTo(&foo)) {\n                            ...\n                          }\n\n                      Example 2: Pack and unpack a message in Java.\n\n                          Foo foo = ...;\n                          Any any = Any.pack(foo);\n                          ...\n                          if (any.is(Foo.class)) {\n                            foo = any.unpack(Foo.class);\n                          }\n                          // or ...\n                          if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                            foo = any.unpack(Foo.getDefaultInstance());\n                          }\n\n                      Example 3: Pack and unpack a message in Python.\n\n                          foo = Foo(...)\n                          any = Any()\n                          any.Pack(foo)\n                          ...\n                          if any.Is(Foo.DESCRIPTOR):\n                            any.Unpack(foo)\n                            ...\n\n                      Example 4: Pack and unpack a message in Go\n\n                           foo := &pb.Foo{...}\n                           any, err := anypb.New(foo)\n                           if err != nil {\n                             ...\n                           }\n                           ...\n                           foo := &pb.Foo{}\n                           if err := any.UnmarshalTo(foo); err != nil {\n                             ...\n                           }\n\n                      The pack methods provided by protobuf library will by\n                      default use\n\n                      'type.googleapis.com/full.type.name' as the type URL and\n                      the unpack\n\n                      methods only use the fully qualified type name after the\n                      last '/'\n\n                      in the type URL, for example \"foo.bar.com/x/y.z\" will\n                      yield type\n\n                      name \"y.z\".\n\n\n                      JSON\n\n\n                      The JSON representation of an `Any` value uses the regular\n\n                      representation of the deserialized, embedded message, with\n                      an\n\n                      additional field `@type` which contains the type URL.\n                      Example:\n\n                          package google.profile;\n                          message Person {\n                            string first_name = 1;\n                            string last_name = 2;\n                          }\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.profile.Person\",\n                            \"firstName\": <string>,\n                            \"lastName\": <string>\n                          }\n\n                      If the embedded message type is well-known and has a\n                      custom JSON\n\n                      representation, that representation will be embedded\n                      adding a field\n\n                      `value` which holds the custom JSON in addition to the\n                      `@type`\n\n                      field. Example (for message [google.protobuf.Duration][]):\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                            \"value\": \"1.212s\"\n                          }\n                description: >-\n                  IdentifiedClientState defines a client state with an\n                  additional client\n\n                  identifier field.\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryChannelClientStateResponse is the Response type for the\n              Query/QueryChannelClientState RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}:\n    get:\n      summary: |-\n        ChannelConsensusState queries for the consensus state for the channel\n        associated with the provided channel identifiers.\n      operationId: IbcCoreChannelV1Query_ChannelConsensusState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              consensus_state:\n                title: consensus state associated with the channel\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              client_id:\n                type: string\n                title: client ID associated with the consensus state\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryChannelClientStateResponse is the Response type for the\n              Query/QueryChannelClientState RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: revision_number\n          description: revision number of the consensus state\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: revision_height\n          description: revision height of the consensus state\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence:\n    get:\n      summary: >-\n        NextSequenceReceive returns the next receive sequence for a given\n        channel.\n      operationId: IbcCoreChannelV1Query_NextSequenceReceive\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              next_sequence_receive:\n                type: string\n                format: uint64\n                title: next sequence receive number\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QuerySequenceResponse is the request type for the\n              Query/QueryNextSequenceReceiveResponse RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send:\n    get:\n      summary: NextSequenceSend returns the next send sequence for a given channel.\n      operationId: IbcCoreChannelV1Query_NextSequenceSend\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              next_sequence_send:\n                type: string\n                format: uint64\n                title: next sequence send number\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryNextSequenceSendResponse is the request type for the\n              Query/QueryNextSequenceSend RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements:\n    get:\n      summary: >-\n        PacketAcknowledgements returns all the packet acknowledgements\n        associated\n\n        with a channel.\n      operationId: IbcCoreChannelV1Query_PacketAcknowledgements\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              acknowledgements:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    port_id:\n                      type: string\n                      description: channel port identifier.\n                    channel_id:\n                      type: string\n                      description: channel unique identifier.\n                    sequence:\n                      type: string\n                      format: uint64\n                      description: packet sequence.\n                    data:\n                      type: string\n                      format: byte\n                      description: embedded data that represents packet state.\n                  description: >-\n                    PacketState defines the generic type necessary to retrieve\n                    and store\n\n                    packet commitments, acknowledgements, and receipts.\n\n                    Caller is responsible for knowing the context necessary to\n                    interpret this\n\n                    state as a commitment, acknowledgement, or a receipt.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryPacketAcknowledgemetsResponse is the request type for the\n              Query/QueryPacketAcknowledgements RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n        - name: packet_commitment_sequences\n          description: list of packet sequences\n          in: query\n          required: false\n          type: array\n          items:\n            type: string\n            format: uint64\n          collectionFormat: multi\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}:\n    get:\n      summary: PacketAcknowledgement queries a stored packet acknowledgement hash.\n      operationId: IbcCoreChannelV1Query_PacketAcknowledgement\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              acknowledgement:\n                type: string\n                format: byte\n                title: packet associated with the request fields\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: >-\n              QueryPacketAcknowledgementResponse defines the client query\n              response for a\n\n              packet which also includes a proof and the height from which the\n\n              proof was retrieved\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments:\n    get:\n      summary: |-\n        PacketCommitments returns all the packet commitments hashes associated\n        with a channel.\n      operationId: IbcCoreChannelV1Query_PacketCommitments\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              commitments:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    port_id:\n                      type: string\n                      description: channel port identifier.\n                    channel_id:\n                      type: string\n                      description: channel unique identifier.\n                    sequence:\n                      type: string\n                      format: uint64\n                      description: packet sequence.\n                    data:\n                      type: string\n                      format: byte\n                      description: embedded data that represents packet state.\n                  description: >-\n                    PacketState defines the generic type necessary to retrieve\n                    and store\n\n                    packet commitments, acknowledgements, and receipts.\n\n                    Caller is responsible for knowing the context necessary to\n                    interpret this\n\n                    state as a commitment, acknowledgement, or a receipt.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryPacketCommitmentsResponse is the request type for the\n              Query/QueryPacketCommitments RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks:\n    get:\n      summary: >-\n        UnreceivedAcks returns all the unreceived IBC acknowledgements\n        associated\n\n        with a channel and sequences.\n      operationId: IbcCoreChannelV1Query_UnreceivedAcks\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              sequences:\n                type: array\n                items:\n                  type: string\n                  format: uint64\n                title: list of unreceived acknowledgement sequences\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryUnreceivedAcksResponse is the response type for the\n              Query/UnreceivedAcks RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_ack_sequences\n          description: list of acknowledgement sequences\n          in: path\n          required: true\n          type: array\n          items:\n            type: string\n            format: uint64\n          collectionFormat: csv\n          minItems: 1\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets:\n    get:\n      summary: >-\n        UnreceivedPackets returns all the unreceived IBC packets associated with\n        a\n\n        channel and sequences.\n      operationId: IbcCoreChannelV1Query_UnreceivedPackets\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              sequences:\n                type: array\n                items:\n                  type: string\n                  format: uint64\n                title: list of unreceived packet sequences\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryUnreceivedPacketsResponse is the response type for the\n              Query/UnreceivedPacketCommitments RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: packet_commitment_sequences\n          description: list of packet sequences\n          in: path\n          required: true\n          type: array\n          items:\n            type: string\n            format: uint64\n          collectionFormat: csv\n          minItems: 1\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}:\n    get:\n      summary: PacketCommitment queries a stored packet commitment hash.\n      operationId: IbcCoreChannelV1Query_PacketCommitment\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              commitment:\n                type: string\n                format: byte\n                title: packet associated with the request fields\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: >-\n              QueryPacketCommitmentResponse defines the client query response\n              for a packet\n\n              which also includes a proof and the height from which the proof\n              was\n\n              retrieved\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}:\n    get:\n      summary: >-\n        PacketReceipt queries if a given packet sequence has been received on\n        the\n\n        queried chain\n      operationId: IbcCoreChannelV1Query_PacketReceipt\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              received:\n                type: boolean\n                title: success flag for if receipt exists\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: >-\n              QueryPacketReceiptResponse defines the client query response for a\n              packet\n\n              receipt which also includes a proof, and the height from which the\n              proof was\n\n              retrieved\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: channel_id\n          description: channel unique identifier\n          in: path\n          required: true\n          type: string\n        - name: port_id\n          description: port unique identifier\n          in: path\n          required: true\n          type: string\n        - name: sequence\n          description: packet sequence\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/core/channel/v1/connections/{connection}/channels:\n    get:\n      summary: |-\n        ConnectionChannels queries all the channels associated with a connection\n        end.\n      operationId: IbcCoreChannelV1Query_ConnectionChannels\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              channels:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    state:\n                      title: current state of the channel end\n                      type: string\n                      enum:\n                        - STATE_UNINITIALIZED_UNSPECIFIED\n                        - STATE_INIT\n                        - STATE_TRYOPEN\n                        - STATE_OPEN\n                        - STATE_CLOSED\n                      default: STATE_UNINITIALIZED_UNSPECIFIED\n                      description: >-\n                        State defines if a channel is in one of the following\n                        states:\n\n                        CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                         - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                         - STATE_INIT: A channel has just started the opening handshake.\n                         - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                         - STATE_OPEN: A channel has completed the handshake. Open channels are\n                        ready to send and receive packets.\n                         - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                        packets.\n                    ordering:\n                      title: whether the channel is ordered or unordered\n                      type: string\n                      enum:\n                        - ORDER_NONE_UNSPECIFIED\n                        - ORDER_UNORDERED\n                        - ORDER_ORDERED\n                      default: ORDER_NONE_UNSPECIFIED\n                      description: >-\n                        - ORDER_NONE_UNSPECIFIED: zero-value for channel\n                        ordering\n                         - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                        which they were sent.\n                         - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n                    counterparty:\n                      title: counterparty channel end\n                      type: object\n                      properties:\n                        port_id:\n                          type: string\n                          description: >-\n                            port on the counterparty chain which owns the other\n                            end of the channel.\n                        channel_id:\n                          type: string\n                          title: channel end on the counterparty chain\n                    connection_hops:\n                      type: array\n                      items:\n                        type: string\n                      title: >-\n                        list of connection identifiers, in order, along which\n                        packets sent on\n\n                        this channel will travel\n                    version:\n                      type: string\n                      title: >-\n                        opaque channel version, which is agreed upon during the\n                        handshake\n                    port_id:\n                      type: string\n                      title: port identifier\n                    channel_id:\n                      type: string\n                      title: channel identifier\n                  description: >-\n                    IdentifiedChannel defines a channel with additional port and\n                    channel\n\n                    identifier fields.\n                description: list of channels associated with a connection.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryConnectionChannelsResponse is the Response type for the\n              Query/QueryConnectionChannels RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: connection\n          description: connection unique identifier\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc.core.client.v1.Msg/CreateClient:\n    post:\n      summary: CreateClient defines a rpc handler method for MsgCreateClient.\n      operationId: IbcCoreClientV1Msg_CreateClient\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgCreateClientResponse defines the Msg/CreateClient response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_state:\n                title: light client state\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              consensus_state:\n                description: >-\n                  consensus state associated with the client that corresponds to\n                  a given\n\n                  height.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n              signer:\n                type: string\n                title: signer address\n            title: MsgCreateClient defines a message to create an IBC client\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/IBCSoftwareUpgrade:\n    post:\n      summary: >-\n        IBCSoftwareUpgrade defines a rpc handler method for\n        MsgIBCSoftwareUpgrade.\n      operationId: IbcCoreClientV1Msg_IBCSoftwareUpgrade\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              plan:\n                type: object\n                properties:\n                  name:\n                    type: string\n                    description: >-\n                      Sets the name for the upgrade. This name will be used by\n                      the upgraded\n\n                      version of the software to apply any special \"on-upgrade\"\n                      commands during\n\n                      the first BeginBlock method after the upgrade is applied.\n                      It is also used\n\n                      to detect whether a software version can handle a given\n                      upgrade. If no\n\n                      upgrade handler with this name has been set in the\n                      software, it will be\n\n                      assumed that the software is out-of-date when the upgrade\n                      Time or Height is\n\n                      reached and the software will exit.\n                  time:\n                    type: string\n                    format: date-time\n                    description: >-\n                      Deprecated: Time based upgrades have been deprecated. Time\n                      based upgrade logic\n\n                      has been removed from the SDK.\n\n                      If this field is not empty, an error will be thrown.\n                  height:\n                    type: string\n                    format: int64\n                    description: The height at which the upgrade must be performed.\n                  info:\n                    type: string\n                    title: >-\n                      Any application specific upgrade info to be included\n                      on-chain\n\n                      such as a git commit that validators could automatically\n                      upgrade to\n                  upgraded_client_state:\n                    description: >-\n                      Deprecated: UpgradedClientState field has been deprecated.\n                      IBC upgrade logic has been\n\n                      moved to the IBC module in the sub module 02-client.\n\n                      If this field is not empty, an error will be thrown.\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                description: >-\n                  Plan specifies information about a planned upgrade and when it\n                  should occur.\n              upgraded_client_state:\n                description: >-\n                  An UpgradedClientState must be provided to perform an IBC\n                  breaking upgrade.\n\n                  This will make the chain commit to the correct upgraded (self)\n                  client state\n\n                  before the upgrade occurs, so that connecting chains can\n                  verify that the\n\n                  new upgraded client is valid by verifying a proof on the\n                  previous version\n\n                  of the chain. This will allow IBC connections to persist\n                  smoothly across\n\n                  planned chain upgrades. Correspondingly, the\n                  UpgradedClientState field has been\n\n                  deprecated in the Cosmos SDK to allow for this logic to exist\n                  solely in\n\n                  the 02-client module.\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n              signer:\n                type: string\n                title: signer address\n            title: >-\n              MsgIBCSoftwareUpgrade defines the message used to schedule an\n              upgrade of an IBC client using a v1 governance proposal\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/RecoverClient:\n    post:\n      summary: RecoverClient defines a rpc handler method for MsgRecoverClient.\n      operationId: IbcCoreClientV1Msg_RecoverClient\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgRecoverClientResponse defines the Msg/RecoverClient response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgRecoverClient defines the message used to recover a frozen or\n            expired client.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              subject_client_id:\n                type: string\n                title: >-\n                  the client identifier for the client to be updated if the\n                  proposal passes\n              substitute_client_id:\n                type: string\n                title: >-\n                  the substitute client identifier for the client which will\n                  replace the subject\n\n                  client\n              signer:\n                type: string\n                title: signer address\n            description: >-\n              MsgRecoverClient defines the message used to recover a frozen or\n              expired client.\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/SubmitMisbehaviour:\n    post:\n      summary: >-\n        SubmitMisbehaviour defines a rpc handler method for\n        MsgSubmitMisbehaviour.\n      operationId: IbcCoreClientV1Msg_SubmitMisbehaviour\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour\n              response\n\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence\n            for\n\n            light client misbehaviour.\n\n            This message has been deprecated. Use MsgUpdateClient instead.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_id:\n                type: string\n                title: client unique identifier\n              misbehaviour:\n                title: misbehaviour used for freezing the light client\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              signer:\n                type: string\n                title: signer address\n            description: >-\n              MsgSubmitMisbehaviour defines an sdk.Msg type that submits\n              Evidence for\n\n              light client misbehaviour.\n\n              This message has been deprecated. Use MsgUpdateClient instead.\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/UpdateClient:\n    post:\n      summary: UpdateClient defines a rpc handler method for MsgUpdateClient.\n      operationId: IbcCoreClientV1Msg_UpdateClient\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateClientResponse defines the Msg/UpdateClient response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateClient defines an sdk.Msg to update a IBC client state\n            using\n\n            the given client message.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_id:\n                type: string\n                title: client unique identifier\n              client_message:\n                title: client message to update the light client\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              signer:\n                type: string\n                title: signer address\n            description: >-\n              MsgUpdateClient defines an sdk.Msg to update a IBC client state\n              using\n\n              the given client message.\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/UpdateClientParams:\n    post:\n      summary: UpdateClientParams defines a rpc handler method for MsgUpdateParams.\n      operationId: IbcCoreClientV1Msg_UpdateClientParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgUpdateParamsResponse defines the MsgUpdateParams response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateParams defines the sdk.Msg type to update the client\n            parameters.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              signer:\n                type: string\n                title: signer address\n              params:\n                description: |-\n                  params defines the client parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  allowed_clients:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      allowed_clients defines the list of allowed client state\n                      types which can be created\n\n                      and interacted with. If a client type is removed from the\n                      allowed clients list, usage\n\n                      of this client will be disabled until it is added again to\n                      the list.\n            description: >-\n              MsgUpdateParams defines the sdk.Msg type to update the client\n              parameters.\n      tags:\n        - Msg\n  /ibc.core.client.v1.Msg/UpgradeClient:\n    post:\n      summary: UpgradeClient defines a rpc handler method for MsgUpgradeClient.\n      operationId: IbcCoreClientV1Msg_UpgradeClient\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpgradeClientResponse defines the Msg/UpgradeClient response\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_id:\n                type: string\n                title: client unique identifier\n              client_state:\n                title: upgraded client state\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              consensus_state:\n                title: >-\n                  upgraded consensus state, only contains enough information to\n                  serve as a\n\n                  basis of trust in update logic\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              proof_upgrade_client:\n                type: string\n                format: byte\n                title: proof that old chain committed to new client\n              proof_upgrade_consensus_state:\n                type: string\n                format: byte\n                title: proof that old chain committed to new consensus state\n              signer:\n                type: string\n                title: signer address\n            title: >-\n              MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a\n              new client\n\n              state\n      tags:\n        - Msg\n  /ibc/core/client/v1/client_states:\n    get:\n      summary: ClientStates queries all the IBC light clients of a chain.\n      operationId: IbcCoreClientV1Query_ClientStates\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              client_states:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    client_id:\n                      type: string\n                      title: client identifier\n                    client_state:\n                      title: client state\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                  description: >-\n                    IdentifiedClientState defines a client state with an\n                    additional client\n\n                    identifier field.\n                description: list of stored ClientStates of the chain.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n            description: >-\n              QueryClientStatesResponse is the response type for the\n              Query/ClientStates RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/client/v1/client_states/{client_id}:\n    get:\n      summary: ClientState queries an IBC light client.\n      operationId: IbcCoreClientV1Query_ClientState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              client_state:\n                title: client state associated with the request identifier\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            description: >-\n              QueryClientStateResponse is the response type for the\n              Query/ClientState RPC\n\n              method. Besides the client state, it includes a proof and the\n              height from\n\n              which the proof was retrieved.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client state unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/client/v1/client_status/{client_id}:\n    get:\n      summary: Status queries the status of an IBC client.\n      operationId: IbcCoreClientV1Query_ClientStatus\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              status:\n                type: string\n            description: >-\n              QueryClientStatusResponse is the response type for the\n              Query/ClientStatus RPC\n\n              method. It returns the current status of the IBC client.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/client/v1/consensus_states/{client_id}:\n    get:\n      summary: |-\n        ConsensusStates queries all the consensus state associated with a given\n        client.\n      operationId: IbcCoreClientV1Query_ConsensusStates\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              consensus_states:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    height:\n                      title: consensus state height\n                      type: object\n                      properties:\n                        revision_number:\n                          type: string\n                          format: uint64\n                          title: the revision that the client is currently on\n                        revision_height:\n                          type: string\n                          format: uint64\n                          title: the height within the given revision\n                      description: >-\n                        Normally the RevisionHeight is incremented at each\n                        height while keeping\n\n                        RevisionNumber the same. However some consensus\n                        algorithms may choose to\n\n                        reset the height in certain conditions e.g. hard forks,\n                        state-machine\n\n                        breaking changes In these cases, the RevisionNumber is\n                        incremented so that\n\n                        height continues to be monitonically increasing even as\n                        the RevisionHeight\n\n                        gets reset\n                    consensus_state:\n                      title: consensus state\n                      type: object\n                      properties:\n                        '@type':\n                          type: string\n                          description: >-\n                            A URL/resource name that uniquely identifies the\n                            type of the serialized\n\n                            protocol buffer message. This string must contain at\n                            least\n\n                            one \"/\" character. The last segment of the URL's\n                            path must represent\n\n                            the fully qualified name of the type (as in\n\n                            `path/google.protobuf.Duration`). The name should be\n                            in a canonical form\n\n                            (e.g., leading \".\" is not accepted).\n\n\n                            In practice, teams usually precompile into the\n                            binary all types that they\n\n                            expect it to use in the context of Any. However, for\n                            URLs which use the\n\n                            scheme `http`, `https`, or no scheme, one can\n                            optionally set up a type\n\n                            server that maps type URLs to message definitions as\n                            follows:\n\n\n                            * If no scheme is provided, `https` is assumed.\n\n                            * An HTTP GET on the URL must yield a\n                            [google.protobuf.Type][]\n                              value in binary format, or produce an error.\n                            * Applications are allowed to cache lookup results\n                            based on the\n                              URL, or have them precompiled into a binary to avoid any\n                              lookup. Therefore, binary compatibility needs to be preserved\n                              on changes to types. (Use versioned type names to manage\n                              breaking changes.)\n\n                            Note: this functionality is not currently available\n                            in the official\n\n                            protobuf release, and it is not used for type URLs\n                            beginning with\n\n                            type.googleapis.com.\n\n\n                            Schemes other than `http`, `https` (or the empty\n                            scheme) might be\n\n                            used with implementation specific semantics.\n                      additionalProperties: {}\n                      description: >-\n                        `Any` contains an arbitrary serialized protocol buffer\n                        message along with a\n\n                        URL that describes the type of the serialized message.\n\n\n                        Protobuf library provides support to pack/unpack Any\n                        values in the form\n\n                        of utility functions or additional generated methods of\n                        the Any type.\n\n\n                        Example 1: Pack and unpack a message in C++.\n\n                            Foo foo = ...;\n                            Any any;\n                            any.PackFrom(foo);\n                            ...\n                            if (any.UnpackTo(&foo)) {\n                              ...\n                            }\n\n                        Example 2: Pack and unpack a message in Java.\n\n                            Foo foo = ...;\n                            Any any = Any.pack(foo);\n                            ...\n                            if (any.is(Foo.class)) {\n                              foo = any.unpack(Foo.class);\n                            }\n                            // or ...\n                            if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                              foo = any.unpack(Foo.getDefaultInstance());\n                            }\n\n                        Example 3: Pack and unpack a message in Python.\n\n                            foo = Foo(...)\n                            any = Any()\n                            any.Pack(foo)\n                            ...\n                            if any.Is(Foo.DESCRIPTOR):\n                              any.Unpack(foo)\n                              ...\n\n                        Example 4: Pack and unpack a message in Go\n\n                             foo := &pb.Foo{...}\n                             any, err := anypb.New(foo)\n                             if err != nil {\n                               ...\n                             }\n                             ...\n                             foo := &pb.Foo{}\n                             if err := any.UnmarshalTo(foo); err != nil {\n                               ...\n                             }\n\n                        The pack methods provided by protobuf library will by\n                        default use\n\n                        'type.googleapis.com/full.type.name' as the type URL and\n                        the unpack\n\n                        methods only use the fully qualified type name after the\n                        last '/'\n\n                        in the type URL, for example \"foo.bar.com/x/y.z\" will\n                        yield type\n\n                        name \"y.z\".\n\n\n                        JSON\n\n\n                        The JSON representation of an `Any` value uses the\n                        regular\n\n                        representation of the deserialized, embedded message,\n                        with an\n\n                        additional field `@type` which contains the type URL.\n                        Example:\n\n                            package google.profile;\n                            message Person {\n                              string first_name = 1;\n                              string last_name = 2;\n                            }\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.profile.Person\",\n                              \"firstName\": <string>,\n                              \"lastName\": <string>\n                            }\n\n                        If the embedded message type is well-known and has a\n                        custom JSON\n\n                        representation, that representation will be embedded\n                        adding a field\n\n                        `value` which holds the custom JSON in addition to the\n                        `@type`\n\n                        field. Example (for message\n                        [google.protobuf.Duration][]):\n\n                            {\n                              \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                              \"value\": \"1.212s\"\n                            }\n                  description: >-\n                    ConsensusStateWithHeight defines a consensus state with an\n                    additional height\n\n                    field.\n                title: consensus states associated with the identifier\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n            title: |-\n              QueryConsensusStatesResponse is the response type for the\n              Query/ConsensusStates RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client identifier\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/client/v1/consensus_states/{client_id}/heights:\n    get:\n      summary: >-\n        ConsensusStateHeights queries the height of every consensus states\n        associated with a given client.\n      operationId: IbcCoreClientV1Query_ConsensusStateHeights\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              consensus_state_heights:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    revision_number:\n                      type: string\n                      format: uint64\n                      title: the revision that the client is currently on\n                    revision_height:\n                      type: string\n                      format: uint64\n                      title: the height within the given revision\n                  description: >-\n                    Normally the RevisionHeight is incremented at each height\n                    while keeping\n\n                    RevisionNumber the same. However some consensus algorithms\n                    may choose to\n\n                    reset the height in certain conditions e.g. hard forks,\n                    state-machine\n\n                    breaking changes In these cases, the RevisionNumber is\n                    incremented so that\n\n                    height continues to be monitonically increasing even as the\n                    RevisionHeight\n\n                    gets reset\n                  title: >-\n                    Height is a monotonically increasing data type\n\n                    that can be compared against another Height for the purposes\n                    of updating and\n\n                    freezing clients\n                title: consensus state heights\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n            title: |-\n              QueryConsensusStateHeightsResponse is the response type for the\n              Query/ConsensusStateHeights RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client identifier\n          in: path\n          required: true\n          type: string\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}:\n    get:\n      summary: >-\n        ConsensusState queries a consensus state associated with a client state\n        at\n\n        a given height.\n      operationId: IbcCoreClientV1Query_ConsensusState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              consensus_state:\n                title: >-\n                  consensus state associated with the client identifier at the\n                  given height\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: >-\n              QueryConsensusStateResponse is the response type for the\n              Query/ConsensusState\n\n              RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client identifier\n          in: path\n          required: true\n          type: string\n        - name: revision_number\n          description: consensus state revision number\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: revision_height\n          description: consensus state revision height\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: latest_height\n          description: >-\n            latest_height overrrides the height field and queries the latest\n            stored\n\n            ConsensusState\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/client/v1/params:\n    get:\n      summary: ClientParams queries all parameters of the ibc client submodule.\n      operationId: IbcCoreClientV1Query_ClientParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  allowed_clients:\n                    type: array\n                    items:\n                      type: string\n                    description: >-\n                      allowed_clients defines the list of allowed client state\n                      types which can be created\n\n                      and interacted with. If a client type is removed from the\n                      allowed clients list, usage\n\n                      of this client will be disabled until it is added again to\n                      the list.\n            description: >-\n              QueryClientParamsResponse is the response type for the\n              Query/ClientParams RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /ibc/core/client/v1/upgraded_client_states:\n    get:\n      summary: UpgradedClientState queries an Upgraded IBC light client.\n      operationId: IbcCoreClientV1Query_UpgradedClientState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              upgraded_client_state:\n                title: client state associated with the request identifier\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n            description: |-\n              QueryUpgradedClientStateResponse is the response type for the\n              Query/UpgradedClientState RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /ibc/core/client/v1/upgraded_consensus_states:\n    get:\n      summary: UpgradedConsensusState queries an Upgraded IBC consensus state.\n      operationId: IbcCoreClientV1Query_UpgradedConsensusState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              upgraded_consensus_state:\n                title: Consensus state associated with the request identifier\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n            description: |-\n              QueryUpgradedConsensusStateResponse is the response type for the\n              Query/UpgradedConsensusState RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /ibc/core/connection/v1/client_connections/{client_id}:\n    get:\n      summary: |-\n        ClientConnections queries the connection paths associated with a client\n        state.\n      operationId: IbcCoreConnectionV1Query_ClientConnections\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              connection_paths:\n                type: array\n                items:\n                  type: string\n                description: slice of all the connection paths associated with a client.\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was generated\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryClientConnectionsResponse is the response type for the\n              Query/ClientConnections RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: client_id\n          description: client identifier associated with a connection\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/connection/v1/connections:\n    get:\n      summary: Connections queries all the IBC connections of a chain.\n      operationId: IbcCoreConnectionV1Query_Connections\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              connections:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    id:\n                      type: string\n                      description: connection identifier.\n                    client_id:\n                      type: string\n                      description: client associated with this connection.\n                    versions:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          identifier:\n                            type: string\n                            title: unique version identifier\n                          features:\n                            type: array\n                            items:\n                              type: string\n                            title: >-\n                              list of features compatible with the specified\n                              identifier\n                        description: >-\n                          Version defines the versioning scheme used to\n                          negotiate the IBC verison in\n\n                          the connection handshake.\n                      title: >-\n                        IBC version which can be utilised to determine encodings\n                        or protocols for\n\n                        channels or packets utilising this connection\n                    state:\n                      description: current state of the connection end.\n                      type: string\n                      enum:\n                        - STATE_UNINITIALIZED_UNSPECIFIED\n                        - STATE_INIT\n                        - STATE_TRYOPEN\n                        - STATE_OPEN\n                      default: STATE_UNINITIALIZED_UNSPECIFIED\n                    counterparty:\n                      description: counterparty chain associated with this connection.\n                      type: object\n                      properties:\n                        client_id:\n                          type: string\n                          description: >-\n                            identifies the client on the counterparty chain\n                            associated with a given\n\n                            connection.\n                        connection_id:\n                          type: string\n                          description: >-\n                            identifies the connection end on the counterparty\n                            chain associated with a\n\n                            given connection.\n                        prefix:\n                          description: commitment merkle prefix of the counterparty chain.\n                          type: object\n                          properties:\n                            key_prefix:\n                              type: string\n                              format: byte\n                          title: >-\n                            MerklePrefix is merkle path prefixed to the key.\n\n                            The constructed key from the Path and the key will\n                            be append(Path.KeyPath,\n\n                            append(Path.KeyPrefix, key...))\n                    delay_period:\n                      type: string\n                      format: uint64\n                      description: delay period associated with this connection.\n                  description: >-\n                    IdentifiedConnection defines a connection with additional\n                    connection\n\n                    identifier field.\n                description: list of stored connections of the chain.\n              pagination:\n                title: pagination response\n                type: object\n                properties:\n                  next_key:\n                    type: string\n                    format: byte\n                    description: |-\n                      next_key is the key to be passed to PageRequest.key to\n                      query the next page most efficiently. It will be empty if\n                      there are no more results.\n                  total:\n                    type: string\n                    format: uint64\n                    title: >-\n                      total is total number of results available if\n                      PageRequest.count_total\n\n                      was set, its value is undefined otherwise\n                description: >-\n                  PageResponse is to be embedded in gRPC response messages where\n                  the\n\n                  corresponding request message has used PageRequest.\n\n                   message SomeResponse {\n                           repeated Bar results = 1;\n                           PageResponse page = 2;\n                   }\n              height:\n                title: query block height\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            description: >-\n              QueryConnectionsResponse is the response type for the\n              Query/Connections RPC\n\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: pagination.key\n          description: |-\n            key is a value returned in PageResponse.next_key to begin\n            querying the next page most efficiently. Only one of offset or key\n            should be set.\n          in: query\n          required: false\n          type: string\n          format: byte\n        - name: pagination.offset\n          description: >-\n            offset is a numeric offset that can be used when key is unavailable.\n\n            It is less efficient than using key. Only one of offset or key\n            should\n\n            be set.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.limit\n          description: >-\n            limit is the total number of results to be returned in the result\n            page.\n\n            If left empty it will default to a value to be set by each app.\n          in: query\n          required: false\n          type: string\n          format: uint64\n        - name: pagination.count_total\n          description: >-\n            count_total is set to true  to indicate that the result set should\n            include\n\n            a count of the total number of items available for pagination in\n            UIs.\n\n            count_total is only respected when offset is used. It is ignored\n            when key\n\n            is set.\n          in: query\n          required: false\n          type: boolean\n        - name: pagination.reverse\n          description: >-\n            reverse is set to true if results are to be returned in the\n            descending order.\n\n\n            Since: cosmos-sdk 0.43\n          in: query\n          required: false\n          type: boolean\n      tags:\n        - Query\n  /ibc/core/connection/v1/connections/{connection_id}:\n    get:\n      summary: Connection queries an IBC connection end.\n      operationId: IbcCoreConnectionV1Query_Connection\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              connection:\n                title: connection associated with the request identifier\n                type: object\n                properties:\n                  client_id:\n                    type: string\n                    description: client associated with this connection.\n                  versions:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        identifier:\n                          type: string\n                          title: unique version identifier\n                        features:\n                          type: array\n                          items:\n                            type: string\n                          title: >-\n                            list of features compatible with the specified\n                            identifier\n                      description: >-\n                        Version defines the versioning scheme used to negotiate\n                        the IBC verison in\n\n                        the connection handshake.\n                    description: >-\n                      IBC version which can be utilised to determine encodings\n                      or protocols for\n\n                      channels or packets utilising this connection.\n                  state:\n                    description: current state of the connection end.\n                    type: string\n                    enum:\n                      - STATE_UNINITIALIZED_UNSPECIFIED\n                      - STATE_INIT\n                      - STATE_TRYOPEN\n                      - STATE_OPEN\n                    default: STATE_UNINITIALIZED_UNSPECIFIED\n                  counterparty:\n                    description: counterparty chain associated with this connection.\n                    type: object\n                    properties:\n                      client_id:\n                        type: string\n                        description: >-\n                          identifies the client on the counterparty chain\n                          associated with a given\n\n                          connection.\n                      connection_id:\n                        type: string\n                        description: >-\n                          identifies the connection end on the counterparty\n                          chain associated with a\n\n                          given connection.\n                      prefix:\n                        description: commitment merkle prefix of the counterparty chain.\n                        type: object\n                        properties:\n                          key_prefix:\n                            type: string\n                            format: byte\n                        title: >-\n                          MerklePrefix is merkle path prefixed to the key.\n\n                          The constructed key from the Path and the key will be\n                          append(Path.KeyPath,\n\n                          append(Path.KeyPrefix, key...))\n                  delay_period:\n                    type: string\n                    format: uint64\n                    description: >-\n                      delay period that must pass before a consensus state can\n                      be used for\n\n                      packet-verification NOTE: delay period logic is only\n                      implemented by some\n\n                      clients.\n                description: >-\n                  ConnectionEnd defines a stateful object on a chain connected\n                  to another\n\n                  separate one.\n\n                  NOTE: there must only be 2 defined ConnectionEnds to establish\n\n                  a connection between two chains.\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            description: >-\n              QueryConnectionResponse is the response type for the\n              Query/Connection RPC\n\n              method. Besides the connection end, it includes a proof and the\n              height from\n\n              which the proof was retrieved.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: connection_id\n          description: connection unique identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/connection/v1/connections/{connection_id}/client_state:\n    get:\n      summary: |-\n        ConnectionClientState queries the client state associated with the\n        connection.\n      operationId: IbcCoreConnectionV1Query_ConnectionClientState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              identified_client_state:\n                title: client state associated with the channel\n                type: object\n                properties:\n                  client_id:\n                    type: string\n                    title: client identifier\n                  client_state:\n                    title: client state\n                    type: object\n                    properties:\n                      '@type':\n                        type: string\n                        description: >-\n                          A URL/resource name that uniquely identifies the type\n                          of the serialized\n\n                          protocol buffer message. This string must contain at\n                          least\n\n                          one \"/\" character. The last segment of the URL's path\n                          must represent\n\n                          the fully qualified name of the type (as in\n\n                          `path/google.protobuf.Duration`). The name should be\n                          in a canonical form\n\n                          (e.g., leading \".\" is not accepted).\n\n\n                          In practice, teams usually precompile into the binary\n                          all types that they\n\n                          expect it to use in the context of Any. However, for\n                          URLs which use the\n\n                          scheme `http`, `https`, or no scheme, one can\n                          optionally set up a type\n\n                          server that maps type URLs to message definitions as\n                          follows:\n\n\n                          * If no scheme is provided, `https` is assumed.\n\n                          * An HTTP GET on the URL must yield a\n                          [google.protobuf.Type][]\n                            value in binary format, or produce an error.\n                          * Applications are allowed to cache lookup results\n                          based on the\n                            URL, or have them precompiled into a binary to avoid any\n                            lookup. Therefore, binary compatibility needs to be preserved\n                            on changes to types. (Use versioned type names to manage\n                            breaking changes.)\n\n                          Note: this functionality is not currently available in\n                          the official\n\n                          protobuf release, and it is not used for type URLs\n                          beginning with\n\n                          type.googleapis.com.\n\n\n                          Schemes other than `http`, `https` (or the empty\n                          scheme) might be\n\n                          used with implementation specific semantics.\n                    additionalProperties: {}\n                    description: >-\n                      `Any` contains an arbitrary serialized protocol buffer\n                      message along with a\n\n                      URL that describes the type of the serialized message.\n\n\n                      Protobuf library provides support to pack/unpack Any\n                      values in the form\n\n                      of utility functions or additional generated methods of\n                      the Any type.\n\n\n                      Example 1: Pack and unpack a message in C++.\n\n                          Foo foo = ...;\n                          Any any;\n                          any.PackFrom(foo);\n                          ...\n                          if (any.UnpackTo(&foo)) {\n                            ...\n                          }\n\n                      Example 2: Pack and unpack a message in Java.\n\n                          Foo foo = ...;\n                          Any any = Any.pack(foo);\n                          ...\n                          if (any.is(Foo.class)) {\n                            foo = any.unpack(Foo.class);\n                          }\n                          // or ...\n                          if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                            foo = any.unpack(Foo.getDefaultInstance());\n                          }\n\n                      Example 3: Pack and unpack a message in Python.\n\n                          foo = Foo(...)\n                          any = Any()\n                          any.Pack(foo)\n                          ...\n                          if any.Is(Foo.DESCRIPTOR):\n                            any.Unpack(foo)\n                            ...\n\n                      Example 4: Pack and unpack a message in Go\n\n                           foo := &pb.Foo{...}\n                           any, err := anypb.New(foo)\n                           if err != nil {\n                             ...\n                           }\n                           ...\n                           foo := &pb.Foo{}\n                           if err := any.UnmarshalTo(foo); err != nil {\n                             ...\n                           }\n\n                      The pack methods provided by protobuf library will by\n                      default use\n\n                      'type.googleapis.com/full.type.name' as the type URL and\n                      the unpack\n\n                      methods only use the fully qualified type name after the\n                      last '/'\n\n                      in the type URL, for example \"foo.bar.com/x/y.z\" will\n                      yield type\n\n                      name \"y.z\".\n\n\n                      JSON\n\n\n                      The JSON representation of an `Any` value uses the regular\n\n                      representation of the deserialized, embedded message, with\n                      an\n\n                      additional field `@type` which contains the type URL.\n                      Example:\n\n                          package google.profile;\n                          message Person {\n                            string first_name = 1;\n                            string last_name = 2;\n                          }\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.profile.Person\",\n                            \"firstName\": <string>,\n                            \"lastName\": <string>\n                          }\n\n                      If the embedded message type is well-known and has a\n                      custom JSON\n\n                      representation, that representation will be embedded\n                      adding a field\n\n                      `value` which holds the custom JSON in addition to the\n                      `@type`\n\n                      field. Example (for message [google.protobuf.Duration][]):\n\n                          {\n                            \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                            \"value\": \"1.212s\"\n                          }\n                description: >-\n                  IdentifiedClientState defines a client state with an\n                  additional client\n\n                  identifier field.\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryConnectionClientStateResponse is the response type for the\n              Query/ConnectionClientState RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: connection_id\n          description: connection identifier\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}:\n    get:\n      summary: |-\n        ConnectionConsensusState queries the consensus state associated with the\n        connection.\n      operationId: IbcCoreConnectionV1Query_ConnectionConsensusState\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              consensus_state:\n                title: consensus state associated with the channel\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              client_id:\n                type: string\n                title: client ID associated with the consensus state\n              proof:\n                type: string\n                format: byte\n                title: merkle proof of existence\n              proof_height:\n                title: height at which the proof was retrieved\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n            title: |-\n              QueryConnectionConsensusStateResponse is the response type for the\n              Query/ConnectionConsensusState RPC method\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: connection_id\n          description: connection identifier\n          in: path\n          required: true\n          type: string\n        - name: revision_number\n          in: path\n          required: true\n          type: string\n          format: uint64\n        - name: revision_height\n          in: path\n          required: true\n          type: string\n          format: uint64\n      tags:\n        - Query\n  /ibc/core/connection/v1/params:\n    get:\n      summary: ConnectionParams queries all parameters of the ibc connection submodule.\n      operationId: IbcCoreConnectionV1Query_ConnectionParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params defines the parameters of the module.\n                type: object\n                properties:\n                  max_expected_time_per_block:\n                    type: string\n                    format: uint64\n                    description: >-\n                      maximum expected time per block (in nanoseconds), used to\n                      enforce block delay. This parameter should reflect the\n\n                      largest amount of time that the chain might reasonably\n                      take to produce the next block under normal operating\n\n                      conditions. A safe choice is 3-5x the expected time per\n                      block.\n            description: >-\n              QueryConnectionParamsResponse is the response type for the\n              Query/ConnectionParams RPC method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      tags:\n        - Query\n  /ibc.core.connection.v1.Msg/ConnectionOpenAck:\n    post:\n      summary: ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.\n      operationId: IbcCoreConnectionV1Msg_ConnectionOpenAck\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: |-\n            MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\n            acknowledge the change of connection state to TRYOPEN on Chain B.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              connection_id:\n                type: string\n              counterparty_connection_id:\n                type: string\n              version:\n                type: object\n                properties:\n                  identifier:\n                    type: string\n                    title: unique version identifier\n                  features:\n                    type: array\n                    items:\n                      type: string\n                    title: list of features compatible with the specified identifier\n                description: >-\n                  Version defines the versioning scheme used to negotiate the\n                  IBC verison in\n\n                  the connection handshake.\n              client_state:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              proof_try:\n                type: string\n                format: byte\n                title: >-\n                  proof of the initialization the connection on Chain B:\n                  `UNITIALIZED ->\n\n                  TRYOPEN`\n              proof_client:\n                type: string\n                format: byte\n                title: proof of client state included in message\n              proof_consensus:\n                type: string\n                format: byte\n                title: proof of client consensus state\n              consensus_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n              host_consensus_state_proof:\n                type: string\n                format: byte\n                title: >-\n                  optional proof data for host state machines that are unable to\n                  introspect their own consensus state\n            description: |-\n              MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\n              acknowledge the change of connection state to TRYOPEN on Chain B.\n      tags:\n        - Msg\n  /ibc.core.connection.v1.Msg/ConnectionOpenConfirm:\n    post:\n      summary: |-\n        ConnectionOpenConfirm defines a rpc handler method for\n        MsgConnectionOpenConfirm.\n      operationId: IbcCoreConnectionV1Msg_ConnectionOpenConfirm\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgConnectionOpenConfirmResponse defines the\n              Msg/ConnectionOpenConfirm\n\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B\n            to\n\n            acknowledge the change of connection state to OPEN on Chain A.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              connection_id:\n                type: string\n              proof_ack:\n                type: string\n                format: byte\n                title: >-\n                  proof for the change of the connection state on Chain A: `INIT\n                  -> OPEN`\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n            description: >-\n              MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain\n              B to\n\n              acknowledge the change of connection state to OPEN on Chain A.\n      tags:\n        - Msg\n  /ibc.core.connection.v1.Msg/ConnectionOpenInit:\n    post:\n      summary: >-\n        ConnectionOpenInit defines a rpc handler method for\n        MsgConnectionOpenInit.\n      operationId: IbcCoreConnectionV1Msg_ConnectionOpenInit\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit\n              response\n\n              type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgConnectionOpenInit defines the msg sent by an account on Chain A\n            to\n\n            initialize a connection with Chain B.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_id:\n                type: string\n              counterparty:\n                type: object\n                properties:\n                  client_id:\n                    type: string\n                    description: >-\n                      identifies the client on the counterparty chain associated\n                      with a given\n\n                      connection.\n                  connection_id:\n                    type: string\n                    description: >-\n                      identifies the connection end on the counterparty chain\n                      associated with a\n\n                      given connection.\n                  prefix:\n                    description: commitment merkle prefix of the counterparty chain.\n                    type: object\n                    properties:\n                      key_prefix:\n                        type: string\n                        format: byte\n                    title: >-\n                      MerklePrefix is merkle path prefixed to the key.\n\n                      The constructed key from the Path and the key will be\n                      append(Path.KeyPath,\n\n                      append(Path.KeyPrefix, key...))\n                description: >-\n                  Counterparty defines the counterparty chain associated with a\n                  connection end.\n              version:\n                type: object\n                properties:\n                  identifier:\n                    type: string\n                    title: unique version identifier\n                  features:\n                    type: array\n                    items:\n                      type: string\n                    title: list of features compatible with the specified identifier\n                description: >-\n                  Version defines the versioning scheme used to negotiate the\n                  IBC verison in\n\n                  the connection handshake.\n              delay_period:\n                type: string\n                format: uint64\n              signer:\n                type: string\n            description: >-\n              MsgConnectionOpenInit defines the msg sent by an account on Chain\n              A to\n\n              initialize a connection with Chain B.\n      tags:\n        - Msg\n  /ibc.core.connection.v1.Msg/ConnectionOpenTry:\n    post:\n      summary: ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.\n      operationId: IbcCoreConnectionV1Msg_ConnectionOpenTry\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry\n              response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgConnectionOpenTry defines a msg sent by a Relayer to try to open\n            a\n\n            connection on Chain B.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              client_id:\n                type: string\n              previous_connection_id:\n                type: string\n                description: >-\n                  Deprecated: this field is unused. Crossing hellos are no\n                  longer supported in core IBC.\n              client_state:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              counterparty:\n                type: object\n                properties:\n                  client_id:\n                    type: string\n                    description: >-\n                      identifies the client on the counterparty chain associated\n                      with a given\n\n                      connection.\n                  connection_id:\n                    type: string\n                    description: >-\n                      identifies the connection end on the counterparty chain\n                      associated with a\n\n                      given connection.\n                  prefix:\n                    description: commitment merkle prefix of the counterparty chain.\n                    type: object\n                    properties:\n                      key_prefix:\n                        type: string\n                        format: byte\n                    title: >-\n                      MerklePrefix is merkle path prefixed to the key.\n\n                      The constructed key from the Path and the key will be\n                      append(Path.KeyPath,\n\n                      append(Path.KeyPrefix, key...))\n                description: >-\n                  Counterparty defines the counterparty chain associated with a\n                  connection end.\n              delay_period:\n                type: string\n                format: uint64\n              counterparty_versions:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    identifier:\n                      type: string\n                      title: unique version identifier\n                    features:\n                      type: array\n                      items:\n                        type: string\n                      title: >-\n                        list of features compatible with the specified\n                        identifier\n                  description: >-\n                    Version defines the versioning scheme used to negotiate the\n                    IBC verison in\n\n                    the connection handshake.\n              proof_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              proof_init:\n                type: string\n                format: byte\n                title: >-\n                  proof of the initialization the connection on Chain A:\n                  `UNITIALIZED ->\n\n                  INIT`\n              proof_client:\n                type: string\n                format: byte\n                title: proof of client state included in message\n              proof_consensus:\n                type: string\n                format: byte\n                title: proof of client consensus state\n              consensus_height:\n                type: object\n                properties:\n                  revision_number:\n                    type: string\n                    format: uint64\n                    title: the revision that the client is currently on\n                  revision_height:\n                    type: string\n                    format: uint64\n                    title: the height within the given revision\n                description: >-\n                  Normally the RevisionHeight is incremented at each height\n                  while keeping\n\n                  RevisionNumber the same. However some consensus algorithms may\n                  choose to\n\n                  reset the height in certain conditions e.g. hard forks,\n                  state-machine\n\n                  breaking changes In these cases, the RevisionNumber is\n                  incremented so that\n\n                  height continues to be monitonically increasing even as the\n                  RevisionHeight\n\n                  gets reset\n                title: >-\n                  Height is a monotonically increasing data type\n\n                  that can be compared against another Height for the purposes\n                  of updating and\n\n                  freezing clients\n              signer:\n                type: string\n              host_consensus_state_proof:\n                type: string\n                format: byte\n                title: >-\n                  optional proof data for host state machines that are unable to\n                  introspect their own consensus state\n            description: >-\n              MsgConnectionOpenTry defines a msg sent by a Relayer to try to\n              open a\n\n              connection on Chain B.\n      tags:\n        - Msg\n  /ibc.core.connection.v1.Msg/UpdateConnectionParams:\n    post:\n      summary: |-\n        UpdateConnectionParams defines a rpc handler method for\n        MsgUpdateParams.\n      operationId: IbcCoreConnectionV1Msg_UpdateConnectionParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: MsgUpdateParamsResponse defines the MsgUpdateParams response type.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                  description: >-\n                    `Any` contains an arbitrary serialized protocol buffer\n                    message along with a\n\n                    URL that describes the type of the serialized message.\n\n\n                    Protobuf library provides support to pack/unpack Any values\n                    in the form\n\n                    of utility functions or additional generated methods of the\n                    Any type.\n\n\n                    Example 1: Pack and unpack a message in C++.\n\n                        Foo foo = ...;\n                        Any any;\n                        any.PackFrom(foo);\n                        ...\n                        if (any.UnpackTo(&foo)) {\n                          ...\n                        }\n\n                    Example 2: Pack and unpack a message in Java.\n\n                        Foo foo = ...;\n                        Any any = Any.pack(foo);\n                        ...\n                        if (any.is(Foo.class)) {\n                          foo = any.unpack(Foo.class);\n                        }\n                        // or ...\n                        if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                          foo = any.unpack(Foo.getDefaultInstance());\n                        }\n\n                    Example 3: Pack and unpack a message in Python.\n\n                        foo = Foo(...)\n                        any = Any()\n                        any.Pack(foo)\n                        ...\n                        if any.Is(Foo.DESCRIPTOR):\n                          any.Unpack(foo)\n                          ...\n\n                    Example 4: Pack and unpack a message in Go\n\n                         foo := &pb.Foo{...}\n                         any, err := anypb.New(foo)\n                         if err != nil {\n                           ...\n                         }\n                         ...\n                         foo := &pb.Foo{}\n                         if err := any.UnmarshalTo(foo); err != nil {\n                           ...\n                         }\n\n                    The pack methods provided by protobuf library will by\n                    default use\n\n                    'type.googleapis.com/full.type.name' as the type URL and the\n                    unpack\n\n                    methods only use the fully qualified type name after the\n                    last '/'\n\n                    in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                    type\n\n                    name \"y.z\".\n\n\n                    JSON\n\n\n                    The JSON representation of an `Any` value uses the regular\n\n                    representation of the deserialized, embedded message, with\n                    an\n\n                    additional field `@type` which contains the type URL.\n                    Example:\n\n                        package google.profile;\n                        message Person {\n                          string first_name = 1;\n                          string last_name = 2;\n                        }\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.profile.Person\",\n                          \"firstName\": <string>,\n                          \"lastName\": <string>\n                        }\n\n                    If the embedded message type is well-known and has a custom\n                    JSON\n\n                    representation, that representation will be embedded adding\n                    a field\n\n                    `value` which holds the custom JSON in addition to the\n                    `@type`\n\n                    field. Example (for message [google.protobuf.Duration][]):\n\n                        {\n                          \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                          \"value\": \"1.212s\"\n                        }\n      parameters:\n        - name: body\n          description: >-\n            MsgUpdateParams defines the sdk.Msg type to update the connection\n            parameters.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              signer:\n                type: string\n                title: signer address\n              params:\n                description: |-\n                  params defines the connection parameters to update.\n\n                  NOTE: All parameters must be supplied.\n                type: object\n                properties:\n                  max_expected_time_per_block:\n                    type: string\n                    format: uint64\n                    description: >-\n                      maximum expected time per block (in nanoseconds), used to\n                      enforce block delay. This parameter should reflect the\n\n                      largest amount of time that the chain might reasonably\n                      take to produce the next block under normal operating\n\n                      conditions. A safe choice is 3-5x the expected time per\n                      block.\n            description: >-\n              MsgUpdateParams defines the sdk.Msg type to update the connection\n              parameters.\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/BearerPolicyCmd:\n    post:\n      summary: >-\n        The Msg authenticates the actor initiating the command through a Bearer\n        token.\n\n        This token MUST be issued and signed by some DID Actor, the verification\n        of the signature\n\n        is used as authentication proof.\n\n        Lastly, the Bearer token MUST be bound to some SourceHub account.\n      operationId: SourcehubAcpMsg_BearerPolicyCmd\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: object\n                properties:\n                  set_relationship_result:\n                    type: object\n                    properties:\n                      record_existed:\n                        type: boolean\n                        title: >-\n                          Indicates whether the given Relationship previously\n                          existed, ie the Tx was a no op\n                      record:\n                        type: object\n                        properties:\n                          creation_time:\n                            type: string\n                            format: date-time\n                          creator:\n                            type: string\n                            description: >-\n                              msg_signer is the SourceHub address of the account\n                              that submited the message responsible for this\n                              record\n\n                              It's used for auditing only.\n                          actor:\n                            type: string\n                            title: >-\n                              actor is the DID of the Actor which created the\n                              relationship\n                          policy_id:\n                            type: string\n                          relationship:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                              subject:\n                                type: object\n                                properties:\n                                  actor:\n                                    type: object\n                                    properties:\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Actor represents an entity which makes\n                                      access requests to a Policy.\n                                  actor_set:\n                                    type: object\n                                    properties:\n                                      object:\n                                        type: object\n                                        properties:\n                                          resource:\n                                            type: string\n                                          id:\n                                            type: string\n                                        description: >-\n                                          Object represents an entity which must\n                                          be access controlled within a Policy.\n                                      relation:\n                                        type: string\n                                    description: >-\n                                      ActorSet represents a set of Actors in a\n                                      Policy.\n\n                                      It is specified through an Object,\n                                      Relation pair, which represents\n\n                                      all actors which have a relationship with\n                                      given obj-rel pair.\n\n                                      This expansion is recursive.\n                                  all_actors:\n                                    type: object\n                                    description: >-\n                                      AllActors models a special Relationship\n                                      Subject which indicates\n\n                                      that all Actors in the Policy are\n                                      included.\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                description: >-\n                                  Subject specifies the target of a\n                                  Relationship.\n                            description: >-\n                              Relationship models an access control rule.\n\n                              It states that the given subject has relation with\n                              object.\n                          archived:\n                            type: boolean\n                            title: >-\n                              archived indicates whether an object has been\n                              unregistered\n                        description: >-\n                          RelationshipRecord represents a document contained a\n                          Relationship and additional data.\n                    title: SetRelationshipCmd sets a Relationship in a Policy\n                  delete_relationship_result:\n                    type: object\n                    properties:\n                      record_found:\n                        type: boolean\n                    title: >-\n                      DeleteRelationshipCmdResult removes a Relationship in a\n                      Policy\n                  register_object_result:\n                    type: object\n                    properties:\n                      result:\n                        type: string\n                        enum:\n                          - NoOp\n                          - Registered\n                          - Unarchived\n                        default: NoOp\n                        description: >-\n                          - NoOp: NoOp indicates no action was take. The\n                          operation failed or the Object already existed and was\n                          active\n                           - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n                           - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n                          Only the original owners can Unarchive an object.\n                        title: >-\n                          RegistrationResult encodes the possible result set\n                          from Registering an Object\n                      record:\n                        type: object\n                        properties:\n                          creation_time:\n                            type: string\n                            format: date-time\n                          creator:\n                            type: string\n                            description: >-\n                              msg_signer is the SourceHub address of the account\n                              that submited the message responsible for this\n                              record\n\n                              It's used for auditing only.\n                          actor:\n                            type: string\n                            title: >-\n                              actor is the DID of the Actor which created the\n                              relationship\n                          policy_id:\n                            type: string\n                          relationship:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                              subject:\n                                type: object\n                                properties:\n                                  actor:\n                                    type: object\n                                    properties:\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Actor represents an entity which makes\n                                      access requests to a Policy.\n                                  actor_set:\n                                    type: object\n                                    properties:\n                                      object:\n                                        type: object\n                                        properties:\n                                          resource:\n                                            type: string\n                                          id:\n                                            type: string\n                                        description: >-\n                                          Object represents an entity which must\n                                          be access controlled within a Policy.\n                                      relation:\n                                        type: string\n                                    description: >-\n                                      ActorSet represents a set of Actors in a\n                                      Policy.\n\n                                      It is specified through an Object,\n                                      Relation pair, which represents\n\n                                      all actors which have a relationship with\n                                      given obj-rel pair.\n\n                                      This expansion is recursive.\n                                  all_actors:\n                                    type: object\n                                    description: >-\n                                      AllActors models a special Relationship\n                                      Subject which indicates\n\n                                      that all Actors in the Policy are\n                                      included.\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                description: >-\n                                  Subject specifies the target of a\n                                  Relationship.\n                            description: >-\n                              Relationship models an access control rule.\n\n                              It states that the given subject has relation with\n                              object.\n                          archived:\n                            type: boolean\n                            title: >-\n                              archived indicates whether an object has been\n                              unregistered\n                        description: >-\n                          RelationshipRecord represents a document contained a\n                          Relationship and additional data.\n                    title: RegisterObjectCmdResult registers an Object in a Policy\n                  unregister_object_result:\n                    type: object\n                    properties:\n                      found:\n                        type: boolean\n                      relationships_removed:\n                        type: string\n                        format: uint64\n                    title: >-\n                      UnregisterObjectCmdResult unregisters an Object in a\n                      Policy\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              bearer_token:\n                type: string\n              policy_id:\n                type: string\n              cmd:\n                type: object\n                properties:\n                  set_relationship_cmd:\n                    type: object\n                    properties:\n                      relationship:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                          subject:\n                            type: object\n                            properties:\n                              actor:\n                                type: object\n                                properties:\n                                  id:\n                                    type: string\n                                description: >-\n                                  Actor represents an entity which makes access\n                                  requests to a Policy.\n                              actor_set:\n                                type: object\n                                properties:\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                  relation:\n                                    type: string\n                                description: >-\n                                  ActorSet represents a set of Actors in a\n                                  Policy.\n\n                                  It is specified through an Object, Relation\n                                  pair, which represents\n\n                                  all actors which have a relationship with\n                                  given obj-rel pair.\n\n                                  This expansion is recursive.\n                              all_actors:\n                                type: object\n                                description: >-\n                                  AllActors models a special Relationship\n                                  Subject which indicates\n\n                                  that all Actors in the Policy are included.\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                            description: Subject specifies the target of a Relationship.\n                        description: >-\n                          Relationship models an access control rule.\n\n                          It states that the given subject has relation with\n                          object.\n                    title: SetRelationshipCmd sets a Relationship in a Policy\n                  delete_relationship_cmd:\n                    type: object\n                    properties:\n                      relationship:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                          subject:\n                            type: object\n                            properties:\n                              actor:\n                                type: object\n                                properties:\n                                  id:\n                                    type: string\n                                description: >-\n                                  Actor represents an entity which makes access\n                                  requests to a Policy.\n                              actor_set:\n                                type: object\n                                properties:\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                  relation:\n                                    type: string\n                                description: >-\n                                  ActorSet represents a set of Actors in a\n                                  Policy.\n\n                                  It is specified through an Object, Relation\n                                  pair, which represents\n\n                                  all actors which have a relationship with\n                                  given obj-rel pair.\n\n                                  This expansion is recursive.\n                              all_actors:\n                                type: object\n                                description: >-\n                                  AllActors models a special Relationship\n                                  Subject which indicates\n\n                                  that all Actors in the Policy are included.\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                            description: Subject specifies the target of a Relationship.\n                        description: >-\n                          Relationship models an access control rule.\n\n                          It states that the given subject has relation with\n                          object.\n                    title: DeleteRelationshipCmd removes a Relationship in a Policy\n                  register_object_cmd:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    title: RegisterObjectCmd registers an Object in a Policy\n                  unregister_object_cmd:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    title: UnregisterObjectCmd unregisters an Object in a Policy\n              creation_time:\n                type: string\n                format: date-time\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/CheckAccess:\n    post:\n      summary: >-\n        CheckAccess executes an Access Request for an User and stores the result\n        of the evaluation in SourceHub.\n\n        The resulting evaluation is used to generate a cryptographic proof that\n        the given Access Request\n\n        was valid at a particular block height.\n      operationId: SourcehubAcpMsg_CheckAccess\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              decision:\n                type: object\n                properties:\n                  id:\n                    type: string\n                  policy_id:\n                    type: string\n                    title: used as part of id generation\n                  creator:\n                    type: string\n                    title: used as part of id generation\n                  creator_acc_sequence:\n                    type: string\n                    format: uint64\n                    title: used as part of id generation\n                  operations:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        object:\n                          type: object\n                          properties:\n                            resource:\n                              type: string\n                            id:\n                              type: string\n                          description: >-\n                            Object represents an entity which must be access\n                            controlled within a Policy.\n                          title: target object for operation\n                        permission:\n                          type: string\n                          title: permission required to perform operation\n                      description: Operation represents an action over an object.\n                    title: used as part of id generation\n                  actor:\n                    type: string\n                    title: used as part of id generation\n                  params:\n                    title: used as part of id generation\n                    type: object\n                    properties:\n                      decision_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks a Decision is valid for\n                      proof_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks a DecisionProof is valid for\n                      ticket_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks an AccessTicket is valid for\n                  creation_time:\n                    type: string\n                    format: date-time\n                  issued_height:\n                    type: string\n                    format: uint64\n                    title: >-\n                      issued_height stores the block height when the Decision\n                      was evaluated\n                title: >-\n                  AccessDecision models the result of evaluating a set of\n                  AccessRequests for an Actor\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy_id:\n                type: string\n              creation_time:\n                type: string\n                format: date-time\n              access_request:\n                type: object\n                properties:\n                  operations:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        object:\n                          type: object\n                          properties:\n                            resource:\n                              type: string\n                            id:\n                              type: string\n                          description: >-\n                            Object represents an entity which must be access\n                            controlled within a Policy.\n                          title: target object for operation\n                        permission:\n                          type: string\n                          title: permission required to perform operation\n                      description: Operation represents an action over an object.\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                    title: actor requesting operations\n                title: >-\n                  AccessRequest represents the wish to perform a set of\n                  operations by an actor\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/CreatePolicy:\n    post:\n      summary: |-\n        CreatePolicy adds a new Policy to SourceHub.\n        The Policy models an aplication's high level access control rules.\n      operationId: SourcehubAcpMsg_CreatePolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              policy:\n                type: object\n                properties:\n                  id:\n                    type: string\n                  name:\n                    type: string\n                  description:\n                    type: string\n                  creation_time:\n                    type: string\n                    format: date-time\n                  attributes:\n                    type: object\n                    additionalProperties:\n                      type: string\n                  resources:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        name:\n                          type: string\n                        doc:\n                          type: string\n                        permissions:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              name:\n                                type: string\n                              doc:\n                                type: string\n                              expression:\n                                type: string\n                            description: >-\n                              Permission models a special type of Relation which\n                              is evaluated at runtime.\n\n                              A permission often maps to an operation defined\n                              for a resource which an actor may attempt.\n                        relations:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              name:\n                                type: string\n                              doc:\n                                type: string\n                              manages:\n                                type: array\n                                items:\n                                  type: string\n                                title: >-\n                                  list of relations managed by the current\n                                  relation\n                              vr_types:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    resource_name:\n                                      type: string\n                                      title: >-\n                                        resource_name scopes permissible actors\n                                        resource\n                                    relation_name:\n                                      type: string\n                                      title: >-\n                                        relation_name scopes permissible actors\n                                        relation\n                                  description: >-\n                                    Restriction models a specification which a\n                                    Relationship's actor\n\n                                    should meet.\n                                title: value restriction types\n                      description: >-\n                        Resource models a namespace for objects in a Policy.\n\n                        Appications will have multiple entities which they must\n                        manage such as files or groups.\n\n                        A Resource represents a set of entities of a certain\n                        type.\n                  actor_resource:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      relations:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            name:\n                              type: string\n                            doc:\n                              type: string\n                            manages:\n                              type: array\n                              items:\n                                type: string\n                              title: >-\n                                list of relations managed by the current\n                                relation\n                            vr_types:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  resource_name:\n                                    type: string\n                                    title: >-\n                                      resource_name scopes permissible actors\n                                      resource\n                                  relation_name:\n                                    type: string\n                                    title: >-\n                                      relation_name scopes permissible actors\n                                      relation\n                                description: >-\n                                  Restriction models a specification which a\n                                  Relationship's actor\n\n                                  should meet.\n                              title: value restriction types\n                    description: >-\n                      ActorResource represents a special Resource which is\n                      reserved for Policy actors.\n                  creator:\n                    type: string\n                description: >-\n                  Policy represents an ACP module Policy definition.\n\n                  Each Policy defines a set of high level rules over how the\n                  acces control system\n\n                  should behave.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy:\n                type: string\n              marshal_type:\n                type: string\n                enum:\n                  - UNKNOWN\n                  - YAML\n                default: UNKNOWN\n                description: >-\n                  PolicyMarshalingType enumerates supported marshaling types for\n                  policies.\n\n                   - UNKNOWN: Fallback value for a missing Marshaling Type\n                   - YAML: YAML Marshaled Policy\n              creation_time:\n                type: string\n                format: date-time\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/DeleteRelationship:\n    post:\n      summary: |-\n        DelereRelationship removes a Relationship from a Policy.\n        If the Relationship was not found in a Policy, this Msg is a no-op.\n      operationId: SourcehubAcpMsg_DeleteRelationship\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              record_found:\n                type: boolean\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy_id:\n                type: string\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/DirectPolicyCmd:\n    post:\n      operationId: SourcehubAcpMsg_DirectPolicyCmd\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/RegisterObject:\n    post:\n      summary: |-\n        Attempting to register a previously registered Object is an error,\n        Object IDs are therefore assumed to be unique within a Policy.\n      operationId: SourcehubAcpMsg_RegisterObject\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - NoOp\n                  - Registered\n                  - Unarchived\n                default: NoOp\n                description: >-\n                  - NoOp: NoOp indicates no action was take. The operation\n                  failed or the Object already existed and was active\n                   - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n                   - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n                  Only the original owners can Unarchive an object.\n                title: >-\n                  RegistrationResult encodes the possible result set from\n                  Registering an Object\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy_id:\n                type: string\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              creation_time:\n                type: string\n                format: date-time\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/SetRelationship:\n    post:\n      summary: >-\n        SetRelationship creates or updates a Relationship within a Policy\n\n        A Relationship is a statement which ties together an object and a\n        subjecto with a \"relation\",\n\n        which means the set of high level rules defined in the Policy will apply\n        to these entities.\n      operationId: SourcehubAcpMsg_SetRelationship\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              record_existed:\n                type: boolean\n                title: >-\n                  Indicates whether the given Relationship previously existed,\n                  ie the Tx was a no op\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy_id:\n                type: string\n              creation_time:\n                type: string\n                format: date-time\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/SignedPolicyCmd:\n    post:\n      summary: >-\n        SignedPolicyCmd is a wrapper for a Command which is executed within the\n        Context of a Policy.\n\n        The Command is signed by the Actor issuing it.\n      operationId: SourcehubAcpMsg_SignedPolicyCmd\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              result:\n                type: object\n                properties:\n                  set_relationship_result:\n                    type: object\n                    properties:\n                      record_existed:\n                        type: boolean\n                        title: >-\n                          Indicates whether the given Relationship previously\n                          existed, ie the Tx was a no op\n                      record:\n                        type: object\n                        properties:\n                          creation_time:\n                            type: string\n                            format: date-time\n                          creator:\n                            type: string\n                            description: >-\n                              msg_signer is the SourceHub address of the account\n                              that submited the message responsible for this\n                              record\n\n                              It's used for auditing only.\n                          actor:\n                            type: string\n                            title: >-\n                              actor is the DID of the Actor which created the\n                              relationship\n                          policy_id:\n                            type: string\n                          relationship:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                              subject:\n                                type: object\n                                properties:\n                                  actor:\n                                    type: object\n                                    properties:\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Actor represents an entity which makes\n                                      access requests to a Policy.\n                                  actor_set:\n                                    type: object\n                                    properties:\n                                      object:\n                                        type: object\n                                        properties:\n                                          resource:\n                                            type: string\n                                          id:\n                                            type: string\n                                        description: >-\n                                          Object represents an entity which must\n                                          be access controlled within a Policy.\n                                      relation:\n                                        type: string\n                                    description: >-\n                                      ActorSet represents a set of Actors in a\n                                      Policy.\n\n                                      It is specified through an Object,\n                                      Relation pair, which represents\n\n                                      all actors which have a relationship with\n                                      given obj-rel pair.\n\n                                      This expansion is recursive.\n                                  all_actors:\n                                    type: object\n                                    description: >-\n                                      AllActors models a special Relationship\n                                      Subject which indicates\n\n                                      that all Actors in the Policy are\n                                      included.\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                description: >-\n                                  Subject specifies the target of a\n                                  Relationship.\n                            description: >-\n                              Relationship models an access control rule.\n\n                              It states that the given subject has relation with\n                              object.\n                          archived:\n                            type: boolean\n                            title: >-\n                              archived indicates whether an object has been\n                              unregistered\n                        description: >-\n                          RelationshipRecord represents a document contained a\n                          Relationship and additional data.\n                    title: SetRelationshipCmd sets a Relationship in a Policy\n                  delete_relationship_result:\n                    type: object\n                    properties:\n                      record_found:\n                        type: boolean\n                    title: >-\n                      DeleteRelationshipCmdResult removes a Relationship in a\n                      Policy\n                  register_object_result:\n                    type: object\n                    properties:\n                      result:\n                        type: string\n                        enum:\n                          - NoOp\n                          - Registered\n                          - Unarchived\n                        default: NoOp\n                        description: >-\n                          - NoOp: NoOp indicates no action was take. The\n                          operation failed or the Object already existed and was\n                          active\n                           - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n                           - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n                          Only the original owners can Unarchive an object.\n                        title: >-\n                          RegistrationResult encodes the possible result set\n                          from Registering an Object\n                      record:\n                        type: object\n                        properties:\n                          creation_time:\n                            type: string\n                            format: date-time\n                          creator:\n                            type: string\n                            description: >-\n                              msg_signer is the SourceHub address of the account\n                              that submited the message responsible for this\n                              record\n\n                              It's used for auditing only.\n                          actor:\n                            type: string\n                            title: >-\n                              actor is the DID of the Actor which created the\n                              relationship\n                          policy_id:\n                            type: string\n                          relationship:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                              subject:\n                                type: object\n                                properties:\n                                  actor:\n                                    type: object\n                                    properties:\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Actor represents an entity which makes\n                                      access requests to a Policy.\n                                  actor_set:\n                                    type: object\n                                    properties:\n                                      object:\n                                        type: object\n                                        properties:\n                                          resource:\n                                            type: string\n                                          id:\n                                            type: string\n                                        description: >-\n                                          Object represents an entity which must\n                                          be access controlled within a Policy.\n                                      relation:\n                                        type: string\n                                    description: >-\n                                      ActorSet represents a set of Actors in a\n                                      Policy.\n\n                                      It is specified through an Object,\n                                      Relation pair, which represents\n\n                                      all actors which have a relationship with\n                                      given obj-rel pair.\n\n                                      This expansion is recursive.\n                                  all_actors:\n                                    type: object\n                                    description: >-\n                                      AllActors models a special Relationship\n                                      Subject which indicates\n\n                                      that all Actors in the Policy are\n                                      included.\n                                  object:\n                                    type: object\n                                    properties:\n                                      resource:\n                                        type: string\n                                      id:\n                                        type: string\n                                    description: >-\n                                      Object represents an entity which must be\n                                      access controlled within a Policy.\n                                description: >-\n                                  Subject specifies the target of a\n                                  Relationship.\n                            description: >-\n                              Relationship models an access control rule.\n\n                              It states that the given subject has relation with\n                              object.\n                          archived:\n                            type: boolean\n                            title: >-\n                              archived indicates whether an object has been\n                              unregistered\n                        description: >-\n                          RelationshipRecord represents a document contained a\n                          Relationship and additional data.\n                    title: RegisterObjectCmdResult registers an Object in a Policy\n                  unregister_object_result:\n                    type: object\n                    properties:\n                      found:\n                        type: boolean\n                      relationships_removed:\n                        type: string\n                        format: uint64\n                    title: >-\n                      UnregisterObjectCmdResult unregisters an Object in a\n                      Policy\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              payload:\n                type: string\n              type:\n                type: string\n                enum:\n                  - UNKNOWN\n                  - JWS\n                default: UNKNOWN\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/UnregisterObject:\n    post:\n      summary: >-\n        Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n\n        Eve wants to access Foo but was not given permission to, they could\n        \"hijack\" Bob's object by waiting for Bob to Unregister Foo,\n\n        then submitting a RegisterObject Msg, effectively becoming Foo's new\n        owner.\n\n        If Charlie has a copy of the object, Eve could convince Charlie to share\n        his copy, granting Eve access to Foo.\n\n        The previous scenario where an unauthorized user is able to claim\n        ownership to data previously unaccessible to them\n\n        is an \"ownership hijack\".\n      operationId: SourcehubAcpMsg_UnregisterObject\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              found:\n                type: boolean\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              policy_id:\n                type: string\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n      tags:\n        - Msg\n  /sourcehub.acp.Msg/UpdateParams:\n    post:\n      summary: |-\n        UpdateParams defines a (governance) operation for updating the module\n        parameters. The authority defaults to the x/gov module account.\n      operationId: SourcehubAcpMsg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: MsgUpdateParams is the Msg/UpdateParams request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: 'NOTE: All parameters must be supplied.'\n                type: object\n                properties:\n                  policy_command_max_expiration_delta:\n                    type: string\n                    format: uint64\n                    description: >-\n                      policy_command_max_expiration_delta specifies a global\n                      thershold for how old a Command will be accepted for.\n            description: MsgUpdateParams is the Msg/UpdateParams request type.\n      tags:\n        - Msg\n  /sourcenetwork/sourcehub/acp/access_decision/{id}:\n    get:\n      summary: >-\n        AccessDecision queries the system for an AccessDecision with the given\n        ID.\n      operationId: SourcehubAcpQuery_AccessDecision\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              decision:\n                type: object\n                properties:\n                  id:\n                    type: string\n                  policy_id:\n                    type: string\n                    title: used as part of id generation\n                  creator:\n                    type: string\n                    title: used as part of id generation\n                  creator_acc_sequence:\n                    type: string\n                    format: uint64\n                    title: used as part of id generation\n                  operations:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        object:\n                          title: target object for operation\n                          type: object\n                          properties:\n                            resource:\n                              type: string\n                            id:\n                              type: string\n                          description: >-\n                            Object represents an entity which must be access\n                            controlled within a Policy.\n                        permission:\n                          type: string\n                          title: permission required to perform operation\n                      description: Operation represents an action over an object.\n                    title: used as part of id generation\n                  actor:\n                    type: string\n                    title: used as part of id generation\n                  params:\n                    title: used as part of id generation\n                    type: object\n                    properties:\n                      decision_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks a Decision is valid for\n                      proof_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks a DecisionProof is valid for\n                      ticket_expiration_delta:\n                        type: string\n                        format: uint64\n                        title: number of blocks an AccessTicket is valid for\n                  creation_time:\n                    type: string\n                    format: date-time\n                  issued_height:\n                    type: string\n                    format: uint64\n                    title: >-\n                      issued_height stores the block height when the Decision\n                      was evaluated\n                title: >-\n                  AccessDecision models the result of evaluating a set of\n                  AccessRequests for an Actor\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: id\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/filter_relationships/{policy_id}:\n    get:\n      summary: FilterRelationships returns filtered set of Relationships in a Policy.\n      operationId: SourcehubAcpQuery_FilterRelationships\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              records:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    creation_time:\n                      type: string\n                      format: date-time\n                    creator:\n                      type: string\n                      description: >-\n                        msg_signer is the SourceHub address of the account that\n                        submited the message responsible for this record\n\n                        It's used for auditing only.\n                    actor:\n                      type: string\n                      title: >-\n                        actor is the DID of the Actor which created the\n                        relationship\n                    policy_id:\n                      type: string\n                    relationship:\n                      type: object\n                      properties:\n                        object:\n                          type: object\n                          properties:\n                            resource:\n                              type: string\n                            id:\n                              type: string\n                          description: >-\n                            Object represents an entity which must be access\n                            controlled within a Policy.\n                        relation:\n                          type: string\n                        subject:\n                          type: object\n                          properties:\n                            actor:\n                              type: object\n                              properties:\n                                id:\n                                  type: string\n                              description: >-\n                                Actor represents an entity which makes access\n                                requests to a Policy.\n                            actor_set:\n                              type: object\n                              properties:\n                                object:\n                                  type: object\n                                  properties:\n                                    resource:\n                                      type: string\n                                    id:\n                                      type: string\n                                  description: >-\n                                    Object represents an entity which must be\n                                    access controlled within a Policy.\n                                relation:\n                                  type: string\n                              description: >-\n                                ActorSet represents a set of Actors in a Policy.\n\n                                It is specified through an Object, Relation\n                                pair, which represents\n\n                                all actors which have a relationship with given\n                                obj-rel pair.\n\n                                This expansion is recursive.\n                            all_actors:\n                              type: object\n                              description: >-\n                                AllActors models a special Relationship Subject\n                                which indicates\n\n                                that all Actors in the Policy are included.\n                            object:\n                              type: object\n                              properties:\n                                resource:\n                                  type: string\n                                id:\n                                  type: string\n                              description: >-\n                                Object represents an entity which must be access\n                                controlled within a Policy.\n                          description: Subject specifies the target of a Relationship.\n                      description: >-\n                        Relationship models an access control rule.\n\n                        It states that the given subject has relation with\n                        object.\n                    archived:\n                      type: boolean\n                      title: >-\n                        archived indicates whether an object has been\n                        unregistered\n                  description: >-\n                    RelationshipRecord represents a document contained a\n                    Relationship and additional data.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: policy_id\n          in: path\n          required: true\n          type: string\n        - name: selector.object_selector.object.resource\n          in: query\n          required: false\n          type: string\n        - name: selector.object_selector.object.id\n          in: query\n          required: false\n          type: string\n        - name: selector.relation_selector.relation\n          description: >-\n            relation specifies a relation name which must exactly match the\n            Relationship's\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.actor.id\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.actor_set.object.resource\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.actor_set.object.id\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.actor_set.relation\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.object.resource\n          in: query\n          required: false\n          type: string\n        - name: selector.subject_selector.subject.object.id\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/object_owner/{policy_id}/{object.resource}/{object.id}:\n    get:\n      summary: ObjectOwner returns the Actor ID of the the given Object's owner\n      operationId: SourcehubAcpQuery_ObjectOwner\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              is_registered:\n                type: boolean\n              owner_id:\n                type: string\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: policy_id\n          in: path\n          required: true\n          type: string\n        - name: object.resource\n          in: path\n          required: true\n          type: string\n        - name: object.id\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/params:\n    get:\n      summary: Parameters queries the parameters of the module.\n      operationId: SourcehubAcpQuery_Params\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              params:\n                description: params holds all the parameters of this module.\n                type: object\n                properties:\n                  policy_command_max_expiration_delta:\n                    type: string\n                    format: uint64\n                    description: >-\n                      policy_command_max_expiration_delta specifies a global\n                      thershold for how old a Command will be accepted for.\n            description: >-\n              QueryParamsResponse is response type for the Query/Params RPC\n              method.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/policy/{id}:\n    get:\n      summary: Policy returns a Policy with the given ID.\n      operationId: SourcehubAcpQuery_Policy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              policy:\n                type: object\n                properties:\n                  id:\n                    type: string\n                  name:\n                    type: string\n                  description:\n                    type: string\n                  creation_time:\n                    type: string\n                    format: date-time\n                  attributes:\n                    type: object\n                    additionalProperties:\n                      type: string\n                  resources:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        name:\n                          type: string\n                        doc:\n                          type: string\n                        permissions:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              name:\n                                type: string\n                              doc:\n                                type: string\n                              expression:\n                                type: string\n                            description: >-\n                              Permission models a special type of Relation which\n                              is evaluated at runtime.\n\n                              A permission often maps to an operation defined\n                              for a resource which an actor may attempt.\n                        relations:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              name:\n                                type: string\n                              doc:\n                                type: string\n                              manages:\n                                type: array\n                                items:\n                                  type: string\n                                title: >-\n                                  list of relations managed by the current\n                                  relation\n                              vr_types:\n                                type: array\n                                items:\n                                  type: object\n                                  properties:\n                                    resource_name:\n                                      type: string\n                                      title: >-\n                                        resource_name scopes permissible actors\n                                        resource\n                                    relation_name:\n                                      type: string\n                                      title: >-\n                                        relation_name scopes permissible actors\n                                        relation\n                                  description: >-\n                                    Restriction models a specification which a\n                                    Relationship's actor\n\n                                    should meet.\n                                title: value restriction types\n                      description: >-\n                        Resource models a namespace for objects in a Policy.\n\n                        Appications will have multiple entities which they must\n                        manage such as files or groups.\n\n                        A Resource represents a set of entities of a certain\n                        type.\n                  actor_resource:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      relations:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            name:\n                              type: string\n                            doc:\n                              type: string\n                            manages:\n                              type: array\n                              items:\n                                type: string\n                              title: >-\n                                list of relations managed by the current\n                                relation\n                            vr_types:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  resource_name:\n                                    type: string\n                                    title: >-\n                                      resource_name scopes permissible actors\n                                      resource\n                                  relation_name:\n                                    type: string\n                                    title: >-\n                                      relation_name scopes permissible actors\n                                      relation\n                                description: >-\n                                  Restriction models a specification which a\n                                  Relationship's actor\n\n                                  should meet.\n                              title: value restriction types\n                    description: >-\n                      ActorResource represents a special Resource which is\n                      reserved for Policy actors.\n                  creator:\n                    type: string\n                description: >-\n                  Policy represents an ACP module Policy definition.\n\n                  Each Policy defines a set of high level rules over how the\n                  acces control system\n\n                  should behave.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: id\n          in: path\n          required: true\n          type: string\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/policy_ids:\n    get:\n      summary: PolicyIds returns list of Ids for Policies registered in the system.\n      operationId: SourcehubAcpQuery_PolicyIds\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              ids:\n                type: array\n                items:\n                  type: string\n                title: cosmos.base.query.v1beta1.PageResponse pagination = 1;\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/validate_policy/{policy}:\n    get:\n      summary: >-\n        ValidatePolicy verifies whether the given Policy definition is properly\n        formatted\n      operationId: SourcehubAcpQuery_ValidatePolicy\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              valid:\n                type: boolean\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: policy\n          in: path\n          required: true\n          type: string\n        - name: marshal_type\n          description: |2-\n             - UNKNOWN: Fallback value for a missing Marshaling Type\n             - YAML: YAML Marshaled Policy\n          in: query\n          required: false\n          type: string\n          enum:\n            - UNKNOWN\n            - YAML\n          default: UNKNOWN\n      tags:\n        - Query\n  /sourcenetwork/sourcehub/acp/verify_access_request/{policy_id}:\n    get:\n      summary: >-\n        VerifyAccessRequest verifies whether an Access Request is accepted with\n        respect to the given Policy's Relation Graph.\n      operationId: SourcehubAcpQuery_VerifyAccessRequest\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            properties:\n              valid:\n                type: boolean\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: policy_id\n          in: path\n          required: true\n          type: string\n        - name: access_request.actor.id\n          in: query\n          required: false\n          type: string\n      tags:\n        - Query\n  /sourcehub.bulletin.Msg/CreatePost:\n    post:\n      operationId: SourcehubBulletinMsg_CreatePost\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              creator:\n                type: string\n              namespace:\n                type: string\n              payload:\n                type: string\n                format: byte\n              proof:\n                type: string\n                format: byte\n      tags:\n        - Msg\n  /sourcehub.bulletin.Msg/UpdateParams:\n    post:\n      summary: |-\n        UpdateParams defines a (governance) operation for updating the module\n        parameters. The authority defaults to the x/gov module account.\n      operationId: SourcehubBulletinMsg_UpdateParams\n      responses:\n        '200':\n          description: A successful response.\n          schema:\n            type: object\n            description: >-\n              MsgUpdateParamsResponse defines the response structure for\n              executing a\n\n              MsgUpdateParams message.\n        default:\n          description: An unexpected error response.\n          schema:\n            type: object\n            properties:\n              code:\n                type: integer\n                format: int32\n              message:\n                type: string\n              details:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                  additionalProperties: {}\n      parameters:\n        - name: body\n          description: MsgUpdateParams is the Msg/UpdateParams request type.\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              authority:\n                type: string\n                description: >-\n                  authority is the address that controls the module (defaults to\n                  x/gov unless overwritten).\n              params:\n                description: 'NOTE: All parameters must be supplied.'\n                type: object\n            description: MsgUpdateParams is the Msg/UpdateParams request type.\n      tags:\n        - Msg\ndefinitions:\n  google.protobuf.Any:\n    type: object\n    properties:\n      '@type':\n        type: string\n        description: >-\n          A URL/resource name that uniquely identifies the type of the\n          serialized\n\n          protocol buffer message. This string must contain at least\n\n          one \"/\" character. The last segment of the URL's path must represent\n\n          the fully qualified name of the type (as in\n\n          `path/google.protobuf.Duration`). The name should be in a canonical\n          form\n\n          (e.g., leading \".\" is not accepted).\n\n\n          In practice, teams usually precompile into the binary all types that\n          they\n\n          expect it to use in the context of Any. However, for URLs which use\n          the\n\n          scheme `http`, `https`, or no scheme, one can optionally set up a type\n\n          server that maps type URLs to message definitions as follows:\n\n\n          * If no scheme is provided, `https` is assumed.\n\n          * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n            value in binary format, or produce an error.\n          * Applications are allowed to cache lookup results based on the\n            URL, or have them precompiled into a binary to avoid any\n            lookup. Therefore, binary compatibility needs to be preserved\n            on changes to types. (Use versioned type names to manage\n            breaking changes.)\n\n          Note: this functionality is not currently available in the official\n\n          protobuf release, and it is not used for type URLs beginning with\n\n          type.googleapis.com.\n\n\n          Schemes other than `http`, `https` (or the empty scheme) might be\n\n          used with implementation specific semantics.\n    additionalProperties: {}\n    description: >-\n      `Any` contains an arbitrary serialized protocol buffer message along with\n      a\n\n      URL that describes the type of the serialized message.\n\n\n      Protobuf library provides support to pack/unpack Any values in the form\n\n      of utility functions or additional generated methods of the Any type.\n\n\n      Example 1: Pack and unpack a message in C++.\n\n          Foo foo = ...;\n          Any any;\n          any.PackFrom(foo);\n          ...\n          if (any.UnpackTo(&foo)) {\n            ...\n          }\n\n      Example 2: Pack and unpack a message in Java.\n\n          Foo foo = ...;\n          Any any = Any.pack(foo);\n          ...\n          if (any.is(Foo.class)) {\n            foo = any.unpack(Foo.class);\n          }\n          // or ...\n          if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n            foo = any.unpack(Foo.getDefaultInstance());\n          }\n\n      Example 3: Pack and unpack a message in Python.\n\n          foo = Foo(...)\n          any = Any()\n          any.Pack(foo)\n          ...\n          if any.Is(Foo.DESCRIPTOR):\n            any.Unpack(foo)\n            ...\n\n      Example 4: Pack and unpack a message in Go\n\n           foo := &pb.Foo{...}\n           any, err := anypb.New(foo)\n           if err != nil {\n             ...\n           }\n           ...\n           foo := &pb.Foo{}\n           if err := any.UnmarshalTo(foo); err != nil {\n             ...\n           }\n\n      The pack methods provided by protobuf library will by default use\n\n      'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n      methods only use the fully qualified type name after the last '/'\n\n      in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n      name \"y.z\".\n\n\n      JSON\n\n\n      The JSON representation of an `Any` value uses the regular\n\n      representation of the deserialized, embedded message, with an\n\n      additional field `@type` which contains the type URL. Example:\n\n          package google.profile;\n          message Person {\n            string first_name = 1;\n            string last_name = 2;\n          }\n\n          {\n            \"@type\": \"type.googleapis.com/google.profile.Person\",\n            \"firstName\": <string>,\n            \"lastName\": <string>\n          }\n\n      If the embedded message type is well-known and has a custom JSON\n\n      representation, that representation will be embedded adding a field\n\n      `value` which holds the custom JSON in addition to the `@type`\n\n      field. Example (for message [google.protobuf.Duration][]):\n\n          {\n            \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n            \"value\": \"1.212s\"\n          }\n  google.rpc.Status:\n    type: object\n    properties:\n      code:\n        type: integer\n        format: int32\n      message:\n        type: string\n      details:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n  cosmos.auth.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/auth parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          max_memo_characters:\n            type: string\n            format: uint64\n          tx_sig_limit:\n            type: string\n            format: uint64\n          tx_size_cost_per_byte:\n            type: string\n            format: uint64\n          sig_verify_cost_ed25519:\n            type: string\n            format: uint64\n          sig_verify_cost_secp256k1:\n            type: string\n            format: uint64\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.auth.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.auth.v1beta1.Params:\n    type: object\n    properties:\n      max_memo_characters:\n        type: string\n        format: uint64\n      tx_sig_limit:\n        type: string\n        format: uint64\n      tx_size_cost_per_byte:\n        type: string\n        format: uint64\n      sig_verify_cost_ed25519:\n        type: string\n        format: uint64\n      sig_verify_cost_secp256k1:\n        type: string\n        format: uint64\n    description: Params defines the parameters for the auth module.\n  cosmos.auth.v1beta1.AddressBytesToStringResponse:\n    type: object\n    properties:\n      address_string:\n        type: string\n    description: >-\n      AddressBytesToStringResponse is the response type for AddressString rpc\n      method.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.auth.v1beta1.AddressStringToBytesResponse:\n    type: object\n    properties:\n      address_bytes:\n        type: string\n        format: byte\n    description: >-\n      AddressStringToBytesResponse is the response type for AddressBytes rpc\n      method.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.auth.v1beta1.BaseAccount:\n    type: object\n    properties:\n      address:\n        type: string\n      pub_key:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      account_number:\n        type: string\n        format: uint64\n      sequence:\n        type: string\n        format: uint64\n    description: >-\n      BaseAccount defines a base account type. It contains all the necessary\n      fields\n\n      for basic account functionality. Any custom account type should extend\n      this\n\n      type for additional functionality (e.g. vesting).\n  cosmos.auth.v1beta1.Bech32PrefixResponse:\n    type: object\n    properties:\n      bech32_prefix:\n        type: string\n    description: |-\n      Bech32PrefixResponse is the response type for Bech32Prefix rpc method.\n\n      Since: cosmos-sdk 0.46\n  cosmos.auth.v1beta1.QueryAccountAddressByIDResponse:\n    type: object\n    properties:\n      account_address:\n        type: string\n    description: 'Since: cosmos-sdk 0.46.2'\n    title: >-\n      QueryAccountAddressByIDResponse is the response type for\n      AccountAddressByID rpc method\n  cosmos.auth.v1beta1.QueryAccountInfoResponse:\n    type: object\n    properties:\n      info:\n        description: info is the account info which is represented by BaseAccount.\n        type: object\n        properties:\n          address:\n            type: string\n          pub_key:\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n            description: >-\n              `Any` contains an arbitrary serialized protocol buffer message\n              along with a\n\n              URL that describes the type of the serialized message.\n\n\n              Protobuf library provides support to pack/unpack Any values in the\n              form\n\n              of utility functions or additional generated methods of the Any\n              type.\n\n\n              Example 1: Pack and unpack a message in C++.\n\n                  Foo foo = ...;\n                  Any any;\n                  any.PackFrom(foo);\n                  ...\n                  if (any.UnpackTo(&foo)) {\n                    ...\n                  }\n\n              Example 2: Pack and unpack a message in Java.\n\n                  Foo foo = ...;\n                  Any any = Any.pack(foo);\n                  ...\n                  if (any.is(Foo.class)) {\n                    foo = any.unpack(Foo.class);\n                  }\n                  // or ...\n                  if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                    foo = any.unpack(Foo.getDefaultInstance());\n                  }\n\n              Example 3: Pack and unpack a message in Python.\n\n                  foo = Foo(...)\n                  any = Any()\n                  any.Pack(foo)\n                  ...\n                  if any.Is(Foo.DESCRIPTOR):\n                    any.Unpack(foo)\n                    ...\n\n              Example 4: Pack and unpack a message in Go\n\n                   foo := &pb.Foo{...}\n                   any, err := anypb.New(foo)\n                   if err != nil {\n                     ...\n                   }\n                   ...\n                   foo := &pb.Foo{}\n                   if err := any.UnmarshalTo(foo); err != nil {\n                     ...\n                   }\n\n              The pack methods provided by protobuf library will by default use\n\n              'type.googleapis.com/full.type.name' as the type URL and the\n              unpack\n\n              methods only use the fully qualified type name after the last '/'\n\n              in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n              name \"y.z\".\n\n\n              JSON\n\n\n              The JSON representation of an `Any` value uses the regular\n\n              representation of the deserialized, embedded message, with an\n\n              additional field `@type` which contains the type URL. Example:\n\n                  package google.profile;\n                  message Person {\n                    string first_name = 1;\n                    string last_name = 2;\n                  }\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.profile.Person\",\n                    \"firstName\": <string>,\n                    \"lastName\": <string>\n                  }\n\n              If the embedded message type is well-known and has a custom JSON\n\n              representation, that representation will be embedded adding a\n              field\n\n              `value` which holds the custom JSON in addition to the `@type`\n\n              field. Example (for message [google.protobuf.Duration][]):\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                    \"value\": \"1.212s\"\n                  }\n          account_number:\n            type: string\n            format: uint64\n          sequence:\n            type: string\n            format: uint64\n    description: |-\n      QueryAccountInfoResponse is the Query/AccountInfo response type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.auth.v1beta1.QueryAccountResponse:\n    type: object\n    properties:\n      account:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: >-\n      QueryAccountResponse is the response type for the Query/Account RPC\n      method.\n  cosmos.auth.v1beta1.QueryAccountsResponse:\n    type: object\n    properties:\n      accounts:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        title: accounts are the existing accounts\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryAccountsResponse is the response type for the Query/Accounts RPC\n      method.\n\n\n      Since: cosmos-sdk 0.43\n  cosmos.auth.v1beta1.QueryModuleAccountByNameResponse:\n    type: object\n    properties:\n      account:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: >-\n      QueryModuleAccountByNameResponse is the response type for the\n      Query/ModuleAccountByName RPC method.\n  cosmos.auth.v1beta1.QueryModuleAccountsResponse:\n    type: object\n    properties:\n      accounts:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n    description: >-\n      QueryModuleAccountsResponse is the response type for the\n      Query/ModuleAccounts RPC method.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.auth.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          max_memo_characters:\n            type: string\n            format: uint64\n          tx_sig_limit:\n            type: string\n            format: uint64\n          tx_size_cost_per_byte:\n            type: string\n            format: uint64\n          sig_verify_cost_ed25519:\n            type: string\n            format: uint64\n          sig_verify_cost_secp256k1:\n            type: string\n            format: uint64\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  cosmos.base.query.v1beta1.PageRequest:\n    type: object\n    properties:\n      key:\n        type: string\n        format: byte\n        description: |-\n          key is a value returned in PageResponse.next_key to begin\n          querying the next page most efficiently. Only one of offset or key\n          should be set.\n      offset:\n        type: string\n        format: uint64\n        description: |-\n          offset is a numeric offset that can be used when key is unavailable.\n          It is less efficient than using key. Only one of offset or key should\n          be set.\n      limit:\n        type: string\n        format: uint64\n        description: >-\n          limit is the total number of results to be returned in the result\n          page.\n\n          If left empty it will default to a value to be set by each app.\n      count_total:\n        type: boolean\n        description: >-\n          count_total is set to true  to indicate that the result set should\n          include\n\n          a count of the total number of items available for pagination in UIs.\n\n          count_total is only respected when offset is used. It is ignored when\n          key\n\n          is set.\n      reverse:\n        type: boolean\n        description: >-\n          reverse is set to true if results are to be returned in the descending\n          order.\n\n\n          Since: cosmos-sdk 0.43\n    description: |-\n      message SomeRequest {\n               Foo some_parameter = 1;\n               PageRequest pagination = 2;\n       }\n    title: |-\n      PageRequest is to be embedded in gRPC request messages for efficient\n      pagination. Ex:\n  cosmos.base.query.v1beta1.PageResponse:\n    type: object\n    properties:\n      next_key:\n        type: string\n        format: byte\n        description: |-\n          next_key is the key to be passed to PageRequest.key to\n          query the next page most efficiently. It will be empty if\n          there are no more results.\n      total:\n        type: string\n        format: uint64\n        title: |-\n          total is total number of results available if PageRequest.count_total\n          was set, its value is undefined otherwise\n    description: |-\n      PageResponse is to be embedded in gRPC response messages where the\n      corresponding request message has used PageRequest.\n\n       message SomeResponse {\n               repeated Bar results = 1;\n               PageResponse page = 2;\n       }\n  cosmos.authz.v1beta1.Grant:\n    type: object\n    properties:\n      authorization:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      expiration:\n        type: string\n        format: date-time\n        title: >-\n          time when the grant will expire and will be pruned. If null, then the\n          grant\n\n          doesn't have a time expiration (other conditions  in `authorization`\n\n          may apply to invalidate the grant)\n    description: |-\n      Grant gives permissions to execute\n      the provide method with expiration time.\n  cosmos.authz.v1beta1.GrantAuthorization:\n    type: object\n    properties:\n      granter:\n        type: string\n      grantee:\n        type: string\n      authorization:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      expiration:\n        type: string\n        format: date-time\n    title: >-\n      GrantAuthorization extends a grant with both the addresses of the grantee\n      and granter.\n\n      It is used in genesis.proto and query.proto\n  cosmos.authz.v1beta1.QueryGranteeGrantsResponse:\n    type: object\n    properties:\n      grants:\n        type: array\n        items:\n          type: object\n          properties:\n            granter:\n              type: string\n            grantee:\n              type: string\n            authorization:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            expiration:\n              type: string\n              format: date-time\n          title: >-\n            GrantAuthorization extends a grant with both the addresses of the\n            grantee and granter.\n\n            It is used in genesis.proto and query.proto\n        description: grants is a list of grants granted to the grantee.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGranteeGrantsResponse is the response type for the\n      Query/GranteeGrants RPC method.\n  cosmos.authz.v1beta1.QueryGranterGrantsResponse:\n    type: object\n    properties:\n      grants:\n        type: array\n        items:\n          type: object\n          properties:\n            granter:\n              type: string\n            grantee:\n              type: string\n            authorization:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            expiration:\n              type: string\n              format: date-time\n          title: >-\n            GrantAuthorization extends a grant with both the addresses of the\n            grantee and granter.\n\n            It is used in genesis.proto and query.proto\n        description: grants is a list of grants granted by the granter.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGranterGrantsResponse is the response type for the\n      Query/GranterGrants RPC method.\n  cosmos.authz.v1beta1.QueryGrantsResponse:\n    type: object\n    properties:\n      grants:\n        type: array\n        items:\n          type: object\n          properties:\n            authorization:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            expiration:\n              type: string\n              format: date-time\n              title: >-\n                time when the grant will expire and will be pruned. If null,\n                then the grant\n\n                doesn't have a time expiration (other conditions  in\n                `authorization`\n\n                may apply to invalidate the grant)\n          description: |-\n            Grant gives permissions to execute\n            the provide method with expiration time.\n        description: authorizations is a list of grants granted for grantee by granter.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGrantsResponse is the response type for the Query/Authorizations RPC\n      method.\n  cosmos.authz.v1beta1.MsgExec:\n    type: object\n    properties:\n      grantee:\n        type: string\n      msgs:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: >-\n          Execute Msg.\n\n          The x/authz will try to find a grant matching (msg.signers[0],\n          grantee, MsgTypeURL(msg))\n\n          triple and validate it.\n    description: |-\n      MsgExec attempts to execute the provided messages using\n      authorizations granted to the grantee. Each message should have only\n      one signer corresponding to the granter of the authorization.\n  cosmos.authz.v1beta1.MsgExecResponse:\n    type: object\n    properties:\n      results:\n        type: array\n        items:\n          type: string\n          format: byte\n    description: MsgExecResponse defines the Msg/MsgExecResponse response type.\n  cosmos.authz.v1beta1.MsgGrant:\n    type: object\n    properties:\n      granter:\n        type: string\n      grantee:\n        type: string\n      grant:\n        type: object\n        properties:\n          authorization:\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n            description: >-\n              `Any` contains an arbitrary serialized protocol buffer message\n              along with a\n\n              URL that describes the type of the serialized message.\n\n\n              Protobuf library provides support to pack/unpack Any values in the\n              form\n\n              of utility functions or additional generated methods of the Any\n              type.\n\n\n              Example 1: Pack and unpack a message in C++.\n\n                  Foo foo = ...;\n                  Any any;\n                  any.PackFrom(foo);\n                  ...\n                  if (any.UnpackTo(&foo)) {\n                    ...\n                  }\n\n              Example 2: Pack and unpack a message in Java.\n\n                  Foo foo = ...;\n                  Any any = Any.pack(foo);\n                  ...\n                  if (any.is(Foo.class)) {\n                    foo = any.unpack(Foo.class);\n                  }\n                  // or ...\n                  if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                    foo = any.unpack(Foo.getDefaultInstance());\n                  }\n\n              Example 3: Pack and unpack a message in Python.\n\n                  foo = Foo(...)\n                  any = Any()\n                  any.Pack(foo)\n                  ...\n                  if any.Is(Foo.DESCRIPTOR):\n                    any.Unpack(foo)\n                    ...\n\n              Example 4: Pack and unpack a message in Go\n\n                   foo := &pb.Foo{...}\n                   any, err := anypb.New(foo)\n                   if err != nil {\n                     ...\n                   }\n                   ...\n                   foo := &pb.Foo{}\n                   if err := any.UnmarshalTo(foo); err != nil {\n                     ...\n                   }\n\n              The pack methods provided by protobuf library will by default use\n\n              'type.googleapis.com/full.type.name' as the type URL and the\n              unpack\n\n              methods only use the fully qualified type name after the last '/'\n\n              in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n              name \"y.z\".\n\n\n              JSON\n\n\n              The JSON representation of an `Any` value uses the regular\n\n              representation of the deserialized, embedded message, with an\n\n              additional field `@type` which contains the type URL. Example:\n\n                  package google.profile;\n                  message Person {\n                    string first_name = 1;\n                    string last_name = 2;\n                  }\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.profile.Person\",\n                    \"firstName\": <string>,\n                    \"lastName\": <string>\n                  }\n\n              If the embedded message type is well-known and has a custom JSON\n\n              representation, that representation will be embedded adding a\n              field\n\n              `value` which holds the custom JSON in addition to the `@type`\n\n              field. Example (for message [google.protobuf.Duration][]):\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                    \"value\": \"1.212s\"\n                  }\n          expiration:\n            type: string\n            format: date-time\n            title: >-\n              time when the grant will expire and will be pruned. If null, then\n              the grant\n\n              doesn't have a time expiration (other conditions  in\n              `authorization`\n\n              may apply to invalidate the grant)\n        description: |-\n          Grant gives permissions to execute\n          the provide method with expiration time.\n    description: >-\n      MsgGrant is a request type for Grant method. It declares authorization to\n      the grantee\n\n      on behalf of the granter with the provided expiration time.\n  cosmos.authz.v1beta1.MsgGrantResponse:\n    type: object\n    description: MsgGrantResponse defines the Msg/MsgGrant response type.\n  cosmos.authz.v1beta1.MsgRevoke:\n    type: object\n    properties:\n      granter:\n        type: string\n      grantee:\n        type: string\n      msg_type_url:\n        type: string\n    description: |-\n      MsgRevoke revokes any authorization with the provided sdk.Msg type on the\n      granter's account with that has been granted to the grantee.\n  cosmos.authz.v1beta1.MsgRevokeResponse:\n    type: object\n    description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.\n  cosmos.bank.v1beta1.Input:\n    type: object\n    properties:\n      address:\n        type: string\n      coins:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: Input models transaction input.\n  cosmos.bank.v1beta1.MsgMultiSend:\n    type: object\n    properties:\n      inputs:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            coins:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n          description: Input models transaction input.\n        description: >-\n          Inputs, despite being `repeated`, only allows one sender input. This\n          is\n\n          checked in MsgMultiSend's ValidateBasic.\n      outputs:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            coins:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n          description: Output models transaction outputs.\n    description: MsgMultiSend represents an arbitrary multi-in, multi-out send message.\n  cosmos.bank.v1beta1.MsgMultiSendResponse:\n    type: object\n    description: MsgMultiSendResponse defines the Msg/MultiSend response type.\n  cosmos.bank.v1beta1.MsgSend:\n    type: object\n    properties:\n      from_address:\n        type: string\n      to_address:\n        type: string\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: MsgSend represents a message to send coins from one account to another.\n  cosmos.bank.v1beta1.MsgSendResponse:\n    type: object\n    description: MsgSendResponse defines the Msg/Send response type.\n  cosmos.bank.v1beta1.MsgSetSendEnabled:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: authority is the address that controls the module.\n      send_enabled:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            enabled:\n              type: boolean\n          description: >-\n            SendEnabled maps coin denom to a send_enabled status (whether a\n            denom is\n\n            sendable).\n        description: send_enabled is the list of entries to add or update.\n      use_default_for:\n        type: array\n        items:\n          type: string\n        description: >-\n          use_default_for is a list of denoms that should use the\n          params.default_send_enabled value.\n\n          Denoms listed here will have their SendEnabled entries deleted.\n\n          If a denom is included that doesn't have a SendEnabled entry,\n\n          it will be ignored.\n    description: |-\n      MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\n      Only entries to add/update/delete need to be included.\n      Existing SendEnabled entries that are not included in this\n      message are left unchanged.\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.MsgSetSendEnabledResponse:\n    type: object\n    description: |-\n      MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/bank parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          send_enabled:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                enabled:\n                  type: boolean\n              description: >-\n                SendEnabled maps coin denom to a send_enabled status (whether a\n                denom is\n\n                sendable).\n            description: >-\n              Deprecated: Use of SendEnabled in params is deprecated.\n\n              For genesis, use the newly added send_enabled field in the genesis\n              object.\n\n              Storage, lookup, and manipulation of this information is now in\n              the keeper.\n\n\n              As of cosmos-sdk 0.47, this only exists for backwards\n              compatibility of genesis files.\n          default_send_enabled:\n            type: boolean\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.Output:\n    type: object\n    properties:\n      address:\n        type: string\n      coins:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: Output models transaction outputs.\n  cosmos.bank.v1beta1.Params:\n    type: object\n    properties:\n      send_enabled:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            enabled:\n              type: boolean\n          description: >-\n            SendEnabled maps coin denom to a send_enabled status (whether a\n            denom is\n\n            sendable).\n        description: >-\n          Deprecated: Use of SendEnabled in params is deprecated.\n\n          For genesis, use the newly added send_enabled field in the genesis\n          object.\n\n          Storage, lookup, and manipulation of this information is now in the\n          keeper.\n\n\n          As of cosmos-sdk 0.47, this only exists for backwards compatibility of\n          genesis files.\n      default_send_enabled:\n        type: boolean\n    description: Params defines the parameters for the bank module.\n  cosmos.bank.v1beta1.SendEnabled:\n    type: object\n    properties:\n      denom:\n        type: string\n      enabled:\n        type: boolean\n    description: |-\n      SendEnabled maps coin denom to a send_enabled status (whether a denom is\n      sendable).\n  cosmos.base.v1beta1.Coin:\n    type: object\n    properties:\n      denom:\n        type: string\n      amount:\n        type: string\n    description: |-\n      Coin defines a token with a denomination and an amount.\n\n      NOTE: The amount field is an Int which implements the custom method\n      signatures required by gogoproto.\n  cosmos.bank.v1beta1.DenomOwner:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address defines the address that owns a particular denomination.\n      balance:\n        description: balance is the balance of the denominated coin for an account.\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n    description: |-\n      DenomOwner defines structure representing an account that owns or holds a\n      particular denominated token. It contains the account address and account\n      balance of the denominated token.\n\n      Since: cosmos-sdk 0.46\n  cosmos.bank.v1beta1.DenomUnit:\n    type: object\n    properties:\n      denom:\n        type: string\n        description: denom represents the string name of the given denom unit (e.g uatom).\n      exponent:\n        type: integer\n        format: int64\n        description: >-\n          exponent represents power of 10 exponent that one must\n\n          raise the base_denom to in order to equal the given DenomUnit's denom\n\n          1 denom = 10^exponent base_denom\n\n          (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom'\n          with\n\n          exponent = 6, thus: 1 atom = 10^6 uatom).\n      aliases:\n        type: array\n        items:\n          type: string\n        title: aliases is a list of string aliases for the given denom\n    description: |-\n      DenomUnit represents a struct that describes a given\n      denomination unit of the basic token.\n  cosmos.bank.v1beta1.Metadata:\n    type: object\n    properties:\n      description:\n        type: string\n      denom_units:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n              description: >-\n                denom represents the string name of the given denom unit (e.g\n                uatom).\n            exponent:\n              type: integer\n              format: int64\n              description: >-\n                exponent represents power of 10 exponent that one must\n\n                raise the base_denom to in order to equal the given DenomUnit's\n                denom\n\n                1 denom = 10^exponent base_denom\n\n                (e.g. with a base_denom of uatom, one can create a DenomUnit of\n                'atom' with\n\n                exponent = 6, thus: 1 atom = 10^6 uatom).\n            aliases:\n              type: array\n              items:\n                type: string\n              title: aliases is a list of string aliases for the given denom\n          description: |-\n            DenomUnit represents a struct that describes a given\n            denomination unit of the basic token.\n        title: denom_units represents the list of DenomUnit's for a given coin\n      base:\n        type: string\n        description: >-\n          base represents the base denom (should be the DenomUnit with exponent\n          = 0).\n      display:\n        type: string\n        description: |-\n          display indicates the suggested denom that should be\n          displayed in clients.\n      name:\n        type: string\n        description: 'Since: cosmos-sdk 0.43'\n        title: 'name defines the name of the token (eg: Cosmos Atom)'\n      symbol:\n        type: string\n        description: >-\n          symbol is the token symbol usually shown on exchanges (eg: ATOM). This\n          can\n\n          be the same as the display.\n\n\n          Since: cosmos-sdk 0.43\n      uri:\n        type: string\n        description: >-\n          URI to a document (on or off-chain) that contains additional\n          information. Optional.\n\n\n          Since: cosmos-sdk 0.46\n      uri_hash:\n        type: string\n        description: >-\n          URIHash is a sha256 hash of a document pointed by URI. It's used to\n          verify that\n\n          the document didn't change. Optional.\n\n\n          Since: cosmos-sdk 0.46\n    description: |-\n      Metadata represents a struct that describes\n      a basic token.\n  cosmos.bank.v1beta1.QueryAllBalancesResponse:\n    type: object\n    properties:\n      balances:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: balances is the balances of all the coins.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryAllBalancesResponse is the response type for the Query/AllBalances\n      RPC\n\n      method.\n  cosmos.bank.v1beta1.QueryBalanceResponse:\n    type: object\n    properties:\n      balance:\n        description: balance is the balance of the coin.\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n    description: >-\n      QueryBalanceResponse is the response type for the Query/Balance RPC\n      method.\n  cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse:\n    type: object\n    properties:\n      metadata:\n        description: >-\n          metadata describes and provides all the client information for the\n          requested token.\n        type: object\n        properties:\n          description:\n            type: string\n          denom_units:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                  description: >-\n                    denom represents the string name of the given denom unit\n                    (e.g uatom).\n                exponent:\n                  type: integer\n                  format: int64\n                  description: >-\n                    exponent represents power of 10 exponent that one must\n\n                    raise the base_denom to in order to equal the given\n                    DenomUnit's denom\n\n                    1 denom = 10^exponent base_denom\n\n                    (e.g. with a base_denom of uatom, one can create a DenomUnit\n                    of 'atom' with\n\n                    exponent = 6, thus: 1 atom = 10^6 uatom).\n                aliases:\n                  type: array\n                  items:\n                    type: string\n                  title: aliases is a list of string aliases for the given denom\n              description: |-\n                DenomUnit represents a struct that describes a given\n                denomination unit of the basic token.\n            title: denom_units represents the list of DenomUnit's for a given coin\n          base:\n            type: string\n            description: >-\n              base represents the base denom (should be the DenomUnit with\n              exponent = 0).\n          display:\n            type: string\n            description: |-\n              display indicates the suggested denom that should be\n              displayed in clients.\n          name:\n            type: string\n            description: 'Since: cosmos-sdk 0.43'\n            title: 'name defines the name of the token (eg: Cosmos Atom)'\n          symbol:\n            type: string\n            description: >-\n              symbol is the token symbol usually shown on exchanges (eg: ATOM).\n              This can\n\n              be the same as the display.\n\n\n              Since: cosmos-sdk 0.43\n          uri:\n            type: string\n            description: >-\n              URI to a document (on or off-chain) that contains additional\n              information. Optional.\n\n\n              Since: cosmos-sdk 0.46\n          uri_hash:\n            type: string\n            description: >-\n              URIHash is a sha256 hash of a document pointed by URI. It's used\n              to verify that\n\n              the document didn't change. Optional.\n\n\n              Since: cosmos-sdk 0.46\n    description: >-\n      QueryDenomMetadataByQueryStringResponse is the response type for the\n      Query/DenomMetadata RPC\n\n      method. Identical with QueryDenomMetadataResponse but receives denom as\n      query string in request.\n  cosmos.bank.v1beta1.QueryDenomMetadataResponse:\n    type: object\n    properties:\n      metadata:\n        description: >-\n          metadata describes and provides all the client information for the\n          requested token.\n        type: object\n        properties:\n          description:\n            type: string\n          denom_units:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                  description: >-\n                    denom represents the string name of the given denom unit\n                    (e.g uatom).\n                exponent:\n                  type: integer\n                  format: int64\n                  description: >-\n                    exponent represents power of 10 exponent that one must\n\n                    raise the base_denom to in order to equal the given\n                    DenomUnit's denom\n\n                    1 denom = 10^exponent base_denom\n\n                    (e.g. with a base_denom of uatom, one can create a DenomUnit\n                    of 'atom' with\n\n                    exponent = 6, thus: 1 atom = 10^6 uatom).\n                aliases:\n                  type: array\n                  items:\n                    type: string\n                  title: aliases is a list of string aliases for the given denom\n              description: |-\n                DenomUnit represents a struct that describes a given\n                denomination unit of the basic token.\n            title: denom_units represents the list of DenomUnit's for a given coin\n          base:\n            type: string\n            description: >-\n              base represents the base denom (should be the DenomUnit with\n              exponent = 0).\n          display:\n            type: string\n            description: |-\n              display indicates the suggested denom that should be\n              displayed in clients.\n          name:\n            type: string\n            description: 'Since: cosmos-sdk 0.43'\n            title: 'name defines the name of the token (eg: Cosmos Atom)'\n          symbol:\n            type: string\n            description: >-\n              symbol is the token symbol usually shown on exchanges (eg: ATOM).\n              This can\n\n              be the same as the display.\n\n\n              Since: cosmos-sdk 0.43\n          uri:\n            type: string\n            description: >-\n              URI to a document (on or off-chain) that contains additional\n              information. Optional.\n\n\n              Since: cosmos-sdk 0.46\n          uri_hash:\n            type: string\n            description: >-\n              URIHash is a sha256 hash of a document pointed by URI. It's used\n              to verify that\n\n              the document didn't change. Optional.\n\n\n              Since: cosmos-sdk 0.46\n    description: >-\n      QueryDenomMetadataResponse is the response type for the\n      Query/DenomMetadata RPC\n\n      method.\n  cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse:\n    type: object\n    properties:\n      denom_owners:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address defines the address that owns a particular denomination.\n            balance:\n              description: balance is the balance of the denominated coin for an account.\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n          description: >-\n            DenomOwner defines structure representing an account that owns or\n            holds a\n\n            particular denominated token. It contains the account address and\n            account\n\n            balance of the denominated token.\n\n\n            Since: cosmos-sdk 0.46\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryDenomOwnersByQueryResponse defines the RPC response of a\n      DenomOwnersByQuery RPC query.\n\n\n      Since: cosmos-sdk 0.50.3\n  cosmos.bank.v1beta1.QueryDenomOwnersResponse:\n    type: object\n    properties:\n      denom_owners:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address defines the address that owns a particular denomination.\n            balance:\n              description: balance is the balance of the denominated coin for an account.\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n          description: >-\n            DenomOwner defines structure representing an account that owns or\n            holds a\n\n            particular denominated token. It contains the account address and\n            account\n\n            balance of the denominated token.\n\n\n            Since: cosmos-sdk 0.46\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC\n      query.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.bank.v1beta1.QueryDenomsMetadataResponse:\n    type: object\n    properties:\n      metadatas:\n        type: array\n        items:\n          type: object\n          properties:\n            description:\n              type: string\n            denom_units:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                    description: >-\n                      denom represents the string name of the given denom unit\n                      (e.g uatom).\n                  exponent:\n                    type: integer\n                    format: int64\n                    description: >-\n                      exponent represents power of 10 exponent that one must\n\n                      raise the base_denom to in order to equal the given\n                      DenomUnit's denom\n\n                      1 denom = 10^exponent base_denom\n\n                      (e.g. with a base_denom of uatom, one can create a\n                      DenomUnit of 'atom' with\n\n                      exponent = 6, thus: 1 atom = 10^6 uatom).\n                  aliases:\n                    type: array\n                    items:\n                      type: string\n                    title: aliases is a list of string aliases for the given denom\n                description: |-\n                  DenomUnit represents a struct that describes a given\n                  denomination unit of the basic token.\n              title: denom_units represents the list of DenomUnit's for a given coin\n            base:\n              type: string\n              description: >-\n                base represents the base denom (should be the DenomUnit with\n                exponent = 0).\n            display:\n              type: string\n              description: |-\n                display indicates the suggested denom that should be\n                displayed in clients.\n            name:\n              type: string\n              description: 'Since: cosmos-sdk 0.43'\n              title: 'name defines the name of the token (eg: Cosmos Atom)'\n            symbol:\n              type: string\n              description: >-\n                symbol is the token symbol usually shown on exchanges (eg:\n                ATOM). This can\n\n                be the same as the display.\n\n\n                Since: cosmos-sdk 0.43\n            uri:\n              type: string\n              description: >-\n                URI to a document (on or off-chain) that contains additional\n                information. Optional.\n\n\n                Since: cosmos-sdk 0.46\n            uri_hash:\n              type: string\n              description: >-\n                URIHash is a sha256 hash of a document pointed by URI. It's used\n                to verify that\n\n                the document didn't change. Optional.\n\n\n                Since: cosmos-sdk 0.46\n          description: |-\n            Metadata represents a struct that describes\n            a basic token.\n        description: >-\n          metadata provides the client information for all the registered\n          tokens.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryDenomsMetadataResponse is the response type for the\n      Query/DenomsMetadata RPC\n\n      method.\n  cosmos.bank.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params provides the parameters of the bank module.\n        type: object\n        properties:\n          send_enabled:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                enabled:\n                  type: boolean\n              description: >-\n                SendEnabled maps coin denom to a send_enabled status (whether a\n                denom is\n\n                sendable).\n            description: >-\n              Deprecated: Use of SendEnabled in params is deprecated.\n\n              For genesis, use the newly added send_enabled field in the genesis\n              object.\n\n              Storage, lookup, and manipulation of this information is now in\n              the keeper.\n\n\n              As of cosmos-sdk 0.47, this only exists for backwards\n              compatibility of genesis files.\n          default_send_enabled:\n            type: boolean\n    description: >-\n      QueryParamsResponse defines the response type for querying x/bank\n      parameters.\n  cosmos.bank.v1beta1.QuerySendEnabledResponse:\n    type: object\n    properties:\n      send_enabled:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            enabled:\n              type: boolean\n          description: >-\n            SendEnabled maps coin denom to a send_enabled status (whether a\n            denom is\n\n            sendable).\n      pagination:\n        description: |-\n          pagination defines the pagination in the response. This field is only\n          populated if the denoms field in the request is empty.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QuerySendEnabledResponse defines the RPC response of a SendEnable query.\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse:\n    type: object\n    properties:\n      balance:\n        description: balance is the balance of the coin.\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n    description: >-\n      QuerySpendableBalanceByDenomResponse defines the gRPC response structure\n      for\n\n      querying an account's spendable balance for a specific denom.\n\n\n      Since: cosmos-sdk 0.47\n  cosmos.bank.v1beta1.QuerySpendableBalancesResponse:\n    type: object\n    properties:\n      balances:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: balances is the spendable balances of all the coins.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QuerySpendableBalancesResponse defines the gRPC response structure for\n      querying\n\n      an account's spendable balances.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.bank.v1beta1.QuerySupplyOfResponse:\n    type: object\n    properties:\n      amount:\n        description: amount is the supply of the coin.\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n    description: >-\n      QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC\n      method.\n  cosmos.bank.v1beta1.QueryTotalSupplyResponse:\n    type: object\n    properties:\n      supply:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: supply is the supply of the coins\n      pagination:\n        description: |-\n          pagination defines the pagination in the response.\n\n          Since: cosmos-sdk 0.43\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: >-\n      QueryTotalSupplyResponse is the response type for the Query/TotalSupply\n      RPC\n\n      method\n  cosmos.base.node.v1beta1.ConfigResponse:\n    type: object\n    properties:\n      minimum_gas_price:\n        type: string\n      pruning_keep_recent:\n        type: string\n      pruning_interval:\n        type: string\n      halt_height:\n        type: string\n        format: uint64\n    description: ConfigResponse defines the response structure for the Config gRPC query.\n  cosmos.base.node.v1beta1.StatusResponse:\n    type: object\n    properties:\n      earliest_store_height:\n        type: string\n        format: uint64\n        title: earliest block height available in the store\n      height:\n        type: string\n        format: uint64\n        title: current block height\n      timestamp:\n        type: string\n        format: date-time\n        title: block height timestamp\n      app_hash:\n        type: string\n        format: byte\n        title: app hash of the current block\n      validator_hash:\n        type: string\n        format: byte\n        title: validator hash provided by the consensus header\n    description: StateResponse defines the response structure for the status of a node.\n  cosmos.base.tendermint.v1beta1.ABCIQueryResponse:\n    type: object\n    properties:\n      code:\n        type: integer\n        format: int64\n      log:\n        type: string\n        title: nondeterministic\n      info:\n        type: string\n        title: nondeterministic\n      index:\n        type: string\n        format: int64\n      key:\n        type: string\n        format: byte\n      value:\n        type: string\n        format: byte\n      proof_ops:\n        type: object\n        properties:\n          ops:\n            type: array\n            items:\n              type: object\n              properties:\n                type:\n                  type: string\n                key:\n                  type: string\n                  format: byte\n                data:\n                  type: string\n                  format: byte\n              description: >-\n                ProofOp defines an operation used for calculating Merkle root.\n                The data could\n\n                be arbitrary format, providing necessary data for example\n                neighbouring node\n\n                hash.\n\n\n                Note: This type is a duplicate of the ProofOp proto type defined\n                in Tendermint.\n        description: >-\n          ProofOps is Merkle proof defined by the list of ProofOps.\n\n\n          Note: This type is a duplicate of the ProofOps proto type defined in\n          Tendermint.\n      height:\n        type: string\n        format: int64\n      codespace:\n        type: string\n    description: >-\n      ABCIQueryResponse defines the response structure for the ABCIQuery gRPC\n      query.\n\n\n      Note: This type is a duplicate of the ResponseQuery proto type defined in\n\n      Tendermint.\n  cosmos.base.tendermint.v1beta1.Block:\n    type: object\n    properties:\n      header:\n        type: object\n        properties:\n          version:\n            title: basic block info\n            type: object\n            properties:\n              block:\n                type: string\n                format: uint64\n              app:\n                type: string\n                format: uint64\n            description: >-\n              Consensus captures the consensus rules for processing a block in\n              the blockchain,\n\n              including all blockchain data structures and the rules of the\n              application's\n\n              state transition machine.\n          chain_id:\n            type: string\n          height:\n            type: string\n            format: int64\n          time:\n            type: string\n            format: date-time\n          last_block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          last_commit_hash:\n            type: string\n            format: byte\n            description: commit from validators from the last block\n            title: hashes of block data\n          data_hash:\n            type: string\n            format: byte\n            title: transactions\n          validators_hash:\n            type: string\n            format: byte\n            description: validators for the current block\n            title: hashes from the app output from the prev block\n          next_validators_hash:\n            type: string\n            format: byte\n            title: validators for the next block\n          consensus_hash:\n            type: string\n            format: byte\n            title: consensus params for current block\n          app_hash:\n            type: string\n            format: byte\n            title: state after txs from the previous block\n          last_results_hash:\n            type: string\n            format: byte\n            title: root hash of all results from the txs from the previous block\n          evidence_hash:\n            type: string\n            format: byte\n            description: evidence included in the block\n            title: consensus info\n          proposer_address:\n            type: string\n            description: >-\n              proposer_address is the original block proposer address, formatted\n              as a Bech32 string.\n\n              In Tendermint, this type is `bytes`, but in the SDK, we convert it\n              to a Bech32 string\n\n              for better UX.\n\n\n              original proposer of the block\n        description: Header defines the structure of a Tendermint block header.\n      data:\n        type: object\n        properties:\n          txs:\n            type: array\n            items:\n              type: string\n              format: byte\n            description: >-\n              Txs that will be applied by state @ block.Height+1.\n\n              NOTE: not all txs here are valid.  We're just agreeing on the\n              order first.\n\n              This means that block.AppHash does not include these txs.\n        title: Data contains the set of transactions included in the block\n      evidence:\n        type: object\n        properties:\n          evidence:\n            type: array\n            items:\n              type: object\n              properties:\n                duplicate_vote_evidence:\n                  type: object\n                  properties:\n                    vote_a:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                          enum:\n                            - SIGNED_MSG_TYPE_UNKNOWN\n                            - SIGNED_MSG_TYPE_PREVOTE\n                            - SIGNED_MSG_TYPE_PRECOMMIT\n                            - SIGNED_MSG_TYPE_PROPOSAL\n                          default: SIGNED_MSG_TYPE_UNKNOWN\n                          description: >-\n                            SignedMsgType is a type of signed message in the\n                            consensus.\n\n                             - SIGNED_MSG_TYPE_PREVOTE: Votes\n                             - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                        height:\n                          type: string\n                          format: int64\n                        round:\n                          type: integer\n                          format: int32\n                        block_id:\n                          type: object\n                          properties:\n                            hash:\n                              type: string\n                              format: byte\n                            part_set_header:\n                              type: object\n                              properties:\n                                total:\n                                  type: integer\n                                  format: int64\n                                hash:\n                                  type: string\n                                  format: byte\n                              title: PartsetHeader\n                          title: BlockID\n                          description: zero if vote is nil.\n                        timestamp:\n                          type: string\n                          format: date-time\n                        validator_address:\n                          type: string\n                          format: byte\n                        validator_index:\n                          type: integer\n                          format: int32\n                        signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote signature by the validator if they participated\n                            in consensus for the\n\n                            associated block.\n                        extension:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension provided by the application. Only\n                            valid for precommit\n\n                            messages.\n                        extension_signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension signature by the validator if they\n                            participated in\n\n                            consensus for the associated block.\n\n                            Only valid for precommit messages.\n                      description: >-\n                        Vote represents a prevote or precommit vote from\n                        validators for\n\n                        consensus.\n                    vote_b:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                          enum:\n                            - SIGNED_MSG_TYPE_UNKNOWN\n                            - SIGNED_MSG_TYPE_PREVOTE\n                            - SIGNED_MSG_TYPE_PRECOMMIT\n                            - SIGNED_MSG_TYPE_PROPOSAL\n                          default: SIGNED_MSG_TYPE_UNKNOWN\n                          description: >-\n                            SignedMsgType is a type of signed message in the\n                            consensus.\n\n                             - SIGNED_MSG_TYPE_PREVOTE: Votes\n                             - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                        height:\n                          type: string\n                          format: int64\n                        round:\n                          type: integer\n                          format: int32\n                        block_id:\n                          type: object\n                          properties:\n                            hash:\n                              type: string\n                              format: byte\n                            part_set_header:\n                              type: object\n                              properties:\n                                total:\n                                  type: integer\n                                  format: int64\n                                hash:\n                                  type: string\n                                  format: byte\n                              title: PartsetHeader\n                          title: BlockID\n                          description: zero if vote is nil.\n                        timestamp:\n                          type: string\n                          format: date-time\n                        validator_address:\n                          type: string\n                          format: byte\n                        validator_index:\n                          type: integer\n                          format: int32\n                        signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote signature by the validator if they participated\n                            in consensus for the\n\n                            associated block.\n                        extension:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension provided by the application. Only\n                            valid for precommit\n\n                            messages.\n                        extension_signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension signature by the validator if they\n                            participated in\n\n                            consensus for the associated block.\n\n                            Only valid for precommit messages.\n                      description: >-\n                        Vote represents a prevote or precommit vote from\n                        validators for\n\n                        consensus.\n                    total_voting_power:\n                      type: string\n                      format: int64\n                    validator_power:\n                      type: string\n                      format: int64\n                    timestamp:\n                      type: string\n                      format: date-time\n                  description: >-\n                    DuplicateVoteEvidence contains evidence of a validator\n                    signed two conflicting votes.\n                light_client_attack_evidence:\n                  type: object\n                  properties:\n                    conflicting_block:\n                      type: object\n                      properties:\n                        signed_header:\n                          type: object\n                          properties:\n                            header:\n                              type: object\n                              properties:\n                                version:\n                                  title: basic block info\n                                  type: object\n                                  properties:\n                                    block:\n                                      type: string\n                                      format: uint64\n                                    app:\n                                      type: string\n                                      format: uint64\n                                  description: >-\n                                    Consensus captures the consensus rules for\n                                    processing a block in the blockchain,\n\n                                    including all blockchain data structures and\n                                    the rules of the application's\n\n                                    state transition machine.\n                                chain_id:\n                                  type: string\n                                height:\n                                  type: string\n                                  format: int64\n                                time:\n                                  type: string\n                                  format: date-time\n                                last_block_id:\n                                  type: object\n                                  properties:\n                                    hash:\n                                      type: string\n                                      format: byte\n                                    part_set_header:\n                                      type: object\n                                      properties:\n                                        total:\n                                          type: integer\n                                          format: int64\n                                        hash:\n                                          type: string\n                                          format: byte\n                                      title: PartsetHeader\n                                  title: BlockID\n                                last_commit_hash:\n                                  type: string\n                                  format: byte\n                                  description: commit from validators from the last block\n                                  title: hashes of block data\n                                data_hash:\n                                  type: string\n                                  format: byte\n                                  title: transactions\n                                validators_hash:\n                                  type: string\n                                  format: byte\n                                  description: validators for the current block\n                                  title: >-\n                                    hashes from the app output from the prev\n                                    block\n                                next_validators_hash:\n                                  type: string\n                                  format: byte\n                                  title: validators for the next block\n                                consensus_hash:\n                                  type: string\n                                  format: byte\n                                  title: consensus params for current block\n                                app_hash:\n                                  type: string\n                                  format: byte\n                                  title: state after txs from the previous block\n                                last_results_hash:\n                                  type: string\n                                  format: byte\n                                  title: >-\n                                    root hash of all results from the txs from\n                                    the previous block\n                                evidence_hash:\n                                  type: string\n                                  format: byte\n                                  description: evidence included in the block\n                                  title: consensus info\n                                proposer_address:\n                                  type: string\n                                  format: byte\n                                  title: original proposer of the block\n                              description: Header defines the structure of a block header.\n                            commit:\n                              type: object\n                              properties:\n                                height:\n                                  type: string\n                                  format: int64\n                                round:\n                                  type: integer\n                                  format: int32\n                                block_id:\n                                  type: object\n                                  properties:\n                                    hash:\n                                      type: string\n                                      format: byte\n                                    part_set_header:\n                                      type: object\n                                      properties:\n                                        total:\n                                          type: integer\n                                          format: int64\n                                        hash:\n                                          type: string\n                                          format: byte\n                                      title: PartsetHeader\n                                  title: BlockID\n                                signatures:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      block_id_flag:\n                                        type: string\n                                        enum:\n                                          - BLOCK_ID_FLAG_UNKNOWN\n                                          - BLOCK_ID_FLAG_ABSENT\n                                          - BLOCK_ID_FLAG_COMMIT\n                                          - BLOCK_ID_FLAG_NIL\n                                        default: BLOCK_ID_FLAG_UNKNOWN\n                                        description: >-\n                                          - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                          error condition\n                                           - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                           - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                           - BLOCK_ID_FLAG_NIL: voted for nil\n                                        title: >-\n                                          BlockIdFlag indicates which BlockID the\n                                          signature is for\n                                      validator_address:\n                                        type: string\n                                        format: byte\n                                      timestamp:\n                                        type: string\n                                        format: date-time\n                                      signature:\n                                        type: string\n                                        format: byte\n                                    description: >-\n                                      CommitSig is a part of the Vote included\n                                      in a Commit.\n                              description: >-\n                                Commit contains the evidence that a block was\n                                committed by a set of validators.\n                        validator_set:\n                          type: object\n                          properties:\n                            validators:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  address:\n                                    type: string\n                                    format: byte\n                                  pub_key:\n                                    type: object\n                                    properties:\n                                      ed25519:\n                                        type: string\n                                        format: byte\n                                      secp256k1:\n                                        type: string\n                                        format: byte\n                                    title: >-\n                                      PublicKey defines the keys available for\n                                      use with Validators\n                                  voting_power:\n                                    type: string\n                                    format: int64\n                                  proposer_priority:\n                                    type: string\n                                    format: int64\n                            proposer:\n                              type: object\n                              properties:\n                                address:\n                                  type: string\n                                  format: byte\n                                pub_key:\n                                  type: object\n                                  properties:\n                                    ed25519:\n                                      type: string\n                                      format: byte\n                                    secp256k1:\n                                      type: string\n                                      format: byte\n                                  title: >-\n                                    PublicKey defines the keys available for use\n                                    with Validators\n                                voting_power:\n                                  type: string\n                                  format: int64\n                                proposer_priority:\n                                  type: string\n                                  format: int64\n                            total_voting_power:\n                              type: string\n                              format: int64\n                    common_height:\n                      type: string\n                      format: int64\n                    byzantine_validators:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          address:\n                            type: string\n                            format: byte\n                          pub_key:\n                            type: object\n                            properties:\n                              ed25519:\n                                type: string\n                                format: byte\n                              secp256k1:\n                                type: string\n                                format: byte\n                            title: >-\n                              PublicKey defines the keys available for use with\n                              Validators\n                          voting_power:\n                            type: string\n                            format: int64\n                          proposer_priority:\n                            type: string\n                            format: int64\n                    total_voting_power:\n                      type: string\n                      format: int64\n                    timestamp:\n                      type: string\n                      format: date-time\n                  description: >-\n                    LightClientAttackEvidence contains evidence of a set of\n                    validators attempting to mislead a light client.\n      last_commit:\n        type: object\n        properties:\n          height:\n            type: string\n            format: int64\n          round:\n            type: integer\n            format: int32\n          block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          signatures:\n            type: array\n            items:\n              type: object\n              properties:\n                block_id_flag:\n                  type: string\n                  enum:\n                    - BLOCK_ID_FLAG_UNKNOWN\n                    - BLOCK_ID_FLAG_ABSENT\n                    - BLOCK_ID_FLAG_COMMIT\n                    - BLOCK_ID_FLAG_NIL\n                  default: BLOCK_ID_FLAG_UNKNOWN\n                  description: |-\n                    - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                     - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                     - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                     - BLOCK_ID_FLAG_NIL: voted for nil\n                  title: BlockIdFlag indicates which BlockID the signature is for\n                validator_address:\n                  type: string\n                  format: byte\n                timestamp:\n                  type: string\n                  format: date-time\n                signature:\n                  type: string\n                  format: byte\n              description: CommitSig is a part of the Vote included in a Commit.\n        description: >-\n          Commit contains the evidence that a block was committed by a set of\n          validators.\n    description: |-\n      Block is tendermint type Block, with the Header proposer address\n      field converted to bech32 string.\n  cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse:\n    type: object\n    properties:\n      block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      block:\n        title: 'Deprecated: please use `sdk_block` instead'\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                format: byte\n                title: original proposer of the block\n            description: Header defines the structure of a block header.\n          data:\n            type: object\n            properties:\n              txs:\n                type: array\n                items:\n                  type: string\n                  format: byte\n                description: >-\n                  Txs that will be applied by state @ block.Height+1.\n\n                  NOTE: not all txs here are valid.  We're just agreeing on the\n                  order first.\n\n                  This means that block.AppHash does not include these txs.\n            title: Data contains the set of transactions included in the block\n          evidence:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    duplicate_vote_evidence:\n                      type: object\n                      properties:\n                        vote_a:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        vote_b:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        validator_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        DuplicateVoteEvidence contains evidence of a validator\n                        signed two conflicting votes.\n                    light_client_attack_evidence:\n                      type: object\n                      properties:\n                        conflicting_block:\n                          type: object\n                          properties:\n                            signed_header:\n                              type: object\n                              properties:\n                                header:\n                                  type: object\n                                  properties:\n                                    version:\n                                      title: basic block info\n                                      type: object\n                                      properties:\n                                        block:\n                                          type: string\n                                          format: uint64\n                                        app:\n                                          type: string\n                                          format: uint64\n                                      description: >-\n                                        Consensus captures the consensus rules\n                                        for processing a block in the\n                                        blockchain,\n\n                                        including all blockchain data structures\n                                        and the rules of the application's\n\n                                        state transition machine.\n                                    chain_id:\n                                      type: string\n                                    height:\n                                      type: string\n                                      format: int64\n                                    time:\n                                      type: string\n                                      format: date-time\n                                    last_block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    last_commit_hash:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        commit from validators from the last\n                                        block\n                                      title: hashes of block data\n                                    data_hash:\n                                      type: string\n                                      format: byte\n                                      title: transactions\n                                    validators_hash:\n                                      type: string\n                                      format: byte\n                                      description: validators for the current block\n                                      title: >-\n                                        hashes from the app output from the prev\n                                        block\n                                    next_validators_hash:\n                                      type: string\n                                      format: byte\n                                      title: validators for the next block\n                                    consensus_hash:\n                                      type: string\n                                      format: byte\n                                      title: consensus params for current block\n                                    app_hash:\n                                      type: string\n                                      format: byte\n                                      title: state after txs from the previous block\n                                    last_results_hash:\n                                      type: string\n                                      format: byte\n                                      title: >-\n                                        root hash of all results from the txs\n                                        from the previous block\n                                    evidence_hash:\n                                      type: string\n                                      format: byte\n                                      description: evidence included in the block\n                                      title: consensus info\n                                    proposer_address:\n                                      type: string\n                                      format: byte\n                                      title: original proposer of the block\n                                  description: >-\n                                    Header defines the structure of a block\n                                    header.\n                                commit:\n                                  type: object\n                                  properties:\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    signatures:\n                                      type: array\n                                      items:\n                                        type: object\n                                        properties:\n                                          block_id_flag:\n                                            type: string\n                                            enum:\n                                              - BLOCK_ID_FLAG_UNKNOWN\n                                              - BLOCK_ID_FLAG_ABSENT\n                                              - BLOCK_ID_FLAG_COMMIT\n                                              - BLOCK_ID_FLAG_NIL\n                                            default: BLOCK_ID_FLAG_UNKNOWN\n                                            description: >-\n                                              - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                              error condition\n                                               - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                               - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                               - BLOCK_ID_FLAG_NIL: voted for nil\n                                            title: >-\n                                              BlockIdFlag indicates which BlockID the\n                                              signature is for\n                                          validator_address:\n                                            type: string\n                                            format: byte\n                                          timestamp:\n                                            type: string\n                                            format: date-time\n                                          signature:\n                                            type: string\n                                            format: byte\n                                        description: >-\n                                          CommitSig is a part of the Vote included\n                                          in a Commit.\n                                  description: >-\n                                    Commit contains the evidence that a block\n                                    was committed by a set of validators.\n                            validator_set:\n                              type: object\n                              properties:\n                                validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                proposer:\n                                  type: object\n                                  properties:\n                                    address:\n                                      type: string\n                                      format: byte\n                                    pub_key:\n                                      type: object\n                                      properties:\n                                        ed25519:\n                                          type: string\n                                          format: byte\n                                        secp256k1:\n                                          type: string\n                                          format: byte\n                                      title: >-\n                                        PublicKey defines the keys available for\n                                        use with Validators\n                                    voting_power:\n                                      type: string\n                                      format: int64\n                                    proposer_priority:\n                                      type: string\n                                      format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                        common_height:\n                          type: string\n                          format: int64\n                        byzantine_validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        LightClientAttackEvidence contains evidence of a set of\n                        validators attempting to mislead a light client.\n          last_commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n      sdk_block:\n        title: 'Since: cosmos-sdk 0.47'\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                description: >-\n                  proposer_address is the original block proposer address,\n                  formatted as a Bech32 string.\n\n                  In Tendermint, this type is `bytes`, but in the SDK, we\n                  convert it to a Bech32 string\n\n                  for better UX.\n\n\n                  original proposer of the block\n            description: Header defines the structure of a Tendermint block header.\n          data:\n            type: object\n            properties:\n              txs:\n                type: array\n                items:\n                  type: string\n                  format: byte\n                description: >-\n                  Txs that will be applied by state @ block.Height+1.\n\n                  NOTE: not all txs here are valid.  We're just agreeing on the\n                  order first.\n\n                  This means that block.AppHash does not include these txs.\n            title: Data contains the set of transactions included in the block\n          evidence:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    duplicate_vote_evidence:\n                      type: object\n                      properties:\n                        vote_a:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        vote_b:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        validator_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        DuplicateVoteEvidence contains evidence of a validator\n                        signed two conflicting votes.\n                    light_client_attack_evidence:\n                      type: object\n                      properties:\n                        conflicting_block:\n                          type: object\n                          properties:\n                            signed_header:\n                              type: object\n                              properties:\n                                header:\n                                  type: object\n                                  properties:\n                                    version:\n                                      title: basic block info\n                                      type: object\n                                      properties:\n                                        block:\n                                          type: string\n                                          format: uint64\n                                        app:\n                                          type: string\n                                          format: uint64\n                                      description: >-\n                                        Consensus captures the consensus rules\n                                        for processing a block in the\n                                        blockchain,\n\n                                        including all blockchain data structures\n                                        and the rules of the application's\n\n                                        state transition machine.\n                                    chain_id:\n                                      type: string\n                                    height:\n                                      type: string\n                                      format: int64\n                                    time:\n                                      type: string\n                                      format: date-time\n                                    last_block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    last_commit_hash:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        commit from validators from the last\n                                        block\n                                      title: hashes of block data\n                                    data_hash:\n                                      type: string\n                                      format: byte\n                                      title: transactions\n                                    validators_hash:\n                                      type: string\n                                      format: byte\n                                      description: validators for the current block\n                                      title: >-\n                                        hashes from the app output from the prev\n                                        block\n                                    next_validators_hash:\n                                      type: string\n                                      format: byte\n                                      title: validators for the next block\n                                    consensus_hash:\n                                      type: string\n                                      format: byte\n                                      title: consensus params for current block\n                                    app_hash:\n                                      type: string\n                                      format: byte\n                                      title: state after txs from the previous block\n                                    last_results_hash:\n                                      type: string\n                                      format: byte\n                                      title: >-\n                                        root hash of all results from the txs\n                                        from the previous block\n                                    evidence_hash:\n                                      type: string\n                                      format: byte\n                                      description: evidence included in the block\n                                      title: consensus info\n                                    proposer_address:\n                                      type: string\n                                      format: byte\n                                      title: original proposer of the block\n                                  description: >-\n                                    Header defines the structure of a block\n                                    header.\n                                commit:\n                                  type: object\n                                  properties:\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    signatures:\n                                      type: array\n                                      items:\n                                        type: object\n                                        properties:\n                                          block_id_flag:\n                                            type: string\n                                            enum:\n                                              - BLOCK_ID_FLAG_UNKNOWN\n                                              - BLOCK_ID_FLAG_ABSENT\n                                              - BLOCK_ID_FLAG_COMMIT\n                                              - BLOCK_ID_FLAG_NIL\n                                            default: BLOCK_ID_FLAG_UNKNOWN\n                                            description: >-\n                                              - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                              error condition\n                                               - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                               - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                               - BLOCK_ID_FLAG_NIL: voted for nil\n                                            title: >-\n                                              BlockIdFlag indicates which BlockID the\n                                              signature is for\n                                          validator_address:\n                                            type: string\n                                            format: byte\n                                          timestamp:\n                                            type: string\n                                            format: date-time\n                                          signature:\n                                            type: string\n                                            format: byte\n                                        description: >-\n                                          CommitSig is a part of the Vote included\n                                          in a Commit.\n                                  description: >-\n                                    Commit contains the evidence that a block\n                                    was committed by a set of validators.\n                            validator_set:\n                              type: object\n                              properties:\n                                validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                proposer:\n                                  type: object\n                                  properties:\n                                    address:\n                                      type: string\n                                      format: byte\n                                    pub_key:\n                                      type: object\n                                      properties:\n                                        ed25519:\n                                          type: string\n                                          format: byte\n                                        secp256k1:\n                                          type: string\n                                          format: byte\n                                      title: >-\n                                        PublicKey defines the keys available for\n                                        use with Validators\n                                    voting_power:\n                                      type: string\n                                      format: int64\n                                    proposer_priority:\n                                      type: string\n                                      format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                        common_height:\n                          type: string\n                          format: int64\n                        byzantine_validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        LightClientAttackEvidence contains evidence of a set of\n                        validators attempting to mislead a light client.\n          last_commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n        description: |-\n          Block is tendermint type Block, with the Header proposer address\n          field converted to bech32 string.\n    description: >-\n      GetBlockByHeightResponse is the response type for the\n      Query/GetBlockByHeight RPC method.\n  cosmos.base.tendermint.v1beta1.GetLatestBlockResponse:\n    type: object\n    properties:\n      block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      block:\n        title: 'Deprecated: please use `sdk_block` instead'\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                format: byte\n                title: original proposer of the block\n            description: Header defines the structure of a block header.\n          data:\n            type: object\n            properties:\n              txs:\n                type: array\n                items:\n                  type: string\n                  format: byte\n                description: >-\n                  Txs that will be applied by state @ block.Height+1.\n\n                  NOTE: not all txs here are valid.  We're just agreeing on the\n                  order first.\n\n                  This means that block.AppHash does not include these txs.\n            title: Data contains the set of transactions included in the block\n          evidence:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    duplicate_vote_evidence:\n                      type: object\n                      properties:\n                        vote_a:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        vote_b:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        validator_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        DuplicateVoteEvidence contains evidence of a validator\n                        signed two conflicting votes.\n                    light_client_attack_evidence:\n                      type: object\n                      properties:\n                        conflicting_block:\n                          type: object\n                          properties:\n                            signed_header:\n                              type: object\n                              properties:\n                                header:\n                                  type: object\n                                  properties:\n                                    version:\n                                      title: basic block info\n                                      type: object\n                                      properties:\n                                        block:\n                                          type: string\n                                          format: uint64\n                                        app:\n                                          type: string\n                                          format: uint64\n                                      description: >-\n                                        Consensus captures the consensus rules\n                                        for processing a block in the\n                                        blockchain,\n\n                                        including all blockchain data structures\n                                        and the rules of the application's\n\n                                        state transition machine.\n                                    chain_id:\n                                      type: string\n                                    height:\n                                      type: string\n                                      format: int64\n                                    time:\n                                      type: string\n                                      format: date-time\n                                    last_block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    last_commit_hash:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        commit from validators from the last\n                                        block\n                                      title: hashes of block data\n                                    data_hash:\n                                      type: string\n                                      format: byte\n                                      title: transactions\n                                    validators_hash:\n                                      type: string\n                                      format: byte\n                                      description: validators for the current block\n                                      title: >-\n                                        hashes from the app output from the prev\n                                        block\n                                    next_validators_hash:\n                                      type: string\n                                      format: byte\n                                      title: validators for the next block\n                                    consensus_hash:\n                                      type: string\n                                      format: byte\n                                      title: consensus params for current block\n                                    app_hash:\n                                      type: string\n                                      format: byte\n                                      title: state after txs from the previous block\n                                    last_results_hash:\n                                      type: string\n                                      format: byte\n                                      title: >-\n                                        root hash of all results from the txs\n                                        from the previous block\n                                    evidence_hash:\n                                      type: string\n                                      format: byte\n                                      description: evidence included in the block\n                                      title: consensus info\n                                    proposer_address:\n                                      type: string\n                                      format: byte\n                                      title: original proposer of the block\n                                  description: >-\n                                    Header defines the structure of a block\n                                    header.\n                                commit:\n                                  type: object\n                                  properties:\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    signatures:\n                                      type: array\n                                      items:\n                                        type: object\n                                        properties:\n                                          block_id_flag:\n                                            type: string\n                                            enum:\n                                              - BLOCK_ID_FLAG_UNKNOWN\n                                              - BLOCK_ID_FLAG_ABSENT\n                                              - BLOCK_ID_FLAG_COMMIT\n                                              - BLOCK_ID_FLAG_NIL\n                                            default: BLOCK_ID_FLAG_UNKNOWN\n                                            description: >-\n                                              - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                              error condition\n                                               - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                               - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                               - BLOCK_ID_FLAG_NIL: voted for nil\n                                            title: >-\n                                              BlockIdFlag indicates which BlockID the\n                                              signature is for\n                                          validator_address:\n                                            type: string\n                                            format: byte\n                                          timestamp:\n                                            type: string\n                                            format: date-time\n                                          signature:\n                                            type: string\n                                            format: byte\n                                        description: >-\n                                          CommitSig is a part of the Vote included\n                                          in a Commit.\n                                  description: >-\n                                    Commit contains the evidence that a block\n                                    was committed by a set of validators.\n                            validator_set:\n                              type: object\n                              properties:\n                                validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                proposer:\n                                  type: object\n                                  properties:\n                                    address:\n                                      type: string\n                                      format: byte\n                                    pub_key:\n                                      type: object\n                                      properties:\n                                        ed25519:\n                                          type: string\n                                          format: byte\n                                        secp256k1:\n                                          type: string\n                                          format: byte\n                                      title: >-\n                                        PublicKey defines the keys available for\n                                        use with Validators\n                                    voting_power:\n                                      type: string\n                                      format: int64\n                                    proposer_priority:\n                                      type: string\n                                      format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                        common_height:\n                          type: string\n                          format: int64\n                        byzantine_validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        LightClientAttackEvidence contains evidence of a set of\n                        validators attempting to mislead a light client.\n          last_commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n      sdk_block:\n        title: 'Since: cosmos-sdk 0.47'\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                description: >-\n                  proposer_address is the original block proposer address,\n                  formatted as a Bech32 string.\n\n                  In Tendermint, this type is `bytes`, but in the SDK, we\n                  convert it to a Bech32 string\n\n                  for better UX.\n\n\n                  original proposer of the block\n            description: Header defines the structure of a Tendermint block header.\n          data:\n            type: object\n            properties:\n              txs:\n                type: array\n                items:\n                  type: string\n                  format: byte\n                description: >-\n                  Txs that will be applied by state @ block.Height+1.\n\n                  NOTE: not all txs here are valid.  We're just agreeing on the\n                  order first.\n\n                  This means that block.AppHash does not include these txs.\n            title: Data contains the set of transactions included in the block\n          evidence:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    duplicate_vote_evidence:\n                      type: object\n                      properties:\n                        vote_a:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        vote_b:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        validator_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        DuplicateVoteEvidence contains evidence of a validator\n                        signed two conflicting votes.\n                    light_client_attack_evidence:\n                      type: object\n                      properties:\n                        conflicting_block:\n                          type: object\n                          properties:\n                            signed_header:\n                              type: object\n                              properties:\n                                header:\n                                  type: object\n                                  properties:\n                                    version:\n                                      title: basic block info\n                                      type: object\n                                      properties:\n                                        block:\n                                          type: string\n                                          format: uint64\n                                        app:\n                                          type: string\n                                          format: uint64\n                                      description: >-\n                                        Consensus captures the consensus rules\n                                        for processing a block in the\n                                        blockchain,\n\n                                        including all blockchain data structures\n                                        and the rules of the application's\n\n                                        state transition machine.\n                                    chain_id:\n                                      type: string\n                                    height:\n                                      type: string\n                                      format: int64\n                                    time:\n                                      type: string\n                                      format: date-time\n                                    last_block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    last_commit_hash:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        commit from validators from the last\n                                        block\n                                      title: hashes of block data\n                                    data_hash:\n                                      type: string\n                                      format: byte\n                                      title: transactions\n                                    validators_hash:\n                                      type: string\n                                      format: byte\n                                      description: validators for the current block\n                                      title: >-\n                                        hashes from the app output from the prev\n                                        block\n                                    next_validators_hash:\n                                      type: string\n                                      format: byte\n                                      title: validators for the next block\n                                    consensus_hash:\n                                      type: string\n                                      format: byte\n                                      title: consensus params for current block\n                                    app_hash:\n                                      type: string\n                                      format: byte\n                                      title: state after txs from the previous block\n                                    last_results_hash:\n                                      type: string\n                                      format: byte\n                                      title: >-\n                                        root hash of all results from the txs\n                                        from the previous block\n                                    evidence_hash:\n                                      type: string\n                                      format: byte\n                                      description: evidence included in the block\n                                      title: consensus info\n                                    proposer_address:\n                                      type: string\n                                      format: byte\n                                      title: original proposer of the block\n                                  description: >-\n                                    Header defines the structure of a block\n                                    header.\n                                commit:\n                                  type: object\n                                  properties:\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    signatures:\n                                      type: array\n                                      items:\n                                        type: object\n                                        properties:\n                                          block_id_flag:\n                                            type: string\n                                            enum:\n                                              - BLOCK_ID_FLAG_UNKNOWN\n                                              - BLOCK_ID_FLAG_ABSENT\n                                              - BLOCK_ID_FLAG_COMMIT\n                                              - BLOCK_ID_FLAG_NIL\n                                            default: BLOCK_ID_FLAG_UNKNOWN\n                                            description: >-\n                                              - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                              error condition\n                                               - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                               - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                               - BLOCK_ID_FLAG_NIL: voted for nil\n                                            title: >-\n                                              BlockIdFlag indicates which BlockID the\n                                              signature is for\n                                          validator_address:\n                                            type: string\n                                            format: byte\n                                          timestamp:\n                                            type: string\n                                            format: date-time\n                                          signature:\n                                            type: string\n                                            format: byte\n                                        description: >-\n                                          CommitSig is a part of the Vote included\n                                          in a Commit.\n                                  description: >-\n                                    Commit contains the evidence that a block\n                                    was committed by a set of validators.\n                            validator_set:\n                              type: object\n                              properties:\n                                validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                proposer:\n                                  type: object\n                                  properties:\n                                    address:\n                                      type: string\n                                      format: byte\n                                    pub_key:\n                                      type: object\n                                      properties:\n                                        ed25519:\n                                          type: string\n                                          format: byte\n                                        secp256k1:\n                                          type: string\n                                          format: byte\n                                      title: >-\n                                        PublicKey defines the keys available for\n                                        use with Validators\n                                    voting_power:\n                                      type: string\n                                      format: int64\n                                    proposer_priority:\n                                      type: string\n                                      format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                        common_height:\n                          type: string\n                          format: int64\n                        byzantine_validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        LightClientAttackEvidence contains evidence of a set of\n                        validators attempting to mislead a light client.\n          last_commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n        description: |-\n          Block is tendermint type Block, with the Header proposer address\n          field converted to bech32 string.\n    description: >-\n      GetLatestBlockResponse is the response type for the Query/GetLatestBlock\n      RPC method.\n  cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse:\n    type: object\n    properties:\n      block_height:\n        type: string\n        format: int64\n      validators:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            pub_key:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            voting_power:\n              type: string\n              format: int64\n            proposer_priority:\n              type: string\n              format: int64\n          description: Validator is the type for the validator-set.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      GetLatestValidatorSetResponse is the response type for the\n      Query/GetValidatorSetByHeight RPC method.\n  cosmos.base.tendermint.v1beta1.GetNodeInfoResponse:\n    type: object\n    properties:\n      default_node_info:\n        type: object\n        properties:\n          protocol_version:\n            type: object\n            properties:\n              p2p:\n                type: string\n                format: uint64\n              block:\n                type: string\n                format: uint64\n              app:\n                type: string\n                format: uint64\n          default_node_id:\n            type: string\n          listen_addr:\n            type: string\n          network:\n            type: string\n          version:\n            type: string\n          channels:\n            type: string\n            format: byte\n          moniker:\n            type: string\n          other:\n            type: object\n            properties:\n              tx_index:\n                type: string\n              rpc_address:\n                type: string\n      application_version:\n        type: object\n        properties:\n          name:\n            type: string\n          app_name:\n            type: string\n          version:\n            type: string\n          git_commit:\n            type: string\n          build_tags:\n            type: string\n          go_version:\n            type: string\n          build_deps:\n            type: array\n            items:\n              type: object\n              properties:\n                path:\n                  type: string\n                  title: module path\n                version:\n                  type: string\n                  title: module version\n                sum:\n                  type: string\n                  title: checksum\n              title: Module is the type for VersionInfo\n          cosmos_sdk_version:\n            type: string\n            title: 'Since: cosmos-sdk 0.43'\n        description: VersionInfo is the type for the GetNodeInfoResponse message.\n    description: >-\n      GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC\n      method.\n  cosmos.base.tendermint.v1beta1.GetSyncingResponse:\n    type: object\n    properties:\n      syncing:\n        type: boolean\n    description: >-\n      GetSyncingResponse is the response type for the Query/GetSyncing RPC\n      method.\n  cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse:\n    type: object\n    properties:\n      block_height:\n        type: string\n        format: int64\n      validators:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            pub_key:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            voting_power:\n              type: string\n              format: int64\n            proposer_priority:\n              type: string\n              format: int64\n          description: Validator is the type for the validator-set.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      GetValidatorSetByHeightResponse is the response type for the\n      Query/GetValidatorSetByHeight RPC method.\n  cosmos.base.tendermint.v1beta1.Header:\n    type: object\n    properties:\n      version:\n        title: basic block info\n        type: object\n        properties:\n          block:\n            type: string\n            format: uint64\n          app:\n            type: string\n            format: uint64\n        description: >-\n          Consensus captures the consensus rules for processing a block in the\n          blockchain,\n\n          including all blockchain data structures and the rules of the\n          application's\n\n          state transition machine.\n      chain_id:\n        type: string\n      height:\n        type: string\n        format: int64\n      time:\n        type: string\n        format: date-time\n      last_block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      last_commit_hash:\n        type: string\n        format: byte\n        description: commit from validators from the last block\n        title: hashes of block data\n      data_hash:\n        type: string\n        format: byte\n        title: transactions\n      validators_hash:\n        type: string\n        format: byte\n        description: validators for the current block\n        title: hashes from the app output from the prev block\n      next_validators_hash:\n        type: string\n        format: byte\n        title: validators for the next block\n      consensus_hash:\n        type: string\n        format: byte\n        title: consensus params for current block\n      app_hash:\n        type: string\n        format: byte\n        title: state after txs from the previous block\n      last_results_hash:\n        type: string\n        format: byte\n        title: root hash of all results from the txs from the previous block\n      evidence_hash:\n        type: string\n        format: byte\n        description: evidence included in the block\n        title: consensus info\n      proposer_address:\n        type: string\n        description: >-\n          proposer_address is the original block proposer address, formatted as\n          a Bech32 string.\n\n          In Tendermint, this type is `bytes`, but in the SDK, we convert it to\n          a Bech32 string\n\n          for better UX.\n\n\n          original proposer of the block\n    description: Header defines the structure of a Tendermint block header.\n  cosmos.base.tendermint.v1beta1.Module:\n    type: object\n    properties:\n      path:\n        type: string\n        title: module path\n      version:\n        type: string\n        title: module version\n      sum:\n        type: string\n        title: checksum\n    title: Module is the type for VersionInfo\n  cosmos.base.tendermint.v1beta1.ProofOp:\n    type: object\n    properties:\n      type:\n        type: string\n      key:\n        type: string\n        format: byte\n      data:\n        type: string\n        format: byte\n    description: >-\n      ProofOp defines an operation used for calculating Merkle root. The data\n      could\n\n      be arbitrary format, providing necessary data for example neighbouring\n      node\n\n      hash.\n\n\n      Note: This type is a duplicate of the ProofOp proto type defined in\n      Tendermint.\n  cosmos.base.tendermint.v1beta1.ProofOps:\n    type: object\n    properties:\n      ops:\n        type: array\n        items:\n          type: object\n          properties:\n            type:\n              type: string\n            key:\n              type: string\n              format: byte\n            data:\n              type: string\n              format: byte\n          description: >-\n            ProofOp defines an operation used for calculating Merkle root. The\n            data could\n\n            be arbitrary format, providing necessary data for example\n            neighbouring node\n\n            hash.\n\n\n            Note: This type is a duplicate of the ProofOp proto type defined in\n            Tendermint.\n    description: >-\n      ProofOps is Merkle proof defined by the list of ProofOps.\n\n\n      Note: This type is a duplicate of the ProofOps proto type defined in\n      Tendermint.\n  cosmos.base.tendermint.v1beta1.Validator:\n    type: object\n    properties:\n      address:\n        type: string\n      pub_key:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      voting_power:\n        type: string\n        format: int64\n      proposer_priority:\n        type: string\n        format: int64\n    description: Validator is the type for the validator-set.\n  cosmos.base.tendermint.v1beta1.VersionInfo:\n    type: object\n    properties:\n      name:\n        type: string\n      app_name:\n        type: string\n      version:\n        type: string\n      git_commit:\n        type: string\n      build_tags:\n        type: string\n      go_version:\n        type: string\n      build_deps:\n        type: array\n        items:\n          type: object\n          properties:\n            path:\n              type: string\n              title: module path\n            version:\n              type: string\n              title: module version\n            sum:\n              type: string\n              title: checksum\n          title: Module is the type for VersionInfo\n      cosmos_sdk_version:\n        type: string\n        title: 'Since: cosmos-sdk 0.43'\n    description: VersionInfo is the type for the GetNodeInfoResponse message.\n  tendermint.crypto.PublicKey:\n    type: object\n    properties:\n      ed25519:\n        type: string\n        format: byte\n      secp256k1:\n        type: string\n        format: byte\n    title: PublicKey defines the keys available for use with Validators\n  tendermint.p2p.DefaultNodeInfo:\n    type: object\n    properties:\n      protocol_version:\n        type: object\n        properties:\n          p2p:\n            type: string\n            format: uint64\n          block:\n            type: string\n            format: uint64\n          app:\n            type: string\n            format: uint64\n      default_node_id:\n        type: string\n      listen_addr:\n        type: string\n      network:\n        type: string\n      version:\n        type: string\n      channels:\n        type: string\n        format: byte\n      moniker:\n        type: string\n      other:\n        type: object\n        properties:\n          tx_index:\n            type: string\n          rpc_address:\n            type: string\n  tendermint.p2p.DefaultNodeInfoOther:\n    type: object\n    properties:\n      tx_index:\n        type: string\n      rpc_address:\n        type: string\n  tendermint.p2p.ProtocolVersion:\n    type: object\n    properties:\n      p2p:\n        type: string\n        format: uint64\n      block:\n        type: string\n        format: uint64\n      app:\n        type: string\n        format: uint64\n  tendermint.types.Block:\n    type: object\n    properties:\n      header:\n        type: object\n        properties:\n          version:\n            title: basic block info\n            type: object\n            properties:\n              block:\n                type: string\n                format: uint64\n              app:\n                type: string\n                format: uint64\n            description: >-\n              Consensus captures the consensus rules for processing a block in\n              the blockchain,\n\n              including all blockchain data structures and the rules of the\n              application's\n\n              state transition machine.\n          chain_id:\n            type: string\n          height:\n            type: string\n            format: int64\n          time:\n            type: string\n            format: date-time\n          last_block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          last_commit_hash:\n            type: string\n            format: byte\n            description: commit from validators from the last block\n            title: hashes of block data\n          data_hash:\n            type: string\n            format: byte\n            title: transactions\n          validators_hash:\n            type: string\n            format: byte\n            description: validators for the current block\n            title: hashes from the app output from the prev block\n          next_validators_hash:\n            type: string\n            format: byte\n            title: validators for the next block\n          consensus_hash:\n            type: string\n            format: byte\n            title: consensus params for current block\n          app_hash:\n            type: string\n            format: byte\n            title: state after txs from the previous block\n          last_results_hash:\n            type: string\n            format: byte\n            title: root hash of all results from the txs from the previous block\n          evidence_hash:\n            type: string\n            format: byte\n            description: evidence included in the block\n            title: consensus info\n          proposer_address:\n            type: string\n            format: byte\n            title: original proposer of the block\n        description: Header defines the structure of a block header.\n      data:\n        type: object\n        properties:\n          txs:\n            type: array\n            items:\n              type: string\n              format: byte\n            description: >-\n              Txs that will be applied by state @ block.Height+1.\n\n              NOTE: not all txs here are valid.  We're just agreeing on the\n              order first.\n\n              This means that block.AppHash does not include these txs.\n        title: Data contains the set of transactions included in the block\n      evidence:\n        type: object\n        properties:\n          evidence:\n            type: array\n            items:\n              type: object\n              properties:\n                duplicate_vote_evidence:\n                  type: object\n                  properties:\n                    vote_a:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                          enum:\n                            - SIGNED_MSG_TYPE_UNKNOWN\n                            - SIGNED_MSG_TYPE_PREVOTE\n                            - SIGNED_MSG_TYPE_PRECOMMIT\n                            - SIGNED_MSG_TYPE_PROPOSAL\n                          default: SIGNED_MSG_TYPE_UNKNOWN\n                          description: >-\n                            SignedMsgType is a type of signed message in the\n                            consensus.\n\n                             - SIGNED_MSG_TYPE_PREVOTE: Votes\n                             - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                        height:\n                          type: string\n                          format: int64\n                        round:\n                          type: integer\n                          format: int32\n                        block_id:\n                          type: object\n                          properties:\n                            hash:\n                              type: string\n                              format: byte\n                            part_set_header:\n                              type: object\n                              properties:\n                                total:\n                                  type: integer\n                                  format: int64\n                                hash:\n                                  type: string\n                                  format: byte\n                              title: PartsetHeader\n                          title: BlockID\n                          description: zero if vote is nil.\n                        timestamp:\n                          type: string\n                          format: date-time\n                        validator_address:\n                          type: string\n                          format: byte\n                        validator_index:\n                          type: integer\n                          format: int32\n                        signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote signature by the validator if they participated\n                            in consensus for the\n\n                            associated block.\n                        extension:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension provided by the application. Only\n                            valid for precommit\n\n                            messages.\n                        extension_signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension signature by the validator if they\n                            participated in\n\n                            consensus for the associated block.\n\n                            Only valid for precommit messages.\n                      description: >-\n                        Vote represents a prevote or precommit vote from\n                        validators for\n\n                        consensus.\n                    vote_b:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                          enum:\n                            - SIGNED_MSG_TYPE_UNKNOWN\n                            - SIGNED_MSG_TYPE_PREVOTE\n                            - SIGNED_MSG_TYPE_PRECOMMIT\n                            - SIGNED_MSG_TYPE_PROPOSAL\n                          default: SIGNED_MSG_TYPE_UNKNOWN\n                          description: >-\n                            SignedMsgType is a type of signed message in the\n                            consensus.\n\n                             - SIGNED_MSG_TYPE_PREVOTE: Votes\n                             - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                        height:\n                          type: string\n                          format: int64\n                        round:\n                          type: integer\n                          format: int32\n                        block_id:\n                          type: object\n                          properties:\n                            hash:\n                              type: string\n                              format: byte\n                            part_set_header:\n                              type: object\n                              properties:\n                                total:\n                                  type: integer\n                                  format: int64\n                                hash:\n                                  type: string\n                                  format: byte\n                              title: PartsetHeader\n                          title: BlockID\n                          description: zero if vote is nil.\n                        timestamp:\n                          type: string\n                          format: date-time\n                        validator_address:\n                          type: string\n                          format: byte\n                        validator_index:\n                          type: integer\n                          format: int32\n                        signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote signature by the validator if they participated\n                            in consensus for the\n\n                            associated block.\n                        extension:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension provided by the application. Only\n                            valid for precommit\n\n                            messages.\n                        extension_signature:\n                          type: string\n                          format: byte\n                          description: >-\n                            Vote extension signature by the validator if they\n                            participated in\n\n                            consensus for the associated block.\n\n                            Only valid for precommit messages.\n                      description: >-\n                        Vote represents a prevote or precommit vote from\n                        validators for\n\n                        consensus.\n                    total_voting_power:\n                      type: string\n                      format: int64\n                    validator_power:\n                      type: string\n                      format: int64\n                    timestamp:\n                      type: string\n                      format: date-time\n                  description: >-\n                    DuplicateVoteEvidence contains evidence of a validator\n                    signed two conflicting votes.\n                light_client_attack_evidence:\n                  type: object\n                  properties:\n                    conflicting_block:\n                      type: object\n                      properties:\n                        signed_header:\n                          type: object\n                          properties:\n                            header:\n                              type: object\n                              properties:\n                                version:\n                                  title: basic block info\n                                  type: object\n                                  properties:\n                                    block:\n                                      type: string\n                                      format: uint64\n                                    app:\n                                      type: string\n                                      format: uint64\n                                  description: >-\n                                    Consensus captures the consensus rules for\n                                    processing a block in the blockchain,\n\n                                    including all blockchain data structures and\n                                    the rules of the application's\n\n                                    state transition machine.\n                                chain_id:\n                                  type: string\n                                height:\n                                  type: string\n                                  format: int64\n                                time:\n                                  type: string\n                                  format: date-time\n                                last_block_id:\n                                  type: object\n                                  properties:\n                                    hash:\n                                      type: string\n                                      format: byte\n                                    part_set_header:\n                                      type: object\n                                      properties:\n                                        total:\n                                          type: integer\n                                          format: int64\n                                        hash:\n                                          type: string\n                                          format: byte\n                                      title: PartsetHeader\n                                  title: BlockID\n                                last_commit_hash:\n                                  type: string\n                                  format: byte\n                                  description: commit from validators from the last block\n                                  title: hashes of block data\n                                data_hash:\n                                  type: string\n                                  format: byte\n                                  title: transactions\n                                validators_hash:\n                                  type: string\n                                  format: byte\n                                  description: validators for the current block\n                                  title: >-\n                                    hashes from the app output from the prev\n                                    block\n                                next_validators_hash:\n                                  type: string\n                                  format: byte\n                                  title: validators for the next block\n                                consensus_hash:\n                                  type: string\n                                  format: byte\n                                  title: consensus params for current block\n                                app_hash:\n                                  type: string\n                                  format: byte\n                                  title: state after txs from the previous block\n                                last_results_hash:\n                                  type: string\n                                  format: byte\n                                  title: >-\n                                    root hash of all results from the txs from\n                                    the previous block\n                                evidence_hash:\n                                  type: string\n                                  format: byte\n                                  description: evidence included in the block\n                                  title: consensus info\n                                proposer_address:\n                                  type: string\n                                  format: byte\n                                  title: original proposer of the block\n                              description: Header defines the structure of a block header.\n                            commit:\n                              type: object\n                              properties:\n                                height:\n                                  type: string\n                                  format: int64\n                                round:\n                                  type: integer\n                                  format: int32\n                                block_id:\n                                  type: object\n                                  properties:\n                                    hash:\n                                      type: string\n                                      format: byte\n                                    part_set_header:\n                                      type: object\n                                      properties:\n                                        total:\n                                          type: integer\n                                          format: int64\n                                        hash:\n                                          type: string\n                                          format: byte\n                                      title: PartsetHeader\n                                  title: BlockID\n                                signatures:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      block_id_flag:\n                                        type: string\n                                        enum:\n                                          - BLOCK_ID_FLAG_UNKNOWN\n                                          - BLOCK_ID_FLAG_ABSENT\n                                          - BLOCK_ID_FLAG_COMMIT\n                                          - BLOCK_ID_FLAG_NIL\n                                        default: BLOCK_ID_FLAG_UNKNOWN\n                                        description: >-\n                                          - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                          error condition\n                                           - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                           - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                           - BLOCK_ID_FLAG_NIL: voted for nil\n                                        title: >-\n                                          BlockIdFlag indicates which BlockID the\n                                          signature is for\n                                      validator_address:\n                                        type: string\n                                        format: byte\n                                      timestamp:\n                                        type: string\n                                        format: date-time\n                                      signature:\n                                        type: string\n                                        format: byte\n                                    description: >-\n                                      CommitSig is a part of the Vote included\n                                      in a Commit.\n                              description: >-\n                                Commit contains the evidence that a block was\n                                committed by a set of validators.\n                        validator_set:\n                          type: object\n                          properties:\n                            validators:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  address:\n                                    type: string\n                                    format: byte\n                                  pub_key:\n                                    type: object\n                                    properties:\n                                      ed25519:\n                                        type: string\n                                        format: byte\n                                      secp256k1:\n                                        type: string\n                                        format: byte\n                                    title: >-\n                                      PublicKey defines the keys available for\n                                      use with Validators\n                                  voting_power:\n                                    type: string\n                                    format: int64\n                                  proposer_priority:\n                                    type: string\n                                    format: int64\n                            proposer:\n                              type: object\n                              properties:\n                                address:\n                                  type: string\n                                  format: byte\n                                pub_key:\n                                  type: object\n                                  properties:\n                                    ed25519:\n                                      type: string\n                                      format: byte\n                                    secp256k1:\n                                      type: string\n                                      format: byte\n                                  title: >-\n                                    PublicKey defines the keys available for use\n                                    with Validators\n                                voting_power:\n                                  type: string\n                                  format: int64\n                                proposer_priority:\n                                  type: string\n                                  format: int64\n                            total_voting_power:\n                              type: string\n                              format: int64\n                    common_height:\n                      type: string\n                      format: int64\n                    byzantine_validators:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          address:\n                            type: string\n                            format: byte\n                          pub_key:\n                            type: object\n                            properties:\n                              ed25519:\n                                type: string\n                                format: byte\n                              secp256k1:\n                                type: string\n                                format: byte\n                            title: >-\n                              PublicKey defines the keys available for use with\n                              Validators\n                          voting_power:\n                            type: string\n                            format: int64\n                          proposer_priority:\n                            type: string\n                            format: int64\n                    total_voting_power:\n                      type: string\n                      format: int64\n                    timestamp:\n                      type: string\n                      format: date-time\n                  description: >-\n                    LightClientAttackEvidence contains evidence of a set of\n                    validators attempting to mislead a light client.\n      last_commit:\n        type: object\n        properties:\n          height:\n            type: string\n            format: int64\n          round:\n            type: integer\n            format: int32\n          block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          signatures:\n            type: array\n            items:\n              type: object\n              properties:\n                block_id_flag:\n                  type: string\n                  enum:\n                    - BLOCK_ID_FLAG_UNKNOWN\n                    - BLOCK_ID_FLAG_ABSENT\n                    - BLOCK_ID_FLAG_COMMIT\n                    - BLOCK_ID_FLAG_NIL\n                  default: BLOCK_ID_FLAG_UNKNOWN\n                  description: |-\n                    - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                     - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                     - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                     - BLOCK_ID_FLAG_NIL: voted for nil\n                  title: BlockIdFlag indicates which BlockID the signature is for\n                validator_address:\n                  type: string\n                  format: byte\n                timestamp:\n                  type: string\n                  format: date-time\n                signature:\n                  type: string\n                  format: byte\n              description: CommitSig is a part of the Vote included in a Commit.\n        description: >-\n          Commit contains the evidence that a block was committed by a set of\n          validators.\n  tendermint.types.BlockID:\n    type: object\n    properties:\n      hash:\n        type: string\n        format: byte\n      part_set_header:\n        type: object\n        properties:\n          total:\n            type: integer\n            format: int64\n          hash:\n            type: string\n            format: byte\n        title: PartsetHeader\n    title: BlockID\n  tendermint.types.BlockIDFlag:\n    type: string\n    enum:\n      - BLOCK_ID_FLAG_UNKNOWN\n      - BLOCK_ID_FLAG_ABSENT\n      - BLOCK_ID_FLAG_COMMIT\n      - BLOCK_ID_FLAG_NIL\n    default: BLOCK_ID_FLAG_UNKNOWN\n    description: |-\n      - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n       - BLOCK_ID_FLAG_NIL: voted for nil\n    title: BlockIdFlag indicates which BlockID the signature is for\n  tendermint.types.Commit:\n    type: object\n    properties:\n      height:\n        type: string\n        format: int64\n      round:\n        type: integer\n        format: int32\n      block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      signatures:\n        type: array\n        items:\n          type: object\n          properties:\n            block_id_flag:\n              type: string\n              enum:\n                - BLOCK_ID_FLAG_UNKNOWN\n                - BLOCK_ID_FLAG_ABSENT\n                - BLOCK_ID_FLAG_COMMIT\n                - BLOCK_ID_FLAG_NIL\n              default: BLOCK_ID_FLAG_UNKNOWN\n              description: |-\n                - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                 - BLOCK_ID_FLAG_NIL: voted for nil\n              title: BlockIdFlag indicates which BlockID the signature is for\n            validator_address:\n              type: string\n              format: byte\n            timestamp:\n              type: string\n              format: date-time\n            signature:\n              type: string\n              format: byte\n          description: CommitSig is a part of the Vote included in a Commit.\n    description: >-\n      Commit contains the evidence that a block was committed by a set of\n      validators.\n  tendermint.types.CommitSig:\n    type: object\n    properties:\n      block_id_flag:\n        type: string\n        enum:\n          - BLOCK_ID_FLAG_UNKNOWN\n          - BLOCK_ID_FLAG_ABSENT\n          - BLOCK_ID_FLAG_COMMIT\n          - BLOCK_ID_FLAG_NIL\n        default: BLOCK_ID_FLAG_UNKNOWN\n        description: |-\n          - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n           - BLOCK_ID_FLAG_ABSENT: the vote was not received\n           - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n           - BLOCK_ID_FLAG_NIL: voted for nil\n        title: BlockIdFlag indicates which BlockID the signature is for\n      validator_address:\n        type: string\n        format: byte\n      timestamp:\n        type: string\n        format: date-time\n      signature:\n        type: string\n        format: byte\n    description: CommitSig is a part of the Vote included in a Commit.\n  tendermint.types.Data:\n    type: object\n    properties:\n      txs:\n        type: array\n        items:\n          type: string\n          format: byte\n        description: >-\n          Txs that will be applied by state @ block.Height+1.\n\n          NOTE: not all txs here are valid.  We're just agreeing on the order\n          first.\n\n          This means that block.AppHash does not include these txs.\n    title: Data contains the set of transactions included in the block\n  tendermint.types.DuplicateVoteEvidence:\n    type: object\n    properties:\n      vote_a:\n        type: object\n        properties:\n          type:\n            type: string\n            enum:\n              - SIGNED_MSG_TYPE_UNKNOWN\n              - SIGNED_MSG_TYPE_PREVOTE\n              - SIGNED_MSG_TYPE_PRECOMMIT\n              - SIGNED_MSG_TYPE_PROPOSAL\n            default: SIGNED_MSG_TYPE_UNKNOWN\n            description: |-\n              SignedMsgType is a type of signed message in the consensus.\n\n               - SIGNED_MSG_TYPE_PREVOTE: Votes\n               - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n          height:\n            type: string\n            format: int64\n          round:\n            type: integer\n            format: int32\n          block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n            description: zero if vote is nil.\n          timestamp:\n            type: string\n            format: date-time\n          validator_address:\n            type: string\n            format: byte\n          validator_index:\n            type: integer\n            format: int32\n          signature:\n            type: string\n            format: byte\n            description: >-\n              Vote signature by the validator if they participated in consensus\n              for the\n\n              associated block.\n          extension:\n            type: string\n            format: byte\n            description: >-\n              Vote extension provided by the application. Only valid for\n              precommit\n\n              messages.\n          extension_signature:\n            type: string\n            format: byte\n            description: |-\n              Vote extension signature by the validator if they participated in\n              consensus for the associated block.\n              Only valid for precommit messages.\n        description: |-\n          Vote represents a prevote or precommit vote from validators for\n          consensus.\n      vote_b:\n        type: object\n        properties:\n          type:\n            type: string\n            enum:\n              - SIGNED_MSG_TYPE_UNKNOWN\n              - SIGNED_MSG_TYPE_PREVOTE\n              - SIGNED_MSG_TYPE_PRECOMMIT\n              - SIGNED_MSG_TYPE_PROPOSAL\n            default: SIGNED_MSG_TYPE_UNKNOWN\n            description: |-\n              SignedMsgType is a type of signed message in the consensus.\n\n               - SIGNED_MSG_TYPE_PREVOTE: Votes\n               - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n          height:\n            type: string\n            format: int64\n          round:\n            type: integer\n            format: int32\n          block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n            description: zero if vote is nil.\n          timestamp:\n            type: string\n            format: date-time\n          validator_address:\n            type: string\n            format: byte\n          validator_index:\n            type: integer\n            format: int32\n          signature:\n            type: string\n            format: byte\n            description: >-\n              Vote signature by the validator if they participated in consensus\n              for the\n\n              associated block.\n          extension:\n            type: string\n            format: byte\n            description: >-\n              Vote extension provided by the application. Only valid for\n              precommit\n\n              messages.\n          extension_signature:\n            type: string\n            format: byte\n            description: |-\n              Vote extension signature by the validator if they participated in\n              consensus for the associated block.\n              Only valid for precommit messages.\n        description: |-\n          Vote represents a prevote or precommit vote from validators for\n          consensus.\n      total_voting_power:\n        type: string\n        format: int64\n      validator_power:\n        type: string\n        format: int64\n      timestamp:\n        type: string\n        format: date-time\n    description: >-\n      DuplicateVoteEvidence contains evidence of a validator signed two\n      conflicting votes.\n  tendermint.types.Evidence:\n    type: object\n    properties:\n      duplicate_vote_evidence:\n        type: object\n        properties:\n          vote_a:\n            type: object\n            properties:\n              type:\n                type: string\n                enum:\n                  - SIGNED_MSG_TYPE_UNKNOWN\n                  - SIGNED_MSG_TYPE_PREVOTE\n                  - SIGNED_MSG_TYPE_PRECOMMIT\n                  - SIGNED_MSG_TYPE_PROPOSAL\n                default: SIGNED_MSG_TYPE_UNKNOWN\n                description: |-\n                  SignedMsgType is a type of signed message in the consensus.\n\n                   - SIGNED_MSG_TYPE_PREVOTE: Votes\n                   - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n                description: zero if vote is nil.\n              timestamp:\n                type: string\n                format: date-time\n              validator_address:\n                type: string\n                format: byte\n              validator_index:\n                type: integer\n                format: int32\n              signature:\n                type: string\n                format: byte\n                description: >-\n                  Vote signature by the validator if they participated in\n                  consensus for the\n\n                  associated block.\n              extension:\n                type: string\n                format: byte\n                description: >-\n                  Vote extension provided by the application. Only valid for\n                  precommit\n\n                  messages.\n              extension_signature:\n                type: string\n                format: byte\n                description: >-\n                  Vote extension signature by the validator if they participated\n                  in\n\n                  consensus for the associated block.\n\n                  Only valid for precommit messages.\n            description: |-\n              Vote represents a prevote or precommit vote from validators for\n              consensus.\n          vote_b:\n            type: object\n            properties:\n              type:\n                type: string\n                enum:\n                  - SIGNED_MSG_TYPE_UNKNOWN\n                  - SIGNED_MSG_TYPE_PREVOTE\n                  - SIGNED_MSG_TYPE_PRECOMMIT\n                  - SIGNED_MSG_TYPE_PROPOSAL\n                default: SIGNED_MSG_TYPE_UNKNOWN\n                description: |-\n                  SignedMsgType is a type of signed message in the consensus.\n\n                   - SIGNED_MSG_TYPE_PREVOTE: Votes\n                   - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n                description: zero if vote is nil.\n              timestamp:\n                type: string\n                format: date-time\n              validator_address:\n                type: string\n                format: byte\n              validator_index:\n                type: integer\n                format: int32\n              signature:\n                type: string\n                format: byte\n                description: >-\n                  Vote signature by the validator if they participated in\n                  consensus for the\n\n                  associated block.\n              extension:\n                type: string\n                format: byte\n                description: >-\n                  Vote extension provided by the application. Only valid for\n                  precommit\n\n                  messages.\n              extension_signature:\n                type: string\n                format: byte\n                description: >-\n                  Vote extension signature by the validator if they participated\n                  in\n\n                  consensus for the associated block.\n\n                  Only valid for precommit messages.\n            description: |-\n              Vote represents a prevote or precommit vote from validators for\n              consensus.\n          total_voting_power:\n            type: string\n            format: int64\n          validator_power:\n            type: string\n            format: int64\n          timestamp:\n            type: string\n            format: date-time\n        description: >-\n          DuplicateVoteEvidence contains evidence of a validator signed two\n          conflicting votes.\n      light_client_attack_evidence:\n        type: object\n        properties:\n          conflicting_block:\n            type: object\n            properties:\n              signed_header:\n                type: object\n                properties:\n                  header:\n                    type: object\n                    properties:\n                      version:\n                        title: basic block info\n                        type: object\n                        properties:\n                          block:\n                            type: string\n                            format: uint64\n                          app:\n                            type: string\n                            format: uint64\n                        description: >-\n                          Consensus captures the consensus rules for processing\n                          a block in the blockchain,\n\n                          including all blockchain data structures and the rules\n                          of the application's\n\n                          state transition machine.\n                      chain_id:\n                        type: string\n                      height:\n                        type: string\n                        format: int64\n                      time:\n                        type: string\n                        format: date-time\n                      last_block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      last_commit_hash:\n                        type: string\n                        format: byte\n                        description: commit from validators from the last block\n                        title: hashes of block data\n                      data_hash:\n                        type: string\n                        format: byte\n                        title: transactions\n                      validators_hash:\n                        type: string\n                        format: byte\n                        description: validators for the current block\n                        title: hashes from the app output from the prev block\n                      next_validators_hash:\n                        type: string\n                        format: byte\n                        title: validators for the next block\n                      consensus_hash:\n                        type: string\n                        format: byte\n                        title: consensus params for current block\n                      app_hash:\n                        type: string\n                        format: byte\n                        title: state after txs from the previous block\n                      last_results_hash:\n                        type: string\n                        format: byte\n                        title: >-\n                          root hash of all results from the txs from the\n                          previous block\n                      evidence_hash:\n                        type: string\n                        format: byte\n                        description: evidence included in the block\n                        title: consensus info\n                      proposer_address:\n                        type: string\n                        format: byte\n                        title: original proposer of the block\n                    description: Header defines the structure of a block header.\n                  commit:\n                    type: object\n                    properties:\n                      height:\n                        type: string\n                        format: int64\n                      round:\n                        type: integer\n                        format: int32\n                      block_id:\n                        type: object\n                        properties:\n                          hash:\n                            type: string\n                            format: byte\n                          part_set_header:\n                            type: object\n                            properties:\n                              total:\n                                type: integer\n                                format: int64\n                              hash:\n                                type: string\n                                format: byte\n                            title: PartsetHeader\n                        title: BlockID\n                      signatures:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            block_id_flag:\n                              type: string\n                              enum:\n                                - BLOCK_ID_FLAG_UNKNOWN\n                                - BLOCK_ID_FLAG_ABSENT\n                                - BLOCK_ID_FLAG_COMMIT\n                                - BLOCK_ID_FLAG_NIL\n                              default: BLOCK_ID_FLAG_UNKNOWN\n                              description: >-\n                                - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                                condition\n                                 - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                 - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                 - BLOCK_ID_FLAG_NIL: voted for nil\n                              title: >-\n                                BlockIdFlag indicates which BlockID the\n                                signature is for\n                            validator_address:\n                              type: string\n                              format: byte\n                            timestamp:\n                              type: string\n                              format: date-time\n                            signature:\n                              type: string\n                              format: byte\n                          description: >-\n                            CommitSig is a part of the Vote included in a\n                            Commit.\n                    description: >-\n                      Commit contains the evidence that a block was committed by\n                      a set of validators.\n              validator_set:\n                type: object\n                properties:\n                  validators:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        address:\n                          type: string\n                          format: byte\n                        pub_key:\n                          type: object\n                          properties:\n                            ed25519:\n                              type: string\n                              format: byte\n                            secp256k1:\n                              type: string\n                              format: byte\n                          title: >-\n                            PublicKey defines the keys available for use with\n                            Validators\n                        voting_power:\n                          type: string\n                          format: int64\n                        proposer_priority:\n                          type: string\n                          format: int64\n                  proposer:\n                    type: object\n                    properties:\n                      address:\n                        type: string\n                        format: byte\n                      pub_key:\n                        type: object\n                        properties:\n                          ed25519:\n                            type: string\n                            format: byte\n                          secp256k1:\n                            type: string\n                            format: byte\n                        title: >-\n                          PublicKey defines the keys available for use with\n                          Validators\n                      voting_power:\n                        type: string\n                        format: int64\n                      proposer_priority:\n                        type: string\n                        format: int64\n                  total_voting_power:\n                    type: string\n                    format: int64\n          common_height:\n            type: string\n            format: int64\n          byzantine_validators:\n            type: array\n            items:\n              type: object\n              properties:\n                address:\n                  type: string\n                  format: byte\n                pub_key:\n                  type: object\n                  properties:\n                    ed25519:\n                      type: string\n                      format: byte\n                    secp256k1:\n                      type: string\n                      format: byte\n                  title: PublicKey defines the keys available for use with Validators\n                voting_power:\n                  type: string\n                  format: int64\n                proposer_priority:\n                  type: string\n                  format: int64\n          total_voting_power:\n            type: string\n            format: int64\n          timestamp:\n            type: string\n            format: date-time\n        description: >-\n          LightClientAttackEvidence contains evidence of a set of validators\n          attempting to mislead a light client.\n  tendermint.types.EvidenceList:\n    type: object\n    properties:\n      evidence:\n        type: array\n        items:\n          type: object\n          properties:\n            duplicate_vote_evidence:\n              type: object\n              properties:\n                vote_a:\n                  type: object\n                  properties:\n                    type:\n                      type: string\n                      enum:\n                        - SIGNED_MSG_TYPE_UNKNOWN\n                        - SIGNED_MSG_TYPE_PREVOTE\n                        - SIGNED_MSG_TYPE_PRECOMMIT\n                        - SIGNED_MSG_TYPE_PROPOSAL\n                      default: SIGNED_MSG_TYPE_UNKNOWN\n                      description: >-\n                        SignedMsgType is a type of signed message in the\n                        consensus.\n\n                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                    height:\n                      type: string\n                      format: int64\n                    round:\n                      type: integer\n                      format: int32\n                    block_id:\n                      type: object\n                      properties:\n                        hash:\n                          type: string\n                          format: byte\n                        part_set_header:\n                          type: object\n                          properties:\n                            total:\n                              type: integer\n                              format: int64\n                            hash:\n                              type: string\n                              format: byte\n                          title: PartsetHeader\n                      title: BlockID\n                      description: zero if vote is nil.\n                    timestamp:\n                      type: string\n                      format: date-time\n                    validator_address:\n                      type: string\n                      format: byte\n                    validator_index:\n                      type: integer\n                      format: int32\n                    signature:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote signature by the validator if they participated in\n                        consensus for the\n\n                        associated block.\n                    extension:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote extension provided by the application. Only valid\n                        for precommit\n\n                        messages.\n                    extension_signature:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote extension signature by the validator if they\n                        participated in\n\n                        consensus for the associated block.\n\n                        Only valid for precommit messages.\n                  description: >-\n                    Vote represents a prevote or precommit vote from validators\n                    for\n\n                    consensus.\n                vote_b:\n                  type: object\n                  properties:\n                    type:\n                      type: string\n                      enum:\n                        - SIGNED_MSG_TYPE_UNKNOWN\n                        - SIGNED_MSG_TYPE_PREVOTE\n                        - SIGNED_MSG_TYPE_PRECOMMIT\n                        - SIGNED_MSG_TYPE_PROPOSAL\n                      default: SIGNED_MSG_TYPE_UNKNOWN\n                      description: >-\n                        SignedMsgType is a type of signed message in the\n                        consensus.\n\n                         - SIGNED_MSG_TYPE_PREVOTE: Votes\n                         - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                    height:\n                      type: string\n                      format: int64\n                    round:\n                      type: integer\n                      format: int32\n                    block_id:\n                      type: object\n                      properties:\n                        hash:\n                          type: string\n                          format: byte\n                        part_set_header:\n                          type: object\n                          properties:\n                            total:\n                              type: integer\n                              format: int64\n                            hash:\n                              type: string\n                              format: byte\n                          title: PartsetHeader\n                      title: BlockID\n                      description: zero if vote is nil.\n                    timestamp:\n                      type: string\n                      format: date-time\n                    validator_address:\n                      type: string\n                      format: byte\n                    validator_index:\n                      type: integer\n                      format: int32\n                    signature:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote signature by the validator if they participated in\n                        consensus for the\n\n                        associated block.\n                    extension:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote extension provided by the application. Only valid\n                        for precommit\n\n                        messages.\n                    extension_signature:\n                      type: string\n                      format: byte\n                      description: >-\n                        Vote extension signature by the validator if they\n                        participated in\n\n                        consensus for the associated block.\n\n                        Only valid for precommit messages.\n                  description: >-\n                    Vote represents a prevote or precommit vote from validators\n                    for\n\n                    consensus.\n                total_voting_power:\n                  type: string\n                  format: int64\n                validator_power:\n                  type: string\n                  format: int64\n                timestamp:\n                  type: string\n                  format: date-time\n              description: >-\n                DuplicateVoteEvidence contains evidence of a validator signed\n                two conflicting votes.\n            light_client_attack_evidence:\n              type: object\n              properties:\n                conflicting_block:\n                  type: object\n                  properties:\n                    signed_header:\n                      type: object\n                      properties:\n                        header:\n                          type: object\n                          properties:\n                            version:\n                              title: basic block info\n                              type: object\n                              properties:\n                                block:\n                                  type: string\n                                  format: uint64\n                                app:\n                                  type: string\n                                  format: uint64\n                              description: >-\n                                Consensus captures the consensus rules for\n                                processing a block in the blockchain,\n\n                                including all blockchain data structures and the\n                                rules of the application's\n\n                                state transition machine.\n                            chain_id:\n                              type: string\n                            height:\n                              type: string\n                              format: int64\n                            time:\n                              type: string\n                              format: date-time\n                            last_block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                            last_commit_hash:\n                              type: string\n                              format: byte\n                              description: commit from validators from the last block\n                              title: hashes of block data\n                            data_hash:\n                              type: string\n                              format: byte\n                              title: transactions\n                            validators_hash:\n                              type: string\n                              format: byte\n                              description: validators for the current block\n                              title: hashes from the app output from the prev block\n                            next_validators_hash:\n                              type: string\n                              format: byte\n                              title: validators for the next block\n                            consensus_hash:\n                              type: string\n                              format: byte\n                              title: consensus params for current block\n                            app_hash:\n                              type: string\n                              format: byte\n                              title: state after txs from the previous block\n                            last_results_hash:\n                              type: string\n                              format: byte\n                              title: >-\n                                root hash of all results from the txs from the\n                                previous block\n                            evidence_hash:\n                              type: string\n                              format: byte\n                              description: evidence included in the block\n                              title: consensus info\n                            proposer_address:\n                              type: string\n                              format: byte\n                              title: original proposer of the block\n                          description: Header defines the structure of a block header.\n                        commit:\n                          type: object\n                          properties:\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                            signatures:\n                              type: array\n                              items:\n                                type: object\n                                properties:\n                                  block_id_flag:\n                                    type: string\n                                    enum:\n                                      - BLOCK_ID_FLAG_UNKNOWN\n                                      - BLOCK_ID_FLAG_ABSENT\n                                      - BLOCK_ID_FLAG_COMMIT\n                                      - BLOCK_ID_FLAG_NIL\n                                    default: BLOCK_ID_FLAG_UNKNOWN\n                                    description: >-\n                                      - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                      error condition\n                                       - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                       - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                       - BLOCK_ID_FLAG_NIL: voted for nil\n                                    title: >-\n                                      BlockIdFlag indicates which BlockID the\n                                      signature is for\n                                  validator_address:\n                                    type: string\n                                    format: byte\n                                  timestamp:\n                                    type: string\n                                    format: date-time\n                                  signature:\n                                    type: string\n                                    format: byte\n                                description: >-\n                                  CommitSig is a part of the Vote included in a\n                                  Commit.\n                          description: >-\n                            Commit contains the evidence that a block was\n                            committed by a set of validators.\n                    validator_set:\n                      type: object\n                      properties:\n                        validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        proposer:\n                          type: object\n                          properties:\n                            address:\n                              type: string\n                              format: byte\n                            pub_key:\n                              type: object\n                              properties:\n                                ed25519:\n                                  type: string\n                                  format: byte\n                                secp256k1:\n                                  type: string\n                                  format: byte\n                              title: >-\n                                PublicKey defines the keys available for use\n                                with Validators\n                            voting_power:\n                              type: string\n                              format: int64\n                            proposer_priority:\n                              type: string\n                              format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                common_height:\n                  type: string\n                  format: int64\n                byzantine_validators:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      address:\n                        type: string\n                        format: byte\n                      pub_key:\n                        type: object\n                        properties:\n                          ed25519:\n                            type: string\n                            format: byte\n                          secp256k1:\n                            type: string\n                            format: byte\n                        title: >-\n                          PublicKey defines the keys available for use with\n                          Validators\n                      voting_power:\n                        type: string\n                        format: int64\n                      proposer_priority:\n                        type: string\n                        format: int64\n                total_voting_power:\n                  type: string\n                  format: int64\n                timestamp:\n                  type: string\n                  format: date-time\n              description: >-\n                LightClientAttackEvidence contains evidence of a set of\n                validators attempting to mislead a light client.\n  tendermint.types.Header:\n    type: object\n    properties:\n      version:\n        title: basic block info\n        type: object\n        properties:\n          block:\n            type: string\n            format: uint64\n          app:\n            type: string\n            format: uint64\n        description: >-\n          Consensus captures the consensus rules for processing a block in the\n          blockchain,\n\n          including all blockchain data structures and the rules of the\n          application's\n\n          state transition machine.\n      chain_id:\n        type: string\n      height:\n        type: string\n        format: int64\n      time:\n        type: string\n        format: date-time\n      last_block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      last_commit_hash:\n        type: string\n        format: byte\n        description: commit from validators from the last block\n        title: hashes of block data\n      data_hash:\n        type: string\n        format: byte\n        title: transactions\n      validators_hash:\n        type: string\n        format: byte\n        description: validators for the current block\n        title: hashes from the app output from the prev block\n      next_validators_hash:\n        type: string\n        format: byte\n        title: validators for the next block\n      consensus_hash:\n        type: string\n        format: byte\n        title: consensus params for current block\n      app_hash:\n        type: string\n        format: byte\n        title: state after txs from the previous block\n      last_results_hash:\n        type: string\n        format: byte\n        title: root hash of all results from the txs from the previous block\n      evidence_hash:\n        type: string\n        format: byte\n        description: evidence included in the block\n        title: consensus info\n      proposer_address:\n        type: string\n        format: byte\n        title: original proposer of the block\n    description: Header defines the structure of a block header.\n  tendermint.types.LightBlock:\n    type: object\n    properties:\n      signed_header:\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                format: byte\n                title: original proposer of the block\n            description: Header defines the structure of a block header.\n          commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n      validator_set:\n        type: object\n        properties:\n          validators:\n            type: array\n            items:\n              type: object\n              properties:\n                address:\n                  type: string\n                  format: byte\n                pub_key:\n                  type: object\n                  properties:\n                    ed25519:\n                      type: string\n                      format: byte\n                    secp256k1:\n                      type: string\n                      format: byte\n                  title: PublicKey defines the keys available for use with Validators\n                voting_power:\n                  type: string\n                  format: int64\n                proposer_priority:\n                  type: string\n                  format: int64\n          proposer:\n            type: object\n            properties:\n              address:\n                type: string\n                format: byte\n              pub_key:\n                type: object\n                properties:\n                  ed25519:\n                    type: string\n                    format: byte\n                  secp256k1:\n                    type: string\n                    format: byte\n                title: PublicKey defines the keys available for use with Validators\n              voting_power:\n                type: string\n                format: int64\n              proposer_priority:\n                type: string\n                format: int64\n          total_voting_power:\n            type: string\n            format: int64\n  tendermint.types.LightClientAttackEvidence:\n    type: object\n    properties:\n      conflicting_block:\n        type: object\n        properties:\n          signed_header:\n            type: object\n            properties:\n              header:\n                type: object\n                properties:\n                  version:\n                    title: basic block info\n                    type: object\n                    properties:\n                      block:\n                        type: string\n                        format: uint64\n                      app:\n                        type: string\n                        format: uint64\n                    description: >-\n                      Consensus captures the consensus rules for processing a\n                      block in the blockchain,\n\n                      including all blockchain data structures and the rules of\n                      the application's\n\n                      state transition machine.\n                  chain_id:\n                    type: string\n                  height:\n                    type: string\n                    format: int64\n                  time:\n                    type: string\n                    format: date-time\n                  last_block_id:\n                    type: object\n                    properties:\n                      hash:\n                        type: string\n                        format: byte\n                      part_set_header:\n                        type: object\n                        properties:\n                          total:\n                            type: integer\n                            format: int64\n                          hash:\n                            type: string\n                            format: byte\n                        title: PartsetHeader\n                    title: BlockID\n                  last_commit_hash:\n                    type: string\n                    format: byte\n                    description: commit from validators from the last block\n                    title: hashes of block data\n                  data_hash:\n                    type: string\n                    format: byte\n                    title: transactions\n                  validators_hash:\n                    type: string\n                    format: byte\n                    description: validators for the current block\n                    title: hashes from the app output from the prev block\n                  next_validators_hash:\n                    type: string\n                    format: byte\n                    title: validators for the next block\n                  consensus_hash:\n                    type: string\n                    format: byte\n                    title: consensus params for current block\n                  app_hash:\n                    type: string\n                    format: byte\n                    title: state after txs from the previous block\n                  last_results_hash:\n                    type: string\n                    format: byte\n                    title: >-\n                      root hash of all results from the txs from the previous\n                      block\n                  evidence_hash:\n                    type: string\n                    format: byte\n                    description: evidence included in the block\n                    title: consensus info\n                  proposer_address:\n                    type: string\n                    format: byte\n                    title: original proposer of the block\n                description: Header defines the structure of a block header.\n              commit:\n                type: object\n                properties:\n                  height:\n                    type: string\n                    format: int64\n                  round:\n                    type: integer\n                    format: int32\n                  block_id:\n                    type: object\n                    properties:\n                      hash:\n                        type: string\n                        format: byte\n                      part_set_header:\n                        type: object\n                        properties:\n                          total:\n                            type: integer\n                            format: int64\n                          hash:\n                            type: string\n                            format: byte\n                        title: PartsetHeader\n                    title: BlockID\n                  signatures:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        block_id_flag:\n                          type: string\n                          enum:\n                            - BLOCK_ID_FLAG_UNKNOWN\n                            - BLOCK_ID_FLAG_ABSENT\n                            - BLOCK_ID_FLAG_COMMIT\n                            - BLOCK_ID_FLAG_NIL\n                          default: BLOCK_ID_FLAG_UNKNOWN\n                          description: >-\n                            - BLOCK_ID_FLAG_UNKNOWN: indicates an error\n                            condition\n                             - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                             - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                             - BLOCK_ID_FLAG_NIL: voted for nil\n                          title: >-\n                            BlockIdFlag indicates which BlockID the signature is\n                            for\n                        validator_address:\n                          type: string\n                          format: byte\n                        timestamp:\n                          type: string\n                          format: date-time\n                        signature:\n                          type: string\n                          format: byte\n                      description: CommitSig is a part of the Vote included in a Commit.\n                description: >-\n                  Commit contains the evidence that a block was committed by a\n                  set of validators.\n          validator_set:\n            type: object\n            properties:\n              validators:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    address:\n                      type: string\n                      format: byte\n                    pub_key:\n                      type: object\n                      properties:\n                        ed25519:\n                          type: string\n                          format: byte\n                        secp256k1:\n                          type: string\n                          format: byte\n                      title: >-\n                        PublicKey defines the keys available for use with\n                        Validators\n                    voting_power:\n                      type: string\n                      format: int64\n                    proposer_priority:\n                      type: string\n                      format: int64\n              proposer:\n                type: object\n                properties:\n                  address:\n                    type: string\n                    format: byte\n                  pub_key:\n                    type: object\n                    properties:\n                      ed25519:\n                        type: string\n                        format: byte\n                      secp256k1:\n                        type: string\n                        format: byte\n                    title: >-\n                      PublicKey defines the keys available for use with\n                      Validators\n                  voting_power:\n                    type: string\n                    format: int64\n                  proposer_priority:\n                    type: string\n                    format: int64\n              total_voting_power:\n                type: string\n                format: int64\n      common_height:\n        type: string\n        format: int64\n      byzantine_validators:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              format: byte\n            pub_key:\n              type: object\n              properties:\n                ed25519:\n                  type: string\n                  format: byte\n                secp256k1:\n                  type: string\n                  format: byte\n              title: PublicKey defines the keys available for use with Validators\n            voting_power:\n              type: string\n              format: int64\n            proposer_priority:\n              type: string\n              format: int64\n      total_voting_power:\n        type: string\n        format: int64\n      timestamp:\n        type: string\n        format: date-time\n    description: >-\n      LightClientAttackEvidence contains evidence of a set of validators\n      attempting to mislead a light client.\n  tendermint.types.PartSetHeader:\n    type: object\n    properties:\n      total:\n        type: integer\n        format: int64\n      hash:\n        type: string\n        format: byte\n    title: PartsetHeader\n  tendermint.types.SignedHeader:\n    type: object\n    properties:\n      header:\n        type: object\n        properties:\n          version:\n            title: basic block info\n            type: object\n            properties:\n              block:\n                type: string\n                format: uint64\n              app:\n                type: string\n                format: uint64\n            description: >-\n              Consensus captures the consensus rules for processing a block in\n              the blockchain,\n\n              including all blockchain data structures and the rules of the\n              application's\n\n              state transition machine.\n          chain_id:\n            type: string\n          height:\n            type: string\n            format: int64\n          time:\n            type: string\n            format: date-time\n          last_block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          last_commit_hash:\n            type: string\n            format: byte\n            description: commit from validators from the last block\n            title: hashes of block data\n          data_hash:\n            type: string\n            format: byte\n            title: transactions\n          validators_hash:\n            type: string\n            format: byte\n            description: validators for the current block\n            title: hashes from the app output from the prev block\n          next_validators_hash:\n            type: string\n            format: byte\n            title: validators for the next block\n          consensus_hash:\n            type: string\n            format: byte\n            title: consensus params for current block\n          app_hash:\n            type: string\n            format: byte\n            title: state after txs from the previous block\n          last_results_hash:\n            type: string\n            format: byte\n            title: root hash of all results from the txs from the previous block\n          evidence_hash:\n            type: string\n            format: byte\n            description: evidence included in the block\n            title: consensus info\n          proposer_address:\n            type: string\n            format: byte\n            title: original proposer of the block\n        description: Header defines the structure of a block header.\n      commit:\n        type: object\n        properties:\n          height:\n            type: string\n            format: int64\n          round:\n            type: integer\n            format: int32\n          block_id:\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n            title: BlockID\n          signatures:\n            type: array\n            items:\n              type: object\n              properties:\n                block_id_flag:\n                  type: string\n                  enum:\n                    - BLOCK_ID_FLAG_UNKNOWN\n                    - BLOCK_ID_FLAG_ABSENT\n                    - BLOCK_ID_FLAG_COMMIT\n                    - BLOCK_ID_FLAG_NIL\n                  default: BLOCK_ID_FLAG_UNKNOWN\n                  description: |-\n                    - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                     - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                     - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                     - BLOCK_ID_FLAG_NIL: voted for nil\n                  title: BlockIdFlag indicates which BlockID the signature is for\n                validator_address:\n                  type: string\n                  format: byte\n                timestamp:\n                  type: string\n                  format: date-time\n                signature:\n                  type: string\n                  format: byte\n              description: CommitSig is a part of the Vote included in a Commit.\n        description: >-\n          Commit contains the evidence that a block was committed by a set of\n          validators.\n  tendermint.types.SignedMsgType:\n    type: string\n    enum:\n      - SIGNED_MSG_TYPE_UNKNOWN\n      - SIGNED_MSG_TYPE_PREVOTE\n      - SIGNED_MSG_TYPE_PRECOMMIT\n      - SIGNED_MSG_TYPE_PROPOSAL\n    default: SIGNED_MSG_TYPE_UNKNOWN\n    description: |-\n      SignedMsgType is a type of signed message in the consensus.\n\n       - SIGNED_MSG_TYPE_PREVOTE: Votes\n       - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n  tendermint.types.Validator:\n    type: object\n    properties:\n      address:\n        type: string\n        format: byte\n      pub_key:\n        type: object\n        properties:\n          ed25519:\n            type: string\n            format: byte\n          secp256k1:\n            type: string\n            format: byte\n        title: PublicKey defines the keys available for use with Validators\n      voting_power:\n        type: string\n        format: int64\n      proposer_priority:\n        type: string\n        format: int64\n  tendermint.types.ValidatorSet:\n    type: object\n    properties:\n      validators:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              format: byte\n            pub_key:\n              type: object\n              properties:\n                ed25519:\n                  type: string\n                  format: byte\n                secp256k1:\n                  type: string\n                  format: byte\n              title: PublicKey defines the keys available for use with Validators\n            voting_power:\n              type: string\n              format: int64\n            proposer_priority:\n              type: string\n              format: int64\n      proposer:\n        type: object\n        properties:\n          address:\n            type: string\n            format: byte\n          pub_key:\n            type: object\n            properties:\n              ed25519:\n                type: string\n                format: byte\n              secp256k1:\n                type: string\n                format: byte\n            title: PublicKey defines the keys available for use with Validators\n          voting_power:\n            type: string\n            format: int64\n          proposer_priority:\n            type: string\n            format: int64\n      total_voting_power:\n        type: string\n        format: int64\n  tendermint.types.Vote:\n    type: object\n    properties:\n      type:\n        type: string\n        enum:\n          - SIGNED_MSG_TYPE_UNKNOWN\n          - SIGNED_MSG_TYPE_PREVOTE\n          - SIGNED_MSG_TYPE_PRECOMMIT\n          - SIGNED_MSG_TYPE_PROPOSAL\n        default: SIGNED_MSG_TYPE_UNKNOWN\n        description: |-\n          SignedMsgType is a type of signed message in the consensus.\n\n           - SIGNED_MSG_TYPE_PREVOTE: Votes\n           - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n      height:\n        type: string\n        format: int64\n      round:\n        type: integer\n        format: int32\n      block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n        description: zero if vote is nil.\n      timestamp:\n        type: string\n        format: date-time\n      validator_address:\n        type: string\n        format: byte\n      validator_index:\n        type: integer\n        format: int32\n      signature:\n        type: string\n        format: byte\n        description: >-\n          Vote signature by the validator if they participated in consensus for\n          the\n\n          associated block.\n      extension:\n        type: string\n        format: byte\n        description: |-\n          Vote extension provided by the application. Only valid for precommit\n          messages.\n      extension_signature:\n        type: string\n        format: byte\n        description: |-\n          Vote extension signature by the validator if they participated in\n          consensus for the associated block.\n          Only valid for precommit messages.\n    description: |-\n      Vote represents a prevote or precommit vote from validators for\n      consensus.\n  tendermint.version.Consensus:\n    type: object\n    properties:\n      block:\n        type: string\n        format: uint64\n      app:\n        type: string\n        format: uint64\n    description: >-\n      Consensus captures the consensus rules for processing a block in the\n      blockchain,\n\n      including all blockchain data structures and the rules of the\n      application's\n\n      state transition machine.\n  cosmos.circuit.v1.MsgAuthorizeCircuitBreaker:\n    type: object\n    properties:\n      granter:\n        type: string\n        description: >-\n          granter is the granter of the circuit breaker permissions and must\n          have\n\n          LEVEL_SUPER_ADMIN.\n      grantee:\n        type: string\n        description: grantee is the account authorized with the provided permissions.\n      permissions:\n        description: >-\n          permissions are the circuit breaker permissions that the grantee\n          receives.\n\n          These will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED\n          can\n\n          be specified to revoke all permissions.\n        type: object\n        properties:\n          level:\n            description: level is the level of permissions granted to this account.\n            type: string\n            enum:\n              - LEVEL_NONE_UNSPECIFIED\n              - LEVEL_SOME_MSGS\n              - LEVEL_ALL_MSGS\n              - LEVEL_SUPER_ADMIN\n            default: LEVEL_NONE_UNSPECIFIED\n          limit_type_urls:\n            type: array\n            items:\n              type: string\n            description: >-\n              limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of\n              Msg type\n\n              URLs that the account can trip. It is an error to use\n              limit_type_urls with\n\n              a level other than LEVEL_SOME_MSGS.\n    description: >-\n      MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request\n      type.\n  cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse:\n    type: object\n    properties:\n      success:\n        type: boolean\n    description: >-\n      MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker\n      response type.\n  cosmos.circuit.v1.MsgResetCircuitBreaker:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the account authorized to trip or reset the circuit\n          breaker.\n      msg_type_urls:\n        type: array\n        items:\n          type: string\n        description: >-\n          msg_type_urls specifies a list of Msg type URLs to resume processing.\n          If\n\n          it is left empty all Msg processing for type URLs that the account is\n\n          authorized to trip will resume.\n    description: MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.\n  cosmos.circuit.v1.MsgResetCircuitBreakerResponse:\n    type: object\n    properties:\n      success:\n        type: boolean\n    description: >-\n      MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker\n      response type.\n  cosmos.circuit.v1.MsgTripCircuitBreaker:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: authority is the account authorized to trip the circuit breaker.\n      msg_type_urls:\n        type: array\n        items:\n          type: string\n        description: >-\n          msg_type_urls specifies a list of type URLs to immediately stop\n          processing.\n\n          IF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\n\n          This value is validated against the authority's permissions and if the\n\n          authority does not have permissions to trip the specified msg type\n          URLs\n\n          (or all URLs), the operation will fail.\n    description: MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.\n  cosmos.circuit.v1.MsgTripCircuitBreakerResponse:\n    type: object\n    properties:\n      success:\n        type: boolean\n    description: >-\n      MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response\n      type.\n  cosmos.circuit.v1.Permissions:\n    type: object\n    properties:\n      level:\n        description: level is the level of permissions granted to this account.\n        type: string\n        enum:\n          - LEVEL_NONE_UNSPECIFIED\n          - LEVEL_SOME_MSGS\n          - LEVEL_ALL_MSGS\n          - LEVEL_SUPER_ADMIN\n        default: LEVEL_NONE_UNSPECIFIED\n      limit_type_urls:\n        type: array\n        items:\n          type: string\n        description: >-\n          limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg\n          type\n\n          URLs that the account can trip. It is an error to use limit_type_urls\n          with\n\n          a level other than LEVEL_SOME_MSGS.\n    description: |-\n      Permissions are the permissions that an account has to trip\n      or reset the circuit breaker.\n  cosmos.circuit.v1.Permissions.Level:\n    type: string\n    enum:\n      - LEVEL_NONE_UNSPECIFIED\n      - LEVEL_SOME_MSGS\n      - LEVEL_ALL_MSGS\n      - LEVEL_SUPER_ADMIN\n    default: LEVEL_NONE_UNSPECIFIED\n    description: |-\n      Level is the permission level.\n\n       - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\n      breaker permissions.\n       - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\n      trip or reset the circuit breaker for some Msg type URLs. If this level\n      is chosen, a non-empty list of Msg type URLs must be provided in\n      limit_type_urls.\n       - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\n      breaker for Msg's of all type URLs.\n       - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\n      actions and can grant permissions to other accounts.\n  cosmos.circuit.v1.AccountResponse:\n    type: object\n    properties:\n      permission:\n        type: object\n        properties:\n          level:\n            description: level is the level of permissions granted to this account.\n            type: string\n            enum:\n              - LEVEL_NONE_UNSPECIFIED\n              - LEVEL_SOME_MSGS\n              - LEVEL_ALL_MSGS\n              - LEVEL_SUPER_ADMIN\n            default: LEVEL_NONE_UNSPECIFIED\n          limit_type_urls:\n            type: array\n            items:\n              type: string\n            description: >-\n              limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of\n              Msg type\n\n              URLs that the account can trip. It is an error to use\n              limit_type_urls with\n\n              a level other than LEVEL_SOME_MSGS.\n        description: |-\n          Permissions are the permissions that an account has to trip\n          or reset the circuit breaker.\n    description: AccountResponse is the response type for the Query/Account RPC method.\n  cosmos.circuit.v1.AccountsResponse:\n    type: object\n    properties:\n      accounts:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            permissions:\n              type: object\n              properties:\n                level:\n                  description: level is the level of permissions granted to this account.\n                  type: string\n                  enum:\n                    - LEVEL_NONE_UNSPECIFIED\n                    - LEVEL_SOME_MSGS\n                    - LEVEL_ALL_MSGS\n                    - LEVEL_SUPER_ADMIN\n                  default: LEVEL_NONE_UNSPECIFIED\n                limit_type_urls:\n                  type: array\n                  items:\n                    type: string\n                  description: >-\n                    limit_type_urls is used with LEVEL_SOME_MSGS to limit the\n                    lists of Msg type\n\n                    URLs that the account can trip. It is an error to use\n                    limit_type_urls with\n\n                    a level other than LEVEL_SOME_MSGS.\n              description: |-\n                Permissions are the permissions that an account has to trip\n                or reset the circuit breaker.\n          title: >-\n            GenesisAccountPermissions is the account permissions for the circuit\n            breaker in genesis\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: AccountsResponse is the response type for the Query/Accounts RPC method.\n  cosmos.circuit.v1.DisabledListResponse:\n    type: object\n    properties:\n      disabled_list:\n        type: array\n        items:\n          type: string\n    description: >-\n      DisabledListResponse is the response type for the Query/DisabledList RPC\n      method.\n  cosmos.circuit.v1.GenesisAccountPermissions:\n    type: object\n    properties:\n      address:\n        type: string\n      permissions:\n        type: object\n        properties:\n          level:\n            description: level is the level of permissions granted to this account.\n            type: string\n            enum:\n              - LEVEL_NONE_UNSPECIFIED\n              - LEVEL_SOME_MSGS\n              - LEVEL_ALL_MSGS\n              - LEVEL_SUPER_ADMIN\n            default: LEVEL_NONE_UNSPECIFIED\n          limit_type_urls:\n            type: array\n            items:\n              type: string\n            description: >-\n              limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of\n              Msg type\n\n              URLs that the account can trip. It is an error to use\n              limit_type_urls with\n\n              a level other than LEVEL_SOME_MSGS.\n        description: |-\n          Permissions are the permissions that an account has to trip\n          or reset the circuit breaker.\n    title: >-\n      GenesisAccountPermissions is the account permissions for the circuit\n      breaker in genesis\n  cosmos.consensus.v1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: >-\n          params are the tendermint consensus params stored in the consensus\n          module.\n\n          Please note that `params.version` is not populated in this response,\n          it is\n\n          tracked separately in the x/upgrade module.\n        type: object\n        properties:\n          block:\n            type: object\n            properties:\n              max_bytes:\n                type: string\n                format: int64\n                title: |-\n                  Max block size, in bytes.\n                  Note: must be greater than 0\n              max_gas:\n                type: string\n                format: int64\n                title: |-\n                  Max gas per block.\n                  Note: must be greater or equal to -1\n            description: BlockParams contains limits on the block size.\n          evidence:\n            type: object\n            properties:\n              max_age_num_blocks:\n                type: string\n                format: int64\n                description: >-\n                  Max age of evidence, in blocks.\n\n\n                  The basic formula for calculating this is: MaxAgeDuration /\n                  {average block\n\n                  time}.\n              max_age_duration:\n                type: string\n                description: >-\n                  Max age of evidence, in time.\n\n\n                  It should correspond with an app's \"unbonding period\" or other\n                  similar\n\n                  mechanism for handling [Nothing-At-Stake\n\n                  attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n              max_bytes:\n                type: string\n                format: int64\n                title: >-\n                  This sets the maximum size of total evidence in bytes that can\n                  be committed in a single block.\n\n                  and should fall comfortably under the max block bytes.\n\n                  Default is 1048576 or 1MB\n            description: EvidenceParams determine how we handle evidence of malfeasance.\n          validator:\n            type: object\n            properties:\n              pub_key_types:\n                type: array\n                items:\n                  type: string\n            description: |-\n              ValidatorParams restrict the public key types validators can use.\n              NOTE: uses ABCI pubkey naming, not Amino names.\n          version:\n            type: object\n            properties:\n              app:\n                type: string\n                format: uint64\n            description: VersionParams contains the ABCI application version.\n          abci:\n            type: object\n            properties:\n              vote_extensions_enable_height:\n                type: string\n                format: int64\n                description: >-\n                  vote_extensions_enable_height configures the first height\n                  during which\n\n                  vote extensions will be enabled. During this specified height,\n                  and for all\n\n                  subsequent heights, precommit messages that do not contain\n                  valid extension data\n\n                  will be considered invalid. Prior to this height, vote\n                  extensions will not\n\n                  be used or accepted by validators on the network.\n\n\n                  Once enabled, vote extensions will be created by the\n                  application in ExtendVote,\n\n                  passed to the application for validation in\n                  VerifyVoteExtension and given\n\n                  to the application to use when proposing a block during\n                  PrepareProposal.\n            description: >-\n              ABCIParams configure functionality specific to the Application\n              Blockchain Interface.\n    description: >-\n      QueryParamsResponse defines the response type for querying x/consensus\n      parameters.\n  tendermint.types.ABCIParams:\n    type: object\n    properties:\n      vote_extensions_enable_height:\n        type: string\n        format: int64\n        description: >-\n          vote_extensions_enable_height configures the first height during which\n\n          vote extensions will be enabled. During this specified height, and for\n          all\n\n          subsequent heights, precommit messages that do not contain valid\n          extension data\n\n          will be considered invalid. Prior to this height, vote extensions will\n          not\n\n          be used or accepted by validators on the network.\n\n\n          Once enabled, vote extensions will be created by the application in\n          ExtendVote,\n\n          passed to the application for validation in VerifyVoteExtension and\n          given\n\n          to the application to use when proposing a block during\n          PrepareProposal.\n    description: >-\n      ABCIParams configure functionality specific to the Application Blockchain\n      Interface.\n  tendermint.types.BlockParams:\n    type: object\n    properties:\n      max_bytes:\n        type: string\n        format: int64\n        title: |-\n          Max block size, in bytes.\n          Note: must be greater than 0\n      max_gas:\n        type: string\n        format: int64\n        title: |-\n          Max gas per block.\n          Note: must be greater or equal to -1\n    description: BlockParams contains limits on the block size.\n  tendermint.types.ConsensusParams:\n    type: object\n    properties:\n      block:\n        type: object\n        properties:\n          max_bytes:\n            type: string\n            format: int64\n            title: |-\n              Max block size, in bytes.\n              Note: must be greater than 0\n          max_gas:\n            type: string\n            format: int64\n            title: |-\n              Max gas per block.\n              Note: must be greater or equal to -1\n        description: BlockParams contains limits on the block size.\n      evidence:\n        type: object\n        properties:\n          max_age_num_blocks:\n            type: string\n            format: int64\n            description: >-\n              Max age of evidence, in blocks.\n\n\n              The basic formula for calculating this is: MaxAgeDuration /\n              {average block\n\n              time}.\n          max_age_duration:\n            type: string\n            description: >-\n              Max age of evidence, in time.\n\n\n              It should correspond with an app's \"unbonding period\" or other\n              similar\n\n              mechanism for handling [Nothing-At-Stake\n\n              attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n          max_bytes:\n            type: string\n            format: int64\n            title: >-\n              This sets the maximum size of total evidence in bytes that can be\n              committed in a single block.\n\n              and should fall comfortably under the max block bytes.\n\n              Default is 1048576 or 1MB\n        description: EvidenceParams determine how we handle evidence of malfeasance.\n      validator:\n        type: object\n        properties:\n          pub_key_types:\n            type: array\n            items:\n              type: string\n        description: |-\n          ValidatorParams restrict the public key types validators can use.\n          NOTE: uses ABCI pubkey naming, not Amino names.\n      version:\n        type: object\n        properties:\n          app:\n            type: string\n            format: uint64\n        description: VersionParams contains the ABCI application version.\n      abci:\n        type: object\n        properties:\n          vote_extensions_enable_height:\n            type: string\n            format: int64\n            description: >-\n              vote_extensions_enable_height configures the first height during\n              which\n\n              vote extensions will be enabled. During this specified height, and\n              for all\n\n              subsequent heights, precommit messages that do not contain valid\n              extension data\n\n              will be considered invalid. Prior to this height, vote extensions\n              will not\n\n              be used or accepted by validators on the network.\n\n\n              Once enabled, vote extensions will be created by the application\n              in ExtendVote,\n\n              passed to the application for validation in VerifyVoteExtension\n              and given\n\n              to the application to use when proposing a block during\n              PrepareProposal.\n        description: >-\n          ABCIParams configure functionality specific to the Application\n          Blockchain Interface.\n    description: |-\n      ConsensusParams contains consensus critical parameters that determine the\n      validity of blocks.\n  tendermint.types.EvidenceParams:\n    type: object\n    properties:\n      max_age_num_blocks:\n        type: string\n        format: int64\n        description: >-\n          Max age of evidence, in blocks.\n\n\n          The basic formula for calculating this is: MaxAgeDuration / {average\n          block\n\n          time}.\n      max_age_duration:\n        type: string\n        description: >-\n          Max age of evidence, in time.\n\n\n          It should correspond with an app's \"unbonding period\" or other similar\n\n          mechanism for handling [Nothing-At-Stake\n\n          attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n      max_bytes:\n        type: string\n        format: int64\n        title: >-\n          This sets the maximum size of total evidence in bytes that can be\n          committed in a single block.\n\n          and should fall comfortably under the max block bytes.\n\n          Default is 1048576 or 1MB\n    description: EvidenceParams determine how we handle evidence of malfeasance.\n  tendermint.types.ValidatorParams:\n    type: object\n    properties:\n      pub_key_types:\n        type: array\n        items:\n          type: string\n    description: |-\n      ValidatorParams restrict the public key types validators can use.\n      NOTE: uses ABCI pubkey naming, not Amino names.\n  tendermint.types.VersionParams:\n    type: object\n    properties:\n      app:\n        type: string\n        format: uint64\n    description: VersionParams contains the ABCI application version.\n  cosmos.consensus.v1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      block:\n        description: |-\n          params defines the x/consensus parameters to update.\n          VersionsParams is not included in this Msg because it is tracked\n          separarately in x/upgrade.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          max_bytes:\n            type: string\n            format: int64\n            title: |-\n              Max block size, in bytes.\n              Note: must be greater than 0\n          max_gas:\n            type: string\n            format: int64\n            title: |-\n              Max gas per block.\n              Note: must be greater or equal to -1\n      evidence:\n        type: object\n        properties:\n          max_age_num_blocks:\n            type: string\n            format: int64\n            description: >-\n              Max age of evidence, in blocks.\n\n\n              The basic formula for calculating this is: MaxAgeDuration /\n              {average block\n\n              time}.\n          max_age_duration:\n            type: string\n            description: >-\n              Max age of evidence, in time.\n\n\n              It should correspond with an app's \"unbonding period\" or other\n              similar\n\n              mechanism for handling [Nothing-At-Stake\n\n              attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).\n          max_bytes:\n            type: string\n            format: int64\n            title: >-\n              This sets the maximum size of total evidence in bytes that can be\n              committed in a single block.\n\n              and should fall comfortably under the max block bytes.\n\n              Default is 1048576 or 1MB\n        description: EvidenceParams determine how we handle evidence of malfeasance.\n      validator:\n        type: object\n        properties:\n          pub_key_types:\n            type: array\n            items:\n              type: string\n        description: |-\n          ValidatorParams restrict the public key types validators can use.\n          NOTE: uses ABCI pubkey naming, not Amino names.\n      abci:\n        title: 'Since: cosmos-sdk 0.50'\n        type: object\n        properties:\n          vote_extensions_enable_height:\n            type: string\n            format: int64\n            description: >-\n              vote_extensions_enable_height configures the first height during\n              which\n\n              vote extensions will be enabled. During this specified height, and\n              for all\n\n              subsequent heights, precommit messages that do not contain valid\n              extension data\n\n              will be considered invalid. Prior to this height, vote extensions\n              will not\n\n              be used or accepted by validators on the network.\n\n\n              Once enabled, vote extensions will be created by the application\n              in ExtendVote,\n\n              passed to the application for validation in VerifyVoteExtension\n              and given\n\n              to the application to use when proposing a block during\n              PrepareProposal.\n        description: >-\n          ABCIParams configure functionality specific to the Application\n          Blockchain Interface.\n    description: MsgUpdateParams is the Msg/UpdateParams request type.\n  cosmos.consensus.v1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n  cosmos.crisis.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      constant_fee:\n        description: constant_fee defines the x/crisis parameter.\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.crisis.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.crisis.v1beta1.MsgVerifyInvariant:\n    type: object\n    properties:\n      sender:\n        type: string\n        description: >-\n          sender is the account address of private key to send coins to fee\n          collector account.\n      invariant_module_name:\n        type: string\n        description: name of the invariant module.\n      invariant_route:\n        type: string\n        description: invariant_route is the msg's invariant route.\n    description: MsgVerifyInvariant represents a message to verify a particular invariance.\n  cosmos.crisis.v1beta1.MsgVerifyInvariantResponse:\n    type: object\n    description: MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.\n  cosmos.distribution.v1beta1.MsgCommunityPoolSpend:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      recipient:\n        type: string\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: >-\n      MsgCommunityPoolSpend defines a message for sending tokens from the\n      community\n\n      pool to another account. This message is typically executed via a\n      governance\n\n      proposal with the governance module being the executing authority.\n\n\n      Since: cosmos-sdk 0.47\n  cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse:\n    type: object\n    description: |-\n      MsgCommunityPoolSpendResponse defines the response to executing a\n      MsgCommunityPoolSpend message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool:\n    type: object\n    properties:\n      depositor:\n        type: string\n      validator_address:\n        type: string\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: |-\n      DepositValidatorRewardsPool defines the request structure to provide\n      additional rewards to delegators from a specific validator.\n\n      Since: cosmos-sdk 0.50\n  cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse:\n    type: object\n    description: |-\n      MsgDepositValidatorRewardsPoolResponse defines the response to executing a\n      MsgDepositValidatorRewardsPool message.\n\n      Since: cosmos-sdk 0.50\n  cosmos.distribution.v1beta1.MsgFundCommunityPool:\n    type: object\n    properties:\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n      depositor:\n        type: string\n    description: |-\n      MsgFundCommunityPool allows an account to directly\n      fund the community pool.\n  cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse:\n    type: object\n    description: >-\n      MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response\n      type.\n  cosmos.distribution.v1beta1.MsgSetWithdrawAddress:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      withdraw_address:\n        type: string\n    description: |-\n      MsgSetWithdrawAddress sets the withdraw address for\n      a delegator (or validator self-delegation).\n  cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse:\n    type: object\n    description: |-\n      MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\n      type.\n  cosmos.distribution.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/distribution parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          community_tax:\n            type: string\n          base_proposer_reward:\n            type: string\n            description: >-\n              Deprecated: The base_proposer_reward field is deprecated and is no\n              longer used\n\n              in the x/distribution module's reward mechanism.\n          bonus_proposer_reward:\n            type: string\n            description: >-\n              Deprecated: The bonus_proposer_reward field is deprecated and is\n              no longer used\n\n              in the x/distribution module's reward mechanism.\n          withdraw_addr_enabled:\n            type: boolean\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.distribution.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      validator_address:\n        type: string\n    description: |-\n      MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\n      from a single validator.\n  cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse:\n    type: object\n    properties:\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: 'Since: cosmos-sdk 0.46'\n    description: |-\n      MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\n      response type.\n  cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission:\n    type: object\n    properties:\n      validator_address:\n        type: string\n    description: >-\n      MsgWithdrawValidatorCommission withdraws the full commission to the\n      validator\n\n      address.\n  cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse:\n    type: object\n    properties:\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: 'Since: cosmos-sdk 0.46'\n    description: |-\n      MsgWithdrawValidatorCommissionResponse defines the\n      Msg/WithdrawValidatorCommission response type.\n  cosmos.distribution.v1beta1.Params:\n    type: object\n    properties:\n      community_tax:\n        type: string\n      base_proposer_reward:\n        type: string\n        description: >-\n          Deprecated: The base_proposer_reward field is deprecated and is no\n          longer used\n\n          in the x/distribution module's reward mechanism.\n      bonus_proposer_reward:\n        type: string\n        description: >-\n          Deprecated: The bonus_proposer_reward field is deprecated and is no\n          longer used\n\n          in the x/distribution module's reward mechanism.\n      withdraw_addr_enabled:\n        type: boolean\n    description: Params defines the set of params for the distribution module.\n  cosmos.base.v1beta1.DecCoin:\n    type: object\n    properties:\n      denom:\n        type: string\n      amount:\n        type: string\n    description: |-\n      DecCoin defines a token with a denomination and a decimal amount.\n\n      NOTE: The amount field is an Dec which implements the custom method\n      signatures required by gogoproto.\n  cosmos.distribution.v1beta1.DelegationDelegatorReward:\n    type: object\n    properties:\n      validator_address:\n        type: string\n      reward:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n    description: |-\n      DelegationDelegatorReward represents the properties\n      of a delegator's delegation reward.\n  cosmos.distribution.v1beta1.QueryCommunityPoolResponse:\n    type: object\n    properties:\n      pool:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n        description: pool defines community pool's coins.\n    description: >-\n      QueryCommunityPoolResponse is the response type for the\n      Query/CommunityPool\n\n      RPC method.\n  cosmos.distribution.v1beta1.QueryDelegationRewardsResponse:\n    type: object\n    properties:\n      rewards:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n        description: rewards defines the rewards accrued by a delegation.\n    description: |-\n      QueryDelegationRewardsResponse is the response type for the\n      Query/DelegationRewards RPC method.\n  cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse:\n    type: object\n    properties:\n      rewards:\n        type: array\n        items:\n          type: object\n          properties:\n            validator_address:\n              type: string\n            reward:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  DecCoin defines a token with a denomination and a decimal\n                  amount.\n\n\n                  NOTE: The amount field is an Dec which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n          description: |-\n            DelegationDelegatorReward represents the properties\n            of a delegator's delegation reward.\n        description: rewards defines all the rewards accrued by a delegator.\n      total:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n        description: total defines the sum of all the rewards.\n    description: |-\n      QueryDelegationTotalRewardsResponse is the response type for the\n      Query/DelegationTotalRewards RPC method.\n  cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse:\n    type: object\n    properties:\n      validators:\n        type: array\n        items:\n          type: string\n        description: validators defines the validators a delegator is delegating for.\n    description: |-\n      QueryDelegatorValidatorsResponse is the response type for the\n      Query/DelegatorValidators RPC method.\n  cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse:\n    type: object\n    properties:\n      withdraw_address:\n        type: string\n        description: withdraw_address defines the delegator address to query for.\n    description: |-\n      QueryDelegatorWithdrawAddressResponse is the response type for the\n      Query/DelegatorWithdrawAddress RPC method.\n  cosmos.distribution.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          community_tax:\n            type: string\n          base_proposer_reward:\n            type: string\n            description: >-\n              Deprecated: The base_proposer_reward field is deprecated and is no\n              longer used\n\n              in the x/distribution module's reward mechanism.\n          bonus_proposer_reward:\n            type: string\n            description: >-\n              Deprecated: The bonus_proposer_reward field is deprecated and is\n              no longer used\n\n              in the x/distribution module's reward mechanism.\n          withdraw_addr_enabled:\n            type: boolean\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  cosmos.distribution.v1beta1.QueryValidatorCommissionResponse:\n    type: object\n    properties:\n      commission:\n        description: commission defines the commission the validator received.\n        type: object\n        properties:\n          commission:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                DecCoin defines a token with a denomination and a decimal\n                amount.\n\n\n                NOTE: The amount field is an Dec which implements the custom\n                method\n\n                signatures required by gogoproto.\n    title: |-\n      QueryValidatorCommissionResponse is the response type for the\n      Query/ValidatorCommission RPC method\n  cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse:\n    type: object\n    properties:\n      operator_address:\n        type: string\n        description: operator_address defines the validator operator address.\n      self_bond_rewards:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n        description: self_bond_rewards defines the self delegations rewards.\n      commission:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n        description: commission defines the commission the validator received.\n    description: >-\n      QueryValidatorDistributionInfoResponse is the response type for the\n      Query/ValidatorDistributionInfo RPC method.\n  cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse:\n    type: object\n    properties:\n      rewards:\n        type: object\n        properties:\n          rewards:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                DecCoin defines a token with a denomination and a decimal\n                amount.\n\n\n                NOTE: The amount field is an Dec which implements the custom\n                method\n\n                signatures required by gogoproto.\n        description: >-\n          ValidatorOutstandingRewards represents outstanding (un-withdrawn)\n          rewards\n\n          for a validator inexpensive to track, allows simple sanity checks.\n    description: |-\n      QueryValidatorOutstandingRewardsResponse is the response type for the\n      Query/ValidatorOutstandingRewards RPC method.\n  cosmos.distribution.v1beta1.QueryValidatorSlashesResponse:\n    type: object\n    properties:\n      slashes:\n        type: array\n        items:\n          type: object\n          properties:\n            validator_period:\n              type: string\n              format: uint64\n            fraction:\n              type: string\n          description: |-\n            ValidatorSlashEvent represents a validator slash event.\n            Height is implicit within the store key.\n            This is needed to calculate appropriate amount of staking tokens\n            for delegations which are withdrawn after a slash has occurred.\n        description: slashes defines the slashes the validator received.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryValidatorSlashesResponse is the response type for the\n      Query/ValidatorSlashes RPC method.\n  cosmos.distribution.v1beta1.ValidatorAccumulatedCommission:\n    type: object\n    properties:\n      commission:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n    description: |-\n      ValidatorAccumulatedCommission represents accumulated commission\n      for a validator kept as a running counter, can be withdrawn at any time.\n  cosmos.distribution.v1beta1.ValidatorOutstandingRewards:\n    type: object\n    properties:\n      rewards:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            DecCoin defines a token with a denomination and a decimal amount.\n\n            NOTE: The amount field is an Dec which implements the custom method\n            signatures required by gogoproto.\n    description: |-\n      ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\n      for a validator inexpensive to track, allows simple sanity checks.\n  cosmos.distribution.v1beta1.ValidatorSlashEvent:\n    type: object\n    properties:\n      validator_period:\n        type: string\n        format: uint64\n      fraction:\n        type: string\n    description: |-\n      ValidatorSlashEvent represents a validator slash event.\n      Height is implicit within the store key.\n      This is needed to calculate appropriate amount of staking tokens\n      for delegations which are withdrawn after a slash has occurred.\n  cosmos.evidence.v1beta1.MsgSubmitEvidence:\n    type: object\n    properties:\n      submitter:\n        type: string\n        description: submitter is the signer account address of evidence.\n      evidence:\n        description: evidence defines the evidence of misbehavior.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: |-\n      MsgSubmitEvidence represents a message that supports submitting arbitrary\n      Evidence of misbehavior such as equivocation or counterfactual signing.\n  cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse:\n    type: object\n    properties:\n      hash:\n        type: string\n        format: byte\n        description: hash defines the hash of the evidence.\n    description: MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.\n  cosmos.evidence.v1beta1.QueryAllEvidenceResponse:\n    type: object\n    properties:\n      evidence:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: evidence returns all evidences.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryAllEvidenceResponse is the response type for the Query/AllEvidence\n      RPC\n\n      method.\n  cosmos.evidence.v1beta1.QueryEvidenceResponse:\n    type: object\n    properties:\n      evidence:\n        description: evidence returns the requested evidence.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: >-\n      QueryEvidenceResponse is the response type for the Query/Evidence RPC\n      method.\n  sourcehub.feegrant.v1beta1.Grant:\n    type: object\n    properties:\n      granter:\n        type: string\n        description: >-\n          granter is the address of the user granting an allowance of their\n          funds.\n      grantee:\n        type: string\n        description: >-\n          grantee is the address of the user being granted an allowance of\n          another user's funds.\n      allowance:\n        description: allowance can be any of basic, periodic, allowed fee allowance.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    title: Grant is stored in the KVStore to record a grant with full context\n  sourcehub.feegrant.v1beta1.QueryAllowanceResponse:\n    type: object\n    properties:\n      allowance:\n        description: allowance is a allowance granted for grantee by granter.\n        type: object\n        properties:\n          granter:\n            type: string\n            description: >-\n              granter is the address of the user granting an allowance of their\n              funds.\n          grantee:\n            type: string\n            description: >-\n              grantee is the address of the user being granted an allowance of\n              another user's funds.\n          allowance:\n            description: allowance can be any of basic, periodic, allowed fee allowance.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n        title: Grant is stored in the KVStore to record a grant with full context\n    description: >-\n      QueryAllowanceResponse is the response type for the Query/Allowance RPC\n      method.\n  sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse:\n    type: object\n    properties:\n      allowances:\n        type: array\n        items:\n          type: object\n          properties:\n            granter:\n              type: string\n              description: >-\n                granter is the address of the user granting an allowance of\n                their funds.\n            grantee:\n              type: string\n              description: >-\n                grantee is the address of the user being granted an allowance of\n                another user's funds.\n            allowance:\n              description: allowance can be any of basic, periodic, allowed fee allowance.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n          title: Grant is stored in the KVStore to record a grant with full context\n        description: allowances that have been issued by the granter.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryAllowancesByGranterResponse is the response type for the\n      Query/AllowancesByGranter RPC method.\n\n\n      Since: cosmos-sdk 0.46\n  sourcehub.feegrant.v1beta1.QueryAllowancesResponse:\n    type: object\n    properties:\n      allowances:\n        type: array\n        items:\n          type: object\n          properties:\n            granter:\n              type: string\n              description: >-\n                granter is the address of the user granting an allowance of\n                their funds.\n            grantee:\n              type: string\n              description: >-\n                grantee is the address of the user being granted an allowance of\n                another user's funds.\n            allowance:\n              description: allowance can be any of basic, periodic, allowed fee allowance.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n          title: Grant is stored in the KVStore to record a grant with full context\n        description: allowances are allowance's granted for grantee by granter.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryAllowancesResponse is the response type for the Query/Allowances RPC\n      method.\n  sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse:\n    type: object\n    properties:\n      allowance:\n        description: allowance is a allowance granted for DID by granter.\n        type: object\n        properties:\n          granter:\n            type: string\n            description: >-\n              granter is the address of the user granting an allowance of their\n              funds.\n          grantee:\n            type: string\n            description: >-\n              grantee is the DID being granted an allowance of\n              another user's funds.\n          allowance:\n            description: allowance can be any of basic, periodic, allowed fee allowance.\n            type: object\n            properties:\n              '@type':\n                type: string\n            additionalProperties: {}\n        title: Grant is stored in the KVStore to record a grant with full context\n    description: >-\n      QueryDIDAllowanceResponse is the response type for the Query/DIDAllowance RPC\n      method.\n  sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse:\n    type: object\n    properties:\n      allowances:\n        type: array\n        items:\n          type: object\n          properties:\n            granter:\n              type: string\n              description: >-\n                granter is the address of the user granting an allowance of their\n                funds.\n            grantee:\n              type: string\n              description: >-\n                grantee is the DID being granted an allowance of\n                another user's funds.\n            allowance:\n              description: allowance can be any of basic, periodic, allowed fee allowance.\n              type: object\n              properties:\n                '@type':\n                  type: string\n              additionalProperties: {}\n          title: Grant is stored in the KVStore to record a grant with full context\n        description: allowances that have been issued by the granter to DIDs.\n      pagination:\n        description: pagination defines an pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n          total:\n            type: string\n            format: uint64\n    description: >-\n      QueryDIDAllowancesByGranterResponse is the response type for the Query/DIDAllowancesByGranter RPC\n      method.\n  sourcehub.feegrant.v1beta1.MsgGrantAllowance:\n    type: object\n    properties:\n      granter:\n        type: string\n        description: >-\n          granter is the address of the user granting an allowance of their\n          funds.\n      grantee:\n        type: string\n        description: >-\n          grantee is the address of the user being granted an allowance of\n          another user's funds.\n      allowance:\n        description: allowance can be any of basic, periodic, allowed fee allowance.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: |-\n      MsgGrantAllowance adds permission for Grantee to spend up to Allowance\n      of fees from the account of Granter.\n  sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse:\n    type: object\n    description: >-\n      MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response\n      type.\n  sourcehub.feegrant.v1beta1.MsgPruneAllowances:\n    type: object\n    properties:\n      pruner:\n        type: string\n        description: pruner is the address of the user pruning expired allowances.\n    description: |-\n      MsgPruneAllowances prunes expired fee allowances.\n\n      Since cosmos-sdk 0.50\n  sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse:\n    type: object\n    description: >-\n      MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse\n      response type.\n\n\n      Since cosmos-sdk 0.50\n  sourcehub.feegrant.v1beta1.MsgRevokeAllowance:\n    type: object\n    properties:\n      granter:\n        type: string\n        description: >-\n          granter is the address of the user granting an allowance of their\n          funds.\n      grantee:\n        type: string\n        description: >-\n          grantee is the address of the user being granted an allowance of\n          another user's funds.\n    description: MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.\n  sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse:\n    type: object\n    description: >-\n      MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse\n      response type.\n  cosmos.gov.v1.Deposit:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      depositor:\n        type: string\n        description: depositor defines the deposit addresses from the proposals.\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: amount to be deposited by depositor.\n    description: |-\n      Deposit defines an amount deposited by an account address to an active\n      proposal.\n  cosmos.gov.v1.DepositParams:\n    type: object\n    properties:\n      min_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: Minimum deposit for a proposal to enter voting period.\n      max_deposit_period:\n        type: string\n        description: >-\n          Maximum period for Atom holders to deposit on a proposal. Initial\n          value: 2\n\n          months.\n    description: DepositParams defines the params for deposits on governance proposals.\n  cosmos.gov.v1.Params:\n    type: object\n    properties:\n      min_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: Minimum deposit for a proposal to enter voting period.\n      max_deposit_period:\n        type: string\n        description: >-\n          Maximum period for Atom holders to deposit on a proposal. Initial\n          value: 2\n\n          months.\n      voting_period:\n        type: string\n        description: Duration of the voting period.\n      quorum:\n        type: string\n        description: |-\n          Minimum percentage of total stake needed to vote for a result to be\n           considered valid.\n      threshold:\n        type: string\n        description: >-\n          Minimum proportion of Yes votes for proposal to pass. Default value:\n          0.5.\n      veto_threshold:\n        type: string\n        description: |-\n          Minimum value of Veto votes to Total votes ratio for proposal to be\n           vetoed. Default value: 1/3.\n      min_initial_deposit_ratio:\n        type: string\n        description: >-\n          The ratio representing the proportion of the deposit value that must\n          be paid at proposal submission.\n      proposal_cancel_ratio:\n        type: string\n        description: >-\n          The cancel ratio which will not be returned back to the depositors\n          when a proposal is cancelled.\n\n\n          Since: cosmos-sdk 0.50\n      proposal_cancel_dest:\n        type: string\n        description: >-\n          The address which will receive (proposal_cancel_ratio * deposit)\n          proposal deposits.\n\n          If empty, the (proposal_cancel_ratio * deposit) proposal deposits will\n          be burned.\n\n\n          Since: cosmos-sdk 0.50\n      expedited_voting_period:\n        type: string\n        description: |-\n          Duration of the voting period of an expedited proposal.\n\n          Since: cosmos-sdk 0.50\n      expedited_threshold:\n        type: string\n        description: >-\n          Minimum proportion of Yes votes for proposal to pass. Default value:\n          0.67.\n\n\n          Since: cosmos-sdk 0.50\n      expedited_min_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: Minimum expedited deposit for a proposal to enter voting period.\n      burn_vote_quorum:\n        type: boolean\n        title: burn deposits if a proposal does not meet quorum\n      burn_proposal_deposit_prevote:\n        type: boolean\n        title: burn deposits if the proposal does not enter voting period\n      burn_vote_veto:\n        type: boolean\n        title: burn deposits if quorum with vote type no_veto is met\n      min_deposit_ratio:\n        type: string\n        description: >-\n          The ratio representing the proportion of the deposit value minimum\n          that must be met when making a deposit.\n\n          Default value: 0.01. Meaning that for a chain with a min_deposit of\n          100stake, a deposit of 1stake would be\n\n          required.\n\n\n          Since: cosmos-sdk 0.50\n    description: |-\n      Params defines the parameters for the x/gov module.\n\n      Since: cosmos-sdk 0.47\n  cosmos.gov.v1.Proposal:\n    type: object\n    properties:\n      id:\n        type: string\n        format: uint64\n        description: id defines the unique id of the proposal.\n      messages:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: >-\n          messages are the arbitrary messages to be executed if the proposal\n          passes.\n      status:\n        description: status defines the proposal status.\n        type: string\n        enum:\n          - PROPOSAL_STATUS_UNSPECIFIED\n          - PROPOSAL_STATUS_DEPOSIT_PERIOD\n          - PROPOSAL_STATUS_VOTING_PERIOD\n          - PROPOSAL_STATUS_PASSED\n          - PROPOSAL_STATUS_REJECTED\n          - PROPOSAL_STATUS_FAILED\n        default: PROPOSAL_STATUS_UNSPECIFIED\n      final_tally_result:\n        description: |-\n          final_tally_result is the final tally result of the proposal. When\n          querying a proposal via gRPC, this field is not populated until the\n          proposal's voting period has ended.\n        type: object\n        properties:\n          yes_count:\n            type: string\n            description: yes_count is the number of yes votes on a proposal.\n          abstain_count:\n            type: string\n            description: abstain_count is the number of abstain votes on a proposal.\n          no_count:\n            type: string\n            description: no_count is the number of no votes on a proposal.\n          no_with_veto_count:\n            type: string\n            description: >-\n              no_with_veto_count is the number of no with veto votes on a\n              proposal.\n      submit_time:\n        type: string\n        format: date-time\n        description: submit_time is the time of proposal submission.\n      deposit_end_time:\n        type: string\n        format: date-time\n        description: deposit_end_time is the end time for deposition.\n      total_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: total_deposit is the total deposit on the proposal.\n      voting_start_time:\n        type: string\n        format: date-time\n        description: voting_start_time is the starting time to vote on a proposal.\n      voting_end_time:\n        type: string\n        format: date-time\n        description: voting_end_time is the end time of voting on a proposal.\n      metadata:\n        type: string\n        title: |-\n          metadata is any arbitrary metadata attached to the proposal.\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/gov#proposal-3\n      title:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: title is the title of the proposal\n      summary:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: summary is a short summary of the proposal\n      proposer:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: proposer is the address of the proposal sumbitter\n      expedited:\n        type: boolean\n        description: 'Since: cosmos-sdk 0.50'\n        title: expedited defines if the proposal is expedited\n      failed_reason:\n        type: string\n        description: 'Since: cosmos-sdk 0.50'\n        title: failed_reason defines the reason why the proposal failed\n    description: Proposal defines the core field members of a governance proposal.\n  cosmos.gov.v1.ProposalStatus:\n    type: string\n    enum:\n      - PROPOSAL_STATUS_UNSPECIFIED\n      - PROPOSAL_STATUS_DEPOSIT_PERIOD\n      - PROPOSAL_STATUS_VOTING_PERIOD\n      - PROPOSAL_STATUS_PASSED\n      - PROPOSAL_STATUS_REJECTED\n      - PROPOSAL_STATUS_FAILED\n    default: PROPOSAL_STATUS_UNSPECIFIED\n    description: |-\n      ProposalStatus enumerates the valid statuses of a proposal.\n\n       - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n       - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\n      period.\n       - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\n      period.\n       - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\n      passed.\n       - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\n      been rejected.\n       - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\n      failed.\n  cosmos.gov.v1.QueryConstitutionResponse:\n    type: object\n    properties:\n      constitution:\n        type: string\n    title: >-\n      QueryConstitutionResponse is the response type for the Query/Constitution\n      RPC method\n  cosmos.gov.v1.QueryDepositResponse:\n    type: object\n    properties:\n      deposit:\n        description: deposit defines the requested deposit.\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal_id defines the unique id of the proposal.\n          depositor:\n            type: string\n            description: depositor defines the deposit addresses from the proposals.\n          amount:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: amount to be deposited by depositor.\n    description: >-\n      QueryDepositResponse is the response type for the Query/Deposit RPC\n      method.\n  cosmos.gov.v1.QueryDepositsResponse:\n    type: object\n    properties:\n      deposits:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal_id defines the unique id of the proposal.\n            depositor:\n              type: string\n              description: depositor defines the deposit addresses from the proposals.\n            amount:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n              description: amount to be deposited by depositor.\n          description: >-\n            Deposit defines an amount deposited by an account address to an\n            active\n\n            proposal.\n        description: deposits defines the requested deposits.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryDepositsResponse is the response type for the Query/Deposits RPC\n      method.\n  cosmos.gov.v1.QueryParamsResponse:\n    type: object\n    properties:\n      voting_params:\n        description: |-\n          Deprecated: Prefer to use `params` instead.\n          voting_params defines the parameters related to voting.\n        type: object\n        properties:\n          voting_period:\n            type: string\n            description: Duration of the voting period.\n      deposit_params:\n        description: |-\n          Deprecated: Prefer to use `params` instead.\n          deposit_params defines the parameters related to deposit.\n        type: object\n        properties:\n          min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum deposit for a proposal to enter voting period.\n          max_deposit_period:\n            type: string\n            description: >-\n              Maximum period for Atom holders to deposit on a proposal. Initial\n              value: 2\n\n              months.\n      tally_params:\n        description: |-\n          Deprecated: Prefer to use `params` instead.\n          tally_params defines the parameters related to tally.\n        type: object\n        properties:\n          quorum:\n            type: string\n            description: >-\n              Minimum percentage of total stake needed to vote for a result to\n              be\n\n              considered valid.\n          threshold:\n            type: string\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.5.\n          veto_threshold:\n            type: string\n            description: >-\n              Minimum value of Veto votes to Total votes ratio for proposal to\n              be\n\n              vetoed. Default value: 1/3.\n      params:\n        description: |-\n          params defines all the paramaters of x/gov module.\n\n          Since: cosmos-sdk 0.47\n        type: object\n        properties:\n          min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum deposit for a proposal to enter voting period.\n          max_deposit_period:\n            type: string\n            description: >-\n              Maximum period for Atom holders to deposit on a proposal. Initial\n              value: 2\n\n              months.\n          voting_period:\n            type: string\n            description: Duration of the voting period.\n          quorum:\n            type: string\n            description: >-\n              Minimum percentage of total stake needed to vote for a result to\n              be\n               considered valid.\n          threshold:\n            type: string\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.5.\n          veto_threshold:\n            type: string\n            description: >-\n              Minimum value of Veto votes to Total votes ratio for proposal to\n              be\n               vetoed. Default value: 1/3.\n          min_initial_deposit_ratio:\n            type: string\n            description: >-\n              The ratio representing the proportion of the deposit value that\n              must be paid at proposal submission.\n          proposal_cancel_ratio:\n            type: string\n            description: >-\n              The cancel ratio which will not be returned back to the depositors\n              when a proposal is cancelled.\n\n\n              Since: cosmos-sdk 0.50\n          proposal_cancel_dest:\n            type: string\n            description: >-\n              The address which will receive (proposal_cancel_ratio * deposit)\n              proposal deposits.\n\n              If empty, the (proposal_cancel_ratio * deposit) proposal deposits\n              will be burned.\n\n\n              Since: cosmos-sdk 0.50\n          expedited_voting_period:\n            type: string\n            description: |-\n              Duration of the voting period of an expedited proposal.\n\n              Since: cosmos-sdk 0.50\n          expedited_threshold:\n            type: string\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.67.\n\n\n              Since: cosmos-sdk 0.50\n          expedited_min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum expedited deposit for a proposal to enter voting period.\n          burn_vote_quorum:\n            type: boolean\n            title: burn deposits if a proposal does not meet quorum\n          burn_proposal_deposit_prevote:\n            type: boolean\n            title: burn deposits if the proposal does not enter voting period\n          burn_vote_veto:\n            type: boolean\n            title: burn deposits if quorum with vote type no_veto is met\n          min_deposit_ratio:\n            type: string\n            description: >-\n              The ratio representing the proportion of the deposit value minimum\n              that must be met when making a deposit.\n\n              Default value: 0.01. Meaning that for a chain with a min_deposit\n              of 100stake, a deposit of 1stake would be\n\n              required.\n\n\n              Since: cosmos-sdk 0.50\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  cosmos.gov.v1.QueryProposalResponse:\n    type: object\n    properties:\n      proposal:\n        description: proposal is the requested governance proposal.\n        type: object\n        properties:\n          id:\n            type: string\n            format: uint64\n            description: id defines the unique id of the proposal.\n          messages:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            description: >-\n              messages are the arbitrary messages to be executed if the proposal\n              passes.\n          status:\n            description: status defines the proposal status.\n            type: string\n            enum:\n              - PROPOSAL_STATUS_UNSPECIFIED\n              - PROPOSAL_STATUS_DEPOSIT_PERIOD\n              - PROPOSAL_STATUS_VOTING_PERIOD\n              - PROPOSAL_STATUS_PASSED\n              - PROPOSAL_STATUS_REJECTED\n              - PROPOSAL_STATUS_FAILED\n            default: PROPOSAL_STATUS_UNSPECIFIED\n          final_tally_result:\n            description: >-\n              final_tally_result is the final tally result of the proposal. When\n\n              querying a proposal via gRPC, this field is not populated until\n              the\n\n              proposal's voting period has ended.\n            type: object\n            properties:\n              yes_count:\n                type: string\n                description: yes_count is the number of yes votes on a proposal.\n              abstain_count:\n                type: string\n                description: abstain_count is the number of abstain votes on a proposal.\n              no_count:\n                type: string\n                description: no_count is the number of no votes on a proposal.\n              no_with_veto_count:\n                type: string\n                description: >-\n                  no_with_veto_count is the number of no with veto votes on a\n                  proposal.\n          submit_time:\n            type: string\n            format: date-time\n            description: submit_time is the time of proposal submission.\n          deposit_end_time:\n            type: string\n            format: date-time\n            description: deposit_end_time is the end time for deposition.\n          total_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: total_deposit is the total deposit on the proposal.\n          voting_start_time:\n            type: string\n            format: date-time\n            description: voting_start_time is the starting time to vote on a proposal.\n          voting_end_time:\n            type: string\n            format: date-time\n            description: voting_end_time is the end time of voting on a proposal.\n          metadata:\n            type: string\n            title: |-\n              metadata is any arbitrary metadata attached to the proposal.\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/gov#proposal-3\n          title:\n            type: string\n            description: 'Since: cosmos-sdk 0.47'\n            title: title is the title of the proposal\n          summary:\n            type: string\n            description: 'Since: cosmos-sdk 0.47'\n            title: summary is a short summary of the proposal\n          proposer:\n            type: string\n            description: 'Since: cosmos-sdk 0.47'\n            title: proposer is the address of the proposal sumbitter\n          expedited:\n            type: boolean\n            description: 'Since: cosmos-sdk 0.50'\n            title: expedited defines if the proposal is expedited\n          failed_reason:\n            type: string\n            description: 'Since: cosmos-sdk 0.50'\n            title: failed_reason defines the reason why the proposal failed\n    description: >-\n      QueryProposalResponse is the response type for the Query/Proposal RPC\n      method.\n  cosmos.gov.v1.QueryProposalsResponse:\n    type: object\n    properties:\n      proposals:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              format: uint64\n              description: id defines the unique id of the proposal.\n            messages:\n              type: array\n              items:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              description: >-\n                messages are the arbitrary messages to be executed if the\n                proposal passes.\n            status:\n              description: status defines the proposal status.\n              type: string\n              enum:\n                - PROPOSAL_STATUS_UNSPECIFIED\n                - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                - PROPOSAL_STATUS_VOTING_PERIOD\n                - PROPOSAL_STATUS_PASSED\n                - PROPOSAL_STATUS_REJECTED\n                - PROPOSAL_STATUS_FAILED\n              default: PROPOSAL_STATUS_UNSPECIFIED\n            final_tally_result:\n              description: >-\n                final_tally_result is the final tally result of the proposal.\n                When\n\n                querying a proposal via gRPC, this field is not populated until\n                the\n\n                proposal's voting period has ended.\n              type: object\n              properties:\n                yes_count:\n                  type: string\n                  description: yes_count is the number of yes votes on a proposal.\n                abstain_count:\n                  type: string\n                  description: abstain_count is the number of abstain votes on a proposal.\n                no_count:\n                  type: string\n                  description: no_count is the number of no votes on a proposal.\n                no_with_veto_count:\n                  type: string\n                  description: >-\n                    no_with_veto_count is the number of no with veto votes on a\n                    proposal.\n            submit_time:\n              type: string\n              format: date-time\n              description: submit_time is the time of proposal submission.\n            deposit_end_time:\n              type: string\n              format: date-time\n              description: deposit_end_time is the end time for deposition.\n            total_deposit:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n              description: total_deposit is the total deposit on the proposal.\n            voting_start_time:\n              type: string\n              format: date-time\n              description: voting_start_time is the starting time to vote on a proposal.\n            voting_end_time:\n              type: string\n              format: date-time\n              description: voting_end_time is the end time of voting on a proposal.\n            metadata:\n              type: string\n              title: |-\n                metadata is any arbitrary metadata attached to the proposal.\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/gov#proposal-3\n            title:\n              type: string\n              description: 'Since: cosmos-sdk 0.47'\n              title: title is the title of the proposal\n            summary:\n              type: string\n              description: 'Since: cosmos-sdk 0.47'\n              title: summary is a short summary of the proposal\n            proposer:\n              type: string\n              description: 'Since: cosmos-sdk 0.47'\n              title: proposer is the address of the proposal sumbitter\n            expedited:\n              type: boolean\n              description: 'Since: cosmos-sdk 0.50'\n              title: expedited defines if the proposal is expedited\n            failed_reason:\n              type: string\n              description: 'Since: cosmos-sdk 0.50'\n              title: failed_reason defines the reason why the proposal failed\n          description: Proposal defines the core field members of a governance proposal.\n        description: proposals defines all the requested governance proposals.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryProposalsResponse is the response type for the Query/Proposals RPC\n      method.\n  cosmos.gov.v1.QueryTallyResultResponse:\n    type: object\n    properties:\n      tally:\n        description: tally defines the requested tally.\n        type: object\n        properties:\n          yes_count:\n            type: string\n            description: yes_count is the number of yes votes on a proposal.\n          abstain_count:\n            type: string\n            description: abstain_count is the number of abstain votes on a proposal.\n          no_count:\n            type: string\n            description: no_count is the number of no votes on a proposal.\n          no_with_veto_count:\n            type: string\n            description: >-\n              no_with_veto_count is the number of no with veto votes on a\n              proposal.\n    description: >-\n      QueryTallyResultResponse is the response type for the Query/Tally RPC\n      method.\n  cosmos.gov.v1.QueryVoteResponse:\n    type: object\n    properties:\n      vote:\n        description: vote defines the queried vote.\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal_id defines the unique id of the proposal.\n          voter:\n            type: string\n            description: voter is the voter address of the proposal.\n          options:\n            type: array\n            items:\n              type: object\n              properties:\n                option:\n                  description: >-\n                    option defines the valid vote options, it must not contain\n                    duplicate vote options.\n                  type: string\n                  enum:\n                    - VOTE_OPTION_UNSPECIFIED\n                    - VOTE_OPTION_YES\n                    - VOTE_OPTION_ABSTAIN\n                    - VOTE_OPTION_NO\n                    - VOTE_OPTION_NO_WITH_VETO\n                  default: VOTE_OPTION_UNSPECIFIED\n                weight:\n                  type: string\n                  description: weight is the vote weight associated with the vote option.\n              description: WeightedVoteOption defines a unit of vote for vote split.\n            description: options is the weighted vote options.\n          metadata:\n            type: string\n            title: >-\n              metadata is any arbitrary metadata attached to the vote.\n\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/gov#vote-5\n    description: QueryVoteResponse is the response type for the Query/Vote RPC method.\n  cosmos.gov.v1.QueryVotesResponse:\n    type: object\n    properties:\n      votes:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal_id defines the unique id of the proposal.\n            voter:\n              type: string\n              description: voter is the voter address of the proposal.\n            options:\n              type: array\n              items:\n                type: object\n                properties:\n                  option:\n                    description: >-\n                      option defines the valid vote options, it must not contain\n                      duplicate vote options.\n                    type: string\n                    enum:\n                      - VOTE_OPTION_UNSPECIFIED\n                      - VOTE_OPTION_YES\n                      - VOTE_OPTION_ABSTAIN\n                      - VOTE_OPTION_NO\n                      - VOTE_OPTION_NO_WITH_VETO\n                    default: VOTE_OPTION_UNSPECIFIED\n                  weight:\n                    type: string\n                    description: weight is the vote weight associated with the vote option.\n                description: WeightedVoteOption defines a unit of vote for vote split.\n              description: options is the weighted vote options.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata attached to the vote.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/gov#vote-5\n          description: |-\n            Vote defines a vote on a governance proposal.\n            A Vote consists of a proposal ID, the voter, and the vote option.\n        description: votes defines the queried votes.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryVotesResponse is the response type for the Query/Votes RPC method.\n  cosmos.gov.v1.TallyParams:\n    type: object\n    properties:\n      quorum:\n        type: string\n        description: |-\n          Minimum percentage of total stake needed to vote for a result to be\n          considered valid.\n      threshold:\n        type: string\n        description: >-\n          Minimum proportion of Yes votes for proposal to pass. Default value:\n          0.5.\n      veto_threshold:\n        type: string\n        description: |-\n          Minimum value of Veto votes to Total votes ratio for proposal to be\n          vetoed. Default value: 1/3.\n    description: TallyParams defines the params for tallying votes on governance proposals.\n  cosmos.gov.v1.TallyResult:\n    type: object\n    properties:\n      yes_count:\n        type: string\n        description: yes_count is the number of yes votes on a proposal.\n      abstain_count:\n        type: string\n        description: abstain_count is the number of abstain votes on a proposal.\n      no_count:\n        type: string\n        description: no_count is the number of no votes on a proposal.\n      no_with_veto_count:\n        type: string\n        description: no_with_veto_count is the number of no with veto votes on a proposal.\n    description: TallyResult defines a standard tally for a governance proposal.\n  cosmos.gov.v1.Vote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address of the proposal.\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              description: >-\n                option defines the valid vote options, it must not contain\n                duplicate vote options.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            weight:\n              type: string\n              description: weight is the vote weight associated with the vote option.\n          description: WeightedVoteOption defines a unit of vote for vote split.\n        description: options is the weighted vote options.\n      metadata:\n        type: string\n        title: >-\n          metadata is any arbitrary metadata attached to the vote.\n\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/gov#vote-5\n    description: |-\n      Vote defines a vote on a governance proposal.\n      A Vote consists of a proposal ID, the voter, and the vote option.\n  cosmos.gov.v1.VoteOption:\n    type: string\n    enum:\n      - VOTE_OPTION_UNSPECIFIED\n      - VOTE_OPTION_YES\n      - VOTE_OPTION_ABSTAIN\n      - VOTE_OPTION_NO\n      - VOTE_OPTION_NO_WITH_VETO\n    default: VOTE_OPTION_UNSPECIFIED\n    description: >-\n      VoteOption enumerates the valid vote options for a given governance\n      proposal.\n\n       - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n       - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n       - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n       - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n       - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.\n  cosmos.gov.v1.VotingParams:\n    type: object\n    properties:\n      voting_period:\n        type: string\n        description: Duration of the voting period.\n    description: VotingParams defines the params for voting on governance proposals.\n  cosmos.gov.v1.WeightedVoteOption:\n    type: object\n    properties:\n      option:\n        description: >-\n          option defines the valid vote options, it must not contain duplicate\n          vote options.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      weight:\n        type: string\n        description: weight is the vote weight associated with the vote option.\n    description: WeightedVoteOption defines a unit of vote for vote split.\n  cosmos.gov.v1.MsgCancelProposal:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      proposer:\n        type: string\n        description: proposer is the account address of the proposer.\n    description: |-\n      MsgCancelProposal is the Msg/CancelProposal request type.\n\n      Since: cosmos-sdk 0.50\n  cosmos.gov.v1.MsgCancelProposalResponse:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      canceled_time:\n        type: string\n        format: date-time\n        description: canceled_time is the time when proposal is canceled.\n      canceled_height:\n        type: string\n        format: uint64\n        description: >-\n          canceled_height defines the block height at which the proposal is\n          canceled.\n    description: |-\n      MsgCancelProposalResponse defines the response structure for executing a\n      MsgCancelProposal message.\n\n      Since: cosmos-sdk 0.50\n  cosmos.gov.v1.MsgDeposit:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      depositor:\n        type: string\n        description: depositor defines the deposit addresses from the proposals.\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: amount to be deposited by depositor.\n    description: MsgDeposit defines a message to submit a deposit to an existing proposal.\n  cosmos.gov.v1.MsgDepositResponse:\n    type: object\n    description: MsgDepositResponse defines the Msg/Deposit response type.\n  cosmos.gov.v1.MsgExecLegacyContent:\n    type: object\n    properties:\n      content:\n        description: content is the proposal's content.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      authority:\n        type: string\n        description: authority must be the gov module address.\n    description: >-\n      MsgExecLegacyContent is used to wrap the legacy content field into a\n      message.\n\n      This ensures backwards compatibility with v1beta1.MsgSubmitProposal.\n  cosmos.gov.v1.MsgExecLegacyContentResponse:\n    type: object\n    description: >-\n      MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response\n      type.\n  cosmos.gov.v1.MsgSubmitProposal:\n    type: object\n    properties:\n      messages:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: messages are the arbitrary messages to be executed if proposal passes.\n      initial_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: >-\n          initial_deposit is the deposit value that must be paid at proposal\n          submission.\n      proposer:\n        type: string\n        description: proposer is the account address of the proposer.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the proposal.\n      title:\n        type: string\n        description: |-\n          title is the title of the proposal.\n\n          Since: cosmos-sdk 0.47\n      summary:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: summary is the summary of the proposal\n      expedited:\n        type: boolean\n        description: 'Since: cosmos-sdk 0.50'\n        title: expedited defines if the proposal is expedited or not\n    description: >-\n      MsgSubmitProposal defines an sdk.Msg type that supports submitting\n      arbitrary\n\n      proposal Content.\n  cosmos.gov.v1.MsgSubmitProposalResponse:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n    description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.\n  cosmos.gov.v1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/gov parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum deposit for a proposal to enter voting period.\n          max_deposit_period:\n            type: string\n            description: >-\n              Maximum period for Atom holders to deposit on a proposal. Initial\n              value: 2\n\n              months.\n          voting_period:\n            type: string\n            description: Duration of the voting period.\n          quorum:\n            type: string\n            description: >-\n              Minimum percentage of total stake needed to vote for a result to\n              be\n               considered valid.\n          threshold:\n            type: string\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.5.\n          veto_threshold:\n            type: string\n            description: >-\n              Minimum value of Veto votes to Total votes ratio for proposal to\n              be\n               vetoed. Default value: 1/3.\n          min_initial_deposit_ratio:\n            type: string\n            description: >-\n              The ratio representing the proportion of the deposit value that\n              must be paid at proposal submission.\n          proposal_cancel_ratio:\n            type: string\n            description: >-\n              The cancel ratio which will not be returned back to the depositors\n              when a proposal is cancelled.\n\n\n              Since: cosmos-sdk 0.50\n          proposal_cancel_dest:\n            type: string\n            description: >-\n              The address which will receive (proposal_cancel_ratio * deposit)\n              proposal deposits.\n\n              If empty, the (proposal_cancel_ratio * deposit) proposal deposits\n              will be burned.\n\n\n              Since: cosmos-sdk 0.50\n          expedited_voting_period:\n            type: string\n            description: |-\n              Duration of the voting period of an expedited proposal.\n\n              Since: cosmos-sdk 0.50\n          expedited_threshold:\n            type: string\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.67.\n\n\n              Since: cosmos-sdk 0.50\n          expedited_min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum expedited deposit for a proposal to enter voting period.\n          burn_vote_quorum:\n            type: boolean\n            title: burn deposits if a proposal does not meet quorum\n          burn_proposal_deposit_prevote:\n            type: boolean\n            title: burn deposits if the proposal does not enter voting period\n          burn_vote_veto:\n            type: boolean\n            title: burn deposits if quorum with vote type no_veto is met\n          min_deposit_ratio:\n            type: string\n            description: >-\n              The ratio representing the proportion of the deposit value minimum\n              that must be met when making a deposit.\n\n              Default value: 0.01. Meaning that for a chain with a min_deposit\n              of 100stake, a deposit of 1stake would be\n\n              required.\n\n\n              Since: cosmos-sdk 0.50\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.gov.v1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.gov.v1.MsgVote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address for the proposal.\n      option:\n        description: option defines the vote option.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the Vote.\n    description: MsgVote defines a message to cast a vote.\n  cosmos.gov.v1.MsgVoteResponse:\n    type: object\n    description: MsgVoteResponse defines the Msg/Vote response type.\n  cosmos.gov.v1.MsgVoteWeighted:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address for the proposal.\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              description: >-\n                option defines the valid vote options, it must not contain\n                duplicate vote options.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            weight:\n              type: string\n              description: weight is the vote weight associated with the vote option.\n          description: WeightedVoteOption defines a unit of vote for vote split.\n        description: options defines the weighted vote options.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the VoteWeighted.\n    description: MsgVoteWeighted defines a message to cast a vote.\n  cosmos.gov.v1.MsgVoteWeightedResponse:\n    type: object\n    description: MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n  cosmos.gov.v1beta1.MsgDeposit:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      depositor:\n        type: string\n        description: depositor defines the deposit addresses from the proposals.\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: amount to be deposited by depositor.\n    description: MsgDeposit defines a message to submit a deposit to an existing proposal.\n  cosmos.gov.v1beta1.MsgDepositResponse:\n    type: object\n    description: MsgDepositResponse defines the Msg/Deposit response type.\n  cosmos.gov.v1beta1.MsgSubmitProposal:\n    type: object\n    properties:\n      content:\n        description: content is the proposal's content.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      initial_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: >-\n          initial_deposit is the deposit value that must be paid at proposal\n          submission.\n      proposer:\n        type: string\n        description: proposer is the account address of the proposer.\n    description: >-\n      MsgSubmitProposal defines an sdk.Msg type that supports submitting\n      arbitrary\n\n      proposal Content.\n  cosmos.gov.v1beta1.MsgSubmitProposalResponse:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n    description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.\n  cosmos.gov.v1beta1.MsgVote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address for the proposal.\n      option:\n        description: option defines the vote option.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n    description: MsgVote defines a message to cast a vote.\n  cosmos.gov.v1beta1.MsgVoteResponse:\n    type: object\n    description: MsgVoteResponse defines the Msg/Vote response type.\n  cosmos.gov.v1beta1.MsgVoteWeighted:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address for the proposal.\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              description: >-\n                option defines the valid vote options, it must not contain\n                duplicate vote options.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            weight:\n              type: string\n              description: weight is the vote weight associated with the vote option.\n          description: |-\n            WeightedVoteOption defines a unit of vote for vote split.\n\n            Since: cosmos-sdk 0.43\n        description: options defines the weighted vote options.\n    description: |-\n      MsgVoteWeighted defines a message to cast a vote.\n\n      Since: cosmos-sdk 0.43\n  cosmos.gov.v1beta1.MsgVoteWeightedResponse:\n    type: object\n    description: |-\n      MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.\n\n      Since: cosmos-sdk 0.43\n  cosmos.gov.v1beta1.VoteOption:\n    type: string\n    enum:\n      - VOTE_OPTION_UNSPECIFIED\n      - VOTE_OPTION_YES\n      - VOTE_OPTION_ABSTAIN\n      - VOTE_OPTION_NO\n      - VOTE_OPTION_NO_WITH_VETO\n    default: VOTE_OPTION_UNSPECIFIED\n    description: >-\n      VoteOption enumerates the valid vote options for a given governance\n      proposal.\n\n       - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n       - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n       - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n       - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n       - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.\n  cosmos.gov.v1beta1.WeightedVoteOption:\n    type: object\n    properties:\n      option:\n        description: >-\n          option defines the valid vote options, it must not contain duplicate\n          vote options.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      weight:\n        type: string\n        description: weight is the vote weight associated with the vote option.\n    description: |-\n      WeightedVoteOption defines a unit of vote for vote split.\n\n      Since: cosmos-sdk 0.43\n  cosmos.gov.v1beta1.Deposit:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      depositor:\n        type: string\n        description: depositor defines the deposit addresses from the proposals.\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: amount to be deposited by depositor.\n    description: |-\n      Deposit defines an amount deposited by an account address to an active\n      proposal.\n  cosmos.gov.v1beta1.DepositParams:\n    type: object\n    properties:\n      min_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: Minimum deposit for a proposal to enter voting period.\n      max_deposit_period:\n        type: string\n        description: >-\n          Maximum period for Atom holders to deposit on a proposal. Initial\n          value: 2\n\n          months.\n    description: DepositParams defines the params for deposits on governance proposals.\n  cosmos.gov.v1beta1.Proposal:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      content:\n        description: content is the proposal's content.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      status:\n        description: status defines the proposal status.\n        type: string\n        enum:\n          - PROPOSAL_STATUS_UNSPECIFIED\n          - PROPOSAL_STATUS_DEPOSIT_PERIOD\n          - PROPOSAL_STATUS_VOTING_PERIOD\n          - PROPOSAL_STATUS_PASSED\n          - PROPOSAL_STATUS_REJECTED\n          - PROPOSAL_STATUS_FAILED\n        default: PROPOSAL_STATUS_UNSPECIFIED\n      final_tally_result:\n        description: |-\n          final_tally_result is the final tally result of the proposal. When\n          querying a proposal via gRPC, this field is not populated until the\n          proposal's voting period has ended.\n        type: object\n        properties:\n          'yes':\n            type: string\n            description: yes is the number of yes votes on a proposal.\n          abstain:\n            type: string\n            description: abstain is the number of abstain votes on a proposal.\n          'no':\n            type: string\n            description: no is the number of no votes on a proposal.\n          no_with_veto:\n            type: string\n            description: no_with_veto is the number of no with veto votes on a proposal.\n      submit_time:\n        type: string\n        format: date-time\n        description: submit_time is the time of proposal submission.\n      deposit_end_time:\n        type: string\n        format: date-time\n        description: deposit_end_time is the end time for deposition.\n      total_deposit:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        description: total_deposit is the total deposit on the proposal.\n      voting_start_time:\n        type: string\n        format: date-time\n        description: voting_start_time is the starting time to vote on a proposal.\n      voting_end_time:\n        type: string\n        format: date-time\n        description: voting_end_time is the end time of voting on a proposal.\n    description: Proposal defines the core field members of a governance proposal.\n  cosmos.gov.v1beta1.ProposalStatus:\n    type: string\n    enum:\n      - PROPOSAL_STATUS_UNSPECIFIED\n      - PROPOSAL_STATUS_DEPOSIT_PERIOD\n      - PROPOSAL_STATUS_VOTING_PERIOD\n      - PROPOSAL_STATUS_PASSED\n      - PROPOSAL_STATUS_REJECTED\n      - PROPOSAL_STATUS_FAILED\n    default: PROPOSAL_STATUS_UNSPECIFIED\n    description: |-\n      ProposalStatus enumerates the valid statuses of a proposal.\n\n       - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n       - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\n      period.\n       - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\n      period.\n       - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\n      passed.\n       - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\n      been rejected.\n       - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\n      failed.\n  cosmos.gov.v1beta1.QueryDepositResponse:\n    type: object\n    properties:\n      deposit:\n        description: deposit defines the requested deposit.\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal_id defines the unique id of the proposal.\n          depositor:\n            type: string\n            description: depositor defines the deposit addresses from the proposals.\n          amount:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: amount to be deposited by depositor.\n    description: >-\n      QueryDepositResponse is the response type for the Query/Deposit RPC\n      method.\n  cosmos.gov.v1beta1.QueryDepositsResponse:\n    type: object\n    properties:\n      deposits:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal_id defines the unique id of the proposal.\n            depositor:\n              type: string\n              description: depositor defines the deposit addresses from the proposals.\n            amount:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n              description: amount to be deposited by depositor.\n          description: >-\n            Deposit defines an amount deposited by an account address to an\n            active\n\n            proposal.\n        description: deposits defines the requested deposits.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryDepositsResponse is the response type for the Query/Deposits RPC\n      method.\n  cosmos.gov.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      voting_params:\n        description: voting_params defines the parameters related to voting.\n        type: object\n        properties:\n          voting_period:\n            type: string\n            description: Duration of the voting period.\n      deposit_params:\n        description: deposit_params defines the parameters related to deposit.\n        type: object\n        properties:\n          min_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: Minimum deposit for a proposal to enter voting period.\n          max_deposit_period:\n            type: string\n            description: >-\n              Maximum period for Atom holders to deposit on a proposal. Initial\n              value: 2\n\n              months.\n      tally_params:\n        description: tally_params defines the parameters related to tally.\n        type: object\n        properties:\n          quorum:\n            type: string\n            format: byte\n            description: >-\n              Minimum percentage of total stake needed to vote for a result to\n              be\n\n              considered valid.\n          threshold:\n            type: string\n            format: byte\n            description: >-\n              Minimum proportion of Yes votes for proposal to pass. Default\n              value: 0.5.\n          veto_threshold:\n            type: string\n            format: byte\n            description: >-\n              Minimum value of Veto votes to Total votes ratio for proposal to\n              be\n\n              vetoed. Default value: 1/3.\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  cosmos.gov.v1beta1.QueryProposalResponse:\n    type: object\n    properties:\n      proposal:\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal_id defines the unique id of the proposal.\n          content:\n            description: content is the proposal's content.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          status:\n            description: status defines the proposal status.\n            type: string\n            enum:\n              - PROPOSAL_STATUS_UNSPECIFIED\n              - PROPOSAL_STATUS_DEPOSIT_PERIOD\n              - PROPOSAL_STATUS_VOTING_PERIOD\n              - PROPOSAL_STATUS_PASSED\n              - PROPOSAL_STATUS_REJECTED\n              - PROPOSAL_STATUS_FAILED\n            default: PROPOSAL_STATUS_UNSPECIFIED\n          final_tally_result:\n            description: >-\n              final_tally_result is the final tally result of the proposal. When\n\n              querying a proposal via gRPC, this field is not populated until\n              the\n\n              proposal's voting period has ended.\n            type: object\n            properties:\n              'yes':\n                type: string\n                description: yes is the number of yes votes on a proposal.\n              abstain:\n                type: string\n                description: abstain is the number of abstain votes on a proposal.\n              'no':\n                type: string\n                description: no is the number of no votes on a proposal.\n              no_with_veto:\n                type: string\n                description: >-\n                  no_with_veto is the number of no with veto votes on a\n                  proposal.\n          submit_time:\n            type: string\n            format: date-time\n            description: submit_time is the time of proposal submission.\n          deposit_end_time:\n            type: string\n            format: date-time\n            description: deposit_end_time is the end time for deposition.\n          total_deposit:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            description: total_deposit is the total deposit on the proposal.\n          voting_start_time:\n            type: string\n            format: date-time\n            description: voting_start_time is the starting time to vote on a proposal.\n          voting_end_time:\n            type: string\n            format: date-time\n            description: voting_end_time is the end time of voting on a proposal.\n        description: Proposal defines the core field members of a governance proposal.\n    description: >-\n      QueryProposalResponse is the response type for the Query/Proposal RPC\n      method.\n  cosmos.gov.v1beta1.QueryProposalsResponse:\n    type: object\n    properties:\n      proposals:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal_id defines the unique id of the proposal.\n            content:\n              description: content is the proposal's content.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            status:\n              description: status defines the proposal status.\n              type: string\n              enum:\n                - PROPOSAL_STATUS_UNSPECIFIED\n                - PROPOSAL_STATUS_DEPOSIT_PERIOD\n                - PROPOSAL_STATUS_VOTING_PERIOD\n                - PROPOSAL_STATUS_PASSED\n                - PROPOSAL_STATUS_REJECTED\n                - PROPOSAL_STATUS_FAILED\n              default: PROPOSAL_STATUS_UNSPECIFIED\n            final_tally_result:\n              description: >-\n                final_tally_result is the final tally result of the proposal.\n                When\n\n                querying a proposal via gRPC, this field is not populated until\n                the\n\n                proposal's voting period has ended.\n              type: object\n              properties:\n                'yes':\n                  type: string\n                  description: yes is the number of yes votes on a proposal.\n                abstain:\n                  type: string\n                  description: abstain is the number of abstain votes on a proposal.\n                'no':\n                  type: string\n                  description: no is the number of no votes on a proposal.\n                no_with_veto:\n                  type: string\n                  description: >-\n                    no_with_veto is the number of no with veto votes on a\n                    proposal.\n            submit_time:\n              type: string\n              format: date-time\n              description: submit_time is the time of proposal submission.\n            deposit_end_time:\n              type: string\n              format: date-time\n              description: deposit_end_time is the end time for deposition.\n            total_deposit:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n              description: total_deposit is the total deposit on the proposal.\n            voting_start_time:\n              type: string\n              format: date-time\n              description: voting_start_time is the starting time to vote on a proposal.\n            voting_end_time:\n              type: string\n              format: date-time\n              description: voting_end_time is the end time of voting on a proposal.\n          description: Proposal defines the core field members of a governance proposal.\n        description: proposals defines all the requested governance proposals.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryProposalsResponse is the response type for the Query/Proposals RPC\n      method.\n  cosmos.gov.v1beta1.QueryTallyResultResponse:\n    type: object\n    properties:\n      tally:\n        description: tally defines the requested tally.\n        type: object\n        properties:\n          'yes':\n            type: string\n            description: yes is the number of yes votes on a proposal.\n          abstain:\n            type: string\n            description: abstain is the number of abstain votes on a proposal.\n          'no':\n            type: string\n            description: no is the number of no votes on a proposal.\n          no_with_veto:\n            type: string\n            description: no_with_veto is the number of no with veto votes on a proposal.\n    description: >-\n      QueryTallyResultResponse is the response type for the Query/Tally RPC\n      method.\n  cosmos.gov.v1beta1.QueryVoteResponse:\n    type: object\n    properties:\n      vote:\n        description: vote defines the queried vote.\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal_id defines the unique id of the proposal.\n          voter:\n            type: string\n            description: voter is the voter address of the proposal.\n          option:\n            description: >-\n              Deprecated: Prefer to use `options` instead. This field is set in\n              queries\n\n              if and only if `len(options) == 1` and that option has weight 1.\n              In all\n\n              other cases, this field will default to VOTE_OPTION_UNSPECIFIED.\n            type: string\n            enum:\n              - VOTE_OPTION_UNSPECIFIED\n              - VOTE_OPTION_YES\n              - VOTE_OPTION_ABSTAIN\n              - VOTE_OPTION_NO\n              - VOTE_OPTION_NO_WITH_VETO\n            default: VOTE_OPTION_UNSPECIFIED\n          options:\n            type: array\n            items:\n              type: object\n              properties:\n                option:\n                  description: >-\n                    option defines the valid vote options, it must not contain\n                    duplicate vote options.\n                  type: string\n                  enum:\n                    - VOTE_OPTION_UNSPECIFIED\n                    - VOTE_OPTION_YES\n                    - VOTE_OPTION_ABSTAIN\n                    - VOTE_OPTION_NO\n                    - VOTE_OPTION_NO_WITH_VETO\n                  default: VOTE_OPTION_UNSPECIFIED\n                weight:\n                  type: string\n                  description: weight is the vote weight associated with the vote option.\n              description: |-\n                WeightedVoteOption defines a unit of vote for vote split.\n\n                Since: cosmos-sdk 0.43\n            description: |-\n              options is the weighted vote options.\n\n              Since: cosmos-sdk 0.43\n    description: QueryVoteResponse is the response type for the Query/Vote RPC method.\n  cosmos.gov.v1beta1.QueryVotesResponse:\n    type: object\n    properties:\n      votes:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal_id defines the unique id of the proposal.\n            voter:\n              type: string\n              description: voter is the voter address of the proposal.\n            option:\n              description: >-\n                Deprecated: Prefer to use `options` instead. This field is set\n                in queries\n\n                if and only if `len(options) == 1` and that option has weight 1.\n                In all\n\n                other cases, this field will default to VOTE_OPTION_UNSPECIFIED.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            options:\n              type: array\n              items:\n                type: object\n                properties:\n                  option:\n                    description: >-\n                      option defines the valid vote options, it must not contain\n                      duplicate vote options.\n                    type: string\n                    enum:\n                      - VOTE_OPTION_UNSPECIFIED\n                      - VOTE_OPTION_YES\n                      - VOTE_OPTION_ABSTAIN\n                      - VOTE_OPTION_NO\n                      - VOTE_OPTION_NO_WITH_VETO\n                    default: VOTE_OPTION_UNSPECIFIED\n                  weight:\n                    type: string\n                    description: weight is the vote weight associated with the vote option.\n                description: |-\n                  WeightedVoteOption defines a unit of vote for vote split.\n\n                  Since: cosmos-sdk 0.43\n              description: |-\n                options is the weighted vote options.\n\n                Since: cosmos-sdk 0.43\n          description: |-\n            Vote defines a vote on a governance proposal.\n            A Vote consists of a proposal ID, the voter, and the vote option.\n        description: votes defines the queried votes.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryVotesResponse is the response type for the Query/Votes RPC method.\n  cosmos.gov.v1beta1.TallyParams:\n    type: object\n    properties:\n      quorum:\n        type: string\n        format: byte\n        description: |-\n          Minimum percentage of total stake needed to vote for a result to be\n          considered valid.\n      threshold:\n        type: string\n        format: byte\n        description: >-\n          Minimum proportion of Yes votes for proposal to pass. Default value:\n          0.5.\n      veto_threshold:\n        type: string\n        format: byte\n        description: |-\n          Minimum value of Veto votes to Total votes ratio for proposal to be\n          vetoed. Default value: 1/3.\n    description: TallyParams defines the params for tallying votes on governance proposals.\n  cosmos.gov.v1beta1.TallyResult:\n    type: object\n    properties:\n      'yes':\n        type: string\n        description: yes is the number of yes votes on a proposal.\n      abstain:\n        type: string\n        description: abstain is the number of abstain votes on a proposal.\n      'no':\n        type: string\n        description: no is the number of no votes on a proposal.\n      no_with_veto:\n        type: string\n        description: no_with_veto is the number of no with veto votes on a proposal.\n    description: TallyResult defines a standard tally for a governance proposal.\n  cosmos.gov.v1beta1.Vote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal_id defines the unique id of the proposal.\n      voter:\n        type: string\n        description: voter is the voter address of the proposal.\n      option:\n        description: >-\n          Deprecated: Prefer to use `options` instead. This field is set in\n          queries\n\n          if and only if `len(options) == 1` and that option has weight 1. In\n          all\n\n          other cases, this field will default to VOTE_OPTION_UNSPECIFIED.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              description: >-\n                option defines the valid vote options, it must not contain\n                duplicate vote options.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            weight:\n              type: string\n              description: weight is the vote weight associated with the vote option.\n          description: |-\n            WeightedVoteOption defines a unit of vote for vote split.\n\n            Since: cosmos-sdk 0.43\n        description: |-\n          options is the weighted vote options.\n\n          Since: cosmos-sdk 0.43\n    description: |-\n      Vote defines a vote on a governance proposal.\n      A Vote consists of a proposal ID, the voter, and the vote option.\n  cosmos.gov.v1beta1.VotingParams:\n    type: object\n    properties:\n      voting_period:\n        type: string\n        description: Duration of the voting period.\n    description: VotingParams defines the params for voting on governance proposals.\n  cosmos.group.v1.Exec:\n    type: string\n    enum:\n      - EXEC_UNSPECIFIED\n      - EXEC_TRY\n    default: EXEC_UNSPECIFIED\n    description: |-\n      Exec defines modes of execution of a proposal on creation or on new vote.\n\n       - EXEC_UNSPECIFIED: An empty value means that there should be a separate\n      MsgExec request for the proposal to execute.\n       - EXEC_TRY: Try to execute the proposal immediately.\n      If the proposal is not allowed per the DecisionPolicy,\n      the proposal will still be open and could\n      be executed at a later point.\n  cosmos.group.v1.MemberRequest:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address is the member's account address.\n      weight:\n        type: string\n        description: weight is the member's voting weight that should be greater than 0.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the member.\n    description: |-\n      MemberRequest represents a group member to be used in Msg server requests.\n      Contrary to `Member`, it doesn't have any `added_at` field\n      since this field cannot be set as part of requests.\n  cosmos.group.v1.MsgCreateGroup:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      members:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address is the member's account address.\n            weight:\n              type: string\n              description: >-\n                weight is the member's voting weight that should be greater than\n                0.\n            metadata:\n              type: string\n              description: metadata is any arbitrary metadata attached to the member.\n          description: >-\n            MemberRequest represents a group member to be used in Msg server\n            requests.\n\n            Contrary to `Member`, it doesn't have any `added_at` field\n\n            since this field cannot be set as part of requests.\n        description: members defines the group members.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata to attached to the group.\n    description: MsgCreateGroup is the Msg/CreateGroup request type.\n  cosmos.group.v1.MsgCreateGroupPolicy:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the group policy.\n      decision_policy:\n        description: decision_policy specifies the group policy's decision policy.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.\n  cosmos.group.v1.MsgCreateGroupPolicyResponse:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address is the account address of the newly created group policy.\n    description: MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.\n  cosmos.group.v1.MsgCreateGroupResponse:\n    type: object\n    properties:\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the newly created group.\n    description: MsgCreateGroupResponse is the Msg/CreateGroup response type.\n  cosmos.group.v1.MsgCreateGroupWithPolicy:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group and group policy admin.\n      members:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address is the member's account address.\n            weight:\n              type: string\n              description: >-\n                weight is the member's voting weight that should be greater than\n                0.\n            metadata:\n              type: string\n              description: metadata is any arbitrary metadata attached to the member.\n          description: >-\n            MemberRequest represents a group member to be used in Msg server\n            requests.\n\n            Contrary to `Member`, it doesn't have any `added_at` field\n\n            since this field cannot be set as part of requests.\n        description: members defines the group members.\n      group_metadata:\n        type: string\n        description: group_metadata is any arbitrary metadata attached to the group.\n      group_policy_metadata:\n        type: string\n        description: >-\n          group_policy_metadata is any arbitrary metadata attached to the group\n          policy.\n      group_policy_as_admin:\n        type: boolean\n        description: >-\n          group_policy_as_admin is a boolean field, if set to true, the group\n          policy account address will be used as group\n\n          and group policy admin.\n      decision_policy:\n        description: decision_policy specifies the group policy's decision policy.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.\n  cosmos.group.v1.MsgCreateGroupWithPolicyResponse:\n    type: object\n    properties:\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the newly created group with policy.\n      group_policy_address:\n        type: string\n        description: >-\n          group_policy_address is the account address of the newly created group\n          policy.\n    description: >-\n      MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response\n      type.\n  cosmos.group.v1.MsgExec:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal is the unique ID of the proposal.\n      executor:\n        type: string\n        description: executor is the account address used to execute the proposal.\n    description: MsgExec is the Msg/Exec request type.\n  cosmos.group.v1.MsgExecResponse:\n    type: object\n    properties:\n      result:\n        description: result is the final result of the proposal execution.\n        type: string\n        enum:\n          - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n          - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n          - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n          - PROPOSAL_EXECUTOR_RESULT_FAILURE\n        default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n    description: MsgExecResponse is the Msg/Exec request type.\n  cosmos.group.v1.MsgLeaveGroup:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address is the account address of the group member.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n    description: MsgLeaveGroup is the Msg/LeaveGroup request type.\n  cosmos.group.v1.MsgLeaveGroupResponse:\n    type: object\n    description: MsgLeaveGroupResponse is the Msg/LeaveGroup response type.\n  cosmos.group.v1.MsgSubmitProposal:\n    type: object\n    properties:\n      group_policy_address:\n        type: string\n        description: group_policy_address is the account address of group policy.\n      proposers:\n        type: array\n        items:\n          type: string\n        description: |-\n          proposers are the account addresses of the proposers.\n          Proposers signatures will be counted as yes votes.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the proposal.\n      messages:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: >-\n          messages is a list of `sdk.Msg`s that will be executed if the proposal\n          passes.\n      exec:\n        description: |-\n          exec defines the mode of execution of the proposal,\n          whether it should be executed immediately on creation or not.\n          If so, proposers signatures are considered as Yes votes.\n        type: string\n        enum:\n          - EXEC_UNSPECIFIED\n          - EXEC_TRY\n        default: EXEC_UNSPECIFIED\n      title:\n        type: string\n        description: |-\n          title is the title of the proposal.\n\n          Since: cosmos-sdk 0.47\n      summary:\n        type: string\n        description: |-\n          summary is the summary of the proposal.\n\n          Since: cosmos-sdk 0.47\n    description: MsgSubmitProposal is the Msg/SubmitProposal request type.\n  cosmos.group.v1.MsgSubmitProposalResponse:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal is the unique ID of the proposal.\n    description: MsgSubmitProposalResponse is the Msg/SubmitProposal response type.\n  cosmos.group.v1.MsgUpdateGroupAdmin:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the current account address of the group admin.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      new_admin:\n        type: string\n        description: new_admin is the group new admin account address.\n    description: MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.\n  cosmos.group.v1.MsgUpdateGroupAdminResponse:\n    type: object\n    description: MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.\n  cosmos.group.v1.MsgUpdateGroupMembers:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      member_updates:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address is the member's account address.\n            weight:\n              type: string\n              description: >-\n                weight is the member's voting weight that should be greater than\n                0.\n            metadata:\n              type: string\n              description: metadata is any arbitrary metadata attached to the member.\n          description: >-\n            MemberRequest represents a group member to be used in Msg server\n            requests.\n\n            Contrary to `Member`, it doesn't have any `added_at` field\n\n            since this field cannot be set as part of requests.\n        description: |-\n          member_updates is the list of members to update,\n          set weight to 0 to remove a member.\n    description: MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.\n  cosmos.group.v1.MsgUpdateGroupMembersResponse:\n    type: object\n    description: MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.\n  cosmos.group.v1.MsgUpdateGroupMetadata:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      metadata:\n        type: string\n        description: metadata is the updated group's metadata.\n    description: MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.\n  cosmos.group.v1.MsgUpdateGroupMetadataResponse:\n    type: object\n    description: >-\n      MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response\n      type.\n  cosmos.group.v1.MsgUpdateGroupPolicyAdmin:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_policy_address:\n        type: string\n        description: group_policy_address is the account address of the group policy.\n      new_admin:\n        type: string\n        description: new_admin is the new group policy admin.\n    description: MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.\n  cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse:\n    type: object\n    description: >-\n      MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin\n      response type.\n  cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_policy_address:\n        type: string\n        description: group_policy_address is the account address of group policy.\n      decision_policy:\n        description: decision_policy is the updated group policy's decision policy.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: >-\n      MsgUpdateGroupPolicyDecisionPolicy is the\n      Msg/UpdateGroupPolicyDecisionPolicy request type.\n  cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse:\n    type: object\n    description: >-\n      MsgUpdateGroupPolicyDecisionPolicyResponse is the\n      Msg/UpdateGroupPolicyDecisionPolicy response type.\n  cosmos.group.v1.MsgUpdateGroupPolicyMetadata:\n    type: object\n    properties:\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      group_policy_address:\n        type: string\n        description: group_policy_address is the account address of group policy.\n      metadata:\n        type: string\n        description: metadata is the group policy metadata to be updated.\n    description: >-\n      MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request\n      type.\n  cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse:\n    type: object\n    description: >-\n      MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata\n      response type.\n  cosmos.group.v1.MsgVote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal is the unique ID of the proposal.\n      voter:\n        type: string\n        description: voter is the voter account address.\n      option:\n        description: option is the voter's choice on the proposal.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the vote.\n      exec:\n        description: |-\n          exec defines whether the proposal should be executed\n          immediately after voting or not.\n        type: string\n        enum:\n          - EXEC_UNSPECIFIED\n          - EXEC_TRY\n        default: EXEC_UNSPECIFIED\n    description: MsgVote is the Msg/Vote request type.\n  cosmos.group.v1.MsgVoteResponse:\n    type: object\n    description: MsgVoteResponse is the Msg/Vote response type.\n  cosmos.group.v1.MsgWithdrawProposal:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal is the unique ID of the proposal.\n      address:\n        type: string\n        description: >-\n          address is the admin of the group policy or one of the proposer of the\n          proposal.\n    description: MsgWithdrawProposal is the Msg/WithdrawProposal request type.\n  cosmos.group.v1.MsgWithdrawProposalResponse:\n    type: object\n    description: MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.\n  cosmos.group.v1.ProposalExecutorResult:\n    type: string\n    enum:\n      - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n      - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n      - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n      - PROPOSAL_EXECUTOR_RESULT_FAILURE\n    default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n    description: |-\n      ProposalExecutorResult defines types of proposal executor results.\n\n       - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n       - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n       - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n       - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.\n  cosmos.group.v1.VoteOption:\n    type: string\n    enum:\n      - VOTE_OPTION_UNSPECIFIED\n      - VOTE_OPTION_YES\n      - VOTE_OPTION_ABSTAIN\n      - VOTE_OPTION_NO\n      - VOTE_OPTION_NO_WITH_VETO\n    default: VOTE_OPTION_UNSPECIFIED\n    description: |-\n      VoteOption enumerates the valid vote options for a given proposal.\n\n       - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\n      return an error.\n       - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n       - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n       - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n       - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.\n  cosmos.group.v1.GroupInfo:\n    type: object\n    properties:\n      id:\n        type: string\n        format: uint64\n        description: id is the unique ID of the group.\n      admin:\n        type: string\n        description: admin is the account address of the group's admin.\n      metadata:\n        type: string\n        title: >-\n          metadata is any arbitrary metadata to attached to the group.\n\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/group#group-1\n      version:\n        type: string\n        format: uint64\n        title: >-\n          version is used to track changes to a group's membership structure\n          that\n\n          would break existing proposals. Whenever any members weight is\n          changed,\n\n          or any member is added or removed this version is incremented and will\n\n          cause proposals based on older versions of this group to fail\n      total_weight:\n        type: string\n        description: total_weight is the sum of the group members' weights.\n      created_at:\n        type: string\n        format: date-time\n        description: created_at is a timestamp specifying when a group was created.\n    description: GroupInfo represents the high-level on-chain information for a group.\n  cosmos.group.v1.GroupMember:\n    type: object\n    properties:\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      member:\n        description: member is the member data.\n        type: object\n        properties:\n          address:\n            type: string\n            description: address is the member's account address.\n          weight:\n            type: string\n            description: >-\n              weight is the member's voting weight that should be greater than\n              0.\n          metadata:\n            type: string\n            description: metadata is any arbitrary metadata attached to the member.\n          added_at:\n            type: string\n            format: date-time\n            description: added_at is a timestamp specifying when a member was added.\n    description: GroupMember represents the relationship between a group and a member.\n  cosmos.group.v1.GroupPolicyInfo:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address is the account address of group policy.\n      group_id:\n        type: string\n        format: uint64\n        description: group_id is the unique ID of the group.\n      admin:\n        type: string\n        description: admin is the account address of the group admin.\n      metadata:\n        type: string\n        title: |-\n          metadata is any arbitrary metadata attached to the group policy.\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n      version:\n        type: string\n        format: uint64\n        description: >-\n          version is used to track changes to a group's GroupPolicyInfo\n          structure that\n\n          would create a different result on a running proposal.\n      decision_policy:\n        description: decision_policy specifies the group policy's decision policy.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      created_at:\n        type: string\n        format: date-time\n        description: created_at is a timestamp specifying when a group policy was created.\n    description: >-\n      GroupPolicyInfo represents the high-level on-chain information for a group\n      policy.\n  cosmos.group.v1.Member:\n    type: object\n    properties:\n      address:\n        type: string\n        description: address is the member's account address.\n      weight:\n        type: string\n        description: weight is the member's voting weight that should be greater than 0.\n      metadata:\n        type: string\n        description: metadata is any arbitrary metadata attached to the member.\n      added_at:\n        type: string\n        format: date-time\n        description: added_at is a timestamp specifying when a member was added.\n    description: |-\n      Member represents a group member with an account address,\n      non-zero weight, metadata and added_at timestamp.\n  cosmos.group.v1.Proposal:\n    type: object\n    properties:\n      id:\n        type: string\n        format: uint64\n        description: id is the unique id of the proposal.\n      group_policy_address:\n        type: string\n        description: group_policy_address is the account address of group policy.\n      metadata:\n        type: string\n        title: |-\n          metadata is any arbitrary metadata attached to the proposal.\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/group#proposal-4\n      proposers:\n        type: array\n        items:\n          type: string\n        description: proposers are the account addresses of the proposers.\n      submit_time:\n        type: string\n        format: date-time\n        description: submit_time is a timestamp specifying when a proposal was submitted.\n      group_version:\n        type: string\n        format: uint64\n        description: |-\n          group_version tracks the version of the group at proposal submission.\n          This field is here for informational purposes only.\n      group_policy_version:\n        type: string\n        format: uint64\n        description: >-\n          group_policy_version tracks the version of the group policy at\n          proposal submission.\n\n          When a decision policy is changed, existing proposals from previous\n          policy\n\n          versions will become invalid with the `ABORTED` status.\n\n          This field is here for informational purposes only.\n      status:\n        description: >-\n          status represents the high level position in the life cycle of the\n          proposal. Initial value is Submitted.\n        type: string\n        enum:\n          - PROPOSAL_STATUS_UNSPECIFIED\n          - PROPOSAL_STATUS_SUBMITTED\n          - PROPOSAL_STATUS_ACCEPTED\n          - PROPOSAL_STATUS_REJECTED\n          - PROPOSAL_STATUS_ABORTED\n          - PROPOSAL_STATUS_WITHDRAWN\n        default: PROPOSAL_STATUS_UNSPECIFIED\n      final_tally_result:\n        description: >-\n          final_tally_result contains the sums of all weighted votes for this\n\n          proposal for each vote option. It is empty at submission, and only\n\n          populated after tallying, at voting period end or at proposal\n          execution,\n\n          whichever happens first.\n        type: object\n        properties:\n          yes_count:\n            type: string\n            description: yes_count is the weighted sum of yes votes.\n          abstain_count:\n            type: string\n            description: abstain_count is the weighted sum of abstainers.\n          no_count:\n            type: string\n            description: no_count is the weighted sum of no votes.\n          no_with_veto_count:\n            type: string\n            description: no_with_veto_count is the weighted sum of veto.\n      voting_period_end:\n        type: string\n        format: date-time\n        description: >-\n          voting_period_end is the timestamp before which voting must be done.\n\n          Unless a successful MsgExec is called before (to execute a proposal\n          whose\n\n          tally is successful before the voting period ends), tallying will be\n          done\n\n          at this point, and the `final_tally_result`and `status` fields will be\n\n          accordingly updated.\n      executor_result:\n        description: >-\n          executor_result is the final result of the proposal execution. Initial\n          value is NotRun.\n        type: string\n        enum:\n          - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n          - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n          - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n          - PROPOSAL_EXECUTOR_RESULT_FAILURE\n        default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n      messages:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: >-\n          messages is a list of `sdk.Msg`s that will be executed if the proposal\n          passes.\n      title:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: title is the title of the proposal\n      summary:\n        type: string\n        description: 'Since: cosmos-sdk 0.47'\n        title: summary is a short summary of the proposal\n    description: >-\n      Proposal defines a group proposal. Any member of a group can submit a\n      proposal\n\n      for a group policy to decide upon.\n\n      A proposal consists of a set of `sdk.Msg`s that will be executed if the\n      proposal\n\n      passes as well as some optional metadata associated with the proposal.\n  cosmos.group.v1.ProposalStatus:\n    type: string\n    enum:\n      - PROPOSAL_STATUS_UNSPECIFIED\n      - PROPOSAL_STATUS_SUBMITTED\n      - PROPOSAL_STATUS_ACCEPTED\n      - PROPOSAL_STATUS_REJECTED\n      - PROPOSAL_STATUS_ABORTED\n      - PROPOSAL_STATUS_WITHDRAWN\n    default: PROPOSAL_STATUS_UNSPECIFIED\n    description: |-\n      ProposalStatus defines proposal statuses.\n\n       - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n       - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n       - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\n      passes the group policy's decision policy.\n       - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\n      is rejected by the group policy's decision policy.\n       - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\n      final tally.\n       - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\n      When this happens the final status is Withdrawn.\n  cosmos.group.v1.QueryGroupInfoResponse:\n    type: object\n    properties:\n      info:\n        description: info is the GroupInfo of the group.\n        type: object\n        properties:\n          id:\n            type: string\n            format: uint64\n            description: id is the unique ID of the group.\n          admin:\n            type: string\n            description: admin is the account address of the group's admin.\n          metadata:\n            type: string\n            title: >-\n              metadata is any arbitrary metadata to attached to the group.\n\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/group#group-1\n          version:\n            type: string\n            format: uint64\n            title: >-\n              version is used to track changes to a group's membership structure\n              that\n\n              would break existing proposals. Whenever any members weight is\n              changed,\n\n              or any member is added or removed this version is incremented and\n              will\n\n              cause proposals based on older versions of this group to fail\n          total_weight:\n            type: string\n            description: total_weight is the sum of the group members' weights.\n          created_at:\n            type: string\n            format: date-time\n            description: created_at is a timestamp specifying when a group was created.\n    description: QueryGroupInfoResponse is the Query/GroupInfo response type.\n  cosmos.group.v1.QueryGroupMembersResponse:\n    type: object\n    properties:\n      members:\n        type: array\n        items:\n          type: object\n          properties:\n            group_id:\n              type: string\n              format: uint64\n              description: group_id is the unique ID of the group.\n            member:\n              description: member is the member data.\n              type: object\n              properties:\n                address:\n                  type: string\n                  description: address is the member's account address.\n                weight:\n                  type: string\n                  description: >-\n                    weight is the member's voting weight that should be greater\n                    than 0.\n                metadata:\n                  type: string\n                  description: metadata is any arbitrary metadata attached to the member.\n                added_at:\n                  type: string\n                  format: date-time\n                  description: added_at is a timestamp specifying when a member was added.\n          description: >-\n            GroupMember represents the relationship between a group and a\n            member.\n        description: members are the members of the group with given group_id.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type.\n  cosmos.group.v1.QueryGroupPoliciesByAdminResponse:\n    type: object\n    properties:\n      group_policies:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address is the account address of group policy.\n            group_id:\n              type: string\n              format: uint64\n              description: group_id is the unique ID of the group.\n            admin:\n              type: string\n              description: admin is the account address of the group admin.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata attached to the group policy.\n\n                the recommended format of the metadata is to be found here:\n\n                https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n            version:\n              type: string\n              format: uint64\n              description: >-\n                version is used to track changes to a group's GroupPolicyInfo\n                structure that\n\n                would create a different result on a running proposal.\n            decision_policy:\n              description: decision_policy specifies the group policy's decision policy.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            created_at:\n              type: string\n              format: date-time\n              description: >-\n                created_at is a timestamp specifying when a group policy was\n                created.\n          description: >-\n            GroupPolicyInfo represents the high-level on-chain information for a\n            group policy.\n        description: group_policies are the group policies info with provided admin.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin\n      response type.\n  cosmos.group.v1.QueryGroupPoliciesByGroupResponse:\n    type: object\n    properties:\n      group_policies:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n              description: address is the account address of group policy.\n            group_id:\n              type: string\n              format: uint64\n              description: group_id is the unique ID of the group.\n            admin:\n              type: string\n              description: admin is the account address of the group admin.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata attached to the group policy.\n\n                the recommended format of the metadata is to be found here:\n\n                https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n            version:\n              type: string\n              format: uint64\n              description: >-\n                version is used to track changes to a group's GroupPolicyInfo\n                structure that\n\n                would create a different result on a running proposal.\n            decision_policy:\n              description: decision_policy specifies the group policy's decision policy.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            created_at:\n              type: string\n              format: date-time\n              description: >-\n                created_at is a timestamp specifying when a group policy was\n                created.\n          description: >-\n            GroupPolicyInfo represents the high-level on-chain information for a\n            group policy.\n        description: >-\n          group_policies are the group policies info associated with the\n          provided group.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup\n      response type.\n  cosmos.group.v1.QueryGroupPolicyInfoResponse:\n    type: object\n    properties:\n      info:\n        description: info is the GroupPolicyInfo of the group policy.\n        type: object\n        properties:\n          address:\n            type: string\n            description: address is the account address of group policy.\n          group_id:\n            type: string\n            format: uint64\n            description: group_id is the unique ID of the group.\n          admin:\n            type: string\n            description: admin is the account address of the group admin.\n          metadata:\n            type: string\n            title: |-\n              metadata is any arbitrary metadata attached to the group policy.\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/group#decision-policy-1\n          version:\n            type: string\n            format: uint64\n            description: >-\n              version is used to track changes to a group's GroupPolicyInfo\n              structure that\n\n              would create a different result on a running proposal.\n          decision_policy:\n            description: decision_policy specifies the group policy's decision policy.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          created_at:\n            type: string\n            format: date-time\n            description: >-\n              created_at is a timestamp specifying when a group policy was\n              created.\n    description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.\n  cosmos.group.v1.QueryGroupsByAdminResponse:\n    type: object\n    properties:\n      groups:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              format: uint64\n              description: id is the unique ID of the group.\n            admin:\n              type: string\n              description: admin is the account address of the group's admin.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata to attached to the group.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#group-1\n            version:\n              type: string\n              format: uint64\n              title: >-\n                version is used to track changes to a group's membership\n                structure that\n\n                would break existing proposals. Whenever any members weight is\n                changed,\n\n                or any member is added or removed this version is incremented\n                and will\n\n                cause proposals based on older versions of this group to fail\n            total_weight:\n              type: string\n              description: total_weight is the sum of the group members' weights.\n            created_at:\n              type: string\n              format: date-time\n              description: created_at is a timestamp specifying when a group was created.\n          description: >-\n            GroupInfo represents the high-level on-chain information for a\n            group.\n        description: groups are the groups info with the provided admin.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response\n      type.\n  cosmos.group.v1.QueryGroupsByMemberResponse:\n    type: object\n    properties:\n      groups:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              format: uint64\n              description: id is the unique ID of the group.\n            admin:\n              type: string\n              description: admin is the account address of the group's admin.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata to attached to the group.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#group-1\n            version:\n              type: string\n              format: uint64\n              title: >-\n                version is used to track changes to a group's membership\n                structure that\n\n                would break existing proposals. Whenever any members weight is\n                changed,\n\n                or any member is added or removed this version is incremented\n                and will\n\n                cause proposals based on older versions of this group to fail\n            total_weight:\n              type: string\n              description: total_weight is the sum of the group members' weights.\n            created_at:\n              type: string\n              format: date-time\n              description: created_at is a timestamp specifying when a group was created.\n          description: >-\n            GroupInfo represents the high-level on-chain information for a\n            group.\n        description: groups are the groups info with the provided group member.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type.\n  cosmos.group.v1.QueryGroupsResponse:\n    type: object\n    properties:\n      groups:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              format: uint64\n              description: id is the unique ID of the group.\n            admin:\n              type: string\n              description: admin is the account address of the group's admin.\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata to attached to the group.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#group-1\n            version:\n              type: string\n              format: uint64\n              title: >-\n                version is used to track changes to a group's membership\n                structure that\n\n                would break existing proposals. Whenever any members weight is\n                changed,\n\n                or any member is added or removed this version is incremented\n                and will\n\n                cause proposals based on older versions of this group to fail\n            total_weight:\n              type: string\n              description: total_weight is the sum of the group members' weights.\n            created_at:\n              type: string\n              format: date-time\n              description: created_at is a timestamp specifying when a group was created.\n          description: >-\n            GroupInfo represents the high-level on-chain information for a\n            group.\n        description: '`groups` is all the groups present in state.'\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryGroupsResponse is the Query/Groups response type.\n\n      Since: cosmos-sdk 0.47.1\n  cosmos.group.v1.QueryProposalResponse:\n    type: object\n    properties:\n      proposal:\n        description: proposal is the proposal info.\n        type: object\n        properties:\n          id:\n            type: string\n            format: uint64\n            description: id is the unique id of the proposal.\n          group_policy_address:\n            type: string\n            description: group_policy_address is the account address of group policy.\n          metadata:\n            type: string\n            title: |-\n              metadata is any arbitrary metadata attached to the proposal.\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/group#proposal-4\n          proposers:\n            type: array\n            items:\n              type: string\n            description: proposers are the account addresses of the proposers.\n          submit_time:\n            type: string\n            format: date-time\n            description: >-\n              submit_time is a timestamp specifying when a proposal was\n              submitted.\n          group_version:\n            type: string\n            format: uint64\n            description: >-\n              group_version tracks the version of the group at proposal\n              submission.\n\n              This field is here for informational purposes only.\n          group_policy_version:\n            type: string\n            format: uint64\n            description: >-\n              group_policy_version tracks the version of the group policy at\n              proposal submission.\n\n              When a decision policy is changed, existing proposals from\n              previous policy\n\n              versions will become invalid with the `ABORTED` status.\n\n              This field is here for informational purposes only.\n          status:\n            description: >-\n              status represents the high level position in the life cycle of the\n              proposal. Initial value is Submitted.\n            type: string\n            enum:\n              - PROPOSAL_STATUS_UNSPECIFIED\n              - PROPOSAL_STATUS_SUBMITTED\n              - PROPOSAL_STATUS_ACCEPTED\n              - PROPOSAL_STATUS_REJECTED\n              - PROPOSAL_STATUS_ABORTED\n              - PROPOSAL_STATUS_WITHDRAWN\n            default: PROPOSAL_STATUS_UNSPECIFIED\n          final_tally_result:\n            description: >-\n              final_tally_result contains the sums of all weighted votes for\n              this\n\n              proposal for each vote option. It is empty at submission, and only\n\n              populated after tallying, at voting period end or at proposal\n              execution,\n\n              whichever happens first.\n            type: object\n            properties:\n              yes_count:\n                type: string\n                description: yes_count is the weighted sum of yes votes.\n              abstain_count:\n                type: string\n                description: abstain_count is the weighted sum of abstainers.\n              no_count:\n                type: string\n                description: no_count is the weighted sum of no votes.\n              no_with_veto_count:\n                type: string\n                description: no_with_veto_count is the weighted sum of veto.\n          voting_period_end:\n            type: string\n            format: date-time\n            description: >-\n              voting_period_end is the timestamp before which voting must be\n              done.\n\n              Unless a successful MsgExec is called before (to execute a\n              proposal whose\n\n              tally is successful before the voting period ends), tallying will\n              be done\n\n              at this point, and the `final_tally_result`and `status` fields\n              will be\n\n              accordingly updated.\n          executor_result:\n            description: >-\n              executor_result is the final result of the proposal execution.\n              Initial value is NotRun.\n            type: string\n            enum:\n              - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n              - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n              - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n              - PROPOSAL_EXECUTOR_RESULT_FAILURE\n            default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n          messages:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            description: >-\n              messages is a list of `sdk.Msg`s that will be executed if the\n              proposal passes.\n          title:\n            type: string\n            description: 'Since: cosmos-sdk 0.47'\n            title: title is the title of the proposal\n          summary:\n            type: string\n            description: 'Since: cosmos-sdk 0.47'\n            title: summary is a short summary of the proposal\n    description: QueryProposalResponse is the Query/Proposal response type.\n  cosmos.group.v1.QueryProposalsByGroupPolicyResponse:\n    type: object\n    properties:\n      proposals:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              format: uint64\n              description: id is the unique id of the proposal.\n            group_policy_address:\n              type: string\n              description: group_policy_address is the account address of group policy.\n            metadata:\n              type: string\n              title: |-\n                metadata is any arbitrary metadata attached to the proposal.\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#proposal-4\n            proposers:\n              type: array\n              items:\n                type: string\n              description: proposers are the account addresses of the proposers.\n            submit_time:\n              type: string\n              format: date-time\n              description: >-\n                submit_time is a timestamp specifying when a proposal was\n                submitted.\n            group_version:\n              type: string\n              format: uint64\n              description: >-\n                group_version tracks the version of the group at proposal\n                submission.\n\n                This field is here for informational purposes only.\n            group_policy_version:\n              type: string\n              format: uint64\n              description: >-\n                group_policy_version tracks the version of the group policy at\n                proposal submission.\n\n                When a decision policy is changed, existing proposals from\n                previous policy\n\n                versions will become invalid with the `ABORTED` status.\n\n                This field is here for informational purposes only.\n            status:\n              description: >-\n                status represents the high level position in the life cycle of\n                the proposal. Initial value is Submitted.\n              type: string\n              enum:\n                - PROPOSAL_STATUS_UNSPECIFIED\n                - PROPOSAL_STATUS_SUBMITTED\n                - PROPOSAL_STATUS_ACCEPTED\n                - PROPOSAL_STATUS_REJECTED\n                - PROPOSAL_STATUS_ABORTED\n                - PROPOSAL_STATUS_WITHDRAWN\n              default: PROPOSAL_STATUS_UNSPECIFIED\n            final_tally_result:\n              description: >-\n                final_tally_result contains the sums of all weighted votes for\n                this\n\n                proposal for each vote option. It is empty at submission, and\n                only\n\n                populated after tallying, at voting period end or at proposal\n                execution,\n\n                whichever happens first.\n              type: object\n              properties:\n                yes_count:\n                  type: string\n                  description: yes_count is the weighted sum of yes votes.\n                abstain_count:\n                  type: string\n                  description: abstain_count is the weighted sum of abstainers.\n                no_count:\n                  type: string\n                  description: no_count is the weighted sum of no votes.\n                no_with_veto_count:\n                  type: string\n                  description: no_with_veto_count is the weighted sum of veto.\n            voting_period_end:\n              type: string\n              format: date-time\n              description: >-\n                voting_period_end is the timestamp before which voting must be\n                done.\n\n                Unless a successful MsgExec is called before (to execute a\n                proposal whose\n\n                tally is successful before the voting period ends), tallying\n                will be done\n\n                at this point, and the `final_tally_result`and `status` fields\n                will be\n\n                accordingly updated.\n            executor_result:\n              description: >-\n                executor_result is the final result of the proposal execution.\n                Initial value is NotRun.\n              type: string\n              enum:\n                - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n                - PROPOSAL_EXECUTOR_RESULT_NOT_RUN\n                - PROPOSAL_EXECUTOR_RESULT_SUCCESS\n                - PROPOSAL_EXECUTOR_RESULT_FAILURE\n              default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED\n            messages:\n              type: array\n              items:\n                type: object\n                properties:\n                  '@type':\n                    type: string\n                    description: >-\n                      A URL/resource name that uniquely identifies the type of\n                      the serialized\n\n                      protocol buffer message. This string must contain at least\n\n                      one \"/\" character. The last segment of the URL's path must\n                      represent\n\n                      the fully qualified name of the type (as in\n\n                      `path/google.protobuf.Duration`). The name should be in a\n                      canonical form\n\n                      (e.g., leading \".\" is not accepted).\n\n\n                      In practice, teams usually precompile into the binary all\n                      types that they\n\n                      expect it to use in the context of Any. However, for URLs\n                      which use the\n\n                      scheme `http`, `https`, or no scheme, one can optionally\n                      set up a type\n\n                      server that maps type URLs to message definitions as\n                      follows:\n\n\n                      * If no scheme is provided, `https` is assumed.\n\n                      * An HTTP GET on the URL must yield a\n                      [google.protobuf.Type][]\n                        value in binary format, or produce an error.\n                      * Applications are allowed to cache lookup results based\n                      on the\n                        URL, or have them precompiled into a binary to avoid any\n                        lookup. Therefore, binary compatibility needs to be preserved\n                        on changes to types. (Use versioned type names to manage\n                        breaking changes.)\n\n                      Note: this functionality is not currently available in the\n                      official\n\n                      protobuf release, and it is not used for type URLs\n                      beginning with\n\n                      type.googleapis.com.\n\n\n                      Schemes other than `http`, `https` (or the empty scheme)\n                      might be\n\n                      used with implementation specific semantics.\n                additionalProperties: {}\n                description: >-\n                  `Any` contains an arbitrary serialized protocol buffer message\n                  along with a\n\n                  URL that describes the type of the serialized message.\n\n\n                  Protobuf library provides support to pack/unpack Any values in\n                  the form\n\n                  of utility functions or additional generated methods of the\n                  Any type.\n\n\n                  Example 1: Pack and unpack a message in C++.\n\n                      Foo foo = ...;\n                      Any any;\n                      any.PackFrom(foo);\n                      ...\n                      if (any.UnpackTo(&foo)) {\n                        ...\n                      }\n\n                  Example 2: Pack and unpack a message in Java.\n\n                      Foo foo = ...;\n                      Any any = Any.pack(foo);\n                      ...\n                      if (any.is(Foo.class)) {\n                        foo = any.unpack(Foo.class);\n                      }\n                      // or ...\n                      if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                        foo = any.unpack(Foo.getDefaultInstance());\n                      }\n\n                  Example 3: Pack and unpack a message in Python.\n\n                      foo = Foo(...)\n                      any = Any()\n                      any.Pack(foo)\n                      ...\n                      if any.Is(Foo.DESCRIPTOR):\n                        any.Unpack(foo)\n                        ...\n\n                  Example 4: Pack and unpack a message in Go\n\n                       foo := &pb.Foo{...}\n                       any, err := anypb.New(foo)\n                       if err != nil {\n                         ...\n                       }\n                       ...\n                       foo := &pb.Foo{}\n                       if err := any.UnmarshalTo(foo); err != nil {\n                         ...\n                       }\n\n                  The pack methods provided by protobuf library will by default\n                  use\n\n                  'type.googleapis.com/full.type.name' as the type URL and the\n                  unpack\n\n                  methods only use the fully qualified type name after the last\n                  '/'\n\n                  in the type URL, for example \"foo.bar.com/x/y.z\" will yield\n                  type\n\n                  name \"y.z\".\n\n\n                  JSON\n\n\n                  The JSON representation of an `Any` value uses the regular\n\n                  representation of the deserialized, embedded message, with an\n\n                  additional field `@type` which contains the type URL. Example:\n\n                      package google.profile;\n                      message Person {\n                        string first_name = 1;\n                        string last_name = 2;\n                      }\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.profile.Person\",\n                        \"firstName\": <string>,\n                        \"lastName\": <string>\n                      }\n\n                  If the embedded message type is well-known and has a custom\n                  JSON\n\n                  representation, that representation will be embedded adding a\n                  field\n\n                  `value` which holds the custom JSON in addition to the `@type`\n\n                  field. Example (for message [google.protobuf.Duration][]):\n\n                      {\n                        \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                        \"value\": \"1.212s\"\n                      }\n              description: >-\n                messages is a list of `sdk.Msg`s that will be executed if the\n                proposal passes.\n            title:\n              type: string\n              description: 'Since: cosmos-sdk 0.47'\n              title: title is the title of the proposal\n            summary:\n              type: string\n              description: 'Since: cosmos-sdk 0.47'\n              title: summary is a short summary of the proposal\n          description: >-\n            Proposal defines a group proposal. Any member of a group can submit\n            a proposal\n\n            for a group policy to decide upon.\n\n            A proposal consists of a set of `sdk.Msg`s that will be executed if\n            the proposal\n\n            passes as well as some optional metadata associated with the\n            proposal.\n        description: proposals are the proposals with given group policy.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy\n      response type.\n  cosmos.group.v1.QueryTallyResultResponse:\n    type: object\n    properties:\n      tally:\n        description: tally defines the requested tally.\n        type: object\n        properties:\n          yes_count:\n            type: string\n            description: yes_count is the weighted sum of yes votes.\n          abstain_count:\n            type: string\n            description: abstain_count is the weighted sum of abstainers.\n          no_count:\n            type: string\n            description: no_count is the weighted sum of no votes.\n          no_with_veto_count:\n            type: string\n            description: no_with_veto_count is the weighted sum of veto.\n    description: QueryTallyResultResponse is the Query/TallyResult response type.\n  cosmos.group.v1.QueryVoteByProposalVoterResponse:\n    type: object\n    properties:\n      vote:\n        description: vote is the vote with given proposal_id and voter.\n        type: object\n        properties:\n          proposal_id:\n            type: string\n            format: uint64\n            description: proposal is the unique ID of the proposal.\n          voter:\n            type: string\n            description: voter is the account address of the voter.\n          option:\n            description: option is the voter's choice on the proposal.\n            type: string\n            enum:\n              - VOTE_OPTION_UNSPECIFIED\n              - VOTE_OPTION_YES\n              - VOTE_OPTION_ABSTAIN\n              - VOTE_OPTION_NO\n              - VOTE_OPTION_NO_WITH_VETO\n            default: VOTE_OPTION_UNSPECIFIED\n          metadata:\n            type: string\n            title: >-\n              metadata is any arbitrary metadata attached to the vote.\n\n              the recommended format of the metadata is to be found here:\n              https://docs.cosmos.network/v0.47/modules/group#vote-2\n          submit_time:\n            type: string\n            format: date-time\n            description: submit_time is the timestamp when the vote was submitted.\n        title: Vote represents a vote for a proposal.string metadata\n    description: >-\n      QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response\n      type.\n  cosmos.group.v1.QueryVotesByProposalResponse:\n    type: object\n    properties:\n      votes:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal is the unique ID of the proposal.\n            voter:\n              type: string\n              description: voter is the account address of the voter.\n            option:\n              description: option is the voter's choice on the proposal.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata attached to the vote.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#vote-2\n            submit_time:\n              type: string\n              format: date-time\n              description: submit_time is the timestamp when the vote was submitted.\n          title: Vote represents a vote for a proposal.string metadata\n        description: votes are the list of votes for given proposal_id.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryVotesByProposalResponse is the Query/VotesByProposal response type.\n  cosmos.group.v1.QueryVotesByVoterResponse:\n    type: object\n    properties:\n      votes:\n        type: array\n        items:\n          type: object\n          properties:\n            proposal_id:\n              type: string\n              format: uint64\n              description: proposal is the unique ID of the proposal.\n            voter:\n              type: string\n              description: voter is the account address of the voter.\n            option:\n              description: option is the voter's choice on the proposal.\n              type: string\n              enum:\n                - VOTE_OPTION_UNSPECIFIED\n                - VOTE_OPTION_YES\n                - VOTE_OPTION_ABSTAIN\n                - VOTE_OPTION_NO\n                - VOTE_OPTION_NO_WITH_VETO\n              default: VOTE_OPTION_UNSPECIFIED\n            metadata:\n              type: string\n              title: >-\n                metadata is any arbitrary metadata attached to the vote.\n\n                the recommended format of the metadata is to be found here:\n                https://docs.cosmos.network/v0.47/modules/group#vote-2\n            submit_time:\n              type: string\n              format: date-time\n              description: submit_time is the timestamp when the vote was submitted.\n          title: Vote represents a vote for a proposal.string metadata\n        description: votes are the list of votes by given voter.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: QueryVotesByVoterResponse is the Query/VotesByVoter response type.\n  cosmos.group.v1.TallyResult:\n    type: object\n    properties:\n      yes_count:\n        type: string\n        description: yes_count is the weighted sum of yes votes.\n      abstain_count:\n        type: string\n        description: abstain_count is the weighted sum of abstainers.\n      no_count:\n        type: string\n        description: no_count is the weighted sum of no votes.\n      no_with_veto_count:\n        type: string\n        description: no_with_veto_count is the weighted sum of veto.\n    description: TallyResult represents the sum of weighted votes for each vote option.\n  cosmos.group.v1.Vote:\n    type: object\n    properties:\n      proposal_id:\n        type: string\n        format: uint64\n        description: proposal is the unique ID of the proposal.\n      voter:\n        type: string\n        description: voter is the account address of the voter.\n      option:\n        description: option is the voter's choice on the proposal.\n        type: string\n        enum:\n          - VOTE_OPTION_UNSPECIFIED\n          - VOTE_OPTION_YES\n          - VOTE_OPTION_ABSTAIN\n          - VOTE_OPTION_NO\n          - VOTE_OPTION_NO_WITH_VETO\n        default: VOTE_OPTION_UNSPECIFIED\n      metadata:\n        type: string\n        title: >-\n          metadata is any arbitrary metadata attached to the vote.\n\n          the recommended format of the metadata is to be found here:\n          https://docs.cosmos.network/v0.47/modules/group#vote-2\n      submit_time:\n        type: string\n        format: date-time\n        description: submit_time is the timestamp when the vote was submitted.\n    title: Vote represents a vote for a proposal.string metadata\n  cosmos.mint.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/mint parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          mint_denom:\n            type: string\n            title: type of coin to mint\n          inflation_rate_change:\n            type: string\n            title: maximum annual change in inflation rate\n          inflation_max:\n            type: string\n            title: maximum inflation rate\n          inflation_min:\n            type: string\n            title: minimum inflation rate\n          goal_bonded:\n            type: string\n            title: goal of percent bonded atoms\n          blocks_per_year:\n            type: string\n            format: uint64\n            title: expected blocks per year\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.mint.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.mint.v1beta1.Params:\n    type: object\n    properties:\n      mint_denom:\n        type: string\n        title: type of coin to mint\n      inflation_rate_change:\n        type: string\n        title: maximum annual change in inflation rate\n      inflation_max:\n        type: string\n        title: maximum inflation rate\n      inflation_min:\n        type: string\n        title: minimum inflation rate\n      goal_bonded:\n        type: string\n        title: goal of percent bonded atoms\n      blocks_per_year:\n        type: string\n        format: uint64\n        title: expected blocks per year\n    description: Params defines the parameters for the x/mint module.\n  cosmos.mint.v1beta1.QueryAnnualProvisionsResponse:\n    type: object\n    properties:\n      annual_provisions:\n        type: string\n        format: byte\n        description: annual_provisions is the current minting annual provisions value.\n    description: |-\n      QueryAnnualProvisionsResponse is the response type for the\n      Query/AnnualProvisions RPC method.\n  cosmos.mint.v1beta1.QueryInflationResponse:\n    type: object\n    properties:\n      inflation:\n        type: string\n        format: byte\n        description: inflation is the current minting inflation value.\n    description: |-\n      QueryInflationResponse is the response type for the Query/Inflation RPC\n      method.\n  cosmos.mint.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          mint_denom:\n            type: string\n            title: type of coin to mint\n          inflation_rate_change:\n            type: string\n            title: maximum annual change in inflation rate\n          inflation_max:\n            type: string\n            title: maximum inflation rate\n          inflation_min:\n            type: string\n            title: minimum inflation rate\n          goal_bonded:\n            type: string\n            title: goal of percent bonded atoms\n          blocks_per_year:\n            type: string\n            format: uint64\n            title: expected blocks per year\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  cosmos.params.v1beta1.ParamChange:\n    type: object\n    properties:\n      subspace:\n        type: string\n      key:\n        type: string\n      value:\n        type: string\n    description: |-\n      ParamChange defines an individual parameter change, for use in\n      ParameterChangeProposal.\n  cosmos.params.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      param:\n        description: param defines the queried parameter.\n        type: object\n        properties:\n          subspace:\n            type: string\n          key:\n            type: string\n          value:\n            type: string\n    description: QueryParamsResponse is response type for the Query/Params RPC method.\n  cosmos.params.v1beta1.QuerySubspacesResponse:\n    type: object\n    properties:\n      subspaces:\n        type: array\n        items:\n          type: object\n          properties:\n            subspace:\n              type: string\n            keys:\n              type: array\n              items:\n                type: string\n          description: >-\n            Subspace defines a parameter subspace name and all the keys that\n            exist for\n\n            the subspace.\n\n\n            Since: cosmos-sdk 0.46\n    description: |-\n      QuerySubspacesResponse defines the response types for querying for all\n      registered subspaces and all keys for a subspace.\n\n      Since: cosmos-sdk 0.46\n  cosmos.params.v1beta1.Subspace:\n    type: object\n    properties:\n      subspace:\n        type: string\n      keys:\n        type: array\n        items:\n          type: string\n    description: |-\n      Subspace defines a parameter subspace name and all the keys that exist for\n      the subspace.\n\n      Since: cosmos-sdk 0.46\n  cosmos.slashing.v1beta1.MsgUnjail:\n    type: object\n    properties:\n      validator_addr:\n        type: string\n    title: MsgUnjail defines the Msg/Unjail request type\n  cosmos.slashing.v1beta1.MsgUnjailResponse:\n    type: object\n    title: MsgUnjailResponse defines the Msg/Unjail response type\n  cosmos.slashing.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/slashing parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          signed_blocks_window:\n            type: string\n            format: int64\n          min_signed_per_window:\n            type: string\n            format: byte\n          downtime_jail_duration:\n            type: string\n          slash_fraction_double_sign:\n            type: string\n            format: byte\n          slash_fraction_downtime:\n            type: string\n            format: byte\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.slashing.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.slashing.v1beta1.Params:\n    type: object\n    properties:\n      signed_blocks_window:\n        type: string\n        format: int64\n      min_signed_per_window:\n        type: string\n        format: byte\n      downtime_jail_duration:\n        type: string\n      slash_fraction_double_sign:\n        type: string\n        format: byte\n      slash_fraction_downtime:\n        type: string\n        format: byte\n    description: Params represents the parameters used for by the slashing module.\n  cosmos.slashing.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        type: object\n        properties:\n          signed_blocks_window:\n            type: string\n            format: int64\n          min_signed_per_window:\n            type: string\n            format: byte\n          downtime_jail_duration:\n            type: string\n          slash_fraction_double_sign:\n            type: string\n            format: byte\n          slash_fraction_downtime:\n            type: string\n            format: byte\n        description: Params represents the parameters used for by the slashing module.\n    title: QueryParamsResponse is the response type for the Query/Params RPC method\n  cosmos.slashing.v1beta1.QuerySigningInfoResponse:\n    type: object\n    properties:\n      val_signing_info:\n        title: val_signing_info is the signing info of requested val cons address\n        type: object\n        properties:\n          address:\n            type: string\n          start_height:\n            type: string\n            format: int64\n            title: Height at which validator was first a candidate OR was un-jailed\n          index_offset:\n            type: string\n            format: int64\n            description: >-\n              Index which is incremented every time a validator is bonded in a\n              block and\n\n              _may_ have signed a pre-commit or not. This in conjunction with\n              the\n\n              signed_blocks_window param determines the index in the missed\n              block bitmap.\n          jailed_until:\n            type: string\n            format: date-time\n            description: >-\n              Timestamp until which the validator is jailed due to liveness\n              downtime.\n          tombstoned:\n            type: boolean\n            description: >-\n              Whether or not a validator has been tombstoned (killed out of\n              validator\n\n              set). It is set once the validator commits an equivocation or for\n              any other\n\n              configured misbehavior.\n          missed_blocks_counter:\n            type: string\n            format: int64\n            description: >-\n              A counter of missed (unsigned) blocks. It is used to avoid\n              unnecessary\n\n              reads in the missed block bitmap.\n        description: >-\n          ValidatorSigningInfo defines a validator's signing info for monitoring\n          their\n\n          liveness activity.\n    title: >-\n      QuerySigningInfoResponse is the response type for the Query/SigningInfo\n      RPC\n\n      method\n  cosmos.slashing.v1beta1.QuerySigningInfosResponse:\n    type: object\n    properties:\n      info:\n        type: array\n        items:\n          type: object\n          properties:\n            address:\n              type: string\n            start_height:\n              type: string\n              format: int64\n              title: Height at which validator was first a candidate OR was un-jailed\n            index_offset:\n              type: string\n              format: int64\n              description: >-\n                Index which is incremented every time a validator is bonded in a\n                block and\n\n                _may_ have signed a pre-commit or not. This in conjunction with\n                the\n\n                signed_blocks_window param determines the index in the missed\n                block bitmap.\n            jailed_until:\n              type: string\n              format: date-time\n              description: >-\n                Timestamp until which the validator is jailed due to liveness\n                downtime.\n            tombstoned:\n              type: boolean\n              description: >-\n                Whether or not a validator has been tombstoned (killed out of\n                validator\n\n                set). It is set once the validator commits an equivocation or\n                for any other\n\n                configured misbehavior.\n            missed_blocks_counter:\n              type: string\n              format: int64\n              description: >-\n                A counter of missed (unsigned) blocks. It is used to avoid\n                unnecessary\n\n                reads in the missed block bitmap.\n          description: >-\n            ValidatorSigningInfo defines a validator's signing info for\n            monitoring their\n\n            liveness activity.\n        title: info is the signing info of all validators\n      pagination:\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n    title: >-\n      QuerySigningInfosResponse is the response type for the Query/SigningInfos\n      RPC\n\n      method\n  cosmos.slashing.v1beta1.ValidatorSigningInfo:\n    type: object\n    properties:\n      address:\n        type: string\n      start_height:\n        type: string\n        format: int64\n        title: Height at which validator was first a candidate OR was un-jailed\n      index_offset:\n        type: string\n        format: int64\n        description: >-\n          Index which is incremented every time a validator is bonded in a block\n          and\n\n          _may_ have signed a pre-commit or not. This in conjunction with the\n\n          signed_blocks_window param determines the index in the missed block\n          bitmap.\n      jailed_until:\n        type: string\n        format: date-time\n        description: >-\n          Timestamp until which the validator is jailed due to liveness\n          downtime.\n      tombstoned:\n        type: boolean\n        description: >-\n          Whether or not a validator has been tombstoned (killed out of\n          validator\n\n          set). It is set once the validator commits an equivocation or for any\n          other\n\n          configured misbehavior.\n      missed_blocks_counter:\n        type: string\n        format: int64\n        description: |-\n          A counter of missed (unsigned) blocks. It is used to avoid unnecessary\n          reads in the missed block bitmap.\n    description: >-\n      ValidatorSigningInfo defines a validator's signing info for monitoring\n      their\n\n      liveness activity.\n  cosmos.staking.v1beta1.BondStatus:\n    type: string\n    enum:\n      - BOND_STATUS_UNSPECIFIED\n      - BOND_STATUS_UNBONDED\n      - BOND_STATUS_UNBONDING\n      - BOND_STATUS_BONDED\n    default: BOND_STATUS_UNSPECIFIED\n    description: |-\n      BondStatus is the status of a validator.\n\n       - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n       - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n       - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n       - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.\n  cosmos.staking.v1beta1.Commission:\n    type: object\n    properties:\n      commission_rates:\n        description: >-\n          commission_rates defines the initial commission rates to be used for\n          creating a validator.\n        type: object\n        properties:\n          rate:\n            type: string\n            description: rate is the commission rate charged to delegators, as a fraction.\n          max_rate:\n            type: string\n            description: >-\n              max_rate defines the maximum commission rate which validator can\n              ever charge, as a fraction.\n          max_change_rate:\n            type: string\n            description: >-\n              max_change_rate defines the maximum daily increase of the\n              validator commission, as a fraction.\n      update_time:\n        type: string\n        format: date-time\n        description: update_time is the last time the commission rate was changed.\n    description: Commission defines commission parameters for a given validator.\n  cosmos.staking.v1beta1.CommissionRates:\n    type: object\n    properties:\n      rate:\n        type: string\n        description: rate is the commission rate charged to delegators, as a fraction.\n      max_rate:\n        type: string\n        description: >-\n          max_rate defines the maximum commission rate which validator can ever\n          charge, as a fraction.\n      max_change_rate:\n        type: string\n        description: >-\n          max_change_rate defines the maximum daily increase of the validator\n          commission, as a fraction.\n    description: >-\n      CommissionRates defines the initial commission rates to be used for\n      creating\n\n      a validator.\n  cosmos.staking.v1beta1.Delegation:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n        description: delegator_address is the encoded address of the delegator.\n      validator_address:\n        type: string\n        description: validator_address is the encoded address of the validator.\n      shares:\n        type: string\n        description: shares define the delegation shares received.\n    description: |-\n      Delegation represents the bond with tokens held by an account. It is\n      owned by one delegator, and is associated with the voting power of one\n      validator.\n  cosmos.staking.v1beta1.DelegationResponse:\n    type: object\n    properties:\n      delegation:\n        type: object\n        properties:\n          delegator_address:\n            type: string\n            description: delegator_address is the encoded address of the delegator.\n          validator_address:\n            type: string\n            description: validator_address is the encoded address of the validator.\n          shares:\n            type: string\n            description: shares define the delegation shares received.\n        description: |-\n          Delegation represents the bond with tokens held by an account. It is\n          owned by one delegator, and is associated with the voting power of one\n          validator.\n      balance:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: |-\n      DelegationResponse is equivalent to Delegation except that it contains a\n      balance in addition to shares which is more suitable for client responses.\n  cosmos.staking.v1beta1.Description:\n    type: object\n    properties:\n      moniker:\n        type: string\n        description: moniker defines a human-readable name for the validator.\n      identity:\n        type: string\n        description: >-\n          identity defines an optional identity signature (ex. UPort or\n          Keybase).\n      website:\n        type: string\n        description: website defines an optional website link.\n      security_contact:\n        type: string\n        description: security_contact defines an optional email for security contact.\n      details:\n        type: string\n        description: details define other optional details.\n    description: Description defines a validator description.\n  cosmos.staking.v1beta1.HistoricalInfo:\n    type: object\n    properties:\n      header:\n        type: object\n        properties:\n          version:\n            title: basic block info\n            type: object\n            properties:\n              block:\n                type: string\n                format: uint64\n              app:\n                type: string\n                format: uint64\n            description: >-\n              Consensus captures the consensus rules for processing a block in\n              the blockchain,\n\n              including all blockchain data structures and the rules of the\n              application's\n\n              state transition machine.\n          chain_id:\n            type: string\n          height:\n            type: string\n            format: int64\n          time:\n            type: string\n            format: date-time\n          last_block_id:\n            title: prev block info\n            type: object\n            properties:\n              hash:\n                type: string\n                format: byte\n              part_set_header:\n                type: object\n                properties:\n                  total:\n                    type: integer\n                    format: int64\n                  hash:\n                    type: string\n                    format: byte\n                title: PartsetHeader\n          last_commit_hash:\n            type: string\n            format: byte\n            description: commit from validators from the last block\n            title: hashes of block data\n          data_hash:\n            type: string\n            format: byte\n            title: transactions\n          validators_hash:\n            type: string\n            format: byte\n            description: validators for the current block\n            title: hashes from the app output from the prev block\n          next_validators_hash:\n            type: string\n            format: byte\n            title: validators for the next block\n          consensus_hash:\n            type: string\n            format: byte\n            title: consensus params for current block\n          app_hash:\n            type: string\n            format: byte\n            title: state after txs from the previous block\n          last_results_hash:\n            type: string\n            format: byte\n            title: root hash of all results from the txs from the previous block\n          evidence_hash:\n            type: string\n            format: byte\n            description: evidence included in the block\n            title: consensus info\n          proposer_address:\n            type: string\n            format: byte\n            title: original proposer of the block\n        description: Header defines the structure of a block header.\n      valset:\n        type: array\n        items:\n          type: object\n          properties:\n            operator_address:\n              type: string\n              description: >-\n                operator_address defines the address of the validator's\n                operator; bech encoded in JSON.\n            consensus_pubkey:\n              description: >-\n                consensus_pubkey is the consensus public key of the validator,\n                as a Protobuf Any.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            jailed:\n              type: boolean\n              description: >-\n                jailed defined whether the validator has been jailed from bonded\n                status or not.\n            status:\n              description: status is the validator status (bonded/unbonding/unbonded).\n              type: string\n              enum:\n                - BOND_STATUS_UNSPECIFIED\n                - BOND_STATUS_UNBONDED\n                - BOND_STATUS_UNBONDING\n                - BOND_STATUS_BONDED\n              default: BOND_STATUS_UNSPECIFIED\n            tokens:\n              type: string\n              description: tokens define the delegated tokens (incl. self-delegation).\n            delegator_shares:\n              type: string\n              description: >-\n                delegator_shares defines total shares issued to a validator's\n                delegators.\n            description:\n              description: description defines the description terms for the validator.\n              type: object\n              properties:\n                moniker:\n                  type: string\n                  description: moniker defines a human-readable name for the validator.\n                identity:\n                  type: string\n                  description: >-\n                    identity defines an optional identity signature (ex. UPort\n                    or Keybase).\n                website:\n                  type: string\n                  description: website defines an optional website link.\n                security_contact:\n                  type: string\n                  description: >-\n                    security_contact defines an optional email for security\n                    contact.\n                details:\n                  type: string\n                  description: details define other optional details.\n            unbonding_height:\n              type: string\n              format: int64\n              description: >-\n                unbonding_height defines, if unbonding, the height at which this\n                validator has begun unbonding.\n            unbonding_time:\n              type: string\n              format: date-time\n              description: >-\n                unbonding_time defines, if unbonding, the min time for the\n                validator to complete unbonding.\n            commission:\n              description: commission defines the commission parameters.\n              type: object\n              properties:\n                commission_rates:\n                  description: >-\n                    commission_rates defines the initial commission rates to be\n                    used for creating a validator.\n                  type: object\n                  properties:\n                    rate:\n                      type: string\n                      description: >-\n                        rate is the commission rate charged to delegators, as a\n                        fraction.\n                    max_rate:\n                      type: string\n                      description: >-\n                        max_rate defines the maximum commission rate which\n                        validator can ever charge, as a fraction.\n                    max_change_rate:\n                      type: string\n                      description: >-\n                        max_change_rate defines the maximum daily increase of\n                        the validator commission, as a fraction.\n                update_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    update_time is the last time the commission rate was\n                    changed.\n            min_self_delegation:\n              type: string\n              description: >-\n                min_self_delegation is the validator's self declared minimum\n                self delegation.\n\n\n                Since: cosmos-sdk 0.46\n            unbonding_on_hold_ref_count:\n              type: string\n              format: int64\n              title: >-\n                strictly positive if this validator's unbonding has been stopped\n                by external modules\n            unbonding_ids:\n              type: array\n              items:\n                type: string\n                format: uint64\n              title: >-\n                list of unbonding ids, each uniquely identifing an unbonding of\n                this validator\n          description: >-\n            Validator defines a validator, together with the total amount of the\n\n            Validator's bond shares and their exchange rate to coins. Slashing\n            results in\n\n            a decrease in the exchange rate, allowing correct calculation of\n            future\n\n            undelegations without iterating over delegators. When coins are\n            delegated to\n\n            this validator, the validator is credited with a delegation whose\n            number of\n\n            bond shares is based on the amount of coins delegated divided by the\n            current\n\n            exchange rate. Voting power can be calculated as total bonded shares\n\n            multiplied by exchange rate.\n    description: >-\n      HistoricalInfo contains header and validator information for a given\n      block.\n\n      It is stored as part of staking module's state, which persists the `n`\n      most\n\n      recent HistoricalInfo\n\n      (`n` is set by the staking module's `historical_entries` parameter).\n  cosmos.staking.v1beta1.Params:\n    type: object\n    properties:\n      unbonding_time:\n        type: string\n        description: unbonding_time is the time duration of unbonding.\n      max_validators:\n        type: integer\n        format: int64\n        description: max_validators is the maximum number of validators.\n      max_entries:\n        type: integer\n        format: int64\n        description: >-\n          max_entries is the max entries for either unbonding delegation or\n          redelegation (per pair/trio).\n      historical_entries:\n        type: integer\n        format: int64\n        description: historical_entries is the number of historical entries to persist.\n      bond_denom:\n        type: string\n        description: bond_denom defines the bondable coin denomination.\n      min_commission_rate:\n        type: string\n        title: >-\n          min_commission_rate is the chain-wide minimum commission rate that a\n          validator can charge their delegators\n    description: Params defines the parameters for the x/staking module.\n  cosmos.staking.v1beta1.Pool:\n    type: object\n    properties:\n      not_bonded_tokens:\n        type: string\n      bonded_tokens:\n        type: string\n    description: |-\n      Pool is used for tracking bonded and not-bonded token supply of the bond\n      denomination.\n  cosmos.staking.v1beta1.QueryDelegationResponse:\n    type: object\n    properties:\n      delegation_response:\n        description: delegation_responses defines the delegation info of a delegation.\n        type: object\n        properties:\n          delegation:\n            type: object\n            properties:\n              delegator_address:\n                type: string\n                description: delegator_address is the encoded address of the delegator.\n              validator_address:\n                type: string\n                description: validator_address is the encoded address of the validator.\n              shares:\n                type: string\n                description: shares define the delegation shares received.\n            description: >-\n              Delegation represents the bond with tokens held by an account. It\n              is\n\n              owned by one delegator, and is associated with the voting power of\n              one\n\n              validator.\n          balance:\n            type: object\n            properties:\n              denom:\n                type: string\n              amount:\n                type: string\n            description: >-\n              Coin defines a token with a denomination and an amount.\n\n\n              NOTE: The amount field is an Int which implements the custom\n              method\n\n              signatures required by gogoproto.\n    description: >-\n      QueryDelegationResponse is response type for the Query/Delegation RPC\n      method.\n  cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse:\n    type: object\n    properties:\n      delegation_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            delegation:\n              type: object\n              properties:\n                delegator_address:\n                  type: string\n                  description: delegator_address is the encoded address of the delegator.\n                validator_address:\n                  type: string\n                  description: validator_address is the encoded address of the validator.\n                shares:\n                  type: string\n                  description: shares define the delegation shares received.\n              description: >-\n                Delegation represents the bond with tokens held by an account.\n                It is\n\n                owned by one delegator, and is associated with the voting power\n                of one\n\n                validator.\n            balance:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n          description: >-\n            DelegationResponse is equivalent to Delegation except that it\n            contains a\n\n            balance in addition to shares which is more suitable for client\n            responses.\n        description: delegation_responses defines all the delegations' info of a delegator.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryDelegatorDelegationsResponse is response type for the\n      Query/DelegatorDelegations RPC method.\n  cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse:\n    type: object\n    properties:\n      unbonding_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            delegator_address:\n              type: string\n              description: delegator_address is the encoded address of the delegator.\n            validator_address:\n              type: string\n              description: validator_address is the encoded address of the validator.\n            entries:\n              type: array\n              items:\n                type: object\n                properties:\n                  creation_height:\n                    type: string\n                    format: int64\n                    description: >-\n                      creation_height is the height which the unbonding took\n                      place.\n                  completion_time:\n                    type: string\n                    format: date-time\n                    description: completion_time is the unix time for unbonding completion.\n                  initial_balance:\n                    type: string\n                    description: >-\n                      initial_balance defines the tokens initially scheduled to\n                      receive at completion.\n                  balance:\n                    type: string\n                    description: balance defines the tokens to receive at completion.\n                  unbonding_id:\n                    type: string\n                    format: uint64\n                    title: Incrementing id that uniquely identifies this entry\n                  unbonding_on_hold_ref_count:\n                    type: string\n                    format: int64\n                    title: >-\n                      Strictly positive if this entry's unbonding has been\n                      stopped by external modules\n                description: >-\n                  UnbondingDelegationEntry defines an unbonding object with\n                  relevant metadata.\n              description: |-\n                entries are the unbonding delegation entries.\n\n                unbonding delegation entries\n          description: >-\n            UnbondingDelegation stores all of a single delegator's unbonding\n            bonds\n\n            for a single validator in an time-ordered list.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryUnbondingDelegatorDelegationsResponse is response type for the\n      Query/UnbondingDelegatorDelegations RPC method.\n  cosmos.staking.v1beta1.QueryDelegatorValidatorResponse:\n    type: object\n    properties:\n      validator:\n        description: validator defines the validator info.\n        type: object\n        properties:\n          operator_address:\n            type: string\n            description: >-\n              operator_address defines the address of the validator's operator;\n              bech encoded in JSON.\n          consensus_pubkey:\n            description: >-\n              consensus_pubkey is the consensus public key of the validator, as\n              a Protobuf Any.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          jailed:\n            type: boolean\n            description: >-\n              jailed defined whether the validator has been jailed from bonded\n              status or not.\n          status:\n            description: status is the validator status (bonded/unbonding/unbonded).\n            type: string\n            enum:\n              - BOND_STATUS_UNSPECIFIED\n              - BOND_STATUS_UNBONDED\n              - BOND_STATUS_UNBONDING\n              - BOND_STATUS_BONDED\n            default: BOND_STATUS_UNSPECIFIED\n          tokens:\n            type: string\n            description: tokens define the delegated tokens (incl. self-delegation).\n          delegator_shares:\n            type: string\n            description: >-\n              delegator_shares defines total shares issued to a validator's\n              delegators.\n          description:\n            description: description defines the description terms for the validator.\n            type: object\n            properties:\n              moniker:\n                type: string\n                description: moniker defines a human-readable name for the validator.\n              identity:\n                type: string\n                description: >-\n                  identity defines an optional identity signature (ex. UPort or\n                  Keybase).\n              website:\n                type: string\n                description: website defines an optional website link.\n              security_contact:\n                type: string\n                description: >-\n                  security_contact defines an optional email for security\n                  contact.\n              details:\n                type: string\n                description: details define other optional details.\n          unbonding_height:\n            type: string\n            format: int64\n            description: >-\n              unbonding_height defines, if unbonding, the height at which this\n              validator has begun unbonding.\n          unbonding_time:\n            type: string\n            format: date-time\n            description: >-\n              unbonding_time defines, if unbonding, the min time for the\n              validator to complete unbonding.\n          commission:\n            description: commission defines the commission parameters.\n            type: object\n            properties:\n              commission_rates:\n                description: >-\n                  commission_rates defines the initial commission rates to be\n                  used for creating a validator.\n                type: object\n                properties:\n                  rate:\n                    type: string\n                    description: >-\n                      rate is the commission rate charged to delegators, as a\n                      fraction.\n                  max_rate:\n                    type: string\n                    description: >-\n                      max_rate defines the maximum commission rate which\n                      validator can ever charge, as a fraction.\n                  max_change_rate:\n                    type: string\n                    description: >-\n                      max_change_rate defines the maximum daily increase of the\n                      validator commission, as a fraction.\n              update_time:\n                type: string\n                format: date-time\n                description: update_time is the last time the commission rate was changed.\n          min_self_delegation:\n            type: string\n            description: >-\n              min_self_delegation is the validator's self declared minimum self\n              delegation.\n\n\n              Since: cosmos-sdk 0.46\n          unbonding_on_hold_ref_count:\n            type: string\n            format: int64\n            title: >-\n              strictly positive if this validator's unbonding has been stopped\n              by external modules\n          unbonding_ids:\n            type: array\n            items:\n              type: string\n              format: uint64\n            title: >-\n              list of unbonding ids, each uniquely identifing an unbonding of\n              this validator\n    description: |-\n      QueryDelegatorValidatorResponse response type for the\n      Query/DelegatorValidator RPC method.\n  cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse:\n    type: object\n    properties:\n      validators:\n        type: array\n        items:\n          type: object\n          properties:\n            operator_address:\n              type: string\n              description: >-\n                operator_address defines the address of the validator's\n                operator; bech encoded in JSON.\n            consensus_pubkey:\n              description: >-\n                consensus_pubkey is the consensus public key of the validator,\n                as a Protobuf Any.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            jailed:\n              type: boolean\n              description: >-\n                jailed defined whether the validator has been jailed from bonded\n                status or not.\n            status:\n              description: status is the validator status (bonded/unbonding/unbonded).\n              type: string\n              enum:\n                - BOND_STATUS_UNSPECIFIED\n                - BOND_STATUS_UNBONDED\n                - BOND_STATUS_UNBONDING\n                - BOND_STATUS_BONDED\n              default: BOND_STATUS_UNSPECIFIED\n            tokens:\n              type: string\n              description: tokens define the delegated tokens (incl. self-delegation).\n            delegator_shares:\n              type: string\n              description: >-\n                delegator_shares defines total shares issued to a validator's\n                delegators.\n            description:\n              description: description defines the description terms for the validator.\n              type: object\n              properties:\n                moniker:\n                  type: string\n                  description: moniker defines a human-readable name for the validator.\n                identity:\n                  type: string\n                  description: >-\n                    identity defines an optional identity signature (ex. UPort\n                    or Keybase).\n                website:\n                  type: string\n                  description: website defines an optional website link.\n                security_contact:\n                  type: string\n                  description: >-\n                    security_contact defines an optional email for security\n                    contact.\n                details:\n                  type: string\n                  description: details define other optional details.\n            unbonding_height:\n              type: string\n              format: int64\n              description: >-\n                unbonding_height defines, if unbonding, the height at which this\n                validator has begun unbonding.\n            unbonding_time:\n              type: string\n              format: date-time\n              description: >-\n                unbonding_time defines, if unbonding, the min time for the\n                validator to complete unbonding.\n            commission:\n              description: commission defines the commission parameters.\n              type: object\n              properties:\n                commission_rates:\n                  description: >-\n                    commission_rates defines the initial commission rates to be\n                    used for creating a validator.\n                  type: object\n                  properties:\n                    rate:\n                      type: string\n                      description: >-\n                        rate is the commission rate charged to delegators, as a\n                        fraction.\n                    max_rate:\n                      type: string\n                      description: >-\n                        max_rate defines the maximum commission rate which\n                        validator can ever charge, as a fraction.\n                    max_change_rate:\n                      type: string\n                      description: >-\n                        max_change_rate defines the maximum daily increase of\n                        the validator commission, as a fraction.\n                update_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    update_time is the last time the commission rate was\n                    changed.\n            min_self_delegation:\n              type: string\n              description: >-\n                min_self_delegation is the validator's self declared minimum\n                self delegation.\n\n\n                Since: cosmos-sdk 0.46\n            unbonding_on_hold_ref_count:\n              type: string\n              format: int64\n              title: >-\n                strictly positive if this validator's unbonding has been stopped\n                by external modules\n            unbonding_ids:\n              type: array\n              items:\n                type: string\n                format: uint64\n              title: >-\n                list of unbonding ids, each uniquely identifing an unbonding of\n                this validator\n          description: >-\n            Validator defines a validator, together with the total amount of the\n\n            Validator's bond shares and their exchange rate to coins. Slashing\n            results in\n\n            a decrease in the exchange rate, allowing correct calculation of\n            future\n\n            undelegations without iterating over delegators. When coins are\n            delegated to\n\n            this validator, the validator is credited with a delegation whose\n            number of\n\n            bond shares is based on the amount of coins delegated divided by the\n            current\n\n            exchange rate. Voting power can be calculated as total bonded shares\n\n            multiplied by exchange rate.\n        description: validators defines the validators' info of a delegator.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryDelegatorValidatorsResponse is response type for the\n      Query/DelegatorValidators RPC method.\n  cosmos.staking.v1beta1.QueryHistoricalInfoResponse:\n    type: object\n    properties:\n      hist:\n        description: hist defines the historical info at the given height.\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                title: prev block info\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                format: byte\n                title: original proposer of the block\n            description: Header defines the structure of a block header.\n          valset:\n            type: array\n            items:\n              type: object\n              properties:\n                operator_address:\n                  type: string\n                  description: >-\n                    operator_address defines the address of the validator's\n                    operator; bech encoded in JSON.\n                consensus_pubkey:\n                  description: >-\n                    consensus_pubkey is the consensus public key of the\n                    validator, as a Protobuf Any.\n                  type: object\n                  properties:\n                    '@type':\n                      type: string\n                      description: >-\n                        A URL/resource name that uniquely identifies the type of\n                        the serialized\n\n                        protocol buffer message. This string must contain at\n                        least\n\n                        one \"/\" character. The last segment of the URL's path\n                        must represent\n\n                        the fully qualified name of the type (as in\n\n                        `path/google.protobuf.Duration`). The name should be in\n                        a canonical form\n\n                        (e.g., leading \".\" is not accepted).\n\n\n                        In practice, teams usually precompile into the binary\n                        all types that they\n\n                        expect it to use in the context of Any. However, for\n                        URLs which use the\n\n                        scheme `http`, `https`, or no scheme, one can optionally\n                        set up a type\n\n                        server that maps type URLs to message definitions as\n                        follows:\n\n\n                        * If no scheme is provided, `https` is assumed.\n\n                        * An HTTP GET on the URL must yield a\n                        [google.protobuf.Type][]\n                          value in binary format, or produce an error.\n                        * Applications are allowed to cache lookup results based\n                        on the\n                          URL, or have them precompiled into a binary to avoid any\n                          lookup. Therefore, binary compatibility needs to be preserved\n                          on changes to types. (Use versioned type names to manage\n                          breaking changes.)\n\n                        Note: this functionality is not currently available in\n                        the official\n\n                        protobuf release, and it is not used for type URLs\n                        beginning with\n\n                        type.googleapis.com.\n\n\n                        Schemes other than `http`, `https` (or the empty scheme)\n                        might be\n\n                        used with implementation specific semantics.\n                  additionalProperties: {}\n                jailed:\n                  type: boolean\n                  description: >-\n                    jailed defined whether the validator has been jailed from\n                    bonded status or not.\n                status:\n                  description: status is the validator status (bonded/unbonding/unbonded).\n                  type: string\n                  enum:\n                    - BOND_STATUS_UNSPECIFIED\n                    - BOND_STATUS_UNBONDED\n                    - BOND_STATUS_UNBONDING\n                    - BOND_STATUS_BONDED\n                  default: BOND_STATUS_UNSPECIFIED\n                tokens:\n                  type: string\n                  description: tokens define the delegated tokens (incl. self-delegation).\n                delegator_shares:\n                  type: string\n                  description: >-\n                    delegator_shares defines total shares issued to a\n                    validator's delegators.\n                description:\n                  description: description defines the description terms for the validator.\n                  type: object\n                  properties:\n                    moniker:\n                      type: string\n                      description: moniker defines a human-readable name for the validator.\n                    identity:\n                      type: string\n                      description: >-\n                        identity defines an optional identity signature (ex.\n                        UPort or Keybase).\n                    website:\n                      type: string\n                      description: website defines an optional website link.\n                    security_contact:\n                      type: string\n                      description: >-\n                        security_contact defines an optional email for security\n                        contact.\n                    details:\n                      type: string\n                      description: details define other optional details.\n                unbonding_height:\n                  type: string\n                  format: int64\n                  description: >-\n                    unbonding_height defines, if unbonding, the height at which\n                    this validator has begun unbonding.\n                unbonding_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    unbonding_time defines, if unbonding, the min time for the\n                    validator to complete unbonding.\n                commission:\n                  description: commission defines the commission parameters.\n                  type: object\n                  properties:\n                    commission_rates:\n                      description: >-\n                        commission_rates defines the initial commission rates to\n                        be used for creating a validator.\n                      type: object\n                      properties:\n                        rate:\n                          type: string\n                          description: >-\n                            rate is the commission rate charged to delegators,\n                            as a fraction.\n                        max_rate:\n                          type: string\n                          description: >-\n                            max_rate defines the maximum commission rate which\n                            validator can ever charge, as a fraction.\n                        max_change_rate:\n                          type: string\n                          description: >-\n                            max_change_rate defines the maximum daily increase\n                            of the validator commission, as a fraction.\n                    update_time:\n                      type: string\n                      format: date-time\n                      description: >-\n                        update_time is the last time the commission rate was\n                        changed.\n                min_self_delegation:\n                  type: string\n                  description: >-\n                    min_self_delegation is the validator's self declared minimum\n                    self delegation.\n\n\n                    Since: cosmos-sdk 0.46\n                unbonding_on_hold_ref_count:\n                  type: string\n                  format: int64\n                  title: >-\n                    strictly positive if this validator's unbonding has been\n                    stopped by external modules\n                unbonding_ids:\n                  type: array\n                  items:\n                    type: string\n                    format: uint64\n                  title: >-\n                    list of unbonding ids, each uniquely identifing an unbonding\n                    of this validator\n              description: >-\n                Validator defines a validator, together with the total amount of\n                the\n\n                Validator's bond shares and their exchange rate to coins.\n                Slashing results in\n\n                a decrease in the exchange rate, allowing correct calculation of\n                future\n\n                undelegations without iterating over delegators. When coins are\n                delegated to\n\n                this validator, the validator is credited with a delegation\n                whose number of\n\n                bond shares is based on the amount of coins delegated divided by\n                the current\n\n                exchange rate. Voting power can be calculated as total bonded\n                shares\n\n                multiplied by exchange rate.\n    description: >-\n      QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo\n      RPC\n\n      method.\n  cosmos.staking.v1beta1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params holds all the parameters of this module.\n        type: object\n        properties:\n          unbonding_time:\n            type: string\n            description: unbonding_time is the time duration of unbonding.\n          max_validators:\n            type: integer\n            format: int64\n            description: max_validators is the maximum number of validators.\n          max_entries:\n            type: integer\n            format: int64\n            description: >-\n              max_entries is the max entries for either unbonding delegation or\n              redelegation (per pair/trio).\n          historical_entries:\n            type: integer\n            format: int64\n            description: historical_entries is the number of historical entries to persist.\n          bond_denom:\n            type: string\n            description: bond_denom defines the bondable coin denomination.\n          min_commission_rate:\n            type: string\n            title: >-\n              min_commission_rate is the chain-wide minimum commission rate that\n              a validator can charge their delegators\n    description: QueryParamsResponse is response type for the Query/Params RPC method.\n  cosmos.staking.v1beta1.QueryPoolResponse:\n    type: object\n    properties:\n      pool:\n        description: pool defines the pool info.\n        type: object\n        properties:\n          not_bonded_tokens:\n            type: string\n          bonded_tokens:\n            type: string\n    description: QueryPoolResponse is response type for the Query/Pool RPC method.\n  cosmos.staking.v1beta1.QueryRedelegationsResponse:\n    type: object\n    properties:\n      redelegation_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            redelegation:\n              type: object\n              properties:\n                delegator_address:\n                  type: string\n                  description: >-\n                    delegator_address is the bech32-encoded address of the\n                    delegator.\n                validator_src_address:\n                  type: string\n                  description: >-\n                    validator_src_address is the validator redelegation source\n                    operator address.\n                validator_dst_address:\n                  type: string\n                  description: >-\n                    validator_dst_address is the validator redelegation\n                    destination operator address.\n                entries:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      creation_height:\n                        type: string\n                        format: int64\n                        description: >-\n                          creation_height  defines the height which the\n                          redelegation took place.\n                      completion_time:\n                        type: string\n                        format: date-time\n                        description: >-\n                          completion_time defines the unix time for redelegation\n                          completion.\n                      initial_balance:\n                        type: string\n                        description: >-\n                          initial_balance defines the initial balance when\n                          redelegation started.\n                      shares_dst:\n                        type: string\n                        description: >-\n                          shares_dst is the amount of destination-validator\n                          shares created by redelegation.\n                      unbonding_id:\n                        type: string\n                        format: uint64\n                        title: Incrementing id that uniquely identifies this entry\n                      unbonding_on_hold_ref_count:\n                        type: string\n                        format: int64\n                        title: >-\n                          Strictly positive if this entry's unbonding has been\n                          stopped by external modules\n                    description: >-\n                      RedelegationEntry defines a redelegation object with\n                      relevant metadata.\n                  description: |-\n                    entries are the redelegation entries.\n\n                    redelegation entries\n              description: >-\n                Redelegation contains the list of a particular delegator's\n                redelegating bonds\n\n                from a particular source validator to a particular destination\n                validator.\n            entries:\n              type: array\n              items:\n                type: object\n                properties:\n                  redelegation_entry:\n                    type: object\n                    properties:\n                      creation_height:\n                        type: string\n                        format: int64\n                        description: >-\n                          creation_height  defines the height which the\n                          redelegation took place.\n                      completion_time:\n                        type: string\n                        format: date-time\n                        description: >-\n                          completion_time defines the unix time for redelegation\n                          completion.\n                      initial_balance:\n                        type: string\n                        description: >-\n                          initial_balance defines the initial balance when\n                          redelegation started.\n                      shares_dst:\n                        type: string\n                        description: >-\n                          shares_dst is the amount of destination-validator\n                          shares created by redelegation.\n                      unbonding_id:\n                        type: string\n                        format: uint64\n                        title: Incrementing id that uniquely identifies this entry\n                      unbonding_on_hold_ref_count:\n                        type: string\n                        format: int64\n                        title: >-\n                          Strictly positive if this entry's unbonding has been\n                          stopped by external modules\n                    description: >-\n                      RedelegationEntry defines a redelegation object with\n                      relevant metadata.\n                  balance:\n                    type: string\n                description: >-\n                  RedelegationEntryResponse is equivalent to a RedelegationEntry\n                  except that it\n\n                  contains a balance in addition to shares which is more\n                  suitable for client\n\n                  responses.\n          description: >-\n            RedelegationResponse is equivalent to a Redelegation except that its\n            entries\n\n            contain a balance in addition to shares which is more suitable for\n            client\n\n            responses.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryRedelegationsResponse is response type for the Query/Redelegations\n      RPC\n\n      method.\n  cosmos.staking.v1beta1.QueryUnbondingDelegationResponse:\n    type: object\n    properties:\n      unbond:\n        description: unbond defines the unbonding information of a delegation.\n        type: object\n        properties:\n          delegator_address:\n            type: string\n            description: delegator_address is the encoded address of the delegator.\n          validator_address:\n            type: string\n            description: validator_address is the encoded address of the validator.\n          entries:\n            type: array\n            items:\n              type: object\n              properties:\n                creation_height:\n                  type: string\n                  format: int64\n                  description: >-\n                    creation_height is the height which the unbonding took\n                    place.\n                completion_time:\n                  type: string\n                  format: date-time\n                  description: completion_time is the unix time for unbonding completion.\n                initial_balance:\n                  type: string\n                  description: >-\n                    initial_balance defines the tokens initially scheduled to\n                    receive at completion.\n                balance:\n                  type: string\n                  description: balance defines the tokens to receive at completion.\n                unbonding_id:\n                  type: string\n                  format: uint64\n                  title: Incrementing id that uniquely identifies this entry\n                unbonding_on_hold_ref_count:\n                  type: string\n                  format: int64\n                  title: >-\n                    Strictly positive if this entry's unbonding has been stopped\n                    by external modules\n              description: >-\n                UnbondingDelegationEntry defines an unbonding object with\n                relevant metadata.\n            description: |-\n              entries are the unbonding delegation entries.\n\n              unbonding delegation entries\n    description: |-\n      QueryDelegationResponse is response type for the Query/UnbondingDelegation\n      RPC method.\n  cosmos.staking.v1beta1.QueryValidatorDelegationsResponse:\n    type: object\n    properties:\n      delegation_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            delegation:\n              type: object\n              properties:\n                delegator_address:\n                  type: string\n                  description: delegator_address is the encoded address of the delegator.\n                validator_address:\n                  type: string\n                  description: validator_address is the encoded address of the validator.\n                shares:\n                  type: string\n                  description: shares define the delegation shares received.\n              description: >-\n                Delegation represents the bond with tokens held by an account.\n                It is\n\n                owned by one delegator, and is associated with the voting power\n                of one\n\n                validator.\n            balance:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n          description: >-\n            DelegationResponse is equivalent to Delegation except that it\n            contains a\n\n            balance in addition to shares which is more suitable for client\n            responses.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: |-\n      QueryValidatorDelegationsResponse is response type for the\n      Query/ValidatorDelegations RPC method\n  cosmos.staking.v1beta1.QueryValidatorResponse:\n    type: object\n    properties:\n      validator:\n        description: validator defines the validator info.\n        type: object\n        properties:\n          operator_address:\n            type: string\n            description: >-\n              operator_address defines the address of the validator's operator;\n              bech encoded in JSON.\n          consensus_pubkey:\n            description: >-\n              consensus_pubkey is the consensus public key of the validator, as\n              a Protobuf Any.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          jailed:\n            type: boolean\n            description: >-\n              jailed defined whether the validator has been jailed from bonded\n              status or not.\n          status:\n            description: status is the validator status (bonded/unbonding/unbonded).\n            type: string\n            enum:\n              - BOND_STATUS_UNSPECIFIED\n              - BOND_STATUS_UNBONDED\n              - BOND_STATUS_UNBONDING\n              - BOND_STATUS_BONDED\n            default: BOND_STATUS_UNSPECIFIED\n          tokens:\n            type: string\n            description: tokens define the delegated tokens (incl. self-delegation).\n          delegator_shares:\n            type: string\n            description: >-\n              delegator_shares defines total shares issued to a validator's\n              delegators.\n          description:\n            description: description defines the description terms for the validator.\n            type: object\n            properties:\n              moniker:\n                type: string\n                description: moniker defines a human-readable name for the validator.\n              identity:\n                type: string\n                description: >-\n                  identity defines an optional identity signature (ex. UPort or\n                  Keybase).\n              website:\n                type: string\n                description: website defines an optional website link.\n              security_contact:\n                type: string\n                description: >-\n                  security_contact defines an optional email for security\n                  contact.\n              details:\n                type: string\n                description: details define other optional details.\n          unbonding_height:\n            type: string\n            format: int64\n            description: >-\n              unbonding_height defines, if unbonding, the height at which this\n              validator has begun unbonding.\n          unbonding_time:\n            type: string\n            format: date-time\n            description: >-\n              unbonding_time defines, if unbonding, the min time for the\n              validator to complete unbonding.\n          commission:\n            description: commission defines the commission parameters.\n            type: object\n            properties:\n              commission_rates:\n                description: >-\n                  commission_rates defines the initial commission rates to be\n                  used for creating a validator.\n                type: object\n                properties:\n                  rate:\n                    type: string\n                    description: >-\n                      rate is the commission rate charged to delegators, as a\n                      fraction.\n                  max_rate:\n                    type: string\n                    description: >-\n                      max_rate defines the maximum commission rate which\n                      validator can ever charge, as a fraction.\n                  max_change_rate:\n                    type: string\n                    description: >-\n                      max_change_rate defines the maximum daily increase of the\n                      validator commission, as a fraction.\n              update_time:\n                type: string\n                format: date-time\n                description: update_time is the last time the commission rate was changed.\n          min_self_delegation:\n            type: string\n            description: >-\n              min_self_delegation is the validator's self declared minimum self\n              delegation.\n\n\n              Since: cosmos-sdk 0.46\n          unbonding_on_hold_ref_count:\n            type: string\n            format: int64\n            title: >-\n              strictly positive if this validator's unbonding has been stopped\n              by external modules\n          unbonding_ids:\n            type: array\n            items:\n              type: string\n              format: uint64\n            title: >-\n              list of unbonding ids, each uniquely identifing an unbonding of\n              this validator\n    title: QueryValidatorResponse is response type for the Query/Validator RPC method\n  cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse:\n    type: object\n    properties:\n      unbonding_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            delegator_address:\n              type: string\n              description: delegator_address is the encoded address of the delegator.\n            validator_address:\n              type: string\n              description: validator_address is the encoded address of the validator.\n            entries:\n              type: array\n              items:\n                type: object\n                properties:\n                  creation_height:\n                    type: string\n                    format: int64\n                    description: >-\n                      creation_height is the height which the unbonding took\n                      place.\n                  completion_time:\n                    type: string\n                    format: date-time\n                    description: completion_time is the unix time for unbonding completion.\n                  initial_balance:\n                    type: string\n                    description: >-\n                      initial_balance defines the tokens initially scheduled to\n                      receive at completion.\n                  balance:\n                    type: string\n                    description: balance defines the tokens to receive at completion.\n                  unbonding_id:\n                    type: string\n                    format: uint64\n                    title: Incrementing id that uniquely identifies this entry\n                  unbonding_on_hold_ref_count:\n                    type: string\n                    format: int64\n                    title: >-\n                      Strictly positive if this entry's unbonding has been\n                      stopped by external modules\n                description: >-\n                  UnbondingDelegationEntry defines an unbonding object with\n                  relevant metadata.\n              description: |-\n                entries are the unbonding delegation entries.\n\n                unbonding delegation entries\n          description: >-\n            UnbondingDelegation stores all of a single delegator's unbonding\n            bonds\n\n            for a single validator in an time-ordered list.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: |-\n      QueryValidatorUnbondingDelegationsResponse is response type for the\n      Query/ValidatorUnbondingDelegations RPC method.\n  cosmos.staking.v1beta1.QueryValidatorsResponse:\n    type: object\n    properties:\n      validators:\n        type: array\n        items:\n          type: object\n          properties:\n            operator_address:\n              type: string\n              description: >-\n                operator_address defines the address of the validator's\n                operator; bech encoded in JSON.\n            consensus_pubkey:\n              description: >-\n                consensus_pubkey is the consensus public key of the validator,\n                as a Protobuf Any.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            jailed:\n              type: boolean\n              description: >-\n                jailed defined whether the validator has been jailed from bonded\n                status or not.\n            status:\n              description: status is the validator status (bonded/unbonding/unbonded).\n              type: string\n              enum:\n                - BOND_STATUS_UNSPECIFIED\n                - BOND_STATUS_UNBONDED\n                - BOND_STATUS_UNBONDING\n                - BOND_STATUS_BONDED\n              default: BOND_STATUS_UNSPECIFIED\n            tokens:\n              type: string\n              description: tokens define the delegated tokens (incl. self-delegation).\n            delegator_shares:\n              type: string\n              description: >-\n                delegator_shares defines total shares issued to a validator's\n                delegators.\n            description:\n              description: description defines the description terms for the validator.\n              type: object\n              properties:\n                moniker:\n                  type: string\n                  description: moniker defines a human-readable name for the validator.\n                identity:\n                  type: string\n                  description: >-\n                    identity defines an optional identity signature (ex. UPort\n                    or Keybase).\n                website:\n                  type: string\n                  description: website defines an optional website link.\n                security_contact:\n                  type: string\n                  description: >-\n                    security_contact defines an optional email for security\n                    contact.\n                details:\n                  type: string\n                  description: details define other optional details.\n            unbonding_height:\n              type: string\n              format: int64\n              description: >-\n                unbonding_height defines, if unbonding, the height at which this\n                validator has begun unbonding.\n            unbonding_time:\n              type: string\n              format: date-time\n              description: >-\n                unbonding_time defines, if unbonding, the min time for the\n                validator to complete unbonding.\n            commission:\n              description: commission defines the commission parameters.\n              type: object\n              properties:\n                commission_rates:\n                  description: >-\n                    commission_rates defines the initial commission rates to be\n                    used for creating a validator.\n                  type: object\n                  properties:\n                    rate:\n                      type: string\n                      description: >-\n                        rate is the commission rate charged to delegators, as a\n                        fraction.\n                    max_rate:\n                      type: string\n                      description: >-\n                        max_rate defines the maximum commission rate which\n                        validator can ever charge, as a fraction.\n                    max_change_rate:\n                      type: string\n                      description: >-\n                        max_change_rate defines the maximum daily increase of\n                        the validator commission, as a fraction.\n                update_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    update_time is the last time the commission rate was\n                    changed.\n            min_self_delegation:\n              type: string\n              description: >-\n                min_self_delegation is the validator's self declared minimum\n                self delegation.\n\n\n                Since: cosmos-sdk 0.46\n            unbonding_on_hold_ref_count:\n              type: string\n              format: int64\n              title: >-\n                strictly positive if this validator's unbonding has been stopped\n                by external modules\n            unbonding_ids:\n              type: array\n              items:\n                type: string\n                format: uint64\n              title: >-\n                list of unbonding ids, each uniquely identifing an unbonding of\n                this validator\n          description: >-\n            Validator defines a validator, together with the total amount of the\n\n            Validator's bond shares and their exchange rate to coins. Slashing\n            results in\n\n            a decrease in the exchange rate, allowing correct calculation of\n            future\n\n            undelegations without iterating over delegators. When coins are\n            delegated to\n\n            this validator, the validator is credited with a delegation whose\n            number of\n\n            bond shares is based on the amount of coins delegated divided by the\n            current\n\n            exchange rate. Voting power can be calculated as total bonded shares\n\n            multiplied by exchange rate.\n        description: validators contains all the queried validators.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: >-\n      QueryValidatorsResponse is response type for the Query/Validators RPC\n      method\n  cosmos.staking.v1beta1.Redelegation:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n        description: delegator_address is the bech32-encoded address of the delegator.\n      validator_src_address:\n        type: string\n        description: >-\n          validator_src_address is the validator redelegation source operator\n          address.\n      validator_dst_address:\n        type: string\n        description: >-\n          validator_dst_address is the validator redelegation destination\n          operator address.\n      entries:\n        type: array\n        items:\n          type: object\n          properties:\n            creation_height:\n              type: string\n              format: int64\n              description: >-\n                creation_height  defines the height which the redelegation took\n                place.\n            completion_time:\n              type: string\n              format: date-time\n              description: >-\n                completion_time defines the unix time for redelegation\n                completion.\n            initial_balance:\n              type: string\n              description: >-\n                initial_balance defines the initial balance when redelegation\n                started.\n            shares_dst:\n              type: string\n              description: >-\n                shares_dst is the amount of destination-validator shares created\n                by redelegation.\n            unbonding_id:\n              type: string\n              format: uint64\n              title: Incrementing id that uniquely identifies this entry\n            unbonding_on_hold_ref_count:\n              type: string\n              format: int64\n              title: >-\n                Strictly positive if this entry's unbonding has been stopped by\n                external modules\n          description: >-\n            RedelegationEntry defines a redelegation object with relevant\n            metadata.\n        description: |-\n          entries are the redelegation entries.\n\n          redelegation entries\n    description: >-\n      Redelegation contains the list of a particular delegator's redelegating\n      bonds\n\n      from a particular source validator to a particular destination validator.\n  cosmos.staking.v1beta1.RedelegationEntry:\n    type: object\n    properties:\n      creation_height:\n        type: string\n        format: int64\n        description: creation_height  defines the height which the redelegation took place.\n      completion_time:\n        type: string\n        format: date-time\n        description: completion_time defines the unix time for redelegation completion.\n      initial_balance:\n        type: string\n        description: initial_balance defines the initial balance when redelegation started.\n      shares_dst:\n        type: string\n        description: >-\n          shares_dst is the amount of destination-validator shares created by\n          redelegation.\n      unbonding_id:\n        type: string\n        format: uint64\n        title: Incrementing id that uniquely identifies this entry\n      unbonding_on_hold_ref_count:\n        type: string\n        format: int64\n        title: >-\n          Strictly positive if this entry's unbonding has been stopped by\n          external modules\n    description: RedelegationEntry defines a redelegation object with relevant metadata.\n  cosmos.staking.v1beta1.RedelegationEntryResponse:\n    type: object\n    properties:\n      redelegation_entry:\n        type: object\n        properties:\n          creation_height:\n            type: string\n            format: int64\n            description: >-\n              creation_height  defines the height which the redelegation took\n              place.\n          completion_time:\n            type: string\n            format: date-time\n            description: completion_time defines the unix time for redelegation completion.\n          initial_balance:\n            type: string\n            description: >-\n              initial_balance defines the initial balance when redelegation\n              started.\n          shares_dst:\n            type: string\n            description: >-\n              shares_dst is the amount of destination-validator shares created\n              by redelegation.\n          unbonding_id:\n            type: string\n            format: uint64\n            title: Incrementing id that uniquely identifies this entry\n          unbonding_on_hold_ref_count:\n            type: string\n            format: int64\n            title: >-\n              Strictly positive if this entry's unbonding has been stopped by\n              external modules\n        description: >-\n          RedelegationEntry defines a redelegation object with relevant\n          metadata.\n      balance:\n        type: string\n    description: >-\n      RedelegationEntryResponse is equivalent to a RedelegationEntry except that\n      it\n\n      contains a balance in addition to shares which is more suitable for client\n\n      responses.\n  cosmos.staking.v1beta1.RedelegationResponse:\n    type: object\n    properties:\n      redelegation:\n        type: object\n        properties:\n          delegator_address:\n            type: string\n            description: delegator_address is the bech32-encoded address of the delegator.\n          validator_src_address:\n            type: string\n            description: >-\n              validator_src_address is the validator redelegation source\n              operator address.\n          validator_dst_address:\n            type: string\n            description: >-\n              validator_dst_address is the validator redelegation destination\n              operator address.\n          entries:\n            type: array\n            items:\n              type: object\n              properties:\n                creation_height:\n                  type: string\n                  format: int64\n                  description: >-\n                    creation_height  defines the height which the redelegation\n                    took place.\n                completion_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    completion_time defines the unix time for redelegation\n                    completion.\n                initial_balance:\n                  type: string\n                  description: >-\n                    initial_balance defines the initial balance when\n                    redelegation started.\n                shares_dst:\n                  type: string\n                  description: >-\n                    shares_dst is the amount of destination-validator shares\n                    created by redelegation.\n                unbonding_id:\n                  type: string\n                  format: uint64\n                  title: Incrementing id that uniquely identifies this entry\n                unbonding_on_hold_ref_count:\n                  type: string\n                  format: int64\n                  title: >-\n                    Strictly positive if this entry's unbonding has been stopped\n                    by external modules\n              description: >-\n                RedelegationEntry defines a redelegation object with relevant\n                metadata.\n            description: |-\n              entries are the redelegation entries.\n\n              redelegation entries\n        description: >-\n          Redelegation contains the list of a particular delegator's\n          redelegating bonds\n\n          from a particular source validator to a particular destination\n          validator.\n      entries:\n        type: array\n        items:\n          type: object\n          properties:\n            redelegation_entry:\n              type: object\n              properties:\n                creation_height:\n                  type: string\n                  format: int64\n                  description: >-\n                    creation_height  defines the height which the redelegation\n                    took place.\n                completion_time:\n                  type: string\n                  format: date-time\n                  description: >-\n                    completion_time defines the unix time for redelegation\n                    completion.\n                initial_balance:\n                  type: string\n                  description: >-\n                    initial_balance defines the initial balance when\n                    redelegation started.\n                shares_dst:\n                  type: string\n                  description: >-\n                    shares_dst is the amount of destination-validator shares\n                    created by redelegation.\n                unbonding_id:\n                  type: string\n                  format: uint64\n                  title: Incrementing id that uniquely identifies this entry\n                unbonding_on_hold_ref_count:\n                  type: string\n                  format: int64\n                  title: >-\n                    Strictly positive if this entry's unbonding has been stopped\n                    by external modules\n              description: >-\n                RedelegationEntry defines a redelegation object with relevant\n                metadata.\n            balance:\n              type: string\n          description: >-\n            RedelegationEntryResponse is equivalent to a RedelegationEntry\n            except that it\n\n            contains a balance in addition to shares which is more suitable for\n            client\n\n            responses.\n    description: >-\n      RedelegationResponse is equivalent to a Redelegation except that its\n      entries\n\n      contain a balance in addition to shares which is more suitable for client\n\n      responses.\n  cosmos.staking.v1beta1.UnbondingDelegation:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n        description: delegator_address is the encoded address of the delegator.\n      validator_address:\n        type: string\n        description: validator_address is the encoded address of the validator.\n      entries:\n        type: array\n        items:\n          type: object\n          properties:\n            creation_height:\n              type: string\n              format: int64\n              description: creation_height is the height which the unbonding took place.\n            completion_time:\n              type: string\n              format: date-time\n              description: completion_time is the unix time for unbonding completion.\n            initial_balance:\n              type: string\n              description: >-\n                initial_balance defines the tokens initially scheduled to\n                receive at completion.\n            balance:\n              type: string\n              description: balance defines the tokens to receive at completion.\n            unbonding_id:\n              type: string\n              format: uint64\n              title: Incrementing id that uniquely identifies this entry\n            unbonding_on_hold_ref_count:\n              type: string\n              format: int64\n              title: >-\n                Strictly positive if this entry's unbonding has been stopped by\n                external modules\n          description: >-\n            UnbondingDelegationEntry defines an unbonding object with relevant\n            metadata.\n        description: |-\n          entries are the unbonding delegation entries.\n\n          unbonding delegation entries\n    description: |-\n      UnbondingDelegation stores all of a single delegator's unbonding bonds\n      for a single validator in an time-ordered list.\n  cosmos.staking.v1beta1.UnbondingDelegationEntry:\n    type: object\n    properties:\n      creation_height:\n        type: string\n        format: int64\n        description: creation_height is the height which the unbonding took place.\n      completion_time:\n        type: string\n        format: date-time\n        description: completion_time is the unix time for unbonding completion.\n      initial_balance:\n        type: string\n        description: >-\n          initial_balance defines the tokens initially scheduled to receive at\n          completion.\n      balance:\n        type: string\n        description: balance defines the tokens to receive at completion.\n      unbonding_id:\n        type: string\n        format: uint64\n        title: Incrementing id that uniquely identifies this entry\n      unbonding_on_hold_ref_count:\n        type: string\n        format: int64\n        title: >-\n          Strictly positive if this entry's unbonding has been stopped by\n          external modules\n    description: >-\n      UnbondingDelegationEntry defines an unbonding object with relevant\n      metadata.\n  cosmos.staking.v1beta1.Validator:\n    type: object\n    properties:\n      operator_address:\n        type: string\n        description: >-\n          operator_address defines the address of the validator's operator; bech\n          encoded in JSON.\n      consensus_pubkey:\n        description: >-\n          consensus_pubkey is the consensus public key of the validator, as a\n          Protobuf Any.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      jailed:\n        type: boolean\n        description: >-\n          jailed defined whether the validator has been jailed from bonded\n          status or not.\n      status:\n        description: status is the validator status (bonded/unbonding/unbonded).\n        type: string\n        enum:\n          - BOND_STATUS_UNSPECIFIED\n          - BOND_STATUS_UNBONDED\n          - BOND_STATUS_UNBONDING\n          - BOND_STATUS_BONDED\n        default: BOND_STATUS_UNSPECIFIED\n      tokens:\n        type: string\n        description: tokens define the delegated tokens (incl. self-delegation).\n      delegator_shares:\n        type: string\n        description: >-\n          delegator_shares defines total shares issued to a validator's\n          delegators.\n      description:\n        description: description defines the description terms for the validator.\n        type: object\n        properties:\n          moniker:\n            type: string\n            description: moniker defines a human-readable name for the validator.\n          identity:\n            type: string\n            description: >-\n              identity defines an optional identity signature (ex. UPort or\n              Keybase).\n          website:\n            type: string\n            description: website defines an optional website link.\n          security_contact:\n            type: string\n            description: security_contact defines an optional email for security contact.\n          details:\n            type: string\n            description: details define other optional details.\n      unbonding_height:\n        type: string\n        format: int64\n        description: >-\n          unbonding_height defines, if unbonding, the height at which this\n          validator has begun unbonding.\n      unbonding_time:\n        type: string\n        format: date-time\n        description: >-\n          unbonding_time defines, if unbonding, the min time for the validator\n          to complete unbonding.\n      commission:\n        description: commission defines the commission parameters.\n        type: object\n        properties:\n          commission_rates:\n            description: >-\n              commission_rates defines the initial commission rates to be used\n              for creating a validator.\n            type: object\n            properties:\n              rate:\n                type: string\n                description: >-\n                  rate is the commission rate charged to delegators, as a\n                  fraction.\n              max_rate:\n                type: string\n                description: >-\n                  max_rate defines the maximum commission rate which validator\n                  can ever charge, as a fraction.\n              max_change_rate:\n                type: string\n                description: >-\n                  max_change_rate defines the maximum daily increase of the\n                  validator commission, as a fraction.\n          update_time:\n            type: string\n            format: date-time\n            description: update_time is the last time the commission rate was changed.\n      min_self_delegation:\n        type: string\n        description: >-\n          min_self_delegation is the validator's self declared minimum self\n          delegation.\n\n\n          Since: cosmos-sdk 0.46\n      unbonding_on_hold_ref_count:\n        type: string\n        format: int64\n        title: >-\n          strictly positive if this validator's unbonding has been stopped by\n          external modules\n      unbonding_ids:\n        type: array\n        items:\n          type: string\n          format: uint64\n        title: >-\n          list of unbonding ids, each uniquely identifing an unbonding of this\n          validator\n    description: >-\n      Validator defines a validator, together with the total amount of the\n\n      Validator's bond shares and their exchange rate to coins. Slashing results\n      in\n\n      a decrease in the exchange rate, allowing correct calculation of future\n\n      undelegations without iterating over delegators. When coins are delegated\n      to\n\n      this validator, the validator is credited with a delegation whose number\n      of\n\n      bond shares is based on the amount of coins delegated divided by the\n      current\n\n      exchange rate. Voting power can be calculated as total bonded shares\n\n      multiplied by exchange rate.\n  cosmos.staking.v1beta1.MsgBeginRedelegate:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      validator_src_address:\n        type: string\n      validator_dst_address:\n        type: string\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: |-\n      MsgBeginRedelegate defines a SDK message for performing a redelegation\n      of coins from a delegator and source validator to a destination validator.\n  cosmos.staking.v1beta1.MsgBeginRedelegateResponse:\n    type: object\n    properties:\n      completion_time:\n        type: string\n        format: date-time\n    description: MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.\n  cosmos.staking.v1beta1.MsgCancelUnbondingDelegation:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      validator_address:\n        type: string\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n        title: >-\n          amount is always less than or equal to unbonding delegation entry\n          balance\n      creation_height:\n        type: string\n        format: int64\n        description: creation_height is the height which the unbonding took place.\n    description: 'Since: cosmos-sdk 0.46'\n    title: >-\n      MsgCancelUnbondingDelegation defines the SDK message for performing a\n      cancel unbonding delegation for delegator\n  cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse:\n    type: object\n    description: 'Since: cosmos-sdk 0.46'\n    title: MsgCancelUnbondingDelegationResponse\n  cosmos.staking.v1beta1.MsgCreateValidator:\n    type: object\n    properties:\n      description:\n        type: object\n        properties:\n          moniker:\n            type: string\n            description: moniker defines a human-readable name for the validator.\n          identity:\n            type: string\n            description: >-\n              identity defines an optional identity signature (ex. UPort or\n              Keybase).\n          website:\n            type: string\n            description: website defines an optional website link.\n          security_contact:\n            type: string\n            description: security_contact defines an optional email for security contact.\n          details:\n            type: string\n            description: details define other optional details.\n        description: Description defines a validator description.\n      commission:\n        type: object\n        properties:\n          rate:\n            type: string\n            description: rate is the commission rate charged to delegators, as a fraction.\n          max_rate:\n            type: string\n            description: >-\n              max_rate defines the maximum commission rate which validator can\n              ever charge, as a fraction.\n          max_change_rate:\n            type: string\n            description: >-\n              max_change_rate defines the maximum daily increase of the\n              validator commission, as a fraction.\n        description: >-\n          CommissionRates defines the initial commission rates to be used for\n          creating\n\n          a validator.\n      min_self_delegation:\n        type: string\n      delegator_address:\n        type: string\n        description: >-\n          Deprecated: Use of Delegator Address in MsgCreateValidator is\n          deprecated.\n\n          The validator address bytes and delegator address bytes refer to the\n          same account while creating validator (defer\n\n          only in bech32 notation).\n      validator_address:\n        type: string\n      pubkey:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      value:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: MsgCreateValidator defines a SDK message for creating a new validator.\n  cosmos.staking.v1beta1.MsgCreateValidatorResponse:\n    type: object\n    description: MsgCreateValidatorResponse defines the Msg/CreateValidator response type.\n  cosmos.staking.v1beta1.MsgDelegate:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      validator_address:\n        type: string\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: |-\n      MsgDelegate defines a SDK message for performing a delegation of coins\n      from a delegator to a validator.\n  cosmos.staking.v1beta1.MsgDelegateResponse:\n    type: object\n    description: MsgDelegateResponse defines the Msg/Delegate response type.\n  cosmos.staking.v1beta1.MsgEditValidator:\n    type: object\n    properties:\n      description:\n        type: object\n        properties:\n          moniker:\n            type: string\n            description: moniker defines a human-readable name for the validator.\n          identity:\n            type: string\n            description: >-\n              identity defines an optional identity signature (ex. UPort or\n              Keybase).\n          website:\n            type: string\n            description: website defines an optional website link.\n          security_contact:\n            type: string\n            description: security_contact defines an optional email for security contact.\n          details:\n            type: string\n            description: details define other optional details.\n        description: Description defines a validator description.\n      validator_address:\n        type: string\n      commission_rate:\n        type: string\n        title: >-\n          We pass a reference to the new commission rate and min self delegation\n          as\n\n          it's not mandatory to update. If not updated, the deserialized rate\n          will be\n\n          zero with no way to distinguish if an update was intended.\n\n          REF: #2373\n      min_self_delegation:\n        type: string\n    description: MsgEditValidator defines a SDK message for editing an existing validator.\n  cosmos.staking.v1beta1.MsgEditValidatorResponse:\n    type: object\n    description: MsgEditValidatorResponse defines the Msg/EditValidator response type.\n  cosmos.staking.v1beta1.MsgUndelegate:\n    type: object\n    properties:\n      delegator_address:\n        type: string\n      validator_address:\n        type: string\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: |-\n      MsgUndelegate defines a SDK message for performing an undelegation from a\n      delegate and a validator.\n  cosmos.staking.v1beta1.MsgUndelegateResponse:\n    type: object\n    properties:\n      completion_time:\n        type: string\n        format: date-time\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n        title: amount returns the amount of undelegated coins\n    description: MsgUndelegateResponse defines the Msg/Undelegate response type.\n  cosmos.staking.v1beta1.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: |-\n          params defines the x/staking parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          unbonding_time:\n            type: string\n            description: unbonding_time is the time duration of unbonding.\n          max_validators:\n            type: integer\n            format: int64\n            description: max_validators is the maximum number of validators.\n          max_entries:\n            type: integer\n            format: int64\n            description: >-\n              max_entries is the max entries for either unbonding delegation or\n              redelegation (per pair/trio).\n          historical_entries:\n            type: integer\n            format: int64\n            description: historical_entries is the number of historical entries to persist.\n          bond_denom:\n            type: string\n            description: bond_denom defines the bondable coin denomination.\n          min_commission_rate:\n            type: string\n            title: >-\n              min_commission_rate is the chain-wide minimum commission rate that\n              a validator can charge their delegators\n    description: |-\n      MsgUpdateParams is the Msg/UpdateParams request type.\n\n      Since: cosmos-sdk 0.47\n  cosmos.staking.v1beta1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n\n      Since: cosmos-sdk 0.47\n  cosmos.base.abci.v1beta1.ABCIMessageLog:\n    type: object\n    properties:\n      msg_index:\n        type: integer\n        format: int64\n      log:\n        type: string\n      events:\n        type: array\n        items:\n          type: object\n          properties:\n            type:\n              type: string\n            attributes:\n              type: array\n              items:\n                type: object\n                properties:\n                  key:\n                    type: string\n                  value:\n                    type: string\n                description: >-\n                  Attribute defines an attribute wrapper where the key and value\n                  are\n\n                  strings instead of raw bytes.\n          description: |-\n            StringEvent defines en Event object wrapper where all the attributes\n            contain key/value pairs that are strings instead of raw bytes.\n        description: |-\n          Events contains a slice of Event objects that were emitted during some\n          execution.\n    description: >-\n      ABCIMessageLog defines a structure containing an indexed tx ABCI message\n      log.\n  cosmos.base.abci.v1beta1.Attribute:\n    type: object\n    properties:\n      key:\n        type: string\n      value:\n        type: string\n    description: |-\n      Attribute defines an attribute wrapper where the key and value are\n      strings instead of raw bytes.\n  cosmos.base.abci.v1beta1.GasInfo:\n    type: object\n    properties:\n      gas_wanted:\n        type: string\n        format: uint64\n        description: GasWanted is the maximum units of work we allow this tx to perform.\n      gas_used:\n        type: string\n        format: uint64\n        description: GasUsed is the amount of gas actually consumed.\n    description: GasInfo defines tx execution gas context.\n  cosmos.base.abci.v1beta1.Result:\n    type: object\n    properties:\n      data:\n        type: string\n        format: byte\n        description: >-\n          Data is any data returned from message or handler execution. It MUST\n          be\n\n          length prefixed in order to separate data from multiple message\n          executions.\n\n          Deprecated. This field is still populated, but prefer msg_response\n          instead\n\n          because it also contains the Msg response typeURL.\n      log:\n        type: string\n        description: Log contains the log information from message or handler execution.\n      events:\n        type: array\n        items:\n          type: object\n          properties:\n            type:\n              type: string\n            attributes:\n              type: array\n              items:\n                type: object\n                properties:\n                  key:\n                    type: string\n                  value:\n                    type: string\n                  index:\n                    type: boolean\n                    title: nondeterministic\n                description: >-\n                  EventAttribute is a single key-value pair, associated with an\n                  event.\n          description: >-\n            Event allows application developers to attach additional information\n            to\n\n            ResponseFinalizeBlock and ResponseCheckTx.\n\n            Later, transactions may be queried using these events.\n        description: >-\n          Events contains a slice of Event objects that were emitted during\n          message\n\n          or handler execution.\n      msg_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: |-\n          msg_responses contains the Msg handler responses type packed in Anys.\n\n          Since: cosmos-sdk 0.46\n    description: Result is the union of ResponseFormat and ResponseCheckTx.\n  cosmos.base.abci.v1beta1.StringEvent:\n    type: object\n    properties:\n      type:\n        type: string\n      attributes:\n        type: array\n        items:\n          type: object\n          properties:\n            key:\n              type: string\n            value:\n              type: string\n          description: |-\n            Attribute defines an attribute wrapper where the key and value are\n            strings instead of raw bytes.\n    description: |-\n      StringEvent defines en Event object wrapper where all the attributes\n      contain key/value pairs that are strings instead of raw bytes.\n  cosmos.base.abci.v1beta1.TxResponse:\n    type: object\n    properties:\n      height:\n        type: string\n        format: int64\n        title: The block height\n      txhash:\n        type: string\n        description: The transaction hash.\n      codespace:\n        type: string\n        title: Namespace for the Code\n      code:\n        type: integer\n        format: int64\n        description: Response code.\n      data:\n        type: string\n        description: Result bytes, if any.\n      raw_log:\n        type: string\n        description: |-\n          The output of the application's logger (raw string). May be\n          non-deterministic.\n      logs:\n        type: array\n        items:\n          type: object\n          properties:\n            msg_index:\n              type: integer\n              format: int64\n            log:\n              type: string\n            events:\n              type: array\n              items:\n                type: object\n                properties:\n                  type:\n                    type: string\n                  attributes:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        key:\n                          type: string\n                        value:\n                          type: string\n                      description: >-\n                        Attribute defines an attribute wrapper where the key and\n                        value are\n\n                        strings instead of raw bytes.\n                description: >-\n                  StringEvent defines en Event object wrapper where all the\n                  attributes\n\n                  contain key/value pairs that are strings instead of raw bytes.\n              description: >-\n                Events contains a slice of Event objects that were emitted\n                during some\n\n                execution.\n          description: >-\n            ABCIMessageLog defines a structure containing an indexed tx ABCI\n            message log.\n        description: >-\n          The output of the application's logger (typed). May be\n          non-deterministic.\n      info:\n        type: string\n        description: Additional information. May be non-deterministic.\n      gas_wanted:\n        type: string\n        format: int64\n        description: Amount of gas requested for transaction.\n      gas_used:\n        type: string\n        format: int64\n        description: Amount of gas consumed by transaction.\n      tx:\n        description: The request transaction bytes.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      timestamp:\n        type: string\n        description: >-\n          Time of the previous block. For heights > 1, it's the weighted median\n          of\n\n          the timestamps of the valid votes in the block.LastCommit. For height\n          == 1,\n\n          it's genesis time.\n      events:\n        type: array\n        items:\n          type: object\n          properties:\n            type:\n              type: string\n            attributes:\n              type: array\n              items:\n                type: object\n                properties:\n                  key:\n                    type: string\n                  value:\n                    type: string\n                  index:\n                    type: boolean\n                    title: nondeterministic\n                description: >-\n                  EventAttribute is a single key-value pair, associated with an\n                  event.\n          description: >-\n            Event allows application developers to attach additional information\n            to\n\n            ResponseFinalizeBlock and ResponseCheckTx.\n\n            Later, transactions may be queried using these events.\n        description: >-\n          Events defines all the events emitted by processing a transaction.\n          Note,\n\n          these events include those emitted by processing all the messages and\n          those\n\n          emitted from the ante. Whereas Logs contains the events, with\n\n          additional metadata, emitted only by processing the messages.\n\n\n          Since: cosmos-sdk 0.42.11, 0.44.5, 0.45\n    description: >-\n      TxResponse defines a structure containing relevant tx data and metadata.\n      The\n\n      tags are stringified and the log is JSON decoded.\n  cosmos.crypto.multisig.v1beta1.CompactBitArray:\n    type: object\n    properties:\n      extra_bits_stored:\n        type: integer\n        format: int64\n      elems:\n        type: string\n        format: byte\n    description: |-\n      CompactBitArray is an implementation of a space efficient bit array.\n      This is used to ensure that the encoded data takes up a minimal amount of\n      space after proto encoding.\n      This is not thread safe, and is not intended for concurrent usage.\n  cosmos.tx.signing.v1beta1.SignMode:\n    type: string\n    enum:\n      - SIGN_MODE_UNSPECIFIED\n      - SIGN_MODE_DIRECT\n      - SIGN_MODE_TEXTUAL\n      - SIGN_MODE_DIRECT_AUX\n      - SIGN_MODE_LEGACY_AMINO_JSON\n      - SIGN_MODE_EIP_191\n    default: SIGN_MODE_UNSPECIFIED\n    description: |-\n      SignMode represents a signing mode with its own security guarantees.\n\n      This enum should be considered a registry of all known sign modes\n      in the Cosmos ecosystem. Apps are not expected to support all known\n      sign modes. Apps that would like to support custom  sign modes are\n      encouraged to open a small PR against this file to add a new case\n      to this SignMode enum describing their sign mode so that different\n      apps have a consistent version of this enum.\n\n       - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\n      rejected.\n       - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\n      verified with raw bytes from Tx.\n       - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\n      human-readable textual representation on top of the binary representation\n      from SIGN_MODE_DIRECT.\n\n      Since: cosmos-sdk 0.50\n       - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\n      SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\n      require signers signing over other signers' `signer_info`.\n\n      Since: cosmos-sdk 0.46\n       - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\n      Amino JSON and will be removed in the future.\n       - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\n      SDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\n      Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\n      but is not implemented on the SDK by default. To enable EIP-191, you need\n      to pass a custom `TxConfig` that has an implementation of\n      `SignModeHandler` for EIP-191. The SDK may decide to fully support\n      EIP-191 in the future.\n\n      Since: cosmos-sdk 0.45.2\n  cosmos.tx.v1beta1.AuthInfo:\n    type: object\n    properties:\n      signer_infos:\n        type: array\n        items:\n          type: object\n          $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo'\n        description: >-\n          signer_infos defines the signing modes for the required signers. The\n          number\n\n          and order of elements must match the required signers from TxBody's\n\n          messages. The first element is the primary signer and the one which\n          pays\n\n          the fee.\n      fee:\n        description: >-\n          Fee is the fee and gas limit for the transaction. The first signer is\n          the\n\n          primary signer and the one which pays the fee. The fee can be\n          calculated\n\n          based on the cost of evaluating the body and doing signature\n          verification\n\n          of the signers. This can be estimated via simulation.\n        type: object\n        properties:\n          amount:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: amount is the amount of coins to be paid as a fee\n          gas_limit:\n            type: string\n            format: uint64\n            title: >-\n              gas_limit is the maximum gas that can be used in transaction\n              processing\n\n              before an out of gas error occurs\n          payer:\n            type: string\n            description: >-\n              if unset, the first signer is responsible for paying the fees. If\n              set, the specified account must pay the fees.\n\n              the payer must be a tx signer (and thus have signed this field in\n              AuthInfo).\n\n              setting this field does *not* change the ordering of required\n              signers for the transaction.\n          granter:\n            type: string\n            title: >-\n              if set, the fee payer (either the first signer or the value of the\n              payer field) requests that a fee grant be used\n\n              to pay fees instead of the fee payer's own balance. If an\n              appropriate fee grant does not exist or the chain does\n\n              not support fee grants, this will fail\n      tip:\n        description: >-\n          Tip is the optional tip used for transactions fees paid in another\n          denom.\n\n\n          This field is ignored if the chain didn't enable tips, i.e. didn't add\n          the\n\n          `TipDecorator` in its posthandler.\n\n\n          Since: cosmos-sdk 0.46\n        type: object\n        properties:\n          amount:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: amount is the amount of the tip\n          tipper:\n            type: string\n            title: tipper is the address of the account paying for the tip\n    description: |-\n      AuthInfo describes the fee and signer modes that are used to sign a\n      transaction.\n  cosmos.tx.v1beta1.BroadcastMode:\n    type: string\n    enum:\n      - BROADCAST_MODE_UNSPECIFIED\n      - BROADCAST_MODE_BLOCK\n      - BROADCAST_MODE_SYNC\n      - BROADCAST_MODE_ASYNC\n    default: BROADCAST_MODE_UNSPECIFIED\n    description: |-\n      BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\n      method.\n\n       - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n       - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\n      BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n       - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\n      for a CheckTx execution response only.\n       - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\n      returns immediately.\n  cosmos.tx.v1beta1.BroadcastTxRequest:\n    type: object\n    properties:\n      tx_bytes:\n        type: string\n        format: byte\n        description: tx_bytes is the raw transaction.\n      mode:\n        type: string\n        enum:\n          - BROADCAST_MODE_UNSPECIFIED\n          - BROADCAST_MODE_BLOCK\n          - BROADCAST_MODE_SYNC\n          - BROADCAST_MODE_ASYNC\n        default: BROADCAST_MODE_UNSPECIFIED\n        description: >-\n          BroadcastMode specifies the broadcast mode for the TxService.Broadcast\n          RPC\n\n          method.\n\n           - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n           - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\n          BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n           - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\n          for a CheckTx execution response only.\n           - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\n          returns immediately.\n    description: |-\n      BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\n      RPC method.\n  cosmos.tx.v1beta1.BroadcastTxResponse:\n    type: object\n    properties:\n      tx_response:\n        description: tx_response is the queried TxResponses.\n        type: object\n        properties:\n          height:\n            type: string\n            format: int64\n            title: The block height\n          txhash:\n            type: string\n            description: The transaction hash.\n          codespace:\n            type: string\n            title: Namespace for the Code\n          code:\n            type: integer\n            format: int64\n            description: Response code.\n          data:\n            type: string\n            description: Result bytes, if any.\n          raw_log:\n            type: string\n            description: |-\n              The output of the application's logger (raw string). May be\n              non-deterministic.\n          logs:\n            type: array\n            items:\n              type: object\n              properties:\n                msg_index:\n                  type: integer\n                  format: int64\n                log:\n                  type: string\n                events:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      type:\n                        type: string\n                      attributes:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            key:\n                              type: string\n                            value:\n                              type: string\n                          description: >-\n                            Attribute defines an attribute wrapper where the key\n                            and value are\n\n                            strings instead of raw bytes.\n                    description: >-\n                      StringEvent defines en Event object wrapper where all the\n                      attributes\n\n                      contain key/value pairs that are strings instead of raw\n                      bytes.\n                  description: >-\n                    Events contains a slice of Event objects that were emitted\n                    during some\n\n                    execution.\n              description: >-\n                ABCIMessageLog defines a structure containing an indexed tx ABCI\n                message log.\n            description: >-\n              The output of the application's logger (typed). May be\n              non-deterministic.\n          info:\n            type: string\n            description: Additional information. May be non-deterministic.\n          gas_wanted:\n            type: string\n            format: int64\n            description: Amount of gas requested for transaction.\n          gas_used:\n            type: string\n            format: int64\n            description: Amount of gas consumed by transaction.\n          tx:\n            description: The request transaction bytes.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          timestamp:\n            type: string\n            description: >-\n              Time of the previous block. For heights > 1, it's the weighted\n              median of\n\n              the timestamps of the valid votes in the block.LastCommit. For\n              height == 1,\n\n              it's genesis time.\n          events:\n            type: array\n            items:\n              type: object\n              properties:\n                type:\n                  type: string\n                attributes:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      key:\n                        type: string\n                      value:\n                        type: string\n                      index:\n                        type: boolean\n                        title: nondeterministic\n                    description: >-\n                      EventAttribute is a single key-value pair, associated with\n                      an event.\n              description: >-\n                Event allows application developers to attach additional\n                information to\n\n                ResponseFinalizeBlock and ResponseCheckTx.\n\n                Later, transactions may be queried using these events.\n            description: >-\n              Events defines all the events emitted by processing a transaction.\n              Note,\n\n              these events include those emitted by processing all the messages\n              and those\n\n              emitted from the ante. Whereas Logs contains the events, with\n\n              additional metadata, emitted only by processing the messages.\n\n\n              Since: cosmos-sdk 0.42.11, 0.44.5, 0.45\n    description: |-\n      BroadcastTxResponse is the response type for the\n      Service.BroadcastTx method.\n  cosmos.tx.v1beta1.Fee:\n    type: object\n    properties:\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: amount is the amount of coins to be paid as a fee\n      gas_limit:\n        type: string\n        format: uint64\n        title: >-\n          gas_limit is the maximum gas that can be used in transaction\n          processing\n\n          before an out of gas error occurs\n      payer:\n        type: string\n        description: >-\n          if unset, the first signer is responsible for paying the fees. If set,\n          the specified account must pay the fees.\n\n          the payer must be a tx signer (and thus have signed this field in\n          AuthInfo).\n\n          setting this field does *not* change the ordering of required signers\n          for the transaction.\n      granter:\n        type: string\n        title: >-\n          if set, the fee payer (either the first signer or the value of the\n          payer field) requests that a fee grant be used\n\n          to pay fees instead of the fee payer's own balance. If an appropriate\n          fee grant does not exist or the chain does\n\n          not support fee grants, this will fail\n    description: >-\n      Fee includes the amount of coins paid in fees and the maximum\n\n      gas to be used by the transaction. The ratio yields an effective\n      \"gasprice\",\n\n      which must be above some miminum to be accepted into the mempool.\n  cosmos.tx.v1beta1.GetBlockWithTxsResponse:\n    type: object\n    properties:\n      txs:\n        type: array\n        items:\n          type: object\n          $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: txs are the transactions in the block.\n      block_id:\n        type: object\n        properties:\n          hash:\n            type: string\n            format: byte\n          part_set_header:\n            type: object\n            properties:\n              total:\n                type: integer\n                format: int64\n              hash:\n                type: string\n                format: byte\n            title: PartsetHeader\n        title: BlockID\n      block:\n        type: object\n        properties:\n          header:\n            type: object\n            properties:\n              version:\n                title: basic block info\n                type: object\n                properties:\n                  block:\n                    type: string\n                    format: uint64\n                  app:\n                    type: string\n                    format: uint64\n                description: >-\n                  Consensus captures the consensus rules for processing a block\n                  in the blockchain,\n\n                  including all blockchain data structures and the rules of the\n                  application's\n\n                  state transition machine.\n              chain_id:\n                type: string\n              height:\n                type: string\n                format: int64\n              time:\n                type: string\n                format: date-time\n              last_block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              last_commit_hash:\n                type: string\n                format: byte\n                description: commit from validators from the last block\n                title: hashes of block data\n              data_hash:\n                type: string\n                format: byte\n                title: transactions\n              validators_hash:\n                type: string\n                format: byte\n                description: validators for the current block\n                title: hashes from the app output from the prev block\n              next_validators_hash:\n                type: string\n                format: byte\n                title: validators for the next block\n              consensus_hash:\n                type: string\n                format: byte\n                title: consensus params for current block\n              app_hash:\n                type: string\n                format: byte\n                title: state after txs from the previous block\n              last_results_hash:\n                type: string\n                format: byte\n                title: root hash of all results from the txs from the previous block\n              evidence_hash:\n                type: string\n                format: byte\n                description: evidence included in the block\n                title: consensus info\n              proposer_address:\n                type: string\n                format: byte\n                title: original proposer of the block\n            description: Header defines the structure of a block header.\n          data:\n            type: object\n            properties:\n              txs:\n                type: array\n                items:\n                  type: string\n                  format: byte\n                description: >-\n                  Txs that will be applied by state @ block.Height+1.\n\n                  NOTE: not all txs here are valid.  We're just agreeing on the\n                  order first.\n\n                  This means that block.AppHash does not include these txs.\n            title: Data contains the set of transactions included in the block\n          evidence:\n            type: object\n            properties:\n              evidence:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    duplicate_vote_evidence:\n                      type: object\n                      properties:\n                        vote_a:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        vote_b:\n                          type: object\n                          properties:\n                            type:\n                              type: string\n                              enum:\n                                - SIGNED_MSG_TYPE_UNKNOWN\n                                - SIGNED_MSG_TYPE_PREVOTE\n                                - SIGNED_MSG_TYPE_PRECOMMIT\n                                - SIGNED_MSG_TYPE_PROPOSAL\n                              default: SIGNED_MSG_TYPE_UNKNOWN\n                              description: >-\n                                SignedMsgType is a type of signed message in the\n                                consensus.\n\n                                 - SIGNED_MSG_TYPE_PREVOTE: Votes\n                                 - SIGNED_MSG_TYPE_PROPOSAL: Proposals\n                            height:\n                              type: string\n                              format: int64\n                            round:\n                              type: integer\n                              format: int32\n                            block_id:\n                              type: object\n                              properties:\n                                hash:\n                                  type: string\n                                  format: byte\n                                part_set_header:\n                                  type: object\n                                  properties:\n                                    total:\n                                      type: integer\n                                      format: int64\n                                    hash:\n                                      type: string\n                                      format: byte\n                                  title: PartsetHeader\n                              title: BlockID\n                              description: zero if vote is nil.\n                            timestamp:\n                              type: string\n                              format: date-time\n                            validator_address:\n                              type: string\n                              format: byte\n                            validator_index:\n                              type: integer\n                              format: int32\n                            signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote signature by the validator if they\n                                participated in consensus for the\n\n                                associated block.\n                            extension:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension provided by the application. Only\n                                valid for precommit\n\n                                messages.\n                            extension_signature:\n                              type: string\n                              format: byte\n                              description: >-\n                                Vote extension signature by the validator if\n                                they participated in\n\n                                consensus for the associated block.\n\n                                Only valid for precommit messages.\n                          description: >-\n                            Vote represents a prevote or precommit vote from\n                            validators for\n\n                            consensus.\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        validator_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        DuplicateVoteEvidence contains evidence of a validator\n                        signed two conflicting votes.\n                    light_client_attack_evidence:\n                      type: object\n                      properties:\n                        conflicting_block:\n                          type: object\n                          properties:\n                            signed_header:\n                              type: object\n                              properties:\n                                header:\n                                  type: object\n                                  properties:\n                                    version:\n                                      title: basic block info\n                                      type: object\n                                      properties:\n                                        block:\n                                          type: string\n                                          format: uint64\n                                        app:\n                                          type: string\n                                          format: uint64\n                                      description: >-\n                                        Consensus captures the consensus rules\n                                        for processing a block in the\n                                        blockchain,\n\n                                        including all blockchain data structures\n                                        and the rules of the application's\n\n                                        state transition machine.\n                                    chain_id:\n                                      type: string\n                                    height:\n                                      type: string\n                                      format: int64\n                                    time:\n                                      type: string\n                                      format: date-time\n                                    last_block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    last_commit_hash:\n                                      type: string\n                                      format: byte\n                                      description: >-\n                                        commit from validators from the last\n                                        block\n                                      title: hashes of block data\n                                    data_hash:\n                                      type: string\n                                      format: byte\n                                      title: transactions\n                                    validators_hash:\n                                      type: string\n                                      format: byte\n                                      description: validators for the current block\n                                      title: >-\n                                        hashes from the app output from the prev\n                                        block\n                                    next_validators_hash:\n                                      type: string\n                                      format: byte\n                                      title: validators for the next block\n                                    consensus_hash:\n                                      type: string\n                                      format: byte\n                                      title: consensus params for current block\n                                    app_hash:\n                                      type: string\n                                      format: byte\n                                      title: state after txs from the previous block\n                                    last_results_hash:\n                                      type: string\n                                      format: byte\n                                      title: >-\n                                        root hash of all results from the txs\n                                        from the previous block\n                                    evidence_hash:\n                                      type: string\n                                      format: byte\n                                      description: evidence included in the block\n                                      title: consensus info\n                                    proposer_address:\n                                      type: string\n                                      format: byte\n                                      title: original proposer of the block\n                                  description: >-\n                                    Header defines the structure of a block\n                                    header.\n                                commit:\n                                  type: object\n                                  properties:\n                                    height:\n                                      type: string\n                                      format: int64\n                                    round:\n                                      type: integer\n                                      format: int32\n                                    block_id:\n                                      type: object\n                                      properties:\n                                        hash:\n                                          type: string\n                                          format: byte\n                                        part_set_header:\n                                          type: object\n                                          properties:\n                                            total:\n                                              type: integer\n                                              format: int64\n                                            hash:\n                                              type: string\n                                              format: byte\n                                          title: PartsetHeader\n                                      title: BlockID\n                                    signatures:\n                                      type: array\n                                      items:\n                                        type: object\n                                        properties:\n                                          block_id_flag:\n                                            type: string\n                                            enum:\n                                              - BLOCK_ID_FLAG_UNKNOWN\n                                              - BLOCK_ID_FLAG_ABSENT\n                                              - BLOCK_ID_FLAG_COMMIT\n                                              - BLOCK_ID_FLAG_NIL\n                                            default: BLOCK_ID_FLAG_UNKNOWN\n                                            description: >-\n                                              - BLOCK_ID_FLAG_UNKNOWN: indicates an\n                                              error condition\n                                               - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                                               - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                                               - BLOCK_ID_FLAG_NIL: voted for nil\n                                            title: >-\n                                              BlockIdFlag indicates which BlockID the\n                                              signature is for\n                                          validator_address:\n                                            type: string\n                                            format: byte\n                                          timestamp:\n                                            type: string\n                                            format: date-time\n                                          signature:\n                                            type: string\n                                            format: byte\n                                        description: >-\n                                          CommitSig is a part of the Vote included\n                                          in a Commit.\n                                  description: >-\n                                    Commit contains the evidence that a block\n                                    was committed by a set of validators.\n                            validator_set:\n                              type: object\n                              properties:\n                                validators:\n                                  type: array\n                                  items:\n                                    type: object\n                                    properties:\n                                      address:\n                                        type: string\n                                        format: byte\n                                      pub_key:\n                                        type: object\n                                        properties:\n                                          ed25519:\n                                            type: string\n                                            format: byte\n                                          secp256k1:\n                                            type: string\n                                            format: byte\n                                        title: >-\n                                          PublicKey defines the keys available for\n                                          use with Validators\n                                      voting_power:\n                                        type: string\n                                        format: int64\n                                      proposer_priority:\n                                        type: string\n                                        format: int64\n                                proposer:\n                                  type: object\n                                  properties:\n                                    address:\n                                      type: string\n                                      format: byte\n                                    pub_key:\n                                      type: object\n                                      properties:\n                                        ed25519:\n                                          type: string\n                                          format: byte\n                                        secp256k1:\n                                          type: string\n                                          format: byte\n                                      title: >-\n                                        PublicKey defines the keys available for\n                                        use with Validators\n                                    voting_power:\n                                      type: string\n                                      format: int64\n                                    proposer_priority:\n                                      type: string\n                                      format: int64\n                                total_voting_power:\n                                  type: string\n                                  format: int64\n                        common_height:\n                          type: string\n                          format: int64\n                        byzantine_validators:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              address:\n                                type: string\n                                format: byte\n                              pub_key:\n                                type: object\n                                properties:\n                                  ed25519:\n                                    type: string\n                                    format: byte\n                                  secp256k1:\n                                    type: string\n                                    format: byte\n                                title: >-\n                                  PublicKey defines the keys available for use\n                                  with Validators\n                              voting_power:\n                                type: string\n                                format: int64\n                              proposer_priority:\n                                type: string\n                                format: int64\n                        total_voting_power:\n                          type: string\n                          format: int64\n                        timestamp:\n                          type: string\n                          format: date-time\n                      description: >-\n                        LightClientAttackEvidence contains evidence of a set of\n                        validators attempting to mislead a light client.\n          last_commit:\n            type: object\n            properties:\n              height:\n                type: string\n                format: int64\n              round:\n                type: integer\n                format: int32\n              block_id:\n                type: object\n                properties:\n                  hash:\n                    type: string\n                    format: byte\n                  part_set_header:\n                    type: object\n                    properties:\n                      total:\n                        type: integer\n                        format: int64\n                      hash:\n                        type: string\n                        format: byte\n                    title: PartsetHeader\n                title: BlockID\n              signatures:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    block_id_flag:\n                      type: string\n                      enum:\n                        - BLOCK_ID_FLAG_UNKNOWN\n                        - BLOCK_ID_FLAG_ABSENT\n                        - BLOCK_ID_FLAG_COMMIT\n                        - BLOCK_ID_FLAG_NIL\n                      default: BLOCK_ID_FLAG_UNKNOWN\n                      description: |-\n                        - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n                         - BLOCK_ID_FLAG_ABSENT: the vote was not received\n                         - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n                         - BLOCK_ID_FLAG_NIL: voted for nil\n                      title: BlockIdFlag indicates which BlockID the signature is for\n                    validator_address:\n                      type: string\n                      format: byte\n                    timestamp:\n                      type: string\n                      format: date-time\n                    signature:\n                      type: string\n                      format: byte\n                  description: CommitSig is a part of the Vote included in a Commit.\n            description: >-\n              Commit contains the evidence that a block was committed by a set\n              of validators.\n      pagination:\n        description: pagination defines a pagination for the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      GetBlockWithTxsResponse is the response type for the\n      Service.GetBlockWithTxs\n\n      method.\n\n\n      Since: cosmos-sdk 0.45.2\n  cosmos.tx.v1beta1.GetTxResponse:\n    type: object\n    properties:\n      tx:\n        $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: tx is the queried transaction.\n      tx_response:\n        description: tx_response is the queried TxResponses.\n        type: object\n        properties:\n          height:\n            type: string\n            format: int64\n            title: The block height\n          txhash:\n            type: string\n            description: The transaction hash.\n          codespace:\n            type: string\n            title: Namespace for the Code\n          code:\n            type: integer\n            format: int64\n            description: Response code.\n          data:\n            type: string\n            description: Result bytes, if any.\n          raw_log:\n            type: string\n            description: |-\n              The output of the application's logger (raw string). May be\n              non-deterministic.\n          logs:\n            type: array\n            items:\n              type: object\n              properties:\n                msg_index:\n                  type: integer\n                  format: int64\n                log:\n                  type: string\n                events:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      type:\n                        type: string\n                      attributes:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            key:\n                              type: string\n                            value:\n                              type: string\n                          description: >-\n                            Attribute defines an attribute wrapper where the key\n                            and value are\n\n                            strings instead of raw bytes.\n                    description: >-\n                      StringEvent defines en Event object wrapper where all the\n                      attributes\n\n                      contain key/value pairs that are strings instead of raw\n                      bytes.\n                  description: >-\n                    Events contains a slice of Event objects that were emitted\n                    during some\n\n                    execution.\n              description: >-\n                ABCIMessageLog defines a structure containing an indexed tx ABCI\n                message log.\n            description: >-\n              The output of the application's logger (typed). May be\n              non-deterministic.\n          info:\n            type: string\n            description: Additional information. May be non-deterministic.\n          gas_wanted:\n            type: string\n            format: int64\n            description: Amount of gas requested for transaction.\n          gas_used:\n            type: string\n            format: int64\n            description: Amount of gas consumed by transaction.\n          tx:\n            description: The request transaction bytes.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n          timestamp:\n            type: string\n            description: >-\n              Time of the previous block. For heights > 1, it's the weighted\n              median of\n\n              the timestamps of the valid votes in the block.LastCommit. For\n              height == 1,\n\n              it's genesis time.\n          events:\n            type: array\n            items:\n              type: object\n              properties:\n                type:\n                  type: string\n                attributes:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      key:\n                        type: string\n                      value:\n                        type: string\n                      index:\n                        type: boolean\n                        title: nondeterministic\n                    description: >-\n                      EventAttribute is a single key-value pair, associated with\n                      an event.\n              description: >-\n                Event allows application developers to attach additional\n                information to\n\n                ResponseFinalizeBlock and ResponseCheckTx.\n\n                Later, transactions may be queried using these events.\n            description: >-\n              Events defines all the events emitted by processing a transaction.\n              Note,\n\n              these events include those emitted by processing all the messages\n              and those\n\n              emitted from the ante. Whereas Logs contains the events, with\n\n              additional metadata, emitted only by processing the messages.\n\n\n              Since: cosmos-sdk 0.42.11, 0.44.5, 0.45\n    description: GetTxResponse is the response type for the Service.GetTx method.\n  cosmos.tx.v1beta1.GetTxsEventResponse:\n    type: object\n    properties:\n      txs:\n        type: array\n        items:\n          type: object\n          $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: txs is the list of queried transactions.\n      tx_responses:\n        type: array\n        items:\n          type: object\n          properties:\n            height:\n              type: string\n              format: int64\n              title: The block height\n            txhash:\n              type: string\n              description: The transaction hash.\n            codespace:\n              type: string\n              title: Namespace for the Code\n            code:\n              type: integer\n              format: int64\n              description: Response code.\n            data:\n              type: string\n              description: Result bytes, if any.\n            raw_log:\n              type: string\n              description: |-\n                The output of the application's logger (raw string). May be\n                non-deterministic.\n            logs:\n              type: array\n              items:\n                type: object\n                properties:\n                  msg_index:\n                    type: integer\n                    format: int64\n                  log:\n                    type: string\n                  events:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        type:\n                          type: string\n                        attributes:\n                          type: array\n                          items:\n                            type: object\n                            properties:\n                              key:\n                                type: string\n                              value:\n                                type: string\n                            description: >-\n                              Attribute defines an attribute wrapper where the\n                              key and value are\n\n                              strings instead of raw bytes.\n                      description: >-\n                        StringEvent defines en Event object wrapper where all\n                        the attributes\n\n                        contain key/value pairs that are strings instead of raw\n                        bytes.\n                    description: >-\n                      Events contains a slice of Event objects that were emitted\n                      during some\n\n                      execution.\n                description: >-\n                  ABCIMessageLog defines a structure containing an indexed tx\n                  ABCI message log.\n              description: >-\n                The output of the application's logger (typed). May be\n                non-deterministic.\n            info:\n              type: string\n              description: Additional information. May be non-deterministic.\n            gas_wanted:\n              type: string\n              format: int64\n              description: Amount of gas requested for transaction.\n            gas_used:\n              type: string\n              format: int64\n              description: Amount of gas consumed by transaction.\n            tx:\n              description: The request transaction bytes.\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n            timestamp:\n              type: string\n              description: >-\n                Time of the previous block. For heights > 1, it's the weighted\n                median of\n\n                the timestamps of the valid votes in the block.LastCommit. For\n                height == 1,\n\n                it's genesis time.\n            events:\n              type: array\n              items:\n                type: object\n                properties:\n                  type:\n                    type: string\n                  attributes:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        key:\n                          type: string\n                        value:\n                          type: string\n                        index:\n                          type: boolean\n                          title: nondeterministic\n                      description: >-\n                        EventAttribute is a single key-value pair, associated\n                        with an event.\n                description: >-\n                  Event allows application developers to attach additional\n                  information to\n\n                  ResponseFinalizeBlock and ResponseCheckTx.\n\n                  Later, transactions may be queried using these events.\n              description: >-\n                Events defines all the events emitted by processing a\n                transaction. Note,\n\n                these events include those emitted by processing all the\n                messages and those\n\n                emitted from the ante. Whereas Logs contains the events, with\n\n                additional metadata, emitted only by processing the messages.\n\n\n                Since: cosmos-sdk 0.42.11, 0.44.5, 0.45\n          description: >-\n            TxResponse defines a structure containing relevant tx data and\n            metadata. The\n\n            tags are stringified and the log is JSON decoded.\n        description: tx_responses is the list of queried TxResponses.\n      pagination:\n        description: |-\n          pagination defines a pagination for the response.\n          Deprecated post v0.46.x: use total instead.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n      total:\n        type: string\n        format: uint64\n        title: total is total number of results available\n    description: |-\n      GetTxsEventResponse is the response type for the Service.TxsByEvents\n      RPC method.\n  cosmos.tx.v1beta1.ModeInfo:\n    type: object\n    properties:\n      single:\n        title: single represents a single signer\n        type: object\n        properties:\n          mode:\n            title: mode is the signing mode of the single signer\n            type: string\n            enum:\n              - SIGN_MODE_UNSPECIFIED\n              - SIGN_MODE_DIRECT\n              - SIGN_MODE_TEXTUAL\n              - SIGN_MODE_DIRECT_AUX\n              - SIGN_MODE_LEGACY_AMINO_JSON\n              - SIGN_MODE_EIP_191\n            default: SIGN_MODE_UNSPECIFIED\n            description: >-\n              SignMode represents a signing mode with its own security\n              guarantees.\n\n\n              This enum should be considered a registry of all known sign modes\n\n              in the Cosmos ecosystem. Apps are not expected to support all\n              known\n\n              sign modes. Apps that would like to support custom  sign modes are\n\n              encouraged to open a small PR against this file to add a new case\n\n              to this SignMode enum describing their sign mode so that different\n\n              apps have a consistent version of this enum.\n\n               - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\n              rejected.\n               - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\n              verified with raw bytes from Tx.\n               - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\n              human-readable textual representation on top of the binary\n              representation\n\n              from SIGN_MODE_DIRECT.\n\n\n              Since: cosmos-sdk 0.50\n               - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\n              SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode\n              does not\n\n              require signers signing over other signers' `signer_info`.\n\n\n              Since: cosmos-sdk 0.46\n               - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\n              Amino JSON and will be removed in the future.\n               - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\n              SDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\n\n              Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum\n              variant,\n\n              but is not implemented on the SDK by default. To enable EIP-191,\n              you need\n\n              to pass a custom `TxConfig` that has an implementation of\n\n              `SignModeHandler` for EIP-191. The SDK may decide to fully support\n\n              EIP-191 in the future.\n\n\n              Since: cosmos-sdk 0.45.2\n      multi:\n        $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi'\n        title: multi represents a nested multisig signer\n    description: ModeInfo describes the signing mode of a single or nested multisig signer.\n  cosmos.tx.v1beta1.ModeInfo.Multi:\n    type: object\n    properties:\n      bitarray:\n        title: bitarray specifies which keys within the multisig are signing\n        type: object\n        properties:\n          extra_bits_stored:\n            type: integer\n            format: int64\n          elems:\n            type: string\n            format: byte\n        description: >-\n          CompactBitArray is an implementation of a space efficient bit array.\n\n          This is used to ensure that the encoded data takes up a minimal amount\n          of\n\n          space after proto encoding.\n\n          This is not thread safe, and is not intended for concurrent usage.\n      mode_infos:\n        type: array\n        items:\n          type: object\n          $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo'\n        title: |-\n          mode_infos is the corresponding modes of the signers of the multisig\n          which could include nested multisig public keys\n    title: Multi is the mode info for a multisig public key\n  cosmos.tx.v1beta1.ModeInfo.Single:\n    type: object\n    properties:\n      mode:\n        title: mode is the signing mode of the single signer\n        type: string\n        enum:\n          - SIGN_MODE_UNSPECIFIED\n          - SIGN_MODE_DIRECT\n          - SIGN_MODE_TEXTUAL\n          - SIGN_MODE_DIRECT_AUX\n          - SIGN_MODE_LEGACY_AMINO_JSON\n          - SIGN_MODE_EIP_191\n        default: SIGN_MODE_UNSPECIFIED\n        description: >-\n          SignMode represents a signing mode with its own security guarantees.\n\n\n          This enum should be considered a registry of all known sign modes\n\n          in the Cosmos ecosystem. Apps are not expected to support all known\n\n          sign modes. Apps that would like to support custom  sign modes are\n\n          encouraged to open a small PR against this file to add a new case\n\n          to this SignMode enum describing their sign mode so that different\n\n          apps have a consistent version of this enum.\n\n           - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\n          rejected.\n           - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\n          verified with raw bytes from Tx.\n           - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\n          human-readable textual representation on top of the binary\n          representation\n\n          from SIGN_MODE_DIRECT.\n\n\n          Since: cosmos-sdk 0.50\n           - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\n          SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does\n          not\n\n          require signers signing over other signers' `signer_info`.\n\n\n          Since: cosmos-sdk 0.46\n           - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\n          Amino JSON and will be removed in the future.\n           - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\n          SDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\n\n          Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\n\n          but is not implemented on the SDK by default. To enable EIP-191, you\n          need\n\n          to pass a custom `TxConfig` that has an implementation of\n\n          `SignModeHandler` for EIP-191. The SDK may decide to fully support\n\n          EIP-191 in the future.\n\n\n          Since: cosmos-sdk 0.45.2\n    title: |-\n      Single is the mode info for a single signer. It is structured as a message\n      to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\n      future\n  cosmos.tx.v1beta1.OrderBy:\n    type: string\n    enum:\n      - ORDER_BY_UNSPECIFIED\n      - ORDER_BY_ASC\n      - ORDER_BY_DESC\n    default: ORDER_BY_UNSPECIFIED\n    description: >-\n      - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting\n      order. OrderBy defaults\n\n      to ASC in this case.\n       - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n       - ORDER_BY_DESC: ORDER_BY_DESC defines descending order\n    title: OrderBy defines the sorting order\n  cosmos.tx.v1beta1.SignerInfo:\n    type: object\n    properties:\n      public_key:\n        description: >-\n          public_key is the public key of the signer. It is optional for\n          accounts\n\n          that already exist in state. If unset, the verifier can use the\n          required \\\n\n          signer address for this position and lookup the public key.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      mode_info:\n        $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo'\n        title: |-\n          mode_info describes the signing mode of the signer and is a nested\n          structure to support nested multisig pubkey's\n      sequence:\n        type: string\n        format: uint64\n        description: >-\n          sequence is the sequence of the account, which describes the\n\n          number of committed transactions signed by a given address. It is used\n          to\n\n          prevent replay attacks.\n    description: |-\n      SignerInfo describes the public key and signing mode of a single top-level\n      signer.\n  cosmos.tx.v1beta1.SimulateRequest:\n    type: object\n    properties:\n      tx:\n        $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: |-\n          tx is the transaction to simulate.\n          Deprecated. Send raw tx bytes instead.\n      tx_bytes:\n        type: string\n        format: byte\n        description: |-\n          tx_bytes is the raw transaction.\n\n          Since: cosmos-sdk 0.43\n    description: |-\n      SimulateRequest is the request type for the Service.Simulate\n      RPC method.\n  cosmos.tx.v1beta1.SimulateResponse:\n    type: object\n    properties:\n      gas_info:\n        description: gas_info is the information about gas used in the simulation.\n        type: object\n        properties:\n          gas_wanted:\n            type: string\n            format: uint64\n            description: >-\n              GasWanted is the maximum units of work we allow this tx to\n              perform.\n          gas_used:\n            type: string\n            format: uint64\n            description: GasUsed is the amount of gas actually consumed.\n      result:\n        description: result is the result of the simulation.\n        type: object\n        properties:\n          data:\n            type: string\n            format: byte\n            description: >-\n              Data is any data returned from message or handler execution. It\n              MUST be\n\n              length prefixed in order to separate data from multiple message\n              executions.\n\n              Deprecated. This field is still populated, but prefer msg_response\n              instead\n\n              because it also contains the Msg response typeURL.\n          log:\n            type: string\n            description: >-\n              Log contains the log information from message or handler\n              execution.\n          events:\n            type: array\n            items:\n              type: object\n              properties:\n                type:\n                  type: string\n                attributes:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      key:\n                        type: string\n                      value:\n                        type: string\n                      index:\n                        type: boolean\n                        title: nondeterministic\n                    description: >-\n                      EventAttribute is a single key-value pair, associated with\n                      an event.\n              description: >-\n                Event allows application developers to attach additional\n                information to\n\n                ResponseFinalizeBlock and ResponseCheckTx.\n\n                Later, transactions may be queried using these events.\n            description: >-\n              Events contains a slice of Event objects that were emitted during\n              message\n\n              or handler execution.\n          msg_responses:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            description: >-\n              msg_responses contains the Msg handler responses type packed in\n              Anys.\n\n\n              Since: cosmos-sdk 0.46\n    description: |-\n      SimulateResponse is the response type for the\n      Service.SimulateRPC method.\n  cosmos.tx.v1beta1.Tip:\n    type: object\n    properties:\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: amount is the amount of the tip\n      tipper:\n        type: string\n        title: tipper is the address of the account paying for the tip\n    description: |-\n      Tip is the tip used for meta-transactions.\n\n      Since: cosmos-sdk 0.46\n  cosmos.tx.v1beta1.Tx:\n    type: object\n    properties:\n      body:\n        title: body is the processable content of the transaction\n        type: object\n        properties:\n          messages:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            description: >-\n              messages is a list of messages to be executed. The required\n              signers of\n\n              those messages define the number and order of elements in\n              AuthInfo's\n\n              signer_infos and Tx's signatures. Each required signer address is\n              added to\n\n              the list only the first time it occurs.\n\n              By convention, the first required signer (usually from the first\n              message)\n\n              is referred to as the primary signer and pays the fee for the\n              whole\n\n              transaction.\n          memo:\n            type: string\n            description: >-\n              memo is any arbitrary note/comment to be added to the transaction.\n\n              WARNING: in clients, any publicly exposed text should not be\n              called memo,\n\n              but should be called `note` instead (see\n              https://github.com/cosmos/cosmos-sdk/issues/9122).\n          timeout_height:\n            type: string\n            format: uint64\n            title: |-\n              timeout is the block height after which this transaction will not\n              be processed by the chain\n          extension_options:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            title: >-\n              extension_options are arbitrary options that can be added by\n              chains\n\n              when the default options are not sufficient. If any of these are\n              present\n\n              and can't be handled, the transaction will be rejected\n          non_critical_extension_options:\n            type: array\n            items:\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n            title: >-\n              extension_options are arbitrary options that can be added by\n              chains\n\n              when the default options are not sufficient. If any of these are\n              present\n\n              and can't be handled, they will be ignored\n        description: TxBody is the body of a transaction that all signers sign over.\n      auth_info:\n        $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo'\n        title: |-\n          auth_info is the authorization related content of the transaction,\n          specifically signers, signer modes and fee\n      signatures:\n        type: array\n        items:\n          type: string\n          format: byte\n        description: >-\n          signatures is a list of signatures that matches the length and order\n          of\n\n          AuthInfo's signer_infos to allow connecting signature meta information\n          like\n\n          public key and signing mode by position.\n    description: Tx is the standard type used for broadcasting transactions.\n  cosmos.tx.v1beta1.TxBody:\n    type: object\n    properties:\n      messages:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        description: >-\n          messages is a list of messages to be executed. The required signers of\n\n          those messages define the number and order of elements in AuthInfo's\n\n          signer_infos and Tx's signatures. Each required signer address is\n          added to\n\n          the list only the first time it occurs.\n\n          By convention, the first required signer (usually from the first\n          message)\n\n          is referred to as the primary signer and pays the fee for the whole\n\n          transaction.\n      memo:\n        type: string\n        description: >-\n          memo is any arbitrary note/comment to be added to the transaction.\n\n          WARNING: in clients, any publicly exposed text should not be called\n          memo,\n\n          but should be called `note` instead (see\n          https://github.com/cosmos/cosmos-sdk/issues/9122).\n      timeout_height:\n        type: string\n        format: uint64\n        title: |-\n          timeout is the block height after which this transaction will not\n          be processed by the chain\n      extension_options:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        title: >-\n          extension_options are arbitrary options that can be added by chains\n\n          when the default options are not sufficient. If any of these are\n          present\n\n          and can't be handled, the transaction will be rejected\n      non_critical_extension_options:\n        type: array\n        items:\n          type: object\n          properties:\n            '@type':\n              type: string\n              description: >-\n                A URL/resource name that uniquely identifies the type of the\n                serialized\n\n                protocol buffer message. This string must contain at least\n\n                one \"/\" character. The last segment of the URL's path must\n                represent\n\n                the fully qualified name of the type (as in\n\n                `path/google.protobuf.Duration`). The name should be in a\n                canonical form\n\n                (e.g., leading \".\" is not accepted).\n\n\n                In practice, teams usually precompile into the binary all types\n                that they\n\n                expect it to use in the context of Any. However, for URLs which\n                use the\n\n                scheme `http`, `https`, or no scheme, one can optionally set up\n                a type\n\n                server that maps type URLs to message definitions as follows:\n\n\n                * If no scheme is provided, `https` is assumed.\n\n                * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                  value in binary format, or produce an error.\n                * Applications are allowed to cache lookup results based on the\n                  URL, or have them precompiled into a binary to avoid any\n                  lookup. Therefore, binary compatibility needs to be preserved\n                  on changes to types. (Use versioned type names to manage\n                  breaking changes.)\n\n                Note: this functionality is not currently available in the\n                official\n\n                protobuf release, and it is not used for type URLs beginning\n                with\n\n                type.googleapis.com.\n\n\n                Schemes other than `http`, `https` (or the empty scheme) might\n                be\n\n                used with implementation specific semantics.\n          additionalProperties: {}\n          description: >-\n            `Any` contains an arbitrary serialized protocol buffer message along\n            with a\n\n            URL that describes the type of the serialized message.\n\n\n            Protobuf library provides support to pack/unpack Any values in the\n            form\n\n            of utility functions or additional generated methods of the Any\n            type.\n\n\n            Example 1: Pack and unpack a message in C++.\n\n                Foo foo = ...;\n                Any any;\n                any.PackFrom(foo);\n                ...\n                if (any.UnpackTo(&foo)) {\n                  ...\n                }\n\n            Example 2: Pack and unpack a message in Java.\n\n                Foo foo = ...;\n                Any any = Any.pack(foo);\n                ...\n                if (any.is(Foo.class)) {\n                  foo = any.unpack(Foo.class);\n                }\n                // or ...\n                if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                  foo = any.unpack(Foo.getDefaultInstance());\n                }\n\n            Example 3: Pack and unpack a message in Python.\n\n                foo = Foo(...)\n                any = Any()\n                any.Pack(foo)\n                ...\n                if any.Is(Foo.DESCRIPTOR):\n                  any.Unpack(foo)\n                  ...\n\n            Example 4: Pack and unpack a message in Go\n\n                 foo := &pb.Foo{...}\n                 any, err := anypb.New(foo)\n                 if err != nil {\n                   ...\n                 }\n                 ...\n                 foo := &pb.Foo{}\n                 if err := any.UnmarshalTo(foo); err != nil {\n                   ...\n                 }\n\n            The pack methods provided by protobuf library will by default use\n\n            'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n            methods only use the fully qualified type name after the last '/'\n\n            in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n            name \"y.z\".\n\n\n            JSON\n\n\n            The JSON representation of an `Any` value uses the regular\n\n            representation of the deserialized, embedded message, with an\n\n            additional field `@type` which contains the type URL. Example:\n\n                package google.profile;\n                message Person {\n                  string first_name = 1;\n                  string last_name = 2;\n                }\n\n                {\n                  \"@type\": \"type.googleapis.com/google.profile.Person\",\n                  \"firstName\": <string>,\n                  \"lastName\": <string>\n                }\n\n            If the embedded message type is well-known and has a custom JSON\n\n            representation, that representation will be embedded adding a field\n\n            `value` which holds the custom JSON in addition to the `@type`\n\n            field. Example (for message [google.protobuf.Duration][]):\n\n                {\n                  \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                  \"value\": \"1.212s\"\n                }\n        title: >-\n          extension_options are arbitrary options that can be added by chains\n\n          when the default options are not sufficient. If any of these are\n          present\n\n          and can't be handled, they will be ignored\n    description: TxBody is the body of a transaction that all signers sign over.\n  cosmos.tx.v1beta1.TxDecodeAminoRequest:\n    type: object\n    properties:\n      amino_binary:\n        type: string\n        format: byte\n    description: |-\n      TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxDecodeAminoResponse:\n    type: object\n    properties:\n      amino_json:\n        type: string\n    description: |-\n      TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxDecodeRequest:\n    type: object\n    properties:\n      tx_bytes:\n        type: string\n        format: byte\n        description: tx_bytes is the raw transaction.\n    description: |-\n      TxDecodeRequest is the request type for the Service.TxDecode\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxDecodeResponse:\n    type: object\n    properties:\n      tx:\n        $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: tx is the decoded transaction.\n    description: |-\n      TxDecodeResponse is the response type for the\n      Service.TxDecode method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxEncodeAminoRequest:\n    type: object\n    properties:\n      amino_json:\n        type: string\n    description: |-\n      TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxEncodeAminoResponse:\n    type: object\n    properties:\n      amino_binary:\n        type: string\n        format: byte\n    description: |-\n      TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxEncodeRequest:\n    type: object\n    properties:\n      tx:\n        $ref: '#/definitions/cosmos.tx.v1beta1.Tx'\n        description: tx is the transaction to encode.\n    description: |-\n      TxEncodeRequest is the request type for the Service.TxEncode\n      RPC method.\n\n      Since: cosmos-sdk 0.47\n  cosmos.tx.v1beta1.TxEncodeResponse:\n    type: object\n    properties:\n      tx_bytes:\n        type: string\n        format: byte\n        description: tx_bytes is the encoded transaction bytes.\n    description: |-\n      TxEncodeResponse is the response type for the\n      Service.TxEncode method.\n\n      Since: cosmos-sdk 0.47\n  tendermint.abci.Event:\n    type: object\n    properties:\n      type:\n        type: string\n      attributes:\n        type: array\n        items:\n          type: object\n          properties:\n            key:\n              type: string\n            value:\n              type: string\n            index:\n              type: boolean\n              title: nondeterministic\n          description: EventAttribute is a single key-value pair, associated with an event.\n    description: |-\n      Event allows application developers to attach additional information to\n      ResponseFinalizeBlock and ResponseCheckTx.\n      Later, transactions may be queried using these events.\n  tendermint.abci.EventAttribute:\n    type: object\n    properties:\n      key:\n        type: string\n      value:\n        type: string\n      index:\n        type: boolean\n        title: nondeterministic\n    description: EventAttribute is a single key-value pair, associated with an event.\n  cosmos.upgrade.v1beta1.MsgCancelUpgrade:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n    description: |-\n      MsgCancelUpgrade is the Msg/CancelUpgrade request type.\n\n      Since: cosmos-sdk 0.46\n  cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse:\n    type: object\n    description: |-\n      MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.\n\n      Since: cosmos-sdk 0.46\n  cosmos.upgrade.v1beta1.MsgSoftwareUpgrade:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      plan:\n        description: plan is the upgrade plan.\n        type: object\n        properties:\n          name:\n            type: string\n            description: >-\n              Sets the name for the upgrade. This name will be used by the\n              upgraded\n\n              version of the software to apply any special \"on-upgrade\" commands\n              during\n\n              the first BeginBlock method after the upgrade is applied. It is\n              also used\n\n              to detect whether a software version can handle a given upgrade.\n              If no\n\n              upgrade handler with this name has been set in the software, it\n              will be\n\n              assumed that the software is out-of-date when the upgrade Time or\n              Height is\n\n              reached and the software will exit.\n          time:\n            type: string\n            format: date-time\n            description: >-\n              Deprecated: Time based upgrades have been deprecated. Time based\n              upgrade logic\n\n              has been removed from the SDK.\n\n              If this field is not empty, an error will be thrown.\n          height:\n            type: string\n            format: int64\n            description: The height at which the upgrade must be performed.\n          info:\n            type: string\n            title: >-\n              Any application specific upgrade info to be included on-chain\n\n              such as a git commit that validators could automatically upgrade\n              to\n          upgraded_client_state:\n            description: >-\n              Deprecated: UpgradedClientState field has been deprecated. IBC\n              upgrade logic has been\n\n              moved to the IBC module in the sub module 02-client.\n\n              If this field is not empty, an error will be thrown.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n    description: |-\n      MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.\n\n      Since: cosmos-sdk 0.46\n  cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse:\n    type: object\n    description: |-\n      MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.\n\n      Since: cosmos-sdk 0.46\n  cosmos.upgrade.v1beta1.Plan:\n    type: object\n    properties:\n      name:\n        type: string\n        description: >-\n          Sets the name for the upgrade. This name will be used by the upgraded\n\n          version of the software to apply any special \"on-upgrade\" commands\n          during\n\n          the first BeginBlock method after the upgrade is applied. It is also\n          used\n\n          to detect whether a software version can handle a given upgrade. If no\n\n          upgrade handler with this name has been set in the software, it will\n          be\n\n          assumed that the software is out-of-date when the upgrade Time or\n          Height is\n\n          reached and the software will exit.\n      time:\n        type: string\n        format: date-time\n        description: >-\n          Deprecated: Time based upgrades have been deprecated. Time based\n          upgrade logic\n\n          has been removed from the SDK.\n\n          If this field is not empty, an error will be thrown.\n      height:\n        type: string\n        format: int64\n        description: The height at which the upgrade must be performed.\n      info:\n        type: string\n        title: |-\n          Any application specific upgrade info to be included on-chain\n          such as a git commit that validators could automatically upgrade to\n      upgraded_client_state:\n        description: >-\n          Deprecated: UpgradedClientState field has been deprecated. IBC upgrade\n          logic has been\n\n          moved to the IBC module in the sub module 02-client.\n\n          If this field is not empty, an error will be thrown.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n    description: >-\n      Plan specifies information about a planned upgrade and when it should\n      occur.\n  cosmos.upgrade.v1beta1.ModuleVersion:\n    type: object\n    properties:\n      name:\n        type: string\n        title: name of the app module\n      version:\n        type: string\n        format: uint64\n        title: consensus version of the app module\n    description: |-\n      ModuleVersion specifies a module and its consensus version.\n\n      Since: cosmos-sdk 0.43\n  cosmos.upgrade.v1beta1.QueryAppliedPlanResponse:\n    type: object\n    properties:\n      height:\n        type: string\n        format: int64\n        description: height is the block height at which the plan was applied.\n    description: >-\n      QueryAppliedPlanResponse is the response type for the Query/AppliedPlan\n      RPC\n\n      method.\n  cosmos.upgrade.v1beta1.QueryAuthorityResponse:\n    type: object\n    properties:\n      address:\n        type: string\n    description: 'Since: cosmos-sdk 0.46'\n    title: QueryAuthorityResponse is the response type for Query/Authority\n  cosmos.upgrade.v1beta1.QueryCurrentPlanResponse:\n    type: object\n    properties:\n      plan:\n        description: plan is the current upgrade plan.\n        type: object\n        properties:\n          name:\n            type: string\n            description: >-\n              Sets the name for the upgrade. This name will be used by the\n              upgraded\n\n              version of the software to apply any special \"on-upgrade\" commands\n              during\n\n              the first BeginBlock method after the upgrade is applied. It is\n              also used\n\n              to detect whether a software version can handle a given upgrade.\n              If no\n\n              upgrade handler with this name has been set in the software, it\n              will be\n\n              assumed that the software is out-of-date when the upgrade Time or\n              Height is\n\n              reached and the software will exit.\n          time:\n            type: string\n            format: date-time\n            description: >-\n              Deprecated: Time based upgrades have been deprecated. Time based\n              upgrade logic\n\n              has been removed from the SDK.\n\n              If this field is not empty, an error will be thrown.\n          height:\n            type: string\n            format: int64\n            description: The height at which the upgrade must be performed.\n          info:\n            type: string\n            title: >-\n              Any application specific upgrade info to be included on-chain\n\n              such as a git commit that validators could automatically upgrade\n              to\n          upgraded_client_state:\n            description: >-\n              Deprecated: UpgradedClientState field has been deprecated. IBC\n              upgrade logic has been\n\n              moved to the IBC module in the sub module 02-client.\n\n              If this field is not empty, an error will be thrown.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n    description: >-\n      QueryCurrentPlanResponse is the response type for the Query/CurrentPlan\n      RPC\n\n      method.\n  cosmos.upgrade.v1beta1.QueryModuleVersionsResponse:\n    type: object\n    properties:\n      module_versions:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n              title: name of the app module\n            version:\n              type: string\n              format: uint64\n              title: consensus version of the app module\n          description: |-\n            ModuleVersion specifies a module and its consensus version.\n\n            Since: cosmos-sdk 0.43\n        description: >-\n          module_versions is a list of module names with their consensus\n          versions.\n    description: >-\n      QueryModuleVersionsResponse is the response type for the\n      Query/ModuleVersions\n\n      RPC method.\n\n\n      Since: cosmos-sdk 0.43\n  cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse:\n    type: object\n    properties:\n      upgraded_consensus_state:\n        type: string\n        format: byte\n        title: 'Since: cosmos-sdk 0.43'\n    description: >-\n      QueryUpgradedConsensusStateResponse is the response type for the\n      Query/UpgradedConsensusState\n\n      RPC method.\n  cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount:\n    type: object\n    properties:\n      from_address:\n        type: string\n      to_address:\n        type: string\n      start_time:\n        type: string\n        format: int64\n        description: start of vesting as unix time (in seconds).\n      vesting_periods:\n        type: array\n        items:\n          type: object\n          properties:\n            length:\n              type: string\n              format: int64\n              description: Period duration in seconds.\n            amount:\n              type: array\n              items:\n                type: object\n                properties:\n                  denom:\n                    type: string\n                  amount:\n                    type: string\n                description: >-\n                  Coin defines a token with a denomination and an amount.\n\n\n                  NOTE: The amount field is an Int which implements the custom\n                  method\n\n                  signatures required by gogoproto.\n          description: Period defines a length of time and amount of coins that will vest.\n    description: |-\n      MsgCreateVestingAccount defines a message that enables creating a vesting\n      account.\n\n      Since: cosmos-sdk 0.46\n  cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse:\n    type: object\n    description: >-\n      MsgCreateVestingAccountResponse defines the\n      Msg/CreatePeriodicVestingAccount\n\n      response type.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount:\n    type: object\n    properties:\n      from_address:\n        type: string\n      to_address:\n        type: string\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: >-\n      MsgCreatePermanentLockedAccount defines a message that enables creating a\n      permanent\n\n      locked account.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse:\n    type: object\n    description: >-\n      MsgCreatePermanentLockedAccountResponse defines the\n      Msg/CreatePermanentLockedAccount response type.\n\n\n      Since: cosmos-sdk 0.46\n  cosmos.vesting.v1beta1.MsgCreateVestingAccount:\n    type: object\n    properties:\n      from_address:\n        type: string\n      to_address:\n        type: string\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n      end_time:\n        type: string\n        format: int64\n        description: end of vesting as unix time (in seconds).\n      delayed:\n        type: boolean\n    description: |-\n      MsgCreateVestingAccount defines a message that enables creating a vesting\n      account.\n  cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse:\n    type: object\n    description: >-\n      MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount\n      response type.\n  cosmos.vesting.v1beta1.Period:\n    type: object\n    properties:\n      length:\n        type: string\n        format: int64\n        description: Period duration in seconds.\n      amount:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n    description: Period defines a length of time and amount of coins that will vest.\n  ibc.applications.fee.v1.Fee:\n    type: object\n    properties:\n      recv_fee:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the packet receive fee\n      ack_fee:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the packet acknowledgement fee\n      timeout_fee:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the packet timeout fee\n    title: Fee defines the ICS29 receive, acknowledgement and timeout fees\n  ibc.applications.fee.v1.MsgPayPacketFee:\n    type: object\n    properties:\n      fee:\n        title: >-\n          fee encapsulates the recv, ack and timeout fees associated with an IBC\n          packet\n        type: object\n        properties:\n          recv_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet receive fee\n          ack_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet acknowledgement fee\n          timeout_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet timeout fee\n      source_port_id:\n        type: string\n        title: the source port unique identifier\n      source_channel_id:\n        type: string\n        title: the source channel unique identifer\n      signer:\n        type: string\n        title: account address to refund fee if necessary\n      relayers:\n        type: array\n        items:\n          type: string\n        title: optional list of relayers permitted to the receive packet fees\n    title: >-\n      MsgPayPacketFee defines the request type for the PayPacketFee rpc\n\n      This Msg can be used to pay for a packet at the next sequence send &\n      should be combined with the Msg that will be\n\n      paid for\n  ibc.applications.fee.v1.MsgPayPacketFeeAsync:\n    type: object\n    properties:\n      packet_id:\n        title: >-\n          unique packet identifier comprised of the channel ID, port ID and\n          sequence\n        type: object\n        properties:\n          port_id:\n            type: string\n            title: channel port identifier\n          channel_id:\n            type: string\n            title: channel unique identifier\n          sequence:\n            type: string\n            format: uint64\n            title: packet sequence\n      packet_fee:\n        title: the packet fee associated with a particular IBC packet\n        type: object\n        properties:\n          fee:\n            title: >-\n              fee encapsulates the recv, ack and timeout fees associated with an\n              IBC packet\n            type: object\n            properties:\n              recv_fee:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the packet receive fee\n              ack_fee:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the packet acknowledgement fee\n              timeout_fee:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    denom:\n                      type: string\n                    amount:\n                      type: string\n                  description: >-\n                    Coin defines a token with a denomination and an amount.\n\n\n                    NOTE: The amount field is an Int which implements the custom\n                    method\n\n                    signatures required by gogoproto.\n                title: the packet timeout fee\n          refund_address:\n            type: string\n            title: the refund address for unspent fees\n          relayers:\n            type: array\n            items:\n              type: string\n            title: optional list of relayers permitted to receive fees\n    title: >-\n      MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync\n      rpc\n\n      This Msg can be used to pay for a packet at a specified sequence (instead\n      of the next sequence send)\n  ibc.applications.fee.v1.MsgPayPacketFeeAsyncResponse:\n    type: object\n    title: >-\n      MsgPayPacketFeeAsyncResponse defines the response type for the\n      PayPacketFeeAsync rpc\n  ibc.applications.fee.v1.MsgPayPacketFeeResponse:\n    type: object\n    title: MsgPayPacketFeeResponse defines the response type for the PayPacketFee rpc\n  ibc.applications.fee.v1.MsgRegisterCounterpartyPayee:\n    type: object\n    properties:\n      port_id:\n        type: string\n        title: unique port identifier\n      channel_id:\n        type: string\n        title: unique channel identifier\n      relayer:\n        type: string\n        title: the relayer address\n      counterparty_payee:\n        type: string\n        title: the counterparty payee address\n    title: >-\n      MsgRegisterCounterpartyPayee defines the request type for the\n      RegisterCounterpartyPayee rpc\n  ibc.applications.fee.v1.MsgRegisterCounterpartyPayeeResponse:\n    type: object\n    title: >-\n      MsgRegisterCounterpartyPayeeResponse defines the response type for the\n      RegisterCounterpartyPayee rpc\n  ibc.applications.fee.v1.MsgRegisterPayee:\n    type: object\n    properties:\n      port_id:\n        type: string\n        title: unique port identifier\n      channel_id:\n        type: string\n        title: unique channel identifier\n      relayer:\n        type: string\n        title: the relayer address\n      payee:\n        type: string\n        title: the payee address\n    title: MsgRegisterPayee defines the request type for the RegisterPayee rpc\n  ibc.applications.fee.v1.MsgRegisterPayeeResponse:\n    type: object\n    title: >-\n      MsgRegisterPayeeResponse defines the response type for the RegisterPayee\n      rpc\n  ibc.applications.fee.v1.PacketFee:\n    type: object\n    properties:\n      fee:\n        title: >-\n          fee encapsulates the recv, ack and timeout fees associated with an IBC\n          packet\n        type: object\n        properties:\n          recv_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet receive fee\n          ack_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet acknowledgement fee\n          timeout_fee:\n            type: array\n            items:\n              type: object\n              properties:\n                denom:\n                  type: string\n                amount:\n                  type: string\n              description: >-\n                Coin defines a token with a denomination and an amount.\n\n\n                NOTE: The amount field is an Int which implements the custom\n                method\n\n                signatures required by gogoproto.\n            title: the packet timeout fee\n      refund_address:\n        type: string\n        title: the refund address for unspent fees\n      relayers:\n        type: array\n        items:\n          type: string\n        title: optional list of relayers permitted to receive fees\n    title: >-\n      PacketFee contains ICS29 relayer fees, refund address and optional list of\n      permitted relayers\n  ibc.core.channel.v1.PacketId:\n    type: object\n    properties:\n      port_id:\n        type: string\n        title: channel port identifier\n      channel_id:\n        type: string\n        title: channel unique identifier\n      sequence:\n        type: string\n        format: uint64\n        title: packet sequence\n    title: |-\n      PacketId is an identifer for a unique Packet\n      Source chains refer to packets by source port/channel\n      Destination chains refer to packets by destination port/channel\n  ibc.applications.fee.v1.FeeEnabledChannel:\n    type: object\n    properties:\n      port_id:\n        type: string\n        title: unique port identifier\n      channel_id:\n        type: string\n        title: unique channel identifier\n    title: >-\n      FeeEnabledChannel contains the PortID & ChannelID for a fee enabled\n      channel\n  ibc.applications.fee.v1.IdentifiedPacketFees:\n    type: object\n    properties:\n      packet_id:\n        title: >-\n          unique packet identifier comprised of the channel ID, port ID and\n          sequence\n        type: object\n        properties:\n          port_id:\n            type: string\n            title: channel port identifier\n          channel_id:\n            type: string\n            title: channel unique identifier\n          sequence:\n            type: string\n            format: uint64\n            title: packet sequence\n      packet_fees:\n        type: array\n        items:\n          type: object\n          properties:\n            fee:\n              title: >-\n                fee encapsulates the recv, ack and timeout fees associated with\n                an IBC packet\n              type: object\n              properties:\n                recv_fee:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      denom:\n                        type: string\n                      amount:\n                        type: string\n                    description: >-\n                      Coin defines a token with a denomination and an amount.\n\n\n                      NOTE: The amount field is an Int which implements the\n                      custom method\n\n                      signatures required by gogoproto.\n                  title: the packet receive fee\n                ack_fee:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      denom:\n                        type: string\n                      amount:\n                        type: string\n                    description: >-\n                      Coin defines a token with a denomination and an amount.\n\n\n                      NOTE: The amount field is an Int which implements the\n                      custom method\n\n                      signatures required by gogoproto.\n                  title: the packet acknowledgement fee\n                timeout_fee:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      denom:\n                        type: string\n                      amount:\n                        type: string\n                    description: >-\n                      Coin defines a token with a denomination and an amount.\n\n\n                      NOTE: The amount field is an Int which implements the\n                      custom method\n\n                      signatures required by gogoproto.\n                  title: the packet timeout fee\n            refund_address:\n              type: string\n              title: the refund address for unspent fees\n            relayers:\n              type: array\n              items:\n                type: string\n              title: optional list of relayers permitted to receive fees\n          title: >-\n            PacketFee contains ICS29 relayer fees, refund address and optional\n            list of permitted relayers\n        title: list of packet fees\n    title: >-\n      IdentifiedPacketFees contains a list of type PacketFee and associated\n      PacketId\n  ibc.applications.fee.v1.QueryCounterpartyPayeeResponse:\n    type: object\n    properties:\n      counterparty_payee:\n        type: string\n        title: the counterparty payee address used to compensate forward relaying\n    title: >-\n      QueryCounterpartyPayeeResponse defines the response type for the\n      CounterpartyPayee rpc\n  ibc.applications.fee.v1.QueryFeeEnabledChannelResponse:\n    type: object\n    properties:\n      fee_enabled:\n        type: boolean\n        title: boolean flag representing the fee enabled channel status\n    title: >-\n      QueryFeeEnabledChannelResponse defines the response type for the\n      FeeEnabledChannel rpc\n  ibc.applications.fee.v1.QueryFeeEnabledChannelsResponse:\n    type: object\n    properties:\n      fee_enabled_channels:\n        type: array\n        items:\n          type: object\n          properties:\n            port_id:\n              type: string\n              title: unique port identifier\n            channel_id:\n              type: string\n              title: unique channel identifier\n          title: >-\n            FeeEnabledChannel contains the PortID & ChannelID for a fee enabled\n            channel\n        title: list of fee enabled channels\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: >-\n      QueryFeeEnabledChannelsResponse defines the response type for the\n      FeeEnabledChannels rpc\n  ibc.applications.fee.v1.QueryIncentivizedPacketResponse:\n    type: object\n    properties:\n      incentivized_packet:\n        title: the identified fees for the incentivized packet\n        type: object\n        properties:\n          packet_id:\n            title: >-\n              unique packet identifier comprised of the channel ID, port ID and\n              sequence\n            type: object\n            properties:\n              port_id:\n                type: string\n                title: channel port identifier\n              channel_id:\n                type: string\n                title: channel unique identifier\n              sequence:\n                type: string\n                format: uint64\n                title: packet sequence\n          packet_fees:\n            type: array\n            items:\n              type: object\n              properties:\n                fee:\n                  title: >-\n                    fee encapsulates the recv, ack and timeout fees associated\n                    with an IBC packet\n                  type: object\n                  properties:\n                    recv_fee:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      title: the packet receive fee\n                    ack_fee:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      title: the packet acknowledgement fee\n                    timeout_fee:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          denom:\n                            type: string\n                          amount:\n                            type: string\n                        description: >-\n                          Coin defines a token with a denomination and an\n                          amount.\n\n\n                          NOTE: The amount field is an Int which implements the\n                          custom method\n\n                          signatures required by gogoproto.\n                      title: the packet timeout fee\n                refund_address:\n                  type: string\n                  title: the refund address for unspent fees\n                relayers:\n                  type: array\n                  items:\n                    type: string\n                  title: optional list of relayers permitted to receive fees\n              title: >-\n                PacketFee contains ICS29 relayer fees, refund address and\n                optional list of permitted relayers\n            title: list of packet fees\n    title: >-\n      QueryIncentivizedPacketsResponse defines the response type for the\n      IncentivizedPacket rpc\n  ibc.applications.fee.v1.QueryIncentivizedPacketsForChannelResponse:\n    type: object\n    properties:\n      incentivized_packets:\n        type: array\n        items:\n          type: object\n          properties:\n            packet_id:\n              title: >-\n                unique packet identifier comprised of the channel ID, port ID\n                and sequence\n              type: object\n              properties:\n                port_id:\n                  type: string\n                  title: channel port identifier\n                channel_id:\n                  type: string\n                  title: channel unique identifier\n                sequence:\n                  type: string\n                  format: uint64\n                  title: packet sequence\n            packet_fees:\n              type: array\n              items:\n                type: object\n                properties:\n                  fee:\n                    title: >-\n                      fee encapsulates the recv, ack and timeout fees associated\n                      with an IBC packet\n                    type: object\n                    properties:\n                      recv_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet receive fee\n                      ack_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet acknowledgement fee\n                      timeout_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet timeout fee\n                  refund_address:\n                    type: string\n                    title: the refund address for unspent fees\n                  relayers:\n                    type: array\n                    items:\n                      type: string\n                    title: optional list of relayers permitted to receive fees\n                title: >-\n                  PacketFee contains ICS29 relayer fees, refund address and\n                  optional list of permitted relayers\n              title: list of packet fees\n          title: >-\n            IdentifiedPacketFees contains a list of type PacketFee and\n            associated PacketId\n        title: Map of all incentivized_packets\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: >-\n      QueryIncentivizedPacketsResponse defines the response type for the\n      incentivized packets RPC\n  ibc.applications.fee.v1.QueryIncentivizedPacketsResponse:\n    type: object\n    properties:\n      incentivized_packets:\n        type: array\n        items:\n          type: object\n          properties:\n            packet_id:\n              title: >-\n                unique packet identifier comprised of the channel ID, port ID\n                and sequence\n              type: object\n              properties:\n                port_id:\n                  type: string\n                  title: channel port identifier\n                channel_id:\n                  type: string\n                  title: channel unique identifier\n                sequence:\n                  type: string\n                  format: uint64\n                  title: packet sequence\n            packet_fees:\n              type: array\n              items:\n                type: object\n                properties:\n                  fee:\n                    title: >-\n                      fee encapsulates the recv, ack and timeout fees associated\n                      with an IBC packet\n                    type: object\n                    properties:\n                      recv_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet receive fee\n                      ack_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet acknowledgement fee\n                      timeout_fee:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            denom:\n                              type: string\n                            amount:\n                              type: string\n                          description: >-\n                            Coin defines a token with a denomination and an\n                            amount.\n\n\n                            NOTE: The amount field is an Int which implements\n                            the custom method\n\n                            signatures required by gogoproto.\n                        title: the packet timeout fee\n                  refund_address:\n                    type: string\n                    title: the refund address for unspent fees\n                  relayers:\n                    type: array\n                    items:\n                      type: string\n                    title: optional list of relayers permitted to receive fees\n                title: >-\n                  PacketFee contains ICS29 relayer fees, refund address and\n                  optional list of permitted relayers\n              title: list of packet fees\n          title: >-\n            IdentifiedPacketFees contains a list of type PacketFee and\n            associated PacketId\n        title: list of identified fees for incentivized packets\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    title: >-\n      QueryIncentivizedPacketsResponse defines the response type for the\n      IncentivizedPackets rpc\n  ibc.applications.fee.v1.QueryPayeeResponse:\n    type: object\n    properties:\n      payee_address:\n        type: string\n        title: the payee address to which packet fees are paid out\n    title: QueryPayeeResponse defines the response type for the Payee rpc\n  ibc.applications.fee.v1.QueryTotalAckFeesResponse:\n    type: object\n    properties:\n      ack_fees:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the total packet acknowledgement fees\n    title: >-\n      QueryTotalAckFeesResponse defines the response type for the TotalAckFees\n      rpc\n  ibc.applications.fee.v1.QueryTotalRecvFeesResponse:\n    type: object\n    properties:\n      recv_fees:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the total packet receive fees\n    title: >-\n      QueryTotalRecvFeesResponse defines the response type for the TotalRecvFees\n      rpc\n  ibc.applications.fee.v1.QueryTotalTimeoutFeesResponse:\n    type: object\n    properties:\n      timeout_fees:\n        type: array\n        items:\n          type: object\n          properties:\n            denom:\n              type: string\n            amount:\n              type: string\n          description: |-\n            Coin defines a token with a denomination and an amount.\n\n            NOTE: The amount field is an Int which implements the custom method\n            signatures required by gogoproto.\n        title: the total packet timeout fees\n    title: >-\n      QueryTotalTimeoutFeesResponse defines the response type for the\n      TotalTimeoutFees rpc\n  ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount:\n    type: object\n    properties:\n      owner:\n        type: string\n      connection_id:\n        type: string\n      version:\n        type: string\n    title: MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount\n  ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse:\n    type: object\n    properties:\n      channel_id:\n        type: string\n      port_id:\n        type: string\n    title: >-\n      MsgRegisterInterchainAccountResponse defines the response for\n      Msg/RegisterAccount\n  ibc.applications.interchain_accounts.controller.v1.MsgSendTx:\n    type: object\n    properties:\n      owner:\n        type: string\n      connection_id:\n        type: string\n      packet_data:\n        type: object\n        properties:\n          type:\n            type: string\n            enum:\n              - TYPE_UNSPECIFIED\n              - TYPE_EXECUTE_TX\n            default: TYPE_UNSPECIFIED\n            description: |-\n              - TYPE_UNSPECIFIED: Default zero value enumeration\n               - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain\n            title: >-\n              Type defines a classification of message issued from a controller\n              chain to its associated interchain accounts\n\n              host\n          data:\n            type: string\n            format: byte\n          memo:\n            type: string\n        description: >-\n          InterchainAccountPacketData is comprised of a raw transaction, type of\n          transaction and optional memo field.\n      relative_timeout:\n        type: string\n        format: uint64\n        description: >-\n          Relative timeout timestamp provided will be added to the current block\n          time during transaction execution.\n\n          The timeout timestamp must be non-zero.\n    title: MsgSendTx defines the payload for Msg/SendTx\n  ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse:\n    type: object\n    properties:\n      sequence:\n        type: string\n        format: uint64\n    title: MsgSendTxResponse defines the response for MsgSendTx\n  ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams:\n    type: object\n    properties:\n      signer:\n        type: string\n        title: signer address\n      params:\n        description: >-\n          params defines the 27-interchain-accounts/controller parameters to\n          update.\n\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          controller_enabled:\n            type: boolean\n            description: controller_enabled enables or disables the controller submodule.\n    title: MsgUpdateParams defines the payload for Msg/UpdateParams\n  ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse:\n    type: object\n    title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams\n  ibc.applications.interchain_accounts.controller.v1.Params:\n    type: object\n    properties:\n      controller_enabled:\n        type: boolean\n        description: controller_enabled enables or disables the controller submodule.\n    description: |-\n      Params defines the set of on-chain interchain accounts parameters.\n      The following parameters may be used to disable the controller submodule.\n  ibc.applications.interchain_accounts.v1.InterchainAccountPacketData:\n    type: object\n    properties:\n      type:\n        type: string\n        enum:\n          - TYPE_UNSPECIFIED\n          - TYPE_EXECUTE_TX\n        default: TYPE_UNSPECIFIED\n        description: |-\n          - TYPE_UNSPECIFIED: Default zero value enumeration\n           - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain\n        title: >-\n          Type defines a classification of message issued from a controller\n          chain to its associated interchain accounts\n\n          host\n      data:\n        type: string\n        format: byte\n      memo:\n        type: string\n    description: >-\n      InterchainAccountPacketData is comprised of a raw transaction, type of\n      transaction and optional memo field.\n  ibc.applications.interchain_accounts.v1.Type:\n    type: string\n    enum:\n      - TYPE_UNSPECIFIED\n      - TYPE_EXECUTE_TX\n    default: TYPE_UNSPECIFIED\n    description: |-\n      - TYPE_UNSPECIFIED: Default zero value enumeration\n       - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain\n    title: >-\n      Type defines a classification of message issued from a controller chain to\n      its associated interchain accounts\n\n      host\n  ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse:\n    type: object\n    properties:\n      address:\n        type: string\n    description: >-\n      QueryInterchainAccountResponse the response type for the\n      Query/InterchainAccount RPC method.\n  ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          controller_enabled:\n            type: boolean\n            description: controller_enabled enables or disables the controller submodule.\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  ibc.applications.interchain_accounts.host.v1.MsgUpdateParams:\n    type: object\n    properties:\n      signer:\n        type: string\n        title: signer address\n      params:\n        description: |-\n          params defines the 27-interchain-accounts/host parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          host_enabled:\n            type: boolean\n            description: host_enabled enables or disables the host submodule.\n          allow_messages:\n            type: array\n            items:\n              type: string\n            description: >-\n              allow_messages defines a list of sdk message typeURLs allowed to\n              be executed on a host chain.\n    title: MsgUpdateParams defines the payload for Msg/UpdateParams\n  ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse:\n    type: object\n    title: MsgUpdateParamsResponse defines the response for Msg/UpdateParams\n  ibc.applications.interchain_accounts.host.v1.Params:\n    type: object\n    properties:\n      host_enabled:\n        type: boolean\n        description: host_enabled enables or disables the host submodule.\n      allow_messages:\n        type: array\n        items:\n          type: string\n        description: >-\n          allow_messages defines a list of sdk message typeURLs allowed to be\n          executed on a host chain.\n    description: |-\n      Params defines the set of on-chain interchain accounts parameters.\n      The following parameters may be used to disable the host submodule.\n  ibc.applications.interchain_accounts.host.v1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          host_enabled:\n            type: boolean\n            description: host_enabled enables or disables the host submodule.\n          allow_messages:\n            type: array\n            items:\n              type: string\n            description: >-\n              allow_messages defines a list of sdk message typeURLs allowed to\n              be executed on a host chain.\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  ibc.applications.transfer.v1.MsgTransfer:\n    type: object\n    properties:\n      source_port:\n        type: string\n        title: the port on which the packet will be sent\n      source_channel:\n        type: string\n        title: the channel by which the packet will be sent\n      token:\n        title: the tokens to be transferred\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n      sender:\n        type: string\n        title: the sender address\n      receiver:\n        type: string\n        title: the recipient address on the destination chain\n      timeout_height:\n        description: |-\n          Timeout height relative to the current block height.\n          The timeout is disabled when set to 0.\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      timeout_timestamp:\n        type: string\n        format: uint64\n        description: |-\n          Timeout timestamp in absolute nanoseconds since unix epoch.\n          The timeout is disabled when set to 0.\n      memo:\n        type: string\n        title: optional memo\n    title: >-\n      MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\n\n      ICS20 enabled chains. See ICS Spec here:\n\n      https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures\n  ibc.applications.transfer.v1.MsgTransferResponse:\n    type: object\n    properties:\n      sequence:\n        type: string\n        format: uint64\n        title: sequence number of the transfer packet sent\n    description: MsgTransferResponse defines the Msg/Transfer response type.\n  ibc.applications.transfer.v1.MsgUpdateParams:\n    type: object\n    properties:\n      signer:\n        type: string\n        title: signer address\n      params:\n        description: |-\n          params defines the transfer parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          send_enabled:\n            type: boolean\n            description: >-\n              send_enabled enables or disables all cross-chain token transfers\n              from this\n\n              chain.\n          receive_enabled:\n            type: boolean\n            description: >-\n              receive_enabled enables or disables all cross-chain token\n              transfers to this\n\n              chain.\n    description: MsgUpdateParams is the Msg/UpdateParams request type.\n  ibc.applications.transfer.v1.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n  ibc.applications.transfer.v1.Params:\n    type: object\n    properties:\n      send_enabled:\n        type: boolean\n        description: >-\n          send_enabled enables or disables all cross-chain token transfers from\n          this\n\n          chain.\n      receive_enabled:\n        type: boolean\n        description: >-\n          receive_enabled enables or disables all cross-chain token transfers to\n          this\n\n          chain.\n    description: >-\n      Params defines the set of IBC transfer parameters.\n\n      NOTE: To prevent a single token from being transferred, set the\n\n      TransfersEnabled parameter to true and then set the bank module's\n      SendEnabled\n\n      parameter for the denomination to false.\n  ibc.core.client.v1.Height:\n    type: object\n    properties:\n      revision_number:\n        type: string\n        format: uint64\n        title: the revision that the client is currently on\n      revision_height:\n        type: string\n        format: uint64\n        title: the height within the given revision\n    description: |-\n      Normally the RevisionHeight is incremented at each height while keeping\n      RevisionNumber the same. However some consensus algorithms may choose to\n      reset the height in certain conditions e.g. hard forks, state-machine\n      breaking changes In these cases, the RevisionNumber is incremented so that\n      height continues to be monitonically increasing even as the RevisionHeight\n      gets reset\n    title: >-\n      Height is a monotonically increasing data type\n\n      that can be compared against another Height for the purposes of updating\n      and\n\n      freezing clients\n  ibc.applications.transfer.v1.DenomTrace:\n    type: object\n    properties:\n      path:\n        type: string\n        description: >-\n          path defines the chain of port/channel identifiers used for tracing\n          the\n\n          source of the fungible token.\n      base_denom:\n        type: string\n        description: base denomination of the relayed fungible token.\n    description: >-\n      DenomTrace contains the base denomination for ICS20 fungible tokens and\n      the\n\n      source tracing information path.\n  ibc.applications.transfer.v1.QueryDenomHashResponse:\n    type: object\n    properties:\n      hash:\n        type: string\n        description: hash (in hex format) of the denomination trace information.\n    description: |-\n      QueryDenomHashResponse is the response type for the Query/DenomHash RPC\n      method.\n  ibc.applications.transfer.v1.QueryDenomTraceResponse:\n    type: object\n    properties:\n      denom_trace:\n        description: denom_trace returns the requested denomination trace information.\n        type: object\n        properties:\n          path:\n            type: string\n            description: >-\n              path defines the chain of port/channel identifiers used for\n              tracing the\n\n              source of the fungible token.\n          base_denom:\n            type: string\n            description: base denomination of the relayed fungible token.\n    description: |-\n      QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC\n      method.\n  ibc.applications.transfer.v1.QueryDenomTracesResponse:\n    type: object\n    properties:\n      denom_traces:\n        type: array\n        items:\n          type: object\n          properties:\n            path:\n              type: string\n              description: >-\n                path defines the chain of port/channel identifiers used for\n                tracing the\n\n                source of the fungible token.\n            base_denom:\n              type: string\n              description: base denomination of the relayed fungible token.\n          description: >-\n            DenomTrace contains the base denomination for ICS20 fungible tokens\n            and the\n\n            source tracing information path.\n        description: denom_traces returns all denominations trace information.\n      pagination:\n        description: pagination defines the pagination in the response.\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n    description: >-\n      QueryConnectionsResponse is the response type for the Query/DenomTraces\n      RPC\n\n      method.\n  ibc.applications.transfer.v1.QueryEscrowAddressResponse:\n    type: object\n    properties:\n      escrow_address:\n        type: string\n        title: the escrow account address\n    description: >-\n      QueryEscrowAddressResponse is the response type of the EscrowAddress RPC\n      method.\n  ibc.applications.transfer.v1.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          send_enabled:\n            type: boolean\n            description: >-\n              send_enabled enables or disables all cross-chain token transfers\n              from this\n\n              chain.\n          receive_enabled:\n            type: boolean\n            description: >-\n              receive_enabled enables or disables all cross-chain token\n              transfers to this\n\n              chain.\n    description: QueryParamsResponse is the response type for the Query/Params RPC method.\n  ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse:\n    type: object\n    properties:\n      amount:\n        type: object\n        properties:\n          denom:\n            type: string\n          amount:\n            type: string\n        description: |-\n          Coin defines a token with a denomination and an amount.\n\n          NOTE: The amount field is an Int which implements the custom method\n          signatures required by gogoproto.\n    description: >-\n      QueryTotalEscrowForDenomResponse is the response type for\n      TotalEscrowForDenom RPC method.\n  ibc.core.channel.v1.Channel:\n    type: object\n    properties:\n      state:\n        title: current state of the channel end\n        type: string\n        enum:\n          - STATE_UNINITIALIZED_UNSPECIFIED\n          - STATE_INIT\n          - STATE_TRYOPEN\n          - STATE_OPEN\n          - STATE_CLOSED\n        default: STATE_UNINITIALIZED_UNSPECIFIED\n        description: |-\n          State defines if a channel is in one of the following states:\n          CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n           - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n           - STATE_INIT: A channel has just started the opening handshake.\n           - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n           - STATE_OPEN: A channel has completed the handshake. Open channels are\n          ready to send and receive packets.\n           - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n          packets.\n      ordering:\n        title: whether the channel is ordered or unordered\n        type: string\n        enum:\n          - ORDER_NONE_UNSPECIFIED\n          - ORDER_UNORDERED\n          - ORDER_ORDERED\n        default: ORDER_NONE_UNSPECIFIED\n        description: |-\n          - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n           - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n          which they were sent.\n           - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n      counterparty:\n        title: counterparty channel end\n        type: object\n        properties:\n          port_id:\n            type: string\n            description: >-\n              port on the counterparty chain which owns the other end of the\n              channel.\n          channel_id:\n            type: string\n            title: channel end on the counterparty chain\n      connection_hops:\n        type: array\n        items:\n          type: string\n        title: |-\n          list of connection identifiers, in order, along which packets sent on\n          this channel will travel\n      version:\n        type: string\n        title: opaque channel version, which is agreed upon during the handshake\n    description: |-\n      Channel defines pipeline for exactly-once packet delivery between specific\n      modules on separate blockchains, which has at least one end capable of\n      sending packets and one end capable of receiving packets.\n  ibc.core.channel.v1.Counterparty:\n    type: object\n    properties:\n      port_id:\n        type: string\n        description: >-\n          port on the counterparty chain which owns the other end of the\n          channel.\n      channel_id:\n        type: string\n        title: channel end on the counterparty chain\n    title: Counterparty defines a channel end counterparty\n  ibc.core.channel.v1.MsgAcknowledgement:\n    type: object\n    properties:\n      packet:\n        type: object\n        properties:\n          sequence:\n            type: string\n            format: uint64\n            description: >-\n              number corresponds to the order of sends and receives, where a\n              Packet\n\n              with an earlier sequence number must be sent and received before a\n              Packet\n\n              with a later sequence number.\n          source_port:\n            type: string\n            description: identifies the port on the sending chain.\n          source_channel:\n            type: string\n            description: identifies the channel end on the sending chain.\n          destination_port:\n            type: string\n            description: identifies the port on the receiving chain.\n          destination_channel:\n            type: string\n            description: identifies the channel end on the receiving chain.\n          data:\n            type: string\n            format: byte\n            title: actual opaque bytes transferred directly to the application module\n          timeout_height:\n            title: block height after which the packet times out\n            type: object\n            properties:\n              revision_number:\n                type: string\n                format: uint64\n                title: the revision that the client is currently on\n              revision_height:\n                type: string\n                format: uint64\n                title: the height within the given revision\n            description: >-\n              Normally the RevisionHeight is incremented at each height while\n              keeping\n\n              RevisionNumber the same. However some consensus algorithms may\n              choose to\n\n              reset the height in certain conditions e.g. hard forks,\n              state-machine\n\n              breaking changes In these cases, the RevisionNumber is incremented\n              so that\n\n              height continues to be monitonically increasing even as the\n              RevisionHeight\n\n              gets reset\n          timeout_timestamp:\n            type: string\n            format: uint64\n            title: block timestamp (in nanoseconds) after which the packet times out\n        title: >-\n          Packet defines a type that carries data across different chains\n          through IBC\n      acknowledgement:\n        type: string\n        format: byte\n      proof_acked:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    title: MsgAcknowledgement receives incoming IBC acknowledgement\n  ibc.core.channel.v1.MsgAcknowledgementResponse:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED\n          - RESPONSE_RESULT_TYPE_NOOP\n          - RESPONSE_RESULT_TYPE_SUCCESS\n        default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n        description: |-\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n           - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n           - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n        title: >-\n          ResponseResultType defines the possible outcomes of the execution of a\n          message\n    description: MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.\n  ibc.core.channel.v1.MsgChannelCloseConfirm:\n    type: object\n    properties:\n      port_id:\n        type: string\n      channel_id:\n        type: string\n      proof_init:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    description: |-\n      MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\n      to acknowledge the change of channel state to CLOSED on Chain A.\n  ibc.core.channel.v1.MsgChannelCloseConfirmResponse:\n    type: object\n    description: >-\n      MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm\n      response\n\n      type.\n  ibc.core.channel.v1.MsgChannelCloseInit:\n    type: object\n    properties:\n      port_id:\n        type: string\n      channel_id:\n        type: string\n      signer:\n        type: string\n    description: |-\n      MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\n      to close a channel with Chain B.\n  ibc.core.channel.v1.MsgChannelCloseInitResponse:\n    type: object\n    description: >-\n      MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response\n      type.\n  ibc.core.channel.v1.MsgChannelOpenAck:\n    type: object\n    properties:\n      port_id:\n        type: string\n      channel_id:\n        type: string\n      counterparty_channel_id:\n        type: string\n      counterparty_version:\n        type: string\n      proof_try:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    description: >-\n      MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to\n      acknowledge\n\n      the change of channel state to TRYOPEN on Chain B.\n  ibc.core.channel.v1.MsgChannelOpenAckResponse:\n    type: object\n    description: MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.\n  ibc.core.channel.v1.MsgChannelOpenConfirm:\n    type: object\n    properties:\n      port_id:\n        type: string\n      channel_id:\n        type: string\n      proof_ack:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    description: |-\n      MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\n      acknowledge the change of channel state to OPEN on Chain A.\n  ibc.core.channel.v1.MsgChannelOpenConfirmResponse:\n    type: object\n    description: |-\n      MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\n      type.\n  ibc.core.channel.v1.MsgChannelOpenInit:\n    type: object\n    properties:\n      port_id:\n        type: string\n      channel:\n        type: object\n        properties:\n          state:\n            title: current state of the channel end\n            type: string\n            enum:\n              - STATE_UNINITIALIZED_UNSPECIFIED\n              - STATE_INIT\n              - STATE_TRYOPEN\n              - STATE_OPEN\n              - STATE_CLOSED\n            default: STATE_UNINITIALIZED_UNSPECIFIED\n            description: |-\n              State defines if a channel is in one of the following states:\n              CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n               - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n               - STATE_INIT: A channel has just started the opening handshake.\n               - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n               - STATE_OPEN: A channel has completed the handshake. Open channels are\n              ready to send and receive packets.\n               - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n              packets.\n          ordering:\n            title: whether the channel is ordered or unordered\n            type: string\n            enum:\n              - ORDER_NONE_UNSPECIFIED\n              - ORDER_UNORDERED\n              - ORDER_ORDERED\n            default: ORDER_NONE_UNSPECIFIED\n            description: |-\n              - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n               - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n              which they were sent.\n               - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n          counterparty:\n            title: counterparty channel end\n            type: object\n            properties:\n              port_id:\n                type: string\n                description: >-\n                  port on the counterparty chain which owns the other end of the\n                  channel.\n              channel_id:\n                type: string\n                title: channel end on the counterparty chain\n          connection_hops:\n            type: array\n            items:\n              type: string\n            title: >-\n              list of connection identifiers, in order, along which packets sent\n              on\n\n              this channel will travel\n          version:\n            type: string\n            title: opaque channel version, which is agreed upon during the handshake\n        description: >-\n          Channel defines pipeline for exactly-once packet delivery between\n          specific\n\n          modules on separate blockchains, which has at least one end capable of\n\n          sending packets and one end capable of receiving packets.\n      signer:\n        type: string\n    description: >-\n      MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake.\n      It\n\n      is called by a relayer on Chain A.\n  ibc.core.channel.v1.MsgChannelOpenInitResponse:\n    type: object\n    properties:\n      channel_id:\n        type: string\n      version:\n        type: string\n    description: MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.\n  ibc.core.channel.v1.MsgChannelOpenTry:\n    type: object\n    properties:\n      port_id:\n        type: string\n      previous_channel_id:\n        type: string\n        description: >-\n          Deprecated: this field is unused. Crossing hello's are no longer\n          supported in core IBC.\n      channel:\n        type: object\n        properties:\n          state:\n            title: current state of the channel end\n            type: string\n            enum:\n              - STATE_UNINITIALIZED_UNSPECIFIED\n              - STATE_INIT\n              - STATE_TRYOPEN\n              - STATE_OPEN\n              - STATE_CLOSED\n            default: STATE_UNINITIALIZED_UNSPECIFIED\n            description: |-\n              State defines if a channel is in one of the following states:\n              CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n               - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n               - STATE_INIT: A channel has just started the opening handshake.\n               - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n               - STATE_OPEN: A channel has completed the handshake. Open channels are\n              ready to send and receive packets.\n               - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n              packets.\n          ordering:\n            title: whether the channel is ordered or unordered\n            type: string\n            enum:\n              - ORDER_NONE_UNSPECIFIED\n              - ORDER_UNORDERED\n              - ORDER_ORDERED\n            default: ORDER_NONE_UNSPECIFIED\n            description: |-\n              - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n               - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n              which they were sent.\n               - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n          counterparty:\n            title: counterparty channel end\n            type: object\n            properties:\n              port_id:\n                type: string\n                description: >-\n                  port on the counterparty chain which owns the other end of the\n                  channel.\n              channel_id:\n                type: string\n                title: channel end on the counterparty chain\n          connection_hops:\n            type: array\n            items:\n              type: string\n            title: >-\n              list of connection identifiers, in order, along which packets sent\n              on\n\n              this channel will travel\n          version:\n            type: string\n            title: opaque channel version, which is agreed upon during the handshake\n        description: >-\n          Channel defines pipeline for exactly-once packet delivery between\n          specific\n\n          modules on separate blockchains, which has at least one end capable of\n\n          sending packets and one end capable of receiving packets.\n      counterparty_version:\n        type: string\n      proof_init:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    description: >-\n      MsgChannelOpenInit defines a msg sent by a Relayer to try to open a\n      channel\n\n      on Chain B. The version field within the Channel field has been\n      deprecated. Its\n\n      value will be ignored by core IBC.\n  ibc.core.channel.v1.MsgChannelOpenTryResponse:\n    type: object\n    properties:\n      version:\n        type: string\n      channel_id:\n        type: string\n    description: MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.\n  ibc.core.channel.v1.MsgRecvPacket:\n    type: object\n    properties:\n      packet:\n        type: object\n        properties:\n          sequence:\n            type: string\n            format: uint64\n            description: >-\n              number corresponds to the order of sends and receives, where a\n              Packet\n\n              with an earlier sequence number must be sent and received before a\n              Packet\n\n              with a later sequence number.\n          source_port:\n            type: string\n            description: identifies the port on the sending chain.\n          source_channel:\n            type: string\n            description: identifies the channel end on the sending chain.\n          destination_port:\n            type: string\n            description: identifies the port on the receiving chain.\n          destination_channel:\n            type: string\n            description: identifies the channel end on the receiving chain.\n          data:\n            type: string\n            format: byte\n            title: actual opaque bytes transferred directly to the application module\n          timeout_height:\n            title: block height after which the packet times out\n            type: object\n            properties:\n              revision_number:\n                type: string\n                format: uint64\n                title: the revision that the client is currently on\n              revision_height:\n                type: string\n                format: uint64\n                title: the height within the given revision\n            description: >-\n              Normally the RevisionHeight is incremented at each height while\n              keeping\n\n              RevisionNumber the same. However some consensus algorithms may\n              choose to\n\n              reset the height in certain conditions e.g. hard forks,\n              state-machine\n\n              breaking changes In these cases, the RevisionNumber is incremented\n              so that\n\n              height continues to be monitonically increasing even as the\n              RevisionHeight\n\n              gets reset\n          timeout_timestamp:\n            type: string\n            format: uint64\n            title: block timestamp (in nanoseconds) after which the packet times out\n        title: >-\n          Packet defines a type that carries data across different chains\n          through IBC\n      proof_commitment:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    title: MsgRecvPacket receives incoming IBC packet\n  ibc.core.channel.v1.MsgRecvPacketResponse:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED\n          - RESPONSE_RESULT_TYPE_NOOP\n          - RESPONSE_RESULT_TYPE_SUCCESS\n        default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n        description: |-\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n           - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n           - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n        title: >-\n          ResponseResultType defines the possible outcomes of the execution of a\n          message\n    description: MsgRecvPacketResponse defines the Msg/RecvPacket response type.\n  ibc.core.channel.v1.MsgTimeout:\n    type: object\n    properties:\n      packet:\n        type: object\n        properties:\n          sequence:\n            type: string\n            format: uint64\n            description: >-\n              number corresponds to the order of sends and receives, where a\n              Packet\n\n              with an earlier sequence number must be sent and received before a\n              Packet\n\n              with a later sequence number.\n          source_port:\n            type: string\n            description: identifies the port on the sending chain.\n          source_channel:\n            type: string\n            description: identifies the channel end on the sending chain.\n          destination_port:\n            type: string\n            description: identifies the port on the receiving chain.\n          destination_channel:\n            type: string\n            description: identifies the channel end on the receiving chain.\n          data:\n            type: string\n            format: byte\n            title: actual opaque bytes transferred directly to the application module\n          timeout_height:\n            title: block height after which the packet times out\n            type: object\n            properties:\n              revision_number:\n                type: string\n                format: uint64\n                title: the revision that the client is currently on\n              revision_height:\n                type: string\n                format: uint64\n                title: the height within the given revision\n            description: >-\n              Normally the RevisionHeight is incremented at each height while\n              keeping\n\n              RevisionNumber the same. However some consensus algorithms may\n              choose to\n\n              reset the height in certain conditions e.g. hard forks,\n              state-machine\n\n              breaking changes In these cases, the RevisionNumber is incremented\n              so that\n\n              height continues to be monitonically increasing even as the\n              RevisionHeight\n\n              gets reset\n          timeout_timestamp:\n            type: string\n            format: uint64\n            title: block timestamp (in nanoseconds) after which the packet times out\n        title: >-\n          Packet defines a type that carries data across different chains\n          through IBC\n      proof_unreceived:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      next_sequence_recv:\n        type: string\n        format: uint64\n      signer:\n        type: string\n    title: MsgTimeout receives timed-out packet\n  ibc.core.channel.v1.MsgTimeoutOnClose:\n    type: object\n    properties:\n      packet:\n        type: object\n        properties:\n          sequence:\n            type: string\n            format: uint64\n            description: >-\n              number corresponds to the order of sends and receives, where a\n              Packet\n\n              with an earlier sequence number must be sent and received before a\n              Packet\n\n              with a later sequence number.\n          source_port:\n            type: string\n            description: identifies the port on the sending chain.\n          source_channel:\n            type: string\n            description: identifies the channel end on the sending chain.\n          destination_port:\n            type: string\n            description: identifies the port on the receiving chain.\n          destination_channel:\n            type: string\n            description: identifies the channel end on the receiving chain.\n          data:\n            type: string\n            format: byte\n            title: actual opaque bytes transferred directly to the application module\n          timeout_height:\n            title: block height after which the packet times out\n            type: object\n            properties:\n              revision_number:\n                type: string\n                format: uint64\n                title: the revision that the client is currently on\n              revision_height:\n                type: string\n                format: uint64\n                title: the height within the given revision\n            description: >-\n              Normally the RevisionHeight is incremented at each height while\n              keeping\n\n              RevisionNumber the same. However some consensus algorithms may\n              choose to\n\n              reset the height in certain conditions e.g. hard forks,\n              state-machine\n\n              breaking changes In these cases, the RevisionNumber is incremented\n              so that\n\n              height continues to be monitonically increasing even as the\n              RevisionHeight\n\n              gets reset\n          timeout_timestamp:\n            type: string\n            format: uint64\n            title: block timestamp (in nanoseconds) after which the packet times out\n        title: >-\n          Packet defines a type that carries data across different chains\n          through IBC\n      proof_unreceived:\n        type: string\n        format: byte\n      proof_close:\n        type: string\n        format: byte\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      next_sequence_recv:\n        type: string\n        format: uint64\n      signer:\n        type: string\n    description: MsgTimeoutOnClose timed-out packet upon counterparty channel closure.\n  ibc.core.channel.v1.MsgTimeoutOnCloseResponse:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED\n          - RESPONSE_RESULT_TYPE_NOOP\n          - RESPONSE_RESULT_TYPE_SUCCESS\n        default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n        description: |-\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n           - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n           - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n        title: >-\n          ResponseResultType defines the possible outcomes of the execution of a\n          message\n    description: MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.\n  ibc.core.channel.v1.MsgTimeoutResponse:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED\n          - RESPONSE_RESULT_TYPE_NOOP\n          - RESPONSE_RESULT_TYPE_SUCCESS\n        default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n        description: |-\n          - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n           - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n           - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n        title: >-\n          ResponseResultType defines the possible outcomes of the execution of a\n          message\n    description: MsgTimeoutResponse defines the Msg/Timeout response type.\n  ibc.core.channel.v1.Order:\n    type: string\n    enum:\n      - ORDER_NONE_UNSPECIFIED\n      - ORDER_UNORDERED\n      - ORDER_ORDERED\n    default: ORDER_NONE_UNSPECIFIED\n    description: |-\n      - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n       - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n      which they were sent.\n       - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n    title: Order defines if a channel is ORDERED or UNORDERED\n  ibc.core.channel.v1.Packet:\n    type: object\n    properties:\n      sequence:\n        type: string\n        format: uint64\n        description: >-\n          number corresponds to the order of sends and receives, where a Packet\n\n          with an earlier sequence number must be sent and received before a\n          Packet\n\n          with a later sequence number.\n      source_port:\n        type: string\n        description: identifies the port on the sending chain.\n      source_channel:\n        type: string\n        description: identifies the channel end on the sending chain.\n      destination_port:\n        type: string\n        description: identifies the port on the receiving chain.\n      destination_channel:\n        type: string\n        description: identifies the channel end on the receiving chain.\n      data:\n        type: string\n        format: byte\n        title: actual opaque bytes transferred directly to the application module\n      timeout_height:\n        title: block height after which the packet times out\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n      timeout_timestamp:\n        type: string\n        format: uint64\n        title: block timestamp (in nanoseconds) after which the packet times out\n    title: >-\n      Packet defines a type that carries data across different chains through\n      IBC\n  ibc.core.channel.v1.ResponseResultType:\n    type: string\n    enum:\n      - RESPONSE_RESULT_TYPE_UNSPECIFIED\n      - RESPONSE_RESULT_TYPE_NOOP\n      - RESPONSE_RESULT_TYPE_SUCCESS\n    default: RESPONSE_RESULT_TYPE_UNSPECIFIED\n    description: |-\n      - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n       - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n       - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n    title: >-\n      ResponseResultType defines the possible outcomes of the execution of a\n      message\n  ibc.core.channel.v1.State:\n    type: string\n    enum:\n      - STATE_UNINITIALIZED_UNSPECIFIED\n      - STATE_INIT\n      - STATE_TRYOPEN\n      - STATE_OPEN\n      - STATE_CLOSED\n    default: STATE_UNINITIALIZED_UNSPECIFIED\n    description: |-\n      State defines if a channel is in one of the following states:\n      CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n       - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n       - STATE_INIT: A channel has just started the opening handshake.\n       - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n       - STATE_OPEN: A channel has completed the handshake. Open channels are\n      ready to send and receive packets.\n       - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n      packets.\n  ibc.core.channel.v1.IdentifiedChannel:\n    type: object\n    properties:\n      state:\n        title: current state of the channel end\n        type: string\n        enum:\n          - STATE_UNINITIALIZED_UNSPECIFIED\n          - STATE_INIT\n          - STATE_TRYOPEN\n          - STATE_OPEN\n          - STATE_CLOSED\n        default: STATE_UNINITIALIZED_UNSPECIFIED\n        description: |-\n          State defines if a channel is in one of the following states:\n          CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n           - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n           - STATE_INIT: A channel has just started the opening handshake.\n           - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n           - STATE_OPEN: A channel has completed the handshake. Open channels are\n          ready to send and receive packets.\n           - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n          packets.\n      ordering:\n        title: whether the channel is ordered or unordered\n        type: string\n        enum:\n          - ORDER_NONE_UNSPECIFIED\n          - ORDER_UNORDERED\n          - ORDER_ORDERED\n        default: ORDER_NONE_UNSPECIFIED\n        description: |-\n          - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n           - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n          which they were sent.\n           - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n      counterparty:\n        title: counterparty channel end\n        type: object\n        properties:\n          port_id:\n            type: string\n            description: >-\n              port on the counterparty chain which owns the other end of the\n              channel.\n          channel_id:\n            type: string\n            title: channel end on the counterparty chain\n      connection_hops:\n        type: array\n        items:\n          type: string\n        title: |-\n          list of connection identifiers, in order, along which packets sent on\n          this channel will travel\n      version:\n        type: string\n        title: opaque channel version, which is agreed upon during the handshake\n      port_id:\n        type: string\n        title: port identifier\n      channel_id:\n        type: string\n        title: channel identifier\n    description: |-\n      IdentifiedChannel defines a channel with additional port and channel\n      identifier fields.\n  ibc.core.channel.v1.PacketState:\n    type: object\n    properties:\n      port_id:\n        type: string\n        description: channel port identifier.\n      channel_id:\n        type: string\n        description: channel unique identifier.\n      sequence:\n        type: string\n        format: uint64\n        description: packet sequence.\n      data:\n        type: string\n        format: byte\n        description: embedded data that represents packet state.\n    description: |-\n      PacketState defines the generic type necessary to retrieve and store\n      packet commitments, acknowledgements, and receipts.\n      Caller is responsible for knowing the context necessary to interpret this\n      state as a commitment, acknowledgement, or a receipt.\n  ibc.core.channel.v1.QueryChannelClientStateResponse:\n    type: object\n    properties:\n      identified_client_state:\n        title: client state associated with the channel\n        type: object\n        properties:\n          client_id:\n            type: string\n            title: client identifier\n          client_state:\n            title: client state\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n            description: >-\n              `Any` contains an arbitrary serialized protocol buffer message\n              along with a\n\n              URL that describes the type of the serialized message.\n\n\n              Protobuf library provides support to pack/unpack Any values in the\n              form\n\n              of utility functions or additional generated methods of the Any\n              type.\n\n\n              Example 1: Pack and unpack a message in C++.\n\n                  Foo foo = ...;\n                  Any any;\n                  any.PackFrom(foo);\n                  ...\n                  if (any.UnpackTo(&foo)) {\n                    ...\n                  }\n\n              Example 2: Pack and unpack a message in Java.\n\n                  Foo foo = ...;\n                  Any any = Any.pack(foo);\n                  ...\n                  if (any.is(Foo.class)) {\n                    foo = any.unpack(Foo.class);\n                  }\n                  // or ...\n                  if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                    foo = any.unpack(Foo.getDefaultInstance());\n                  }\n\n              Example 3: Pack and unpack a message in Python.\n\n                  foo = Foo(...)\n                  any = Any()\n                  any.Pack(foo)\n                  ...\n                  if any.Is(Foo.DESCRIPTOR):\n                    any.Unpack(foo)\n                    ...\n\n              Example 4: Pack and unpack a message in Go\n\n                   foo := &pb.Foo{...}\n                   any, err := anypb.New(foo)\n                   if err != nil {\n                     ...\n                   }\n                   ...\n                   foo := &pb.Foo{}\n                   if err := any.UnmarshalTo(foo); err != nil {\n                     ...\n                   }\n\n              The pack methods provided by protobuf library will by default use\n\n              'type.googleapis.com/full.type.name' as the type URL and the\n              unpack\n\n              methods only use the fully qualified type name after the last '/'\n\n              in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n              name \"y.z\".\n\n\n              JSON\n\n\n              The JSON representation of an `Any` value uses the regular\n\n              representation of the deserialized, embedded message, with an\n\n              additional field `@type` which contains the type URL. Example:\n\n                  package google.profile;\n                  message Person {\n                    string first_name = 1;\n                    string last_name = 2;\n                  }\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.profile.Person\",\n                    \"firstName\": <string>,\n                    \"lastName\": <string>\n                  }\n\n              If the embedded message type is well-known and has a custom JSON\n\n              representation, that representation will be embedded adding a\n              field\n\n              `value` which holds the custom JSON in addition to the `@type`\n\n              field. Example (for message [google.protobuf.Duration][]):\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                    \"value\": \"1.212s\"\n                  }\n        description: |-\n          IdentifiedClientState defines a client state with an additional client\n          identifier field.\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryChannelClientStateResponse is the Response type for the\n      Query/QueryChannelClientState RPC method\n  ibc.core.channel.v1.QueryChannelConsensusStateResponse:\n    type: object\n    properties:\n      consensus_state:\n        title: consensus state associated with the channel\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      client_id:\n        type: string\n        title: client ID associated with the consensus state\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryChannelClientStateResponse is the Response type for the\n      Query/QueryChannelClientState RPC method\n  ibc.core.channel.v1.QueryChannelResponse:\n    type: object\n    properties:\n      channel:\n        title: channel associated with the request identifiers\n        type: object\n        properties:\n          state:\n            title: current state of the channel end\n            type: string\n            enum:\n              - STATE_UNINITIALIZED_UNSPECIFIED\n              - STATE_INIT\n              - STATE_TRYOPEN\n              - STATE_OPEN\n              - STATE_CLOSED\n            default: STATE_UNINITIALIZED_UNSPECIFIED\n            description: |-\n              State defines if a channel is in one of the following states:\n              CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n               - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n               - STATE_INIT: A channel has just started the opening handshake.\n               - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n               - STATE_OPEN: A channel has completed the handshake. Open channels are\n              ready to send and receive packets.\n               - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n              packets.\n          ordering:\n            title: whether the channel is ordered or unordered\n            type: string\n            enum:\n              - ORDER_NONE_UNSPECIFIED\n              - ORDER_UNORDERED\n              - ORDER_ORDERED\n            default: ORDER_NONE_UNSPECIFIED\n            description: |-\n              - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n               - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n              which they were sent.\n               - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n          counterparty:\n            title: counterparty channel end\n            type: object\n            properties:\n              port_id:\n                type: string\n                description: >-\n                  port on the counterparty chain which owns the other end of the\n                  channel.\n              channel_id:\n                type: string\n                title: channel end on the counterparty chain\n          connection_hops:\n            type: array\n            items:\n              type: string\n            title: >-\n              list of connection identifiers, in order, along which packets sent\n              on\n\n              this channel will travel\n          version:\n            type: string\n            title: opaque channel version, which is agreed upon during the handshake\n        description: >-\n          Channel defines pipeline for exactly-once packet delivery between\n          specific\n\n          modules on separate blockchains, which has at least one end capable of\n\n          sending packets and one end capable of receiving packets.\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    description: >-\n      QueryChannelResponse is the response type for the Query/Channel RPC\n      method.\n\n      Besides the Channel end, it includes a proof and the height from which the\n\n      proof was retrieved.\n  ibc.core.channel.v1.QueryChannelsResponse:\n    type: object\n    properties:\n      channels:\n        type: array\n        items:\n          type: object\n          properties:\n            state:\n              title: current state of the channel end\n              type: string\n              enum:\n                - STATE_UNINITIALIZED_UNSPECIFIED\n                - STATE_INIT\n                - STATE_TRYOPEN\n                - STATE_OPEN\n                - STATE_CLOSED\n              default: STATE_UNINITIALIZED_UNSPECIFIED\n              description: |-\n                State defines if a channel is in one of the following states:\n                CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                 - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                 - STATE_INIT: A channel has just started the opening handshake.\n                 - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                 - STATE_OPEN: A channel has completed the handshake. Open channels are\n                ready to send and receive packets.\n                 - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                packets.\n            ordering:\n              title: whether the channel is ordered or unordered\n              type: string\n              enum:\n                - ORDER_NONE_UNSPECIFIED\n                - ORDER_UNORDERED\n                - ORDER_ORDERED\n              default: ORDER_NONE_UNSPECIFIED\n              description: |-\n                - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n                 - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                which they were sent.\n                 - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n            counterparty:\n              title: counterparty channel end\n              type: object\n              properties:\n                port_id:\n                  type: string\n                  description: >-\n                    port on the counterparty chain which owns the other end of\n                    the channel.\n                channel_id:\n                  type: string\n                  title: channel end on the counterparty chain\n            connection_hops:\n              type: array\n              items:\n                type: string\n              title: >-\n                list of connection identifiers, in order, along which packets\n                sent on\n\n                this channel will travel\n            version:\n              type: string\n              title: >-\n                opaque channel version, which is agreed upon during the\n                handshake\n            port_id:\n              type: string\n              title: port identifier\n            channel_id:\n              type: string\n              title: channel identifier\n          description: |-\n            IdentifiedChannel defines a channel with additional port and channel\n            identifier fields.\n        description: list of stored channels of the chain.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    description: >-\n      QueryChannelsResponse is the response type for the Query/Channels RPC\n      method.\n  ibc.core.channel.v1.QueryConnectionChannelsResponse:\n    type: object\n    properties:\n      channels:\n        type: array\n        items:\n          type: object\n          properties:\n            state:\n              title: current state of the channel end\n              type: string\n              enum:\n                - STATE_UNINITIALIZED_UNSPECIFIED\n                - STATE_INIT\n                - STATE_TRYOPEN\n                - STATE_OPEN\n                - STATE_CLOSED\n              default: STATE_UNINITIALIZED_UNSPECIFIED\n              description: |-\n                State defines if a channel is in one of the following states:\n                CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n                 - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n                 - STATE_INIT: A channel has just started the opening handshake.\n                 - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n                 - STATE_OPEN: A channel has completed the handshake. Open channels are\n                ready to send and receive packets.\n                 - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\n                packets.\n            ordering:\n              title: whether the channel is ordered or unordered\n              type: string\n              enum:\n                - ORDER_NONE_UNSPECIFIED\n                - ORDER_UNORDERED\n                - ORDER_ORDERED\n              default: ORDER_NONE_UNSPECIFIED\n              description: |-\n                - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n                 - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\n                which they were sent.\n                 - ORDER_ORDERED: packets are delivered exactly in the order which they were sent\n            counterparty:\n              title: counterparty channel end\n              type: object\n              properties:\n                port_id:\n                  type: string\n                  description: >-\n                    port on the counterparty chain which owns the other end of\n                    the channel.\n                channel_id:\n                  type: string\n                  title: channel end on the counterparty chain\n            connection_hops:\n              type: array\n              items:\n                type: string\n              title: >-\n                list of connection identifiers, in order, along which packets\n                sent on\n\n                this channel will travel\n            version:\n              type: string\n              title: >-\n                opaque channel version, which is agreed upon during the\n                handshake\n            port_id:\n              type: string\n              title: port identifier\n            channel_id:\n              type: string\n              title: channel identifier\n          description: |-\n            IdentifiedChannel defines a channel with additional port and channel\n            identifier fields.\n        description: list of channels associated with a connection.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryConnectionChannelsResponse is the Response type for the\n      Query/QueryConnectionChannels RPC method\n  ibc.core.channel.v1.QueryNextSequenceReceiveResponse:\n    type: object\n    properties:\n      next_sequence_receive:\n        type: string\n        format: uint64\n        title: next sequence receive number\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QuerySequenceResponse is the request type for the\n      Query/QueryNextSequenceReceiveResponse RPC method\n  ibc.core.channel.v1.QueryNextSequenceSendResponse:\n    type: object\n    properties:\n      next_sequence_send:\n        type: string\n        format: uint64\n        title: next sequence send number\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryNextSequenceSendResponse is the request type for the\n      Query/QueryNextSequenceSend RPC method\n  ibc.core.channel.v1.QueryPacketAcknowledgementResponse:\n    type: object\n    properties:\n      acknowledgement:\n        type: string\n        format: byte\n        title: packet associated with the request fields\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryPacketAcknowledgementResponse defines the client query response for a\n      packet which also includes a proof and the height from which the\n      proof was retrieved\n  ibc.core.channel.v1.QueryPacketAcknowledgementsResponse:\n    type: object\n    properties:\n      acknowledgements:\n        type: array\n        items:\n          type: object\n          properties:\n            port_id:\n              type: string\n              description: channel port identifier.\n            channel_id:\n              type: string\n              description: channel unique identifier.\n            sequence:\n              type: string\n              format: uint64\n              description: packet sequence.\n            data:\n              type: string\n              format: byte\n              description: embedded data that represents packet state.\n          description: >-\n            PacketState defines the generic type necessary to retrieve and store\n\n            packet commitments, acknowledgements, and receipts.\n\n            Caller is responsible for knowing the context necessary to interpret\n            this\n\n            state as a commitment, acknowledgement, or a receipt.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryPacketAcknowledgemetsResponse is the request type for the\n      Query/QueryPacketAcknowledgements RPC method\n  ibc.core.channel.v1.QueryPacketCommitmentResponse:\n    type: object\n    properties:\n      commitment:\n        type: string\n        format: byte\n        title: packet associated with the request fields\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: >-\n      QueryPacketCommitmentResponse defines the client query response for a\n      packet\n\n      which also includes a proof and the height from which the proof was\n\n      retrieved\n  ibc.core.channel.v1.QueryPacketCommitmentsResponse:\n    type: object\n    properties:\n      commitments:\n        type: array\n        items:\n          type: object\n          properties:\n            port_id:\n              type: string\n              description: channel port identifier.\n            channel_id:\n              type: string\n              description: channel unique identifier.\n            sequence:\n              type: string\n              format: uint64\n              description: packet sequence.\n            data:\n              type: string\n              format: byte\n              description: embedded data that represents packet state.\n          description: >-\n            PacketState defines the generic type necessary to retrieve and store\n\n            packet commitments, acknowledgements, and receipts.\n\n            Caller is responsible for knowing the context necessary to interpret\n            this\n\n            state as a commitment, acknowledgement, or a receipt.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryPacketCommitmentsResponse is the request type for the\n      Query/QueryPacketCommitments RPC method\n  ibc.core.channel.v1.QueryPacketReceiptResponse:\n    type: object\n    properties:\n      received:\n        type: boolean\n        title: success flag for if receipt exists\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: >-\n      QueryPacketReceiptResponse defines the client query response for a packet\n\n      receipt which also includes a proof, and the height from which the proof\n      was\n\n      retrieved\n  ibc.core.channel.v1.QueryUnreceivedAcksResponse:\n    type: object\n    properties:\n      sequences:\n        type: array\n        items:\n          type: string\n          format: uint64\n        title: list of unreceived acknowledgement sequences\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryUnreceivedAcksResponse is the response type for the\n      Query/UnreceivedAcks RPC method\n  ibc.core.channel.v1.QueryUnreceivedPacketsResponse:\n    type: object\n    properties:\n      sequences:\n        type: array\n        items:\n          type: string\n          format: uint64\n        title: list of unreceived packet sequences\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryUnreceivedPacketsResponse is the response type for the\n      Query/UnreceivedPacketCommitments RPC method\n  ibc.core.client.v1.IdentifiedClientState:\n    type: object\n    properties:\n      client_id:\n        type: string\n        title: client identifier\n      client_state:\n        title: client state\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: |-\n      IdentifiedClientState defines a client state with an additional client\n      identifier field.\n  ibc.core.client.v1.MsgCreateClient:\n    type: object\n    properties:\n      client_state:\n        title: light client state\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      consensus_state:\n        description: |-\n          consensus state associated with the client that corresponds to a given\n          height.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      signer:\n        type: string\n        title: signer address\n    title: MsgCreateClient defines a message to create an IBC client\n  ibc.core.client.v1.MsgCreateClientResponse:\n    type: object\n    description: MsgCreateClientResponse defines the Msg/CreateClient response type.\n  ibc.core.client.v1.MsgIBCSoftwareUpgrade:\n    type: object\n    properties:\n      plan:\n        type: object\n        properties:\n          name:\n            type: string\n            description: >-\n              Sets the name for the upgrade. This name will be used by the\n              upgraded\n\n              version of the software to apply any special \"on-upgrade\" commands\n              during\n\n              the first BeginBlock method after the upgrade is applied. It is\n              also used\n\n              to detect whether a software version can handle a given upgrade.\n              If no\n\n              upgrade handler with this name has been set in the software, it\n              will be\n\n              assumed that the software is out-of-date when the upgrade Time or\n              Height is\n\n              reached and the software will exit.\n          time:\n            type: string\n            format: date-time\n            description: >-\n              Deprecated: Time based upgrades have been deprecated. Time based\n              upgrade logic\n\n              has been removed from the SDK.\n\n              If this field is not empty, an error will be thrown.\n          height:\n            type: string\n            format: int64\n            description: The height at which the upgrade must be performed.\n          info:\n            type: string\n            title: >-\n              Any application specific upgrade info to be included on-chain\n\n              such as a git commit that validators could automatically upgrade\n              to\n          upgraded_client_state:\n            description: >-\n              Deprecated: UpgradedClientState field has been deprecated. IBC\n              upgrade logic has been\n\n              moved to the IBC module in the sub module 02-client.\n\n              If this field is not empty, an error will be thrown.\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n        description: >-\n          Plan specifies information about a planned upgrade and when it should\n          occur.\n      upgraded_client_state:\n        description: >-\n          An UpgradedClientState must be provided to perform an IBC breaking\n          upgrade.\n\n          This will make the chain commit to the correct upgraded (self) client\n          state\n\n          before the upgrade occurs, so that connecting chains can verify that\n          the\n\n          new upgraded client is valid by verifying a proof on the previous\n          version\n\n          of the chain. This will allow IBC connections to persist smoothly\n          across\n\n          planned chain upgrades. Correspondingly, the UpgradedClientState field\n          has been\n\n          deprecated in the Cosmos SDK to allow for this logic to exist solely\n          in\n\n          the 02-client module.\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n      signer:\n        type: string\n        title: signer address\n    title: >-\n      MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of\n      an IBC client using a v1 governance proposal\n  ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse:\n    type: object\n    description: >-\n      MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response\n      type.\n  ibc.core.client.v1.MsgRecoverClient:\n    type: object\n    properties:\n      subject_client_id:\n        type: string\n        title: >-\n          the client identifier for the client to be updated if the proposal\n          passes\n      substitute_client_id:\n        type: string\n        title: >-\n          the substitute client identifier for the client which will replace the\n          subject\n\n          client\n      signer:\n        type: string\n        title: signer address\n    description: >-\n      MsgRecoverClient defines the message used to recover a frozen or expired\n      client.\n  ibc.core.client.v1.MsgRecoverClientResponse:\n    type: object\n    description: MsgRecoverClientResponse defines the Msg/RecoverClient response type.\n  ibc.core.client.v1.MsgSubmitMisbehaviour:\n    type: object\n    properties:\n      client_id:\n        type: string\n        title: client unique identifier\n      misbehaviour:\n        title: misbehaviour used for freezing the light client\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      signer:\n        type: string\n        title: signer address\n    description: |-\n      MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\n      light client misbehaviour.\n      This message has been deprecated. Use MsgUpdateClient instead.\n  ibc.core.client.v1.MsgSubmitMisbehaviourResponse:\n    type: object\n    description: |-\n      MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\n      type.\n  ibc.core.client.v1.MsgUpdateClient:\n    type: object\n    properties:\n      client_id:\n        type: string\n        title: client unique identifier\n      client_message:\n        title: client message to update the light client\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      signer:\n        type: string\n        title: signer address\n    description: |-\n      MsgUpdateClient defines an sdk.Msg to update a IBC client state using\n      the given client message.\n  ibc.core.client.v1.MsgUpdateClientResponse:\n    type: object\n    description: MsgUpdateClientResponse defines the Msg/UpdateClient response type.\n  ibc.core.client.v1.MsgUpdateParams:\n    type: object\n    properties:\n      signer:\n        type: string\n        title: signer address\n      params:\n        description: |-\n          params defines the client parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          allowed_clients:\n            type: array\n            items:\n              type: string\n            description: >-\n              allowed_clients defines the list of allowed client state types\n              which can be created\n\n              and interacted with. If a client type is removed from the allowed\n              clients list, usage\n\n              of this client will be disabled until it is added again to the\n              list.\n    description: MsgUpdateParams defines the sdk.Msg type to update the client parameters.\n  ibc.core.client.v1.MsgUpdateParamsResponse:\n    type: object\n    description: MsgUpdateParamsResponse defines the MsgUpdateParams response type.\n  ibc.core.client.v1.MsgUpgradeClient:\n    type: object\n    properties:\n      client_id:\n        type: string\n        title: client unique identifier\n      client_state:\n        title: upgraded client state\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      consensus_state:\n        title: >-\n          upgraded consensus state, only contains enough information to serve as\n          a\n\n          basis of trust in update logic\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      proof_upgrade_client:\n        type: string\n        format: byte\n        title: proof that old chain committed to new client\n      proof_upgrade_consensus_state:\n        type: string\n        format: byte\n        title: proof that old chain committed to new consensus state\n      signer:\n        type: string\n        title: signer address\n    title: >-\n      MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new\n      client\n\n      state\n  ibc.core.client.v1.MsgUpgradeClientResponse:\n    type: object\n    description: MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.\n  ibc.core.client.v1.Params:\n    type: object\n    properties:\n      allowed_clients:\n        type: array\n        items:\n          type: string\n        description: >-\n          allowed_clients defines the list of allowed client state types which\n          can be created\n\n          and interacted with. If a client type is removed from the allowed\n          clients list, usage\n\n          of this client will be disabled until it is added again to the list.\n    description: Params defines the set of IBC light client parameters.\n  ibc.core.client.v1.ConsensusStateWithHeight:\n    type: object\n    properties:\n      height:\n        title: consensus state height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n      consensus_state:\n        title: consensus state\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: >-\n      ConsensusStateWithHeight defines a consensus state with an additional\n      height\n\n      field.\n  ibc.core.client.v1.QueryClientParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          allowed_clients:\n            type: array\n            items:\n              type: string\n            description: >-\n              allowed_clients defines the list of allowed client state types\n              which can be created\n\n              and interacted with. If a client type is removed from the allowed\n              clients list, usage\n\n              of this client will be disabled until it is added again to the\n              list.\n    description: >-\n      QueryClientParamsResponse is the response type for the Query/ClientParams\n      RPC\n\n      method.\n  ibc.core.client.v1.QueryClientStateResponse:\n    type: object\n    properties:\n      client_state:\n        title: client state associated with the request identifier\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    description: >-\n      QueryClientStateResponse is the response type for the Query/ClientState\n      RPC\n\n      method. Besides the client state, it includes a proof and the height from\n\n      which the proof was retrieved.\n  ibc.core.client.v1.QueryClientStatesResponse:\n    type: object\n    properties:\n      client_states:\n        type: array\n        items:\n          type: object\n          properties:\n            client_id:\n              type: string\n              title: client identifier\n            client_state:\n              title: client state\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n          description: >-\n            IdentifiedClientState defines a client state with an additional\n            client\n\n            identifier field.\n        description: list of stored ClientStates of the chain.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n    description: >-\n      QueryClientStatesResponse is the response type for the Query/ClientStates\n      RPC\n\n      method.\n  ibc.core.client.v1.QueryClientStatusResponse:\n    type: object\n    properties:\n      status:\n        type: string\n    description: >-\n      QueryClientStatusResponse is the response type for the Query/ClientStatus\n      RPC\n\n      method. It returns the current status of the IBC client.\n  ibc.core.client.v1.QueryConsensusStateHeightsResponse:\n    type: object\n    properties:\n      consensus_state_heights:\n        type: array\n        items:\n          type: object\n          properties:\n            revision_number:\n              type: string\n              format: uint64\n              title: the revision that the client is currently on\n            revision_height:\n              type: string\n              format: uint64\n              title: the height within the given revision\n          description: >-\n            Normally the RevisionHeight is incremented at each height while\n            keeping\n\n            RevisionNumber the same. However some consensus algorithms may\n            choose to\n\n            reset the height in certain conditions e.g. hard forks,\n            state-machine\n\n            breaking changes In these cases, the RevisionNumber is incremented\n            so that\n\n            height continues to be monitonically increasing even as the\n            RevisionHeight\n\n            gets reset\n          title: >-\n            Height is a monotonically increasing data type\n\n            that can be compared against another Height for the purposes of\n            updating and\n\n            freezing clients\n        title: consensus state heights\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n    title: |-\n      QueryConsensusStateHeightsResponse is the response type for the\n      Query/ConsensusStateHeights RPC method\n  ibc.core.client.v1.QueryConsensusStateResponse:\n    type: object\n    properties:\n      consensus_state:\n        title: >-\n          consensus state associated with the client identifier at the given\n          height\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: >-\n      QueryConsensusStateResponse is the response type for the\n      Query/ConsensusState\n\n      RPC method\n  ibc.core.client.v1.QueryConsensusStatesResponse:\n    type: object\n    properties:\n      consensus_states:\n        type: array\n        items:\n          type: object\n          properties:\n            height:\n              title: consensus state height\n              type: object\n              properties:\n                revision_number:\n                  type: string\n                  format: uint64\n                  title: the revision that the client is currently on\n                revision_height:\n                  type: string\n                  format: uint64\n                  title: the height within the given revision\n              description: >-\n                Normally the RevisionHeight is incremented at each height while\n                keeping\n\n                RevisionNumber the same. However some consensus algorithms may\n                choose to\n\n                reset the height in certain conditions e.g. hard forks,\n                state-machine\n\n                breaking changes In these cases, the RevisionNumber is\n                incremented so that\n\n                height continues to be monitonically increasing even as the\n                RevisionHeight\n\n                gets reset\n            consensus_state:\n              title: consensus state\n              type: object\n              properties:\n                '@type':\n                  type: string\n                  description: >-\n                    A URL/resource name that uniquely identifies the type of the\n                    serialized\n\n                    protocol buffer message. This string must contain at least\n\n                    one \"/\" character. The last segment of the URL's path must\n                    represent\n\n                    the fully qualified name of the type (as in\n\n                    `path/google.protobuf.Duration`). The name should be in a\n                    canonical form\n\n                    (e.g., leading \".\" is not accepted).\n\n\n                    In practice, teams usually precompile into the binary all\n                    types that they\n\n                    expect it to use in the context of Any. However, for URLs\n                    which use the\n\n                    scheme `http`, `https`, or no scheme, one can optionally set\n                    up a type\n\n                    server that maps type URLs to message definitions as\n                    follows:\n\n\n                    * If no scheme is provided, `https` is assumed.\n\n                    * An HTTP GET on the URL must yield a\n                    [google.protobuf.Type][]\n                      value in binary format, or produce an error.\n                    * Applications are allowed to cache lookup results based on\n                    the\n                      URL, or have them precompiled into a binary to avoid any\n                      lookup. Therefore, binary compatibility needs to be preserved\n                      on changes to types. (Use versioned type names to manage\n                      breaking changes.)\n\n                    Note: this functionality is not currently available in the\n                    official\n\n                    protobuf release, and it is not used for type URLs beginning\n                    with\n\n                    type.googleapis.com.\n\n\n                    Schemes other than `http`, `https` (or the empty scheme)\n                    might be\n\n                    used with implementation specific semantics.\n              additionalProperties: {}\n              description: >-\n                `Any` contains an arbitrary serialized protocol buffer message\n                along with a\n\n                URL that describes the type of the serialized message.\n\n\n                Protobuf library provides support to pack/unpack Any values in\n                the form\n\n                of utility functions or additional generated methods of the Any\n                type.\n\n\n                Example 1: Pack and unpack a message in C++.\n\n                    Foo foo = ...;\n                    Any any;\n                    any.PackFrom(foo);\n                    ...\n                    if (any.UnpackTo(&foo)) {\n                      ...\n                    }\n\n                Example 2: Pack and unpack a message in Java.\n\n                    Foo foo = ...;\n                    Any any = Any.pack(foo);\n                    ...\n                    if (any.is(Foo.class)) {\n                      foo = any.unpack(Foo.class);\n                    }\n                    // or ...\n                    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                      foo = any.unpack(Foo.getDefaultInstance());\n                    }\n\n                Example 3: Pack and unpack a message in Python.\n\n                    foo = Foo(...)\n                    any = Any()\n                    any.Pack(foo)\n                    ...\n                    if any.Is(Foo.DESCRIPTOR):\n                      any.Unpack(foo)\n                      ...\n\n                Example 4: Pack and unpack a message in Go\n\n                     foo := &pb.Foo{...}\n                     any, err := anypb.New(foo)\n                     if err != nil {\n                       ...\n                     }\n                     ...\n                     foo := &pb.Foo{}\n                     if err := any.UnmarshalTo(foo); err != nil {\n                       ...\n                     }\n\n                The pack methods provided by protobuf library will by default\n                use\n\n                'type.googleapis.com/full.type.name' as the type URL and the\n                unpack\n\n                methods only use the fully qualified type name after the last\n                '/'\n\n                in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n                name \"y.z\".\n\n\n                JSON\n\n\n                The JSON representation of an `Any` value uses the regular\n\n                representation of the deserialized, embedded message, with an\n\n                additional field `@type` which contains the type URL. Example:\n\n                    package google.profile;\n                    message Person {\n                      string first_name = 1;\n                      string last_name = 2;\n                    }\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.profile.Person\",\n                      \"firstName\": <string>,\n                      \"lastName\": <string>\n                    }\n\n                If the embedded message type is well-known and has a custom JSON\n\n                representation, that representation will be embedded adding a\n                field\n\n                `value` which holds the custom JSON in addition to the `@type`\n\n                field. Example (for message [google.protobuf.Duration][]):\n\n                    {\n                      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                      \"value\": \"1.212s\"\n                    }\n          description: >-\n            ConsensusStateWithHeight defines a consensus state with an\n            additional height\n\n            field.\n        title: consensus states associated with the identifier\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n    title: |-\n      QueryConsensusStatesResponse is the response type for the\n      Query/ConsensusStates RPC method\n  ibc.core.client.v1.QueryUpgradedClientStateResponse:\n    type: object\n    properties:\n      upgraded_client_state:\n        title: client state associated with the request identifier\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: |-\n      QueryUpgradedClientStateResponse is the response type for the\n      Query/UpgradedClientState RPC method.\n  ibc.core.client.v1.QueryUpgradedConsensusStateResponse:\n    type: object\n    properties:\n      upgraded_consensus_state:\n        title: Consensus state associated with the request identifier\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n    description: |-\n      QueryUpgradedConsensusStateResponse is the response type for the\n      Query/UpgradedConsensusState RPC method.\n  ibc.core.commitment.v1.MerklePrefix:\n    type: object\n    properties:\n      key_prefix:\n        type: string\n        format: byte\n    title: |-\n      MerklePrefix is merkle path prefixed to the key.\n      The constructed key from the Path and the key will be append(Path.KeyPath,\n      append(Path.KeyPrefix, key...))\n  ibc.core.connection.v1.ConnectionEnd:\n    type: object\n    properties:\n      client_id:\n        type: string\n        description: client associated with this connection.\n      versions:\n        type: array\n        items:\n          type: object\n          properties:\n            identifier:\n              type: string\n              title: unique version identifier\n            features:\n              type: array\n              items:\n                type: string\n              title: list of features compatible with the specified identifier\n          description: >-\n            Version defines the versioning scheme used to negotiate the IBC\n            verison in\n\n            the connection handshake.\n        description: >-\n          IBC version which can be utilised to determine encodings or protocols\n          for\n\n          channels or packets utilising this connection.\n      state:\n        description: current state of the connection end.\n        type: string\n        enum:\n          - STATE_UNINITIALIZED_UNSPECIFIED\n          - STATE_INIT\n          - STATE_TRYOPEN\n          - STATE_OPEN\n        default: STATE_UNINITIALIZED_UNSPECIFIED\n      counterparty:\n        description: counterparty chain associated with this connection.\n        type: object\n        properties:\n          client_id:\n            type: string\n            description: >-\n              identifies the client on the counterparty chain associated with a\n              given\n\n              connection.\n          connection_id:\n            type: string\n            description: >-\n              identifies the connection end on the counterparty chain associated\n              with a\n\n              given connection.\n          prefix:\n            description: commitment merkle prefix of the counterparty chain.\n            type: object\n            properties:\n              key_prefix:\n                type: string\n                format: byte\n            title: >-\n              MerklePrefix is merkle path prefixed to the key.\n\n              The constructed key from the Path and the key will be\n              append(Path.KeyPath,\n\n              append(Path.KeyPrefix, key...))\n      delay_period:\n        type: string\n        format: uint64\n        description: >-\n          delay period that must pass before a consensus state can be used for\n\n          packet-verification NOTE: delay period logic is only implemented by\n          some\n\n          clients.\n    description: |-\n      ConnectionEnd defines a stateful object on a chain connected to another\n      separate one.\n      NOTE: there must only be 2 defined ConnectionEnds to establish\n      a connection between two chains.\n  ibc.core.connection.v1.Counterparty:\n    type: object\n    properties:\n      client_id:\n        type: string\n        description: >-\n          identifies the client on the counterparty chain associated with a\n          given\n\n          connection.\n      connection_id:\n        type: string\n        description: >-\n          identifies the connection end on the counterparty chain associated\n          with a\n\n          given connection.\n      prefix:\n        description: commitment merkle prefix of the counterparty chain.\n        type: object\n        properties:\n          key_prefix:\n            type: string\n            format: byte\n        title: >-\n          MerklePrefix is merkle path prefixed to the key.\n\n          The constructed key from the Path and the key will be\n          append(Path.KeyPath,\n\n          append(Path.KeyPrefix, key...))\n    description: >-\n      Counterparty defines the counterparty chain associated with a connection\n      end.\n  ibc.core.connection.v1.IdentifiedConnection:\n    type: object\n    properties:\n      id:\n        type: string\n        description: connection identifier.\n      client_id:\n        type: string\n        description: client associated with this connection.\n      versions:\n        type: array\n        items:\n          type: object\n          properties:\n            identifier:\n              type: string\n              title: unique version identifier\n            features:\n              type: array\n              items:\n                type: string\n              title: list of features compatible with the specified identifier\n          description: >-\n            Version defines the versioning scheme used to negotiate the IBC\n            verison in\n\n            the connection handshake.\n        title: >-\n          IBC version which can be utilised to determine encodings or protocols\n          for\n\n          channels or packets utilising this connection\n      state:\n        description: current state of the connection end.\n        type: string\n        enum:\n          - STATE_UNINITIALIZED_UNSPECIFIED\n          - STATE_INIT\n          - STATE_TRYOPEN\n          - STATE_OPEN\n        default: STATE_UNINITIALIZED_UNSPECIFIED\n      counterparty:\n        description: counterparty chain associated with this connection.\n        type: object\n        properties:\n          client_id:\n            type: string\n            description: >-\n              identifies the client on the counterparty chain associated with a\n              given\n\n              connection.\n          connection_id:\n            type: string\n            description: >-\n              identifies the connection end on the counterparty chain associated\n              with a\n\n              given connection.\n          prefix:\n            description: commitment merkle prefix of the counterparty chain.\n            type: object\n            properties:\n              key_prefix:\n                type: string\n                format: byte\n            title: >-\n              MerklePrefix is merkle path prefixed to the key.\n\n              The constructed key from the Path and the key will be\n              append(Path.KeyPath,\n\n              append(Path.KeyPrefix, key...))\n      delay_period:\n        type: string\n        format: uint64\n        description: delay period associated with this connection.\n    description: |-\n      IdentifiedConnection defines a connection with additional connection\n      identifier field.\n  ibc.core.connection.v1.Params:\n    type: object\n    properties:\n      max_expected_time_per_block:\n        type: string\n        format: uint64\n        description: >-\n          maximum expected time per block (in nanoseconds), used to enforce\n          block delay. This parameter should reflect the\n\n          largest amount of time that the chain might reasonably take to produce\n          the next block under normal operating\n\n          conditions. A safe choice is 3-5x the expected time per block.\n    description: Params defines the set of Connection parameters.\n  ibc.core.connection.v1.QueryClientConnectionsResponse:\n    type: object\n    properties:\n      connection_paths:\n        type: array\n        items:\n          type: string\n        description: slice of all the connection paths associated with a client.\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was generated\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryClientConnectionsResponse is the response type for the\n      Query/ClientConnections RPC method\n  ibc.core.connection.v1.QueryConnectionClientStateResponse:\n    type: object\n    properties:\n      identified_client_state:\n        title: client state associated with the channel\n        type: object\n        properties:\n          client_id:\n            type: string\n            title: client identifier\n          client_state:\n            title: client state\n            type: object\n            properties:\n              '@type':\n                type: string\n                description: >-\n                  A URL/resource name that uniquely identifies the type of the\n                  serialized\n\n                  protocol buffer message. This string must contain at least\n\n                  one \"/\" character. The last segment of the URL's path must\n                  represent\n\n                  the fully qualified name of the type (as in\n\n                  `path/google.protobuf.Duration`). The name should be in a\n                  canonical form\n\n                  (e.g., leading \".\" is not accepted).\n\n\n                  In practice, teams usually precompile into the binary all\n                  types that they\n\n                  expect it to use in the context of Any. However, for URLs\n                  which use the\n\n                  scheme `http`, `https`, or no scheme, one can optionally set\n                  up a type\n\n                  server that maps type URLs to message definitions as follows:\n\n\n                  * If no scheme is provided, `https` is assumed.\n\n                  * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                    value in binary format, or produce an error.\n                  * Applications are allowed to cache lookup results based on\n                  the\n                    URL, or have them precompiled into a binary to avoid any\n                    lookup. Therefore, binary compatibility needs to be preserved\n                    on changes to types. (Use versioned type names to manage\n                    breaking changes.)\n\n                  Note: this functionality is not currently available in the\n                  official\n\n                  protobuf release, and it is not used for type URLs beginning\n                  with\n\n                  type.googleapis.com.\n\n\n                  Schemes other than `http`, `https` (or the empty scheme) might\n                  be\n\n                  used with implementation specific semantics.\n            additionalProperties: {}\n            description: >-\n              `Any` contains an arbitrary serialized protocol buffer message\n              along with a\n\n              URL that describes the type of the serialized message.\n\n\n              Protobuf library provides support to pack/unpack Any values in the\n              form\n\n              of utility functions or additional generated methods of the Any\n              type.\n\n\n              Example 1: Pack and unpack a message in C++.\n\n                  Foo foo = ...;\n                  Any any;\n                  any.PackFrom(foo);\n                  ...\n                  if (any.UnpackTo(&foo)) {\n                    ...\n                  }\n\n              Example 2: Pack and unpack a message in Java.\n\n                  Foo foo = ...;\n                  Any any = Any.pack(foo);\n                  ...\n                  if (any.is(Foo.class)) {\n                    foo = any.unpack(Foo.class);\n                  }\n                  // or ...\n                  if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                    foo = any.unpack(Foo.getDefaultInstance());\n                  }\n\n              Example 3: Pack and unpack a message in Python.\n\n                  foo = Foo(...)\n                  any = Any()\n                  any.Pack(foo)\n                  ...\n                  if any.Is(Foo.DESCRIPTOR):\n                    any.Unpack(foo)\n                    ...\n\n              Example 4: Pack and unpack a message in Go\n\n                   foo := &pb.Foo{...}\n                   any, err := anypb.New(foo)\n                   if err != nil {\n                     ...\n                   }\n                   ...\n                   foo := &pb.Foo{}\n                   if err := any.UnmarshalTo(foo); err != nil {\n                     ...\n                   }\n\n              The pack methods provided by protobuf library will by default use\n\n              'type.googleapis.com/full.type.name' as the type URL and the\n              unpack\n\n              methods only use the fully qualified type name after the last '/'\n\n              in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n              name \"y.z\".\n\n\n              JSON\n\n\n              The JSON representation of an `Any` value uses the regular\n\n              representation of the deserialized, embedded message, with an\n\n              additional field `@type` which contains the type URL. Example:\n\n                  package google.profile;\n                  message Person {\n                    string first_name = 1;\n                    string last_name = 2;\n                  }\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.profile.Person\",\n                    \"firstName\": <string>,\n                    \"lastName\": <string>\n                  }\n\n              If the embedded message type is well-known and has a custom JSON\n\n              representation, that representation will be embedded adding a\n              field\n\n              `value` which holds the custom JSON in addition to the `@type`\n\n              field. Example (for message [google.protobuf.Duration][]):\n\n                  {\n                    \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                    \"value\": \"1.212s\"\n                  }\n        description: |-\n          IdentifiedClientState defines a client state with an additional client\n          identifier field.\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryConnectionClientStateResponse is the response type for the\n      Query/ConnectionClientState RPC method\n  ibc.core.connection.v1.QueryConnectionConsensusStateResponse:\n    type: object\n    properties:\n      consensus_state:\n        title: consensus state associated with the channel\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      client_id:\n        type: string\n        title: client ID associated with the consensus state\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    title: |-\n      QueryConnectionConsensusStateResponse is the response type for the\n      Query/ConnectionConsensusState RPC method\n  ibc.core.connection.v1.QueryConnectionParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params defines the parameters of the module.\n        type: object\n        properties:\n          max_expected_time_per_block:\n            type: string\n            format: uint64\n            description: >-\n              maximum expected time per block (in nanoseconds), used to enforce\n              block delay. This parameter should reflect the\n\n              largest amount of time that the chain might reasonably take to\n              produce the next block under normal operating\n\n              conditions. A safe choice is 3-5x the expected time per block.\n    description: >-\n      QueryConnectionParamsResponse is the response type for the\n      Query/ConnectionParams RPC method.\n  ibc.core.connection.v1.QueryConnectionResponse:\n    type: object\n    properties:\n      connection:\n        title: connection associated with the request identifier\n        type: object\n        properties:\n          client_id:\n            type: string\n            description: client associated with this connection.\n          versions:\n            type: array\n            items:\n              type: object\n              properties:\n                identifier:\n                  type: string\n                  title: unique version identifier\n                features:\n                  type: array\n                  items:\n                    type: string\n                  title: list of features compatible with the specified identifier\n              description: >-\n                Version defines the versioning scheme used to negotiate the IBC\n                verison in\n\n                the connection handshake.\n            description: >-\n              IBC version which can be utilised to determine encodings or\n              protocols for\n\n              channels or packets utilising this connection.\n          state:\n            description: current state of the connection end.\n            type: string\n            enum:\n              - STATE_UNINITIALIZED_UNSPECIFIED\n              - STATE_INIT\n              - STATE_TRYOPEN\n              - STATE_OPEN\n            default: STATE_UNINITIALIZED_UNSPECIFIED\n          counterparty:\n            description: counterparty chain associated with this connection.\n            type: object\n            properties:\n              client_id:\n                type: string\n                description: >-\n                  identifies the client on the counterparty chain associated\n                  with a given\n\n                  connection.\n              connection_id:\n                type: string\n                description: >-\n                  identifies the connection end on the counterparty chain\n                  associated with a\n\n                  given connection.\n              prefix:\n                description: commitment merkle prefix of the counterparty chain.\n                type: object\n                properties:\n                  key_prefix:\n                    type: string\n                    format: byte\n                title: >-\n                  MerklePrefix is merkle path prefixed to the key.\n\n                  The constructed key from the Path and the key will be\n                  append(Path.KeyPath,\n\n                  append(Path.KeyPrefix, key...))\n          delay_period:\n            type: string\n            format: uint64\n            description: >-\n              delay period that must pass before a consensus state can be used\n              for\n\n              packet-verification NOTE: delay period logic is only implemented\n              by some\n\n              clients.\n        description: >-\n          ConnectionEnd defines a stateful object on a chain connected to\n          another\n\n          separate one.\n\n          NOTE: there must only be 2 defined ConnectionEnds to establish\n\n          a connection between two chains.\n      proof:\n        type: string\n        format: byte\n        title: merkle proof of existence\n      proof_height:\n        title: height at which the proof was retrieved\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    description: >-\n      QueryConnectionResponse is the response type for the Query/Connection RPC\n\n      method. Besides the connection end, it includes a proof and the height\n      from\n\n      which the proof was retrieved.\n  ibc.core.connection.v1.QueryConnectionsResponse:\n    type: object\n    properties:\n      connections:\n        type: array\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              description: connection identifier.\n            client_id:\n              type: string\n              description: client associated with this connection.\n            versions:\n              type: array\n              items:\n                type: object\n                properties:\n                  identifier:\n                    type: string\n                    title: unique version identifier\n                  features:\n                    type: array\n                    items:\n                      type: string\n                    title: list of features compatible with the specified identifier\n                description: >-\n                  Version defines the versioning scheme used to negotiate the\n                  IBC verison in\n\n                  the connection handshake.\n              title: >-\n                IBC version which can be utilised to determine encodings or\n                protocols for\n\n                channels or packets utilising this connection\n            state:\n              description: current state of the connection end.\n              type: string\n              enum:\n                - STATE_UNINITIALIZED_UNSPECIFIED\n                - STATE_INIT\n                - STATE_TRYOPEN\n                - STATE_OPEN\n              default: STATE_UNINITIALIZED_UNSPECIFIED\n            counterparty:\n              description: counterparty chain associated with this connection.\n              type: object\n              properties:\n                client_id:\n                  type: string\n                  description: >-\n                    identifies the client on the counterparty chain associated\n                    with a given\n\n                    connection.\n                connection_id:\n                  type: string\n                  description: >-\n                    identifies the connection end on the counterparty chain\n                    associated with a\n\n                    given connection.\n                prefix:\n                  description: commitment merkle prefix of the counterparty chain.\n                  type: object\n                  properties:\n                    key_prefix:\n                      type: string\n                      format: byte\n                  title: >-\n                    MerklePrefix is merkle path prefixed to the key.\n\n                    The constructed key from the Path and the key will be\n                    append(Path.KeyPath,\n\n                    append(Path.KeyPrefix, key...))\n            delay_period:\n              type: string\n              format: uint64\n              description: delay period associated with this connection.\n          description: |-\n            IdentifiedConnection defines a connection with additional connection\n            identifier field.\n        description: list of stored connections of the chain.\n      pagination:\n        title: pagination response\n        type: object\n        properties:\n          next_key:\n            type: string\n            format: byte\n            description: |-\n              next_key is the key to be passed to PageRequest.key to\n              query the next page most efficiently. It will be empty if\n              there are no more results.\n          total:\n            type: string\n            format: uint64\n            title: >-\n              total is total number of results available if\n              PageRequest.count_total\n\n              was set, its value is undefined otherwise\n        description: |-\n          PageResponse is to be embedded in gRPC response messages where the\n          corresponding request message has used PageRequest.\n\n           message SomeResponse {\n                   repeated Bar results = 1;\n                   PageResponse page = 2;\n           }\n      height:\n        title: query block height\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n    description: >-\n      QueryConnectionsResponse is the response type for the Query/Connections\n      RPC\n\n      method.\n  ibc.core.connection.v1.State:\n    type: string\n    enum:\n      - STATE_UNINITIALIZED_UNSPECIFIED\n      - STATE_INIT\n      - STATE_TRYOPEN\n      - STATE_OPEN\n    default: STATE_UNINITIALIZED_UNSPECIFIED\n    description: |-\n      State defines if a connection is in one of the following states:\n      INIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n       - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n       - STATE_INIT: A connection end has just started the opening handshake.\n       - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\n      chain.\n       - STATE_OPEN: A connection end has completed the handshake.\n  ibc.core.connection.v1.Version:\n    type: object\n    properties:\n      identifier:\n        type: string\n        title: unique version identifier\n      features:\n        type: array\n        items:\n          type: string\n        title: list of features compatible with the specified identifier\n    description: |-\n      Version defines the versioning scheme used to negotiate the IBC verison in\n      the connection handshake.\n  ibc.core.connection.v1.MsgConnectionOpenAck:\n    type: object\n    properties:\n      connection_id:\n        type: string\n      counterparty_connection_id:\n        type: string\n      version:\n        type: object\n        properties:\n          identifier:\n            type: string\n            title: unique version identifier\n          features:\n            type: array\n            items:\n              type: string\n            title: list of features compatible with the specified identifier\n        description: >-\n          Version defines the versioning scheme used to negotiate the IBC\n          verison in\n\n          the connection handshake.\n      client_state:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      proof_try:\n        type: string\n        format: byte\n        title: |-\n          proof of the initialization the connection on Chain B: `UNITIALIZED ->\n          TRYOPEN`\n      proof_client:\n        type: string\n        format: byte\n        title: proof of client state included in message\n      proof_consensus:\n        type: string\n        format: byte\n        title: proof of client consensus state\n      consensus_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n      host_consensus_state_proof:\n        type: string\n        format: byte\n        title: >-\n          optional proof data for host state machines that are unable to\n          introspect their own consensus state\n    description: |-\n      MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\n      acknowledge the change of connection state to TRYOPEN on Chain B.\n  ibc.core.connection.v1.MsgConnectionOpenAckResponse:\n    type: object\n    description: >-\n      MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response\n      type.\n  ibc.core.connection.v1.MsgConnectionOpenConfirm:\n    type: object\n    properties:\n      connection_id:\n        type: string\n      proof_ack:\n        type: string\n        format: byte\n        title: >-\n          proof for the change of the connection state on Chain A: `INIT ->\n          OPEN`\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n    description: |-\n      MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\n      acknowledge the change of connection state to OPEN on Chain A.\n  ibc.core.connection.v1.MsgConnectionOpenConfirmResponse:\n    type: object\n    description: |-\n      MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\n      response type.\n  ibc.core.connection.v1.MsgConnectionOpenInit:\n    type: object\n    properties:\n      client_id:\n        type: string\n      counterparty:\n        type: object\n        properties:\n          client_id:\n            type: string\n            description: >-\n              identifies the client on the counterparty chain associated with a\n              given\n\n              connection.\n          connection_id:\n            type: string\n            description: >-\n              identifies the connection end on the counterparty chain associated\n              with a\n\n              given connection.\n          prefix:\n            description: commitment merkle prefix of the counterparty chain.\n            type: object\n            properties:\n              key_prefix:\n                type: string\n                format: byte\n            title: >-\n              MerklePrefix is merkle path prefixed to the key.\n\n              The constructed key from the Path and the key will be\n              append(Path.KeyPath,\n\n              append(Path.KeyPrefix, key...))\n        description: >-\n          Counterparty defines the counterparty chain associated with a\n          connection end.\n      version:\n        type: object\n        properties:\n          identifier:\n            type: string\n            title: unique version identifier\n          features:\n            type: array\n            items:\n              type: string\n            title: list of features compatible with the specified identifier\n        description: >-\n          Version defines the versioning scheme used to negotiate the IBC\n          verison in\n\n          the connection handshake.\n      delay_period:\n        type: string\n        format: uint64\n      signer:\n        type: string\n    description: |-\n      MsgConnectionOpenInit defines the msg sent by an account on Chain A to\n      initialize a connection with Chain B.\n  ibc.core.connection.v1.MsgConnectionOpenInitResponse:\n    type: object\n    description: |-\n      MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\n      type.\n  ibc.core.connection.v1.MsgConnectionOpenTry:\n    type: object\n    properties:\n      client_id:\n        type: string\n      previous_connection_id:\n        type: string\n        description: >-\n          Deprecated: this field is unused. Crossing hellos are no longer\n          supported in core IBC.\n      client_state:\n        type: object\n        properties:\n          '@type':\n            type: string\n            description: >-\n              A URL/resource name that uniquely identifies the type of the\n              serialized\n\n              protocol buffer message. This string must contain at least\n\n              one \"/\" character. The last segment of the URL's path must\n              represent\n\n              the fully qualified name of the type (as in\n\n              `path/google.protobuf.Duration`). The name should be in a\n              canonical form\n\n              (e.g., leading \".\" is not accepted).\n\n\n              In practice, teams usually precompile into the binary all types\n              that they\n\n              expect it to use in the context of Any. However, for URLs which\n              use the\n\n              scheme `http`, `https`, or no scheme, one can optionally set up a\n              type\n\n              server that maps type URLs to message definitions as follows:\n\n\n              * If no scheme is provided, `https` is assumed.\n\n              * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n                value in binary format, or produce an error.\n              * Applications are allowed to cache lookup results based on the\n                URL, or have them precompiled into a binary to avoid any\n                lookup. Therefore, binary compatibility needs to be preserved\n                on changes to types. (Use versioned type names to manage\n                breaking changes.)\n\n              Note: this functionality is not currently available in the\n              official\n\n              protobuf release, and it is not used for type URLs beginning with\n\n              type.googleapis.com.\n\n\n              Schemes other than `http`, `https` (or the empty scheme) might be\n\n              used with implementation specific semantics.\n        additionalProperties: {}\n        description: >-\n          `Any` contains an arbitrary serialized protocol buffer message along\n          with a\n\n          URL that describes the type of the serialized message.\n\n\n          Protobuf library provides support to pack/unpack Any values in the\n          form\n\n          of utility functions or additional generated methods of the Any type.\n\n\n          Example 1: Pack and unpack a message in C++.\n\n              Foo foo = ...;\n              Any any;\n              any.PackFrom(foo);\n              ...\n              if (any.UnpackTo(&foo)) {\n                ...\n              }\n\n          Example 2: Pack and unpack a message in Java.\n\n              Foo foo = ...;\n              Any any = Any.pack(foo);\n              ...\n              if (any.is(Foo.class)) {\n                foo = any.unpack(Foo.class);\n              }\n              // or ...\n              if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n                foo = any.unpack(Foo.getDefaultInstance());\n              }\n\n          Example 3: Pack and unpack a message in Python.\n\n              foo = Foo(...)\n              any = Any()\n              any.Pack(foo)\n              ...\n              if any.Is(Foo.DESCRIPTOR):\n                any.Unpack(foo)\n                ...\n\n          Example 4: Pack and unpack a message in Go\n\n               foo := &pb.Foo{...}\n               any, err := anypb.New(foo)\n               if err != nil {\n                 ...\n               }\n               ...\n               foo := &pb.Foo{}\n               if err := any.UnmarshalTo(foo); err != nil {\n                 ...\n               }\n\n          The pack methods provided by protobuf library will by default use\n\n          'type.googleapis.com/full.type.name' as the type URL and the unpack\n\n          methods only use the fully qualified type name after the last '/'\n\n          in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n\n          name \"y.z\".\n\n\n          JSON\n\n\n          The JSON representation of an `Any` value uses the regular\n\n          representation of the deserialized, embedded message, with an\n\n          additional field `@type` which contains the type URL. Example:\n\n              package google.profile;\n              message Person {\n                string first_name = 1;\n                string last_name = 2;\n              }\n\n              {\n                \"@type\": \"type.googleapis.com/google.profile.Person\",\n                \"firstName\": <string>,\n                \"lastName\": <string>\n              }\n\n          If the embedded message type is well-known and has a custom JSON\n\n          representation, that representation will be embedded adding a field\n\n          `value` which holds the custom JSON in addition to the `@type`\n\n          field. Example (for message [google.protobuf.Duration][]):\n\n              {\n                \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n                \"value\": \"1.212s\"\n              }\n      counterparty:\n        type: object\n        properties:\n          client_id:\n            type: string\n            description: >-\n              identifies the client on the counterparty chain associated with a\n              given\n\n              connection.\n          connection_id:\n            type: string\n            description: >-\n              identifies the connection end on the counterparty chain associated\n              with a\n\n              given connection.\n          prefix:\n            description: commitment merkle prefix of the counterparty chain.\n            type: object\n            properties:\n              key_prefix:\n                type: string\n                format: byte\n            title: >-\n              MerklePrefix is merkle path prefixed to the key.\n\n              The constructed key from the Path and the key will be\n              append(Path.KeyPath,\n\n              append(Path.KeyPrefix, key...))\n        description: >-\n          Counterparty defines the counterparty chain associated with a\n          connection end.\n      delay_period:\n        type: string\n        format: uint64\n      counterparty_versions:\n        type: array\n        items:\n          type: object\n          properties:\n            identifier:\n              type: string\n              title: unique version identifier\n            features:\n              type: array\n              items:\n                type: string\n              title: list of features compatible with the specified identifier\n          description: >-\n            Version defines the versioning scheme used to negotiate the IBC\n            verison in\n\n            the connection handshake.\n      proof_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      proof_init:\n        type: string\n        format: byte\n        title: |-\n          proof of the initialization the connection on Chain A: `UNITIALIZED ->\n          INIT`\n      proof_client:\n        type: string\n        format: byte\n        title: proof of client state included in message\n      proof_consensus:\n        type: string\n        format: byte\n        title: proof of client consensus state\n      consensus_height:\n        type: object\n        properties:\n          revision_number:\n            type: string\n            format: uint64\n            title: the revision that the client is currently on\n          revision_height:\n            type: string\n            format: uint64\n            title: the height within the given revision\n        description: >-\n          Normally the RevisionHeight is incremented at each height while\n          keeping\n\n          RevisionNumber the same. However some consensus algorithms may choose\n          to\n\n          reset the height in certain conditions e.g. hard forks, state-machine\n\n          breaking changes In these cases, the RevisionNumber is incremented so\n          that\n\n          height continues to be monitonically increasing even as the\n          RevisionHeight\n\n          gets reset\n        title: >-\n          Height is a monotonically increasing data type\n\n          that can be compared against another Height for the purposes of\n          updating and\n\n          freezing clients\n      signer:\n        type: string\n      host_consensus_state_proof:\n        type: string\n        format: byte\n        title: >-\n          optional proof data for host state machines that are unable to\n          introspect their own consensus state\n    description: |-\n      MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\n      connection on Chain B.\n  ibc.core.connection.v1.MsgConnectionOpenTryResponse:\n    type: object\n    description: >-\n      MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response\n      type.\n  ibc.core.connection.v1.MsgUpdateParams:\n    type: object\n    properties:\n      signer:\n        type: string\n        title: signer address\n      params:\n        description: |-\n          params defines the connection parameters to update.\n\n          NOTE: All parameters must be supplied.\n        type: object\n        properties:\n          max_expected_time_per_block:\n            type: string\n            format: uint64\n            description: >-\n              maximum expected time per block (in nanoseconds), used to enforce\n              block delay. This parameter should reflect the\n\n              largest amount of time that the chain might reasonably take to\n              produce the next block under normal operating\n\n              conditions. A safe choice is 3-5x the expected time per block.\n    description: >-\n      MsgUpdateParams defines the sdk.Msg type to update the connection\n      parameters.\n  ibc.core.connection.v1.MsgUpdateParamsResponse:\n    type: object\n    description: MsgUpdateParamsResponse defines the MsgUpdateParams response type.\n  sourcehub.acp.AccessDecision:\n    type: object\n    properties:\n      id:\n        type: string\n      policy_id:\n        type: string\n        title: used as part of id generation\n      creator:\n        type: string\n        title: used as part of id generation\n      creator_acc_sequence:\n        type: string\n        format: uint64\n        title: used as part of id generation\n      operations:\n        type: array\n        items:\n          type: object\n          properties:\n            object:\n              type: object\n              properties:\n                resource:\n                  type: string\n                id:\n                  type: string\n              description: >-\n                Object represents an entity which must be access controlled\n                within a Policy.\n              title: target object for operation\n            permission:\n              type: string\n              title: permission required to perform operation\n          description: Operation represents an action over an object.\n        title: used as part of id generation\n      actor:\n        type: string\n        title: used as part of id generation\n      params:\n        title: used as part of id generation\n        type: object\n        properties:\n          decision_expiration_delta:\n            type: string\n            format: uint64\n            title: number of blocks a Decision is valid for\n          proof_expiration_delta:\n            type: string\n            format: uint64\n            title: number of blocks a DecisionProof is valid for\n          ticket_expiration_delta:\n            type: string\n            format: uint64\n            title: number of blocks an AccessTicket is valid for\n      creation_time:\n        type: string\n        format: date-time\n      issued_height:\n        type: string\n        format: uint64\n        title: issued_height stores the block height when the Decision was evaluated\n    title: >-\n      AccessDecision models the result of evaluating a set of AccessRequests for\n      an Actor\n  sourcehub.acp.AccessRequest:\n    type: object\n    properties:\n      operations:\n        type: array\n        items:\n          type: object\n          properties:\n            object:\n              type: object\n              properties:\n                resource:\n                  type: string\n                id:\n                  type: string\n              description: >-\n                Object represents an entity which must be access controlled\n                within a Policy.\n              title: target object for operation\n            permission:\n              type: string\n              title: permission required to perform operation\n          description: Operation represents an action over an object.\n      actor:\n        type: object\n        properties:\n          id:\n            type: string\n        description: Actor represents an entity which makes access requests to a Policy.\n        title: actor requesting operations\n    title: >-\n      AccessRequest represents the wish to perform a set of operations by an\n      actor\n  sourcehub.acp.Actor:\n    type: object\n    properties:\n      id:\n        type: string\n    description: Actor represents an entity which makes access requests to a Policy.\n  sourcehub.acp.ActorResource:\n    type: object\n    properties:\n      name:\n        type: string\n      doc:\n        type: string\n      relations:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            doc:\n              type: string\n            manages:\n              type: array\n              items:\n                type: string\n              title: list of relations managed by the current relation\n            vr_types:\n              type: array\n              items:\n                type: object\n                properties:\n                  resource_name:\n                    type: string\n                    title: resource_name scopes permissible actors resource\n                  relation_name:\n                    type: string\n                    title: relation_name scopes permissible actors relation\n                description: >-\n                  Restriction models a specification which a Relationship's\n                  actor\n\n                  should meet.\n              title: value restriction types\n    description: >-\n      ActorResource represents a special Resource which is reserved for Policy\n      actors.\n  sourcehub.acp.ActorSet:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n      relation:\n        type: string\n    description: |-\n      ActorSet represents a set of Actors in a Policy.\n      It is specified through an Object, Relation pair, which represents\n      all actors which have a relationship with given obj-rel pair.\n      This expansion is recursive.\n  sourcehub.acp.AllActors:\n    type: object\n    description: |-\n      AllActors models a special Relationship Subject which indicates\n      that all Actors in the Policy are included.\n  sourcehub.acp.DecisionParams:\n    type: object\n    properties:\n      decision_expiration_delta:\n        type: string\n        format: uint64\n        title: number of blocks a Decision is valid for\n      proof_expiration_delta:\n        type: string\n        format: uint64\n        title: number of blocks a DecisionProof is valid for\n      ticket_expiration_delta:\n        type: string\n        format: uint64\n        title: number of blocks an AccessTicket is valid for\n    title: >-\n      DecisionParams stores auxiliary information regarding the validity of a\n      decision\n  sourcehub.acp.DeleteRelationshipCmd:\n    type: object\n    properties:\n      relationship:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n        description: |-\n          Relationship models an access control rule.\n          It states that the given subject has relation with object.\n    title: DeleteRelationshipCmd removes a Relationship in a Policy\n  sourcehub.acp.DeleteRelationshipCmdResult:\n    type: object\n    properties:\n      record_found:\n        type: boolean\n    title: DeleteRelationshipCmdResult removes a Relationship in a Policy\n  sourcehub.acp.MsgBearerPolicyCmd:\n    type: object\n    properties:\n      creator:\n        type: string\n      bearer_token:\n        type: string\n      policy_id:\n        type: string\n      cmd:\n        type: object\n        properties:\n          set_relationship_cmd:\n            type: object\n            properties:\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n            title: SetRelationshipCmd sets a Relationship in a Policy\n          delete_relationship_cmd:\n            type: object\n            properties:\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n            title: DeleteRelationshipCmd removes a Relationship in a Policy\n          register_object_cmd:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            title: RegisterObjectCmd registers an Object in a Policy\n          unregister_object_cmd:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            title: UnregisterObjectCmd unregisters an Object in a Policy\n      creation_time:\n        type: string\n        format: date-time\n  sourcehub.acp.MsgBearerPolicyCmdResponse:\n    type: object\n    properties:\n      result:\n        type: object\n        properties:\n          set_relationship_result:\n            type: object\n            properties:\n              record_existed:\n                type: boolean\n                title: >-\n                  Indicates whether the given Relationship previously existed,\n                  ie the Tx was a no op\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n            title: SetRelationshipCmd sets a Relationship in a Policy\n          delete_relationship_result:\n            type: object\n            properties:\n              record_found:\n                type: boolean\n            title: DeleteRelationshipCmdResult removes a Relationship in a Policy\n          register_object_result:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - NoOp\n                  - Registered\n                  - Unarchived\n                default: NoOp\n                description: >-\n                  - NoOp: NoOp indicates no action was take. The operation\n                  failed or the Object already existed and was active\n                   - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n                   - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n                  Only the original owners can Unarchive an object.\n                title: >-\n                  RegistrationResult encodes the possible result set from\n                  Registering an Object\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n            title: RegisterObjectCmdResult registers an Object in a Policy\n          unregister_object_result:\n            type: object\n            properties:\n              found:\n                type: boolean\n              relationships_removed:\n                type: string\n                format: uint64\n            title: UnregisterObjectCmdResult unregisters an Object in a Policy\n  sourcehub.acp.MsgCheckAccess:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy_id:\n        type: string\n      creation_time:\n        type: string\n        format: date-time\n      access_request:\n        type: object\n        properties:\n          operations:\n            type: array\n            items:\n              type: object\n              properties:\n                object:\n                  type: object\n                  properties:\n                    resource:\n                      type: string\n                    id:\n                      type: string\n                  description: >-\n                    Object represents an entity which must be access controlled\n                    within a Policy.\n                  title: target object for operation\n                permission:\n                  type: string\n                  title: permission required to perform operation\n              description: Operation represents an action over an object.\n          actor:\n            type: object\n            properties:\n              id:\n                type: string\n            description: >-\n              Actor represents an entity which makes access requests to a\n              Policy.\n            title: actor requesting operations\n        title: >-\n          AccessRequest represents the wish to perform a set of operations by an\n          actor\n  sourcehub.acp.MsgCheckAccessResponse:\n    type: object\n    properties:\n      decision:\n        type: object\n        properties:\n          id:\n            type: string\n          policy_id:\n            type: string\n            title: used as part of id generation\n          creator:\n            type: string\n            title: used as part of id generation\n          creator_acc_sequence:\n            type: string\n            format: uint64\n            title: used as part of id generation\n          operations:\n            type: array\n            items:\n              type: object\n              properties:\n                object:\n                  type: object\n                  properties:\n                    resource:\n                      type: string\n                    id:\n                      type: string\n                  description: >-\n                    Object represents an entity which must be access controlled\n                    within a Policy.\n                  title: target object for operation\n                permission:\n                  type: string\n                  title: permission required to perform operation\n              description: Operation represents an action over an object.\n            title: used as part of id generation\n          actor:\n            type: string\n            title: used as part of id generation\n          params:\n            title: used as part of id generation\n            type: object\n            properties:\n              decision_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks a Decision is valid for\n              proof_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks a DecisionProof is valid for\n              ticket_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks an AccessTicket is valid for\n          creation_time:\n            type: string\n            format: date-time\n          issued_height:\n            type: string\n            format: uint64\n            title: >-\n              issued_height stores the block height when the Decision was\n              evaluated\n        title: >-\n          AccessDecision models the result of evaluating a set of AccessRequests\n          for an Actor\n  sourcehub.acp.MsgCreatePolicy:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy:\n        type: string\n      marshal_type:\n        type: string\n        enum:\n          - UNKNOWN\n          - YAML\n        default: UNKNOWN\n        description: |-\n          PolicyMarshalingType enumerates supported marshaling types for policies.\n\n           - UNKNOWN: Fallback value for a missing Marshaling Type\n           - YAML: YAML Marshaled Policy\n      creation_time:\n        type: string\n        format: date-time\n  sourcehub.acp.MsgCreatePolicyResponse:\n    type: object\n    properties:\n      policy:\n        type: object\n        properties:\n          id:\n            type: string\n          name:\n            type: string\n          description:\n            type: string\n          creation_time:\n            type: string\n            format: date-time\n          attributes:\n            type: object\n            additionalProperties:\n              type: string\n          resources:\n            type: array\n            items:\n              type: object\n              properties:\n                name:\n                  type: string\n                doc:\n                  type: string\n                permissions:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      expression:\n                        type: string\n                    description: >-\n                      Permission models a special type of Relation which is\n                      evaluated at runtime.\n\n                      A permission often maps to an operation defined for a\n                      resource which an actor may attempt.\n                relations:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      manages:\n                        type: array\n                        items:\n                          type: string\n                        title: list of relations managed by the current relation\n                      vr_types:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            resource_name:\n                              type: string\n                              title: resource_name scopes permissible actors resource\n                            relation_name:\n                              type: string\n                              title: relation_name scopes permissible actors relation\n                          description: >-\n                            Restriction models a specification which a\n                            Relationship's actor\n\n                            should meet.\n                        title: value restriction types\n              description: >-\n                Resource models a namespace for objects in a Policy.\n\n                Appications will have multiple entities which they must manage\n                such as files or groups.\n\n                A Resource represents a set of entities of a certain type.\n          actor_resource:\n            type: object\n            properties:\n              name:\n                type: string\n              doc:\n                type: string\n              relations:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    name:\n                      type: string\n                    doc:\n                      type: string\n                    manages:\n                      type: array\n                      items:\n                        type: string\n                      title: list of relations managed by the current relation\n                    vr_types:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          resource_name:\n                            type: string\n                            title: resource_name scopes permissible actors resource\n                          relation_name:\n                            type: string\n                            title: relation_name scopes permissible actors relation\n                        description: >-\n                          Restriction models a specification which a\n                          Relationship's actor\n\n                          should meet.\n                      title: value restriction types\n            description: >-\n              ActorResource represents a special Resource which is reserved for\n              Policy actors.\n          creator:\n            type: string\n        description: >-\n          Policy represents an ACP module Policy definition.\n\n          Each Policy defines a set of high level rules over how the acces\n          control system\n\n          should behave.\n  sourcehub.acp.MsgDeleteRelationship:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy_id:\n        type: string\n      relationship:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n        description: |-\n          Relationship models an access control rule.\n          It states that the given subject has relation with object.\n  sourcehub.acp.MsgDeleteRelationshipResponse:\n    type: object\n    properties:\n      record_found:\n        type: boolean\n  sourcehub.acp.MsgDirectPolicyCmd:\n    type: object\n    properties:\n      creator:\n        type: string\n  sourcehub.acp.MsgDirectPolicyCmdResponse:\n    type: object\n  sourcehub.acp.MsgRegisterObject:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy_id:\n        type: string\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n      creation_time:\n        type: string\n        format: date-time\n  sourcehub.acp.MsgRegisterObjectResponse:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - NoOp\n          - Registered\n          - Unarchived\n        default: NoOp\n        description: >-\n          - NoOp: NoOp indicates no action was take. The operation failed or the\n          Object already existed and was active\n           - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n           - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n          Only the original owners can Unarchive an object.\n        title: >-\n          RegistrationResult encodes the possible result set from Registering an\n          Object\n      record:\n        type: object\n        properties:\n          creation_time:\n            type: string\n            format: date-time\n          creator:\n            type: string\n            description: >-\n              msg_signer is the SourceHub address of the account that submited\n              the message responsible for this record\n\n              It's used for auditing only.\n          actor:\n            type: string\n            title: actor is the DID of the Actor which created the relationship\n          policy_id:\n            type: string\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n          archived:\n            type: boolean\n            title: archived indicates whether an object has been unregistered\n        description: >-\n          RelationshipRecord represents a document contained a Relationship and\n          additional data.\n  sourcehub.acp.MsgSetRelationship:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy_id:\n        type: string\n      creation_time:\n        type: string\n        format: date-time\n      relationship:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n        description: |-\n          Relationship models an access control rule.\n          It states that the given subject has relation with object.\n  sourcehub.acp.MsgSetRelationshipResponse:\n    type: object\n    properties:\n      record_existed:\n        type: boolean\n        title: >-\n          Indicates whether the given Relationship previously existed, ie the Tx\n          was a no op\n      record:\n        type: object\n        properties:\n          creation_time:\n            type: string\n            format: date-time\n          creator:\n            type: string\n            description: >-\n              msg_signer is the SourceHub address of the account that submited\n              the message responsible for this record\n\n              It's used for auditing only.\n          actor:\n            type: string\n            title: actor is the DID of the Actor which created the relationship\n          policy_id:\n            type: string\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n          archived:\n            type: boolean\n            title: archived indicates whether an object has been unregistered\n        description: >-\n          RelationshipRecord represents a document contained a Relationship and\n          additional data.\n  sourcehub.acp.MsgSignedPolicyCmd:\n    type: object\n    properties:\n      creator:\n        type: string\n      payload:\n        type: string\n      type:\n        type: string\n        enum:\n          - UNKNOWN\n          - JWS\n        default: UNKNOWN\n  sourcehub.acp.MsgSignedPolicyCmd.ContentType:\n    type: string\n    enum:\n      - UNKNOWN\n      - JWS\n    default: UNKNOWN\n  sourcehub.acp.MsgSignedPolicyCmdResponse:\n    type: object\n    properties:\n      result:\n        type: object\n        properties:\n          set_relationship_result:\n            type: object\n            properties:\n              record_existed:\n                type: boolean\n                title: >-\n                  Indicates whether the given Relationship previously existed,\n                  ie the Tx was a no op\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n            title: SetRelationshipCmd sets a Relationship in a Policy\n          delete_relationship_result:\n            type: object\n            properties:\n              record_found:\n                type: boolean\n            title: DeleteRelationshipCmdResult removes a Relationship in a Policy\n          register_object_result:\n            type: object\n            properties:\n              result:\n                type: string\n                enum:\n                  - NoOp\n                  - Registered\n                  - Unarchived\n                default: NoOp\n                description: >-\n                  - NoOp: NoOp indicates no action was take. The operation\n                  failed or the Object already existed and was active\n                   - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n                   - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n                  Only the original owners can Unarchive an object.\n                title: >-\n                  RegistrationResult encodes the possible result set from\n                  Registering an Object\n              record:\n                type: object\n                properties:\n                  creation_time:\n                    type: string\n                    format: date-time\n                  creator:\n                    type: string\n                    description: >-\n                      msg_signer is the SourceHub address of the account that\n                      submited the message responsible for this record\n\n                      It's used for auditing only.\n                  actor:\n                    type: string\n                    title: >-\n                      actor is the DID of the Actor which created the\n                      relationship\n                  policy_id:\n                    type: string\n                  relationship:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                      subject:\n                        type: object\n                        properties:\n                          actor:\n                            type: object\n                            properties:\n                              id:\n                                type: string\n                            description: >-\n                              Actor represents an entity which makes access\n                              requests to a Policy.\n                          actor_set:\n                            type: object\n                            properties:\n                              object:\n                                type: object\n                                properties:\n                                  resource:\n                                    type: string\n                                  id:\n                                    type: string\n                                description: >-\n                                  Object represents an entity which must be\n                                  access controlled within a Policy.\n                              relation:\n                                type: string\n                            description: >-\n                              ActorSet represents a set of Actors in a Policy.\n\n                              It is specified through an Object, Relation pair,\n                              which represents\n\n                              all actors which have a relationship with given\n                              obj-rel pair.\n\n                              This expansion is recursive.\n                          all_actors:\n                            type: object\n                            description: >-\n                              AllActors models a special Relationship Subject\n                              which indicates\n\n                              that all Actors in the Policy are included.\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                        description: Subject specifies the target of a Relationship.\n                    description: |-\n                      Relationship models an access control rule.\n                      It states that the given subject has relation with object.\n                  archived:\n                    type: boolean\n                    title: archived indicates whether an object has been unregistered\n                description: >-\n                  RelationshipRecord represents a document contained a\n                  Relationship and additional data.\n            title: RegisterObjectCmdResult registers an Object in a Policy\n          unregister_object_result:\n            type: object\n            properties:\n              found:\n                type: boolean\n              relationships_removed:\n                type: string\n                format: uint64\n            title: UnregisterObjectCmdResult unregisters an Object in a Policy\n  sourcehub.acp.MsgUnregisterObject:\n    type: object\n    properties:\n      creator:\n        type: string\n      policy_id:\n        type: string\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n  sourcehub.acp.MsgUnregisterObjectResponse:\n    type: object\n    properties:\n      found:\n        type: boolean\n  sourcehub.acp.MsgUpdateParams:\n    type: object\n    properties:\n      authority:\n        type: string\n        description: >-\n          authority is the address that controls the module (defaults to x/gov\n          unless overwritten).\n      params:\n        description: 'NOTE: All parameters must be supplied.'\n        type: object\n        properties:\n          policy_command_max_expiration_delta:\n            type: string\n            format: uint64\n            description: >-\n              policy_command_max_expiration_delta specifies a global thershold\n              for how old a Command will be accepted for.\n    description: MsgUpdateParams is the Msg/UpdateParams request type.\n  sourcehub.acp.MsgUpdateParamsResponse:\n    type: object\n    description: |-\n      MsgUpdateParamsResponse defines the response structure for executing a\n      MsgUpdateParams message.\n  sourcehub.acp.Object:\n    type: object\n    properties:\n      resource:\n        type: string\n      id:\n        type: string\n    description: >-\n      Object represents an entity which must be access controlled within a\n      Policy.\n  sourcehub.acp.Operation:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n        title: target object for operation\n      permission:\n        type: string\n        title: permission required to perform operation\n    description: Operation represents an action over an object.\n  sourcehub.acp.Params:\n    type: object\n    properties:\n      policy_command_max_expiration_delta:\n        type: string\n        format: uint64\n        description: >-\n          policy_command_max_expiration_delta specifies a global thershold for\n          how old a Command will be accepted for.\n    description: Params defines the parameters for the module.\n  sourcehub.acp.Permission:\n    type: object\n    properties:\n      name:\n        type: string\n      doc:\n        type: string\n      expression:\n        type: string\n    description: >-\n      Permission models a special type of Relation which is evaluated at\n      runtime.\n\n      A permission often maps to an operation defined for a resource which an\n      actor may attempt.\n  sourcehub.acp.Policy:\n    type: object\n    properties:\n      id:\n        type: string\n      name:\n        type: string\n      description:\n        type: string\n      creation_time:\n        type: string\n        format: date-time\n      attributes:\n        type: object\n        additionalProperties:\n          type: string\n      resources:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            doc:\n              type: string\n            permissions:\n              type: array\n              items:\n                type: object\n                properties:\n                  name:\n                    type: string\n                  doc:\n                    type: string\n                  expression:\n                    type: string\n                description: >-\n                  Permission models a special type of Relation which is\n                  evaluated at runtime.\n\n                  A permission often maps to an operation defined for a resource\n                  which an actor may attempt.\n            relations:\n              type: array\n              items:\n                type: object\n                properties:\n                  name:\n                    type: string\n                  doc:\n                    type: string\n                  manages:\n                    type: array\n                    items:\n                      type: string\n                    title: list of relations managed by the current relation\n                  vr_types:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        resource_name:\n                          type: string\n                          title: resource_name scopes permissible actors resource\n                        relation_name:\n                          type: string\n                          title: relation_name scopes permissible actors relation\n                      description: >-\n                        Restriction models a specification which a\n                        Relationship's actor\n\n                        should meet.\n                    title: value restriction types\n          description: >-\n            Resource models a namespace for objects in a Policy.\n\n            Appications will have multiple entities which they must manage such\n            as files or groups.\n\n            A Resource represents a set of entities of a certain type.\n      actor_resource:\n        type: object\n        properties:\n          name:\n            type: string\n          doc:\n            type: string\n          relations:\n            type: array\n            items:\n              type: object\n              properties:\n                name:\n                  type: string\n                doc:\n                  type: string\n                manages:\n                  type: array\n                  items:\n                    type: string\n                  title: list of relations managed by the current relation\n                vr_types:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      resource_name:\n                        type: string\n                        title: resource_name scopes permissible actors resource\n                      relation_name:\n                        type: string\n                        title: relation_name scopes permissible actors relation\n                    description: >-\n                      Restriction models a specification which a Relationship's\n                      actor\n\n                      should meet.\n                  title: value restriction types\n        description: >-\n          ActorResource represents a special Resource which is reserved for\n          Policy actors.\n      creator:\n        type: string\n    description: >-\n      Policy represents an ACP module Policy definition.\n\n      Each Policy defines a set of high level rules over how the acces control\n      system\n\n      should behave.\n  sourcehub.acp.PolicyCmd:\n    type: object\n    properties:\n      set_relationship_cmd:\n        type: object\n        properties:\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n        title: SetRelationshipCmd sets a Relationship in a Policy\n      delete_relationship_cmd:\n        type: object\n        properties:\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n        title: DeleteRelationshipCmd removes a Relationship in a Policy\n      register_object_cmd:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n        title: RegisterObjectCmd registers an Object in a Policy\n      unregister_object_cmd:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n        title: UnregisterObjectCmd unregisters an Object in a Policy\n  sourcehub.acp.PolicyCmdResult:\n    type: object\n    properties:\n      set_relationship_result:\n        type: object\n        properties:\n          record_existed:\n            type: boolean\n            title: >-\n              Indicates whether the given Relationship previously existed, ie\n              the Tx was a no op\n          record:\n            type: object\n            properties:\n              creation_time:\n                type: string\n                format: date-time\n              creator:\n                type: string\n                description: >-\n                  msg_signer is the SourceHub address of the account that\n                  submited the message responsible for this record\n\n                  It's used for auditing only.\n              actor:\n                type: string\n                title: actor is the DID of the Actor which created the relationship\n              policy_id:\n                type: string\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n              archived:\n                type: boolean\n                title: archived indicates whether an object has been unregistered\n            description: >-\n              RelationshipRecord represents a document contained a Relationship\n              and additional data.\n        title: SetRelationshipCmd sets a Relationship in a Policy\n      delete_relationship_result:\n        type: object\n        properties:\n          record_found:\n            type: boolean\n        title: DeleteRelationshipCmdResult removes a Relationship in a Policy\n      register_object_result:\n        type: object\n        properties:\n          result:\n            type: string\n            enum:\n              - NoOp\n              - Registered\n              - Unarchived\n            default: NoOp\n            description: >-\n              - NoOp: NoOp indicates no action was take. The operation failed or\n              the Object already existed and was active\n               - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n               - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n              Only the original owners can Unarchive an object.\n            title: >-\n              RegistrationResult encodes the possible result set from\n              Registering an Object\n          record:\n            type: object\n            properties:\n              creation_time:\n                type: string\n                format: date-time\n              creator:\n                type: string\n                description: >-\n                  msg_signer is the SourceHub address of the account that\n                  submited the message responsible for this record\n\n                  It's used for auditing only.\n              actor:\n                type: string\n                title: actor is the DID of the Actor which created the relationship\n              policy_id:\n                type: string\n              relationship:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                  subject:\n                    type: object\n                    properties:\n                      actor:\n                        type: object\n                        properties:\n                          id:\n                            type: string\n                        description: >-\n                          Actor represents an entity which makes access requests\n                          to a Policy.\n                      actor_set:\n                        type: object\n                        properties:\n                          object:\n                            type: object\n                            properties:\n                              resource:\n                                type: string\n                              id:\n                                type: string\n                            description: >-\n                              Object represents an entity which must be access\n                              controlled within a Policy.\n                          relation:\n                            type: string\n                        description: >-\n                          ActorSet represents a set of Actors in a Policy.\n\n                          It is specified through an Object, Relation pair,\n                          which represents\n\n                          all actors which have a relationship with given\n                          obj-rel pair.\n\n                          This expansion is recursive.\n                      all_actors:\n                        type: object\n                        description: >-\n                          AllActors models a special Relationship Subject which\n                          indicates\n\n                          that all Actors in the Policy are included.\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                    description: Subject specifies the target of a Relationship.\n                description: |-\n                  Relationship models an access control rule.\n                  It states that the given subject has relation with object.\n              archived:\n                type: boolean\n                title: archived indicates whether an object has been unregistered\n            description: >-\n              RelationshipRecord represents a document contained a Relationship\n              and additional data.\n        title: RegisterObjectCmdResult registers an Object in a Policy\n      unregister_object_result:\n        type: object\n        properties:\n          found:\n            type: boolean\n          relationships_removed:\n            type: string\n            format: uint64\n        title: UnregisterObjectCmdResult unregisters an Object in a Policy\n  sourcehub.acp.PolicyMarshalingType:\n    type: string\n    enum:\n      - UNKNOWN\n      - YAML\n    default: UNKNOWN\n    description: |-\n      PolicyMarshalingType enumerates supported marshaling types for policies.\n\n       - UNKNOWN: Fallback value for a missing Marshaling Type\n       - YAML: YAML Marshaled Policy\n  sourcehub.acp.RegisterObjectCmd:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n    title: RegisterObjectCmd registers an Object in a Policy\n  sourcehub.acp.RegisterObjectCmdResult:\n    type: object\n    properties:\n      result:\n        type: string\n        enum:\n          - NoOp\n          - Registered\n          - Unarchived\n        default: NoOp\n        description: >-\n          - NoOp: NoOp indicates no action was take. The operation failed or the\n          Object already existed and was active\n           - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n           - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n          Only the original owners can Unarchive an object.\n        title: >-\n          RegistrationResult encodes the possible result set from Registering an\n          Object\n      record:\n        type: object\n        properties:\n          creation_time:\n            type: string\n            format: date-time\n          creator:\n            type: string\n            description: >-\n              msg_signer is the SourceHub address of the account that submited\n              the message responsible for this record\n\n              It's used for auditing only.\n          actor:\n            type: string\n            title: actor is the DID of the Actor which created the relationship\n          policy_id:\n            type: string\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n          archived:\n            type: boolean\n            title: archived indicates whether an object has been unregistered\n        description: >-\n          RelationshipRecord represents a document contained a Relationship and\n          additional data.\n    title: RegisterObjectCmdResult registers an Object in a Policy\n  sourcehub.acp.RegistrationResult:\n    type: string\n    enum:\n      - NoOp\n      - Registered\n      - Unarchived\n    default: NoOp\n    description: >-\n      - NoOp: NoOp indicates no action was take. The operation failed or the\n      Object already existed and was active\n       - Registered: Registered indicates the Object was sucessfuly registered to the Actor.\n       - Unarchived: Unarchived indicates that a previously deleted Object is active again.\n      Only the original owners can Unarchive an object.\n    title: >-\n      RegistrationResult encodes the possible result set from Registering an\n      Object\n  sourcehub.acp.Relation:\n    type: object\n    properties:\n      name:\n        type: string\n      doc:\n        type: string\n      manages:\n        type: array\n        items:\n          type: string\n        title: list of relations managed by the current relation\n      vr_types:\n        type: array\n        items:\n          type: object\n          properties:\n            resource_name:\n              type: string\n              title: resource_name scopes permissible actors resource\n            relation_name:\n              type: string\n              title: relation_name scopes permissible actors relation\n          description: |-\n            Restriction models a specification which a Relationship's actor\n            should meet.\n        title: value restriction types\n  sourcehub.acp.Relationship:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n      relation:\n        type: string\n      subject:\n        type: object\n        properties:\n          actor:\n            type: object\n            properties:\n              id:\n                type: string\n            description: >-\n              Actor represents an entity which makes access requests to a\n              Policy.\n          actor_set:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n            description: |-\n              ActorSet represents a set of Actors in a Policy.\n              It is specified through an Object, Relation pair, which represents\n              all actors which have a relationship with given obj-rel pair.\n              This expansion is recursive.\n          all_actors:\n            type: object\n            description: |-\n              AllActors models a special Relationship Subject which indicates\n              that all Actors in the Policy are included.\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n        description: Subject specifies the target of a Relationship.\n    description: |-\n      Relationship models an access control rule.\n      It states that the given subject has relation with object.\n  sourcehub.acp.RelationshipRecord:\n    type: object\n    properties:\n      creation_time:\n        type: string\n        format: date-time\n      creator:\n        type: string\n        description: >-\n          msg_signer is the SourceHub address of the account that submited the\n          message responsible for this record\n\n          It's used for auditing only.\n      actor:\n        type: string\n        title: actor is the DID of the Actor which created the relationship\n      policy_id:\n        type: string\n      relationship:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n        description: |-\n          Relationship models an access control rule.\n          It states that the given subject has relation with object.\n      archived:\n        type: boolean\n        title: archived indicates whether an object has been unregistered\n    description: >-\n      RelationshipRecord represents a document contained a Relationship and\n      additional data.\n  sourcehub.acp.Resource:\n    type: object\n    properties:\n      name:\n        type: string\n      doc:\n        type: string\n      permissions:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            doc:\n              type: string\n            expression:\n              type: string\n          description: >-\n            Permission models a special type of Relation which is evaluated at\n            runtime.\n\n            A permission often maps to an operation defined for a resource which\n            an actor may attempt.\n      relations:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            doc:\n              type: string\n            manages:\n              type: array\n              items:\n                type: string\n              title: list of relations managed by the current relation\n            vr_types:\n              type: array\n              items:\n                type: object\n                properties:\n                  resource_name:\n                    type: string\n                    title: resource_name scopes permissible actors resource\n                  relation_name:\n                    type: string\n                    title: relation_name scopes permissible actors relation\n                description: >-\n                  Restriction models a specification which a Relationship's\n                  actor\n\n                  should meet.\n              title: value restriction types\n    description: >-\n      Resource models a namespace for objects in a Policy.\n\n      Appications will have multiple entities which they must manage such as\n      files or groups.\n\n      A Resource represents a set of entities of a certain type.\n  sourcehub.acp.Restriction:\n    type: object\n    properties:\n      resource_name:\n        type: string\n        title: resource_name scopes permissible actors resource\n      relation_name:\n        type: string\n        title: relation_name scopes permissible actors relation\n    description: |-\n      Restriction models a specification which a Relationship's actor\n      should meet.\n  sourcehub.acp.SetRelationshipCmd:\n    type: object\n    properties:\n      relationship:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n        description: |-\n          Relationship models an access control rule.\n          It states that the given subject has relation with object.\n    title: SetRelationshipCmd sets a Relationship in a Policy\n  sourcehub.acp.SetRelationshipCmdResult:\n    type: object\n    properties:\n      record_existed:\n        type: boolean\n        title: >-\n          Indicates whether the given Relationship previously existed, ie the Tx\n          was a no op\n      record:\n        type: object\n        properties:\n          creation_time:\n            type: string\n            format: date-time\n          creator:\n            type: string\n            description: >-\n              msg_signer is the SourceHub address of the account that submited\n              the message responsible for this record\n\n              It's used for auditing only.\n          actor:\n            type: string\n            title: actor is the DID of the Actor which created the relationship\n          policy_id:\n            type: string\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n          archived:\n            type: boolean\n            title: archived indicates whether an object has been unregistered\n        description: >-\n          RelationshipRecord represents a document contained a Relationship and\n          additional data.\n    title: SetRelationshipCmd sets a Relationship in a Policy\n  sourcehub.acp.Subject:\n    type: object\n    properties:\n      actor:\n        type: object\n        properties:\n          id:\n            type: string\n        description: Actor represents an entity which makes access requests to a Policy.\n      actor_set:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n          relation:\n            type: string\n        description: |-\n          ActorSet represents a set of Actors in a Policy.\n          It is specified through an Object, Relation pair, which represents\n          all actors which have a relationship with given obj-rel pair.\n          This expansion is recursive.\n      all_actors:\n        type: object\n        description: |-\n          AllActors models a special Relationship Subject which indicates\n          that all Actors in the Policy are included.\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n    description: Subject specifies the target of a Relationship.\n  sourcehub.acp.UnregisterObjectCmd:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n    title: UnregisterObjectCmd unregisters an Object in a Policy\n  sourcehub.acp.UnregisterObjectCmdResult:\n    type: object\n    properties:\n      found:\n        type: boolean\n      relationships_removed:\n        type: string\n        format: uint64\n    title: UnregisterObjectCmdResult unregisters an Object in a Policy\n  sourcehub.acp.ObjectSelector:\n    type: object\n    properties:\n      object:\n        type: object\n        properties:\n          resource:\n            type: string\n          id:\n            type: string\n        description: >-\n          Object represents an entity which must be access controlled within a\n          Policy.\n        title: object specifies an object which the Relationship must contain\n      wildcard:\n        title: wildcard matches any object\n        type: object\n    title: ObjectSelector models a filter for Relationship Objects\n  sourcehub.acp.QueryAccessDecisionResponse:\n    type: object\n    properties:\n      decision:\n        type: object\n        properties:\n          id:\n            type: string\n          policy_id:\n            type: string\n            title: used as part of id generation\n          creator:\n            type: string\n            title: used as part of id generation\n          creator_acc_sequence:\n            type: string\n            format: uint64\n            title: used as part of id generation\n          operations:\n            type: array\n            items:\n              type: object\n              properties:\n                object:\n                  title: target object for operation\n                  type: object\n                  properties:\n                    resource:\n                      type: string\n                    id:\n                      type: string\n                  description: >-\n                    Object represents an entity which must be access controlled\n                    within a Policy.\n                permission:\n                  type: string\n                  title: permission required to perform operation\n              description: Operation represents an action over an object.\n            title: used as part of id generation\n          actor:\n            type: string\n            title: used as part of id generation\n          params:\n            title: used as part of id generation\n            type: object\n            properties:\n              decision_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks a Decision is valid for\n              proof_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks a DecisionProof is valid for\n              ticket_expiration_delta:\n                type: string\n                format: uint64\n                title: number of blocks an AccessTicket is valid for\n          creation_time:\n            type: string\n            format: date-time\n          issued_height:\n            type: string\n            format: uint64\n            title: >-\n              issued_height stores the block height when the Decision was\n              evaluated\n        title: >-\n          AccessDecision models the result of evaluating a set of AccessRequests\n          for an Actor\n  sourcehub.acp.QueryFilterRelationshipsResponse:\n    type: object\n    properties:\n      records:\n        type: array\n        items:\n          type: object\n          properties:\n            creation_time:\n              type: string\n              format: date-time\n            creator:\n              type: string\n              description: >-\n                msg_signer is the SourceHub address of the account that submited\n                the message responsible for this record\n\n                It's used for auditing only.\n            actor:\n              type: string\n              title: actor is the DID of the Actor which created the relationship\n            policy_id:\n              type: string\n            relationship:\n              type: object\n              properties:\n                object:\n                  type: object\n                  properties:\n                    resource:\n                      type: string\n                    id:\n                      type: string\n                  description: >-\n                    Object represents an entity which must be access controlled\n                    within a Policy.\n                relation:\n                  type: string\n                subject:\n                  type: object\n                  properties:\n                    actor:\n                      type: object\n                      properties:\n                        id:\n                          type: string\n                      description: >-\n                        Actor represents an entity which makes access requests\n                        to a Policy.\n                    actor_set:\n                      type: object\n                      properties:\n                        object:\n                          type: object\n                          properties:\n                            resource:\n                              type: string\n                            id:\n                              type: string\n                          description: >-\n                            Object represents an entity which must be access\n                            controlled within a Policy.\n                        relation:\n                          type: string\n                      description: >-\n                        ActorSet represents a set of Actors in a Policy.\n\n                        It is specified through an Object, Relation pair, which\n                        represents\n\n                        all actors which have a relationship with given obj-rel\n                        pair.\n\n                        This expansion is recursive.\n                    all_actors:\n                      type: object\n                      description: >-\n                        AllActors models a special Relationship Subject which\n                        indicates\n\n                        that all Actors in the Policy are included.\n                    object:\n                      type: object\n                      properties:\n                        resource:\n                          type: string\n                        id:\n                          type: string\n                      description: >-\n                        Object represents an entity which must be access\n                        controlled within a Policy.\n                  description: Subject specifies the target of a Relationship.\n              description: |-\n                Relationship models an access control rule.\n                It states that the given subject has relation with object.\n            archived:\n              type: boolean\n              title: archived indicates whether an object has been unregistered\n          description: >-\n            RelationshipRecord represents a document contained a Relationship\n            and additional data.\n  sourcehub.acp.QueryObjectOwnerResponse:\n    type: object\n    properties:\n      is_registered:\n        type: boolean\n      owner_id:\n        type: string\n  sourcehub.acp.QueryParamsResponse:\n    type: object\n    properties:\n      params:\n        description: params holds all the parameters of this module.\n        type: object\n        properties:\n          policy_command_max_expiration_delta:\n            type: string\n            format: uint64\n            description: >-\n              policy_command_max_expiration_delta specifies a global thershold\n              for how old a Command will be accepted for.\n    description: QueryParamsResponse is response type for the Query/Params RPC method.\n  sourcehub.acp.QueryPolicyIdsResponse:\n    type: object\n    properties:\n      ids:\n        type: array\n        items:\n          type: string\n        title: cosmos.base.query.v1beta1.PageResponse pagination = 1;\n  sourcehub.acp.QueryPolicyResponse:\n    type: object\n    properties:\n      policy:\n        type: object\n        properties:\n          id:\n            type: string\n          name:\n            type: string\n          description:\n            type: string\n          creation_time:\n            type: string\n            format: date-time\n          attributes:\n            type: object\n            additionalProperties:\n              type: string\n          resources:\n            type: array\n            items:\n              type: object\n              properties:\n                name:\n                  type: string\n                doc:\n                  type: string\n                permissions:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      expression:\n                        type: string\n                    description: >-\n                      Permission models a special type of Relation which is\n                      evaluated at runtime.\n\n                      A permission often maps to an operation defined for a\n                      resource which an actor may attempt.\n                relations:\n                  type: array\n                  items:\n                    type: object\n                    properties:\n                      name:\n                        type: string\n                      doc:\n                        type: string\n                      manages:\n                        type: array\n                        items:\n                          type: string\n                        title: list of relations managed by the current relation\n                      vr_types:\n                        type: array\n                        items:\n                          type: object\n                          properties:\n                            resource_name:\n                              type: string\n                              title: resource_name scopes permissible actors resource\n                            relation_name:\n                              type: string\n                              title: relation_name scopes permissible actors relation\n                          description: >-\n                            Restriction models a specification which a\n                            Relationship's actor\n\n                            should meet.\n                        title: value restriction types\n              description: >-\n                Resource models a namespace for objects in a Policy.\n\n                Appications will have multiple entities which they must manage\n                such as files or groups.\n\n                A Resource represents a set of entities of a certain type.\n          actor_resource:\n            type: object\n            properties:\n              name:\n                type: string\n              doc:\n                type: string\n              relations:\n                type: array\n                items:\n                  type: object\n                  properties:\n                    name:\n                      type: string\n                    doc:\n                      type: string\n                    manages:\n                      type: array\n                      items:\n                        type: string\n                      title: list of relations managed by the current relation\n                    vr_types:\n                      type: array\n                      items:\n                        type: object\n                        properties:\n                          resource_name:\n                            type: string\n                            title: resource_name scopes permissible actors resource\n                          relation_name:\n                            type: string\n                            title: relation_name scopes permissible actors relation\n                        description: >-\n                          Restriction models a specification which a\n                          Relationship's actor\n\n                          should meet.\n                      title: value restriction types\n            description: >-\n              ActorResource represents a special Resource which is reserved for\n              Policy actors.\n          creator:\n            type: string\n        description: >-\n          Policy represents an ACP module Policy definition.\n\n          Each Policy defines a set of high level rules over how the acces\n          control system\n\n          should behave.\n  sourcehub.acp.QueryValidatePolicyResponse:\n    type: object\n    properties:\n      valid:\n        type: boolean\n  sourcehub.acp.QueryVerifyAccessRequestResponse:\n    type: object\n    properties:\n      valid:\n        type: boolean\n  sourcehub.acp.RelationSelector:\n    type: object\n    properties:\n      relation:\n        type: string\n        title: >-\n          relation specifies a relation name which must exactly match the\n          Relationship's\n      wildcard:\n        title: wildcard matches any relation\n        type: object\n    title: RelationsSelector models a filter for Relationship Relations\n  sourcehub.acp.RelationshipSelector:\n    type: object\n    properties:\n      object_selector:\n        type: object\n        properties:\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n            title: object specifies an object which the Relationship must contain\n          wildcard:\n            title: wildcard matches any object\n            type: object\n        title: ObjectSelector models a filter for Relationship Objects\n      relation_selector:\n        type: object\n        properties:\n          relation:\n            type: string\n            title: >-\n              relation specifies a relation name which must exactly match the\n              Relationship's\n          wildcard:\n            title: wildcard matches any relation\n            type: object\n        title: RelationsSelector models a filter for Relationship Relations\n      subject_selector:\n        type: object\n        properties:\n          subject:\n            type: object\n            properties:\n              actor:\n                type: object\n                properties:\n                  id:\n                    type: string\n                description: >-\n                  Actor represents an entity which makes access requests to a\n                  Policy.\n              actor_set:\n                type: object\n                properties:\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                  relation:\n                    type: string\n                description: >-\n                  ActorSet represents a set of Actors in a Policy.\n\n                  It is specified through an Object, Relation pair, which\n                  represents\n\n                  all actors which have a relationship with given obj-rel pair.\n\n                  This expansion is recursive.\n              all_actors:\n                type: object\n                description: >-\n                  AllActors models a special Relationship Subject which\n                  indicates\n\n                  that all Actors in the Policy are included.\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n            description: Subject specifies the target of a Relationship.\n            title: >-\n              subject requires an exact match between the given subject and a\n              Relationship's subject\n          wildcard:\n            title: wildcard matches any subject in a Relationship\n            type: object\n        title: SubjectSelector models a filter for Relationship Subjects\n    description: >-\n      RelationshipSelector models a set of predicates which are used to filter\n      through\n\n      Relationships in a Policy.\n  sourcehub.acp.SubjectSelector:\n    type: object\n    properties:\n      subject:\n        type: object\n        properties:\n          actor:\n            type: object\n            properties:\n              id:\n                type: string\n            description: >-\n              Actor represents an entity which makes access requests to a\n              Policy.\n          actor_set:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n            description: |-\n              ActorSet represents a set of Actors in a Policy.\n              It is specified through an Object, Relation pair, which represents\n              all actors which have a relationship with given obj-rel pair.\n              This expansion is recursive.\n          all_actors:\n            type: object\n            description: |-\n              AllActors models a special Relationship Subject which indicates\n              that all Actors in the Policy are included.\n          object:\n            type: object\n            properties:\n              resource:\n                type: string\n              id:\n                type: string\n            description: >-\n              Object represents an entity which must be access controlled within\n              a Policy.\n        description: Subject specifies the target of a Relationship.\n        title: >-\n          subject requires an exact match between the given subject and a\n          Relationship's subject\n      wildcard:\n        title: wildcard matches any subject in a Relationship\n        type: object\n    title: SubjectSelector models a filter for Relationship Subjects\n  sourcehub.acp.WildcardSelector:\n    type: object\n    title: WildcardSelector matches anything in a context\n  sourcehub.bulletin.MsgCreatePost:\n    type: object\n    properties:\n      record_existed:\n        type: boolean\n        title: >-\n          Indicates whether the given Relationship previously existed, ie the Tx\n          was a no op\n      record:\n        type: object\n        properties:\n          creation_time:\n            type: string\n            format: date-time\n          creator:\n            type: string\n            description: >-\n              msg_signer is the SourceHub address of the account that submited\n              the message responsible for this record\n\n              It's used for auditing only.\n          actor:\n            type: string\n            title: actor is the DID of the Actor which created the relationship\n          policy_id:\n            type: string\n          relationship:\n            type: object\n            properties:\n              object:\n                type: object\n                properties:\n                  resource:\n                    type: string\n                  id:\n                    type: string\n                description: >-\n                  Object represents an entity which must be access controlled\n                  within a Policy.\n              relation:\n                type: string\n              subject:\n                type: object\n                properties:\n                  actor:\n                    type: object\n                    properties:\n                      id:\n                        type: string\n                    description: >-\n                      Actor represents an entity which makes access requests to\n                      a Policy.\n                  actor_set:\n                    type: object\n                    properties:\n                      object:\n                        type: object\n                        properties:\n                          resource:\n                            type: string\n                          id:\n                            type: string\n                        description: >-\n                          Object represents an entity which must be access\n                          controlled within a Policy.\n                      relation:\n                        type: string\n                    description: >-\n                      ActorSet represents a set of Actors in a Policy.\n\n                      It is specified through an Object, Relation pair, which\n                      represents\n\n                      all actors which have a relationship with given obj-rel\n                      pair.\n\n                      This expansion is recursive.\n                  all_actors:\n                    type: object\n                    description: >-\n                      AllActors models a special Relationship Subject which\n                      indicates\n\n                      that all Actors in the Policy are included.\n                  object:\n                    type: object\n                    properties:\n                      resource:\n                        type: string\n                      id:\n                        type: string\n                    description: >-\n                      Object represents an entity which must be access\n                      controlled within a Policy.\n                description: Subject specifies the target of a Relationship.\n            description: |-\n              Relationship models an access control rule.\n              It states that the given subject has relation with object.\n          archived:\n            type: boolean\n            title: archived indicates whether an object has been unregistered\n        description: >-\n          RelationshipRecord represents a document contained a Relationship and\n          additional data.\n    title: SetRelationshipCmd sets a Relationship in a Policy\n  sourcehub.acp.UnregisterObjectCmdResult:\n    type: object\n    properties:\n      found:\n        type: boolean\n      relationships_removed:\n        type: string\n        format: uint64\n    title: UnregisterObjectCmdResult unregisters an Object in a Policy\n  sourcehub.bulletin.Params:\n    type: object\n    description: Params defines the parameters for the module.\n"
  },
  {
    "path": "docs/template/index.tpl",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\" />\n        <title>{{ .Title }}</title>\n        <link rel=\"stylesheet\" type=\"text/css\" href=\"//unpkg.com/swagger-ui-dist@3.40.0/swagger-ui.css\" />\n        <link rel=\"icon\" type=\"image/png\" href=\"//unpkg.com/swagger-ui-dist@3.40.0/favicon-16x16.png\" />\n    </head>\n    <body>\n        <div id=\"swagger-ui\"></div>\n\n        <script src=\"//unpkg.com/swagger-ui-dist@3.40.0/swagger-ui-bundle.js\"></script>\n        <script>\n            // init Swagger for faucet's openapi.yml.\n            window.onload = function() {\n              window.ui = SwaggerUIBundle({\n                url: {{ .URL }},\n                dom_id: \"#swagger-ui\",\n                deepLinking: true,\n                layout: \"BaseLayout\",\n              });\n            }\n        </script>\n    </body>\n</html>\nFooter\n© 2022 GitHub, Inc.\nFooter navigation\n"
  },
  {
    "path": "example/access_ticket/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocdc \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\t\"github.com/davecgh/go-spew/spew\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/access_ticket\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst nodeAddrDefault = \"tcp://localhost:26657\"\n\nconst chainIdFlag = \"chain-id\"\nconst nodeAddrFlag = \"node-addr\"\n\nvar policy string = `\nname: access ticket example\nresources:\n- name: file\n  permissions:\n  - name: read\n`\n\nfunc main() {\n\tcmd := cobra.Command{\n\t\tUse:   \"access_ticket_demo [validator-key-name]\",\n\t\tShort: \"acces_ticket_demo executes a self-contained example of the access ticket flow. Receives name of the validator key to send Txs from\",\n\t\tArgs:  cobra.ExactArgs(1),\n\t\tRun: func(cmd *cobra.Command, args []string) {\n\t\t\tname := args[0]\n\t\t\trunDemo(\n\t\t\t\tcmd.Flag(chainIdFlag).Value.String(),\n\t\t\t\tcmd.Flag(nodeAddrFlag).Value.String(),\n\t\t\t\tname,\n\t\t\t)\n\t\t},\n\t}\n\tflags := cmd.Flags()\n\tflags.String(chainIdFlag, \"sourcehub-dev\", \"sets the chain-id\")\n\tflags.String(nodeAddrFlag, nodeAddrDefault, \"sets the address of the node to communicate with\")\n\n\tcmd.Execute()\n}\n\nfunc runDemo(chainId string, nodeAddr string, validatorKeyName string) {\n\tctx := context.Background()\n\n\tclient, err := sdk.NewClient()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\ttxBuilder, err := sdk.NewTxBuilder(\n\t\tsdk.WithSDKClient(client),\n\t\tsdk.WithChainID(chainId),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\ttxSigner := getSigner(validatorKeyName)\n\n\tlog.Printf(\"Creating Policy: %v\", policy)\n\tpolicy := createPolicy(ctx, client, &txBuilder, txSigner)\n\n\tlog.Printf(\"Registering object: file:readme\")\n\trecord := registerObject(ctx, client, &txBuilder, txSigner, policy.Id)\n\n\tlog.Printf(\"Evaluating Access Request to read file:readme\")\n\tdecision := checkAccess(ctx, client, &txBuilder, txSigner, policy.Id, record.Metadata.OwnerDid, []*coretypes.Operation{\n\t\t{\n\t\t\tObject:     coretypes.NewObject(\"file\", \"readme\"),\n\t\t\tPermission: \"read\",\n\t\t},\n\t})\n\n\tlog.Printf(\"Issueing ticket for Access Decision %v\", decision.Id)\n\tabciService, err := access_ticket.NewABCIService(nodeAddr)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not create abci service: %v\", err)\n\t}\n\tissuer := access_ticket.NewTicketIssuer(&abciService)\n\tticket, err := issuer.Issue(ctx, decision.Id, txSigner.GetPrivateKey())\n\tif err != nil {\n\t\tlog.Fatalf(\"could not issue ticket: %v\", err)\n\t}\n\tlog.Printf(\"Access Ticket issued: %v\", ticket)\n\n\tlog.Printf(\"Waiting for next block\")\n\ttime.Sleep(time.Second * 5)\n\n\tlog.Printf(\"Verifying Access Ticket\")\n\trecoveredTicket, err := access_ticket.UnmarshalAndVerify(ctx, nodeAddr, ticket)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not verify ticket: %v\", err)\n\t}\n\n\t// remove some fields for cleaner print\n\trecoveredTicket.Signature = nil\n\trecoveredTicket.DecisionProof = nil\n\tlog.Printf(\"Acces Ticket verified: %v\", spew.Sdump(recoveredTicket))\n}\n\nfunc getSigner(accAddr string) sdk.TxSigner {\n\treg := cdctypes.NewInterfaceRegistry()\n\tcryptocdc.RegisterInterfaces(reg)\n\tcdc := codec.NewProtoCodec(reg)\n\tkeyring, err := keyring.New(\"sourcehub\", keyring.BackendTest, \"~/.sourcehub\", nil, cdc)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\n\ttxSigner, err := sdk.NewTxSignerFromKeyringKey(keyring, accAddr)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\treturn txSigner\n}\n\nfunc createPolicy(ctx context.Context, client *sdk.Client, txBuilder *sdk.TxBuilder, txSigner sdk.TxSigner) *coretypes.Policy {\n\tmsgSet := sdk.MsgSet{}\n\tpolicyMapper := msgSet.WithCreatePolicy(acptypes.NewMsgCreatePolicy(txSigner.GetAccAddress(), policy, coretypes.PolicyMarshalingType_YAML))\n\ttx, err := txBuilder.Build(ctx, txSigner, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresp, err := client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err := client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tpolicyResponse, err := policyMapper.Map(result.TxPayload())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"policy created: %v\", policyResponse.Record.Policy.Id)\n\treturn policyResponse.Record.Policy\n}\n\nfunc registerObject(ctx context.Context, client *sdk.Client, txBuilder *sdk.TxBuilder, txSigner sdk.TxSigner, policyId string) *acptypes.RelationshipRecord {\n\tmsgSet := sdk.MsgSet{}\n\tmapper := msgSet.WithDirectPolicyCmd(\n\t\tacptypes.NewMsgDirectPolicyCmd(\n\t\t\ttxSigner.GetAccAddress(),\n\t\t\tpolicyId,\n\t\t\tacptypes.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"readme\")),\n\t\t),\n\t)\n\ttx, err := txBuilder.Build(ctx, txSigner, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresp, err := client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err := client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tresponse, err := mapper.Map(result.TxPayload())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"object registered: %v\", response.Result.GetRegisterObjectResult())\n\treturn response.Result.GetRegisterObjectResult().Record\n}\n\nfunc checkAccess(ctx context.Context, client *sdk.Client, txBuilder *sdk.TxBuilder, txSigner sdk.TxSigner, policyId string, actorId string, operations []*coretypes.Operation) *acptypes.AccessDecision {\n\tmsgSet := sdk.MsgSet{}\n\tmapper := msgSet.WithCheckAccess(\n\t\tacptypes.NewMsgCheckAccess(txSigner.GetAccAddress(), policyId, &coretypes.AccessRequest{\n\t\t\tOperations: operations,\n\t\t\tActor:      &coretypes.Actor{Id: actorId},\n\t\t}),\n\t)\n\ttx, err := txBuilder.Build(ctx, txSigner, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresp, err := client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err := client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tresponse, err := mapper.Map(result.TxPayload())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"acces request evaluated: %v\", response.Decision)\n\treturn response.Decision\n}\n"
  },
  {
    "path": "example/bearer_auth/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocdc \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/bearer_token\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := sdk.NewClient()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\ttxBuilder, err := sdk.NewTxBuilder(\n\t\tsdk.WithSDKClient(client),\n\t\tsdk.WithChainID(\"sourcehub-dev\"),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treg := cdctypes.NewInterfaceRegistry()\n\tcryptocdc.RegisterInterfaces(reg)\n\tcdc := codec.NewProtoCodec(reg)\n\tkeyring, err := keyring.New(\"sourcehub\", keyring.BackendTest, \"~/.sourcehub\", nil, cdc)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\n\ttxSigner, err := sdk.NewTxSignerFromKeyringKey(keyring, \"validator\")\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\n\tpolicy := `\nname: test\nresources:\n- name: resource\n`\n\n\tmsgSet := sdk.MsgSet{}\n\tpolicyMapper := msgSet.WithCreatePolicy(acptypes.NewMsgCreatePolicy(txSigner.GetAccAddress(), policy, coretypes.PolicyMarshalingType_YAML))\n\ttx, err := txBuilder.Build(ctx, txSigner, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresp, err := client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err := client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tpolicyResponse, err := policyMapper.Map(result.TxPayload())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"policy created: %v\", policyResponse.Record.Policy.Id)\n\n\talice, signer, err := did.ProduceDID()\n\tif err != nil {\n\t\tlog.Fatalf(\"could not generate alice: %v\", err)\n\t}\n\tlog.Printf(\"alice's DID: %v\", alice)\n\n\ttoken := bearer_token.NewBearerTokenNow(alice, txSigner.GetAccAddress())\n\tjws, err := token.ToJWS(signer)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not produce Bearer for alice: %v\", err)\n\t}\n\n\tlog.Printf(\"alice's raw token: %v\", token)\n\tlog.Printf(\"alice's JWS: %v\", jws)\n\n\tbearerCmd := acptypes.MsgBearerPolicyCmd{\n\t\tCreator:     txSigner.GetAccAddress(),\n\t\tBearerToken: jws,\n\t\tPolicyId:    policyResponse.Record.Policy.Id,\n\t\tCmd:         acptypes.NewRegisterObjectCmd(coretypes.NewObject(\"resource\", \"foo\")),\n\t}\n\n\tlog.Printf(\"Bearer Cmd: %v\", bearerCmd)\n\tmsgSet = sdk.MsgSet{}\n\tmsgSet.WithBearerPolicyCmd(&bearerCmd)\n\ttx, err = txBuilder.Build(ctx, txSigner, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tresp, err = client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err = client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tlog.Printf(\"object registered\")\n}\n"
  },
  {
    "path": "example/bearer_token_gen/main.go",
    "content": "package main\n\nimport (\n\t\"crypto/ed25519\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/bearer_token\"\n)\n\nfunc main() {\n\tcmd.Execute()\n}\n\nvar cmd = cobra.Command{\n\tUse:   \"bearer-token authorized_account\",\n\tShort: \"bearer-token generates a oneshot did / bearer token for the given account address\",\n\tArgs:  cobra.ExactArgs(1),\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\taddr := args[0]\n\n\t\tpub, priv, err := ed25519.GenerateKey(nil)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"failed to generate key pair: %v\", err)\n\t\t}\n\n\t\tdid, err := key.CreateDIDKey(crypto.Ed25519, pub)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"failed to generate did: %v\", err)\n\t\t}\n\n\t\ttoken := bearer_token.NewBearerTokenNow(did.String(), addr)\n\t\tjws, err := token.ToJWS(priv)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"failed to issue token: %v\", err)\n\t\t}\n\n\t\tlog.Printf(\"token raw: %v\", token)\n\t\tfmt.Printf(\"Bearer Token: %v\\n\", jws)\n\t\tfmt.Printf(\"DID: %v\\n\", did.String())\n\t},\n}\n"
  },
  {
    "path": "example/sdk/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocdc \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tclient, err := sdk.NewClient()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\ttxBuilder, err := sdk.NewTxBuilder(\n\t\tsdk.WithSDKClient(client),\n\t\tsdk.WithChainID(\"sourcehub-dev\"),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tcmdBuilder, err := sdk.NewCmdBuilder(ctx, client)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\treg := cdctypes.NewInterfaceRegistry()\n\tcryptocdc.RegisterInterfaces(reg)\n\tcdc := codec.NewProtoCodec(reg)\n\tkeyring, err := keyring.New(\"sourcehub\", keyring.BackendTest, \"~/.sourcehub\", nil, cdc)\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\n\tsigner, err := sdk.NewTxSignerFromKeyringKey(keyring, \"validator\")\n\tif err != nil {\n\t\tlog.Fatalf(\"could not load keyring: %v\", err)\n\t}\n\n\tpolicy := `\nname: test\nresources:\n- name: resource\n`\n\n\tmsgSet := sdk.MsgSet{}\n\tpolicyMapper := msgSet.WithCreatePolicy(acptypes.NewMsgCreatePolicy(signer.GetAccAddress(), policy, coretypes.PolicyMarshalingType_YAML))\n\ttx, err := txBuilder.Build(ctx, signer, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresp, err := client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err := client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tpolicyResponse, err := policyMapper.Map(result.TxPayload())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Printf(\"policy created: %v\", policyResponse)\n\n\t// create cmd which registers an object for the given did\n\taliceDid, aliceSigner, err := did.ProduceDID()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tcmdBuilder.PolicyCmd(acptypes.NewRegisterObjectCmd(coretypes.NewObject(\"resource\", \"readme.txt\")))\n\tcmdBuilder.PolicyID(policyResponse.Record.Policy.Id)\n\tcmdBuilder.Actor(aliceDid)\n\tcmdBuilder.SetSigner(aliceSigner)\n\tjws, err := cmdBuilder.BuildJWS(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// wraps cmd in a tx and broadcasts it\n\tmsgSet = sdk.MsgSet{}\n\tmsgSet.WithSignedPolicyCmd(acptypes.NewMsgSignedPolicyCmdFromJWS(signer.GetAccAddress(), jws))\n\ttx, err = txBuilder.Build(ctx, signer, &msgSet)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tresp, err = client.BroadcastTx(ctx, tx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tresult, err = client.AwaitTx(ctx, resp.TxHash)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif result.Error() != nil {\n\t\tlog.Fatalf(\"Tx failed: %v\", result.Error())\n\t}\n\n\tlog.Printf(\"object registered\")\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/sourcenetwork/sourcehub\n\ngo 1.25.5\n\nreplace (\n\t// fix upstream GHSA-h395-qcrw-5vmq vulnerability.\n\tgithub.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0\n\t// replace broken goleveldb\n\tgithub.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n)\n\nrequire (\n\tcosmossdk.io/api v0.7.6\n\tcosmossdk.io/client/v2 v2.0.0-beta.3\n\tcosmossdk.io/core v0.11.1\n\tcosmossdk.io/depinject v1.1.0\n\tcosmossdk.io/errors v1.0.1\n\tcosmossdk.io/log v1.5.0\n\tcosmossdk.io/math v1.5.0\n\tcosmossdk.io/store v1.1.1\n\tcosmossdk.io/tools/confix v0.1.2\n\tcosmossdk.io/x/circuit v0.1.1\n\tcosmossdk.io/x/evidence v0.1.1\n\tcosmossdk.io/x/tx v0.13.7\n\tcosmossdk.io/x/upgrade v0.1.4\n\tgithub.com/TBD54566975/ssi-sdk v0.0.4-alpha\n\tgithub.com/bufbuild/buf v1.57.1\n\tgithub.com/cometbft/cometbft v0.38.21\n\tgithub.com/cosmos/cosmos-db v1.1.3\n\tgithub.com/cosmos/cosmos-proto v1.0.0-beta.5\n\tgithub.com/cosmos/cosmos-sdk v0.50.14\n\tgithub.com/cosmos/gogoproto v1.7.2\n\tgithub.com/cosmos/ibc-go/modules/capability v1.0.1\n\tgithub.com/cosmos/ibc-go/v10 v10.1.1\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc\n\tgithub.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0\n\tgithub.com/go-jose/go-jose/v3 v3.0.4\n\tgithub.com/golang/mock v1.6.0\n\tgithub.com/golang/protobuf v1.5.4\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/mux v1.8.1\n\tgithub.com/grpc-ecosystem/grpc-gateway v1.16.0\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3\n\tgithub.com/hashicorp/go-metrics v0.5.3\n\tgithub.com/ignite/cli/v28 v28.6.1\n\tgithub.com/lestrrat-go/jwx/v2 v2.1.6\n\tgithub.com/skip-mev/block-sdk/v2 v2.1.5\n\tgithub.com/sourcenetwork/acp_core v0.8.1\n\tgithub.com/sourcenetwork/raccoondb v0.2.1-0.20240722161350-d4a78b691ec8\n\tgithub.com/sourcenetwork/raccoondb/v2 v2.0.0\n\tgithub.com/spf13/cobra v1.10.1\n\tgithub.com/spf13/pflag v1.0.10\n\tgithub.com/spf13/viper v1.19.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/tendermint/tendermint v0.35.9\n\tgolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546\n\tgolang.org/x/tools v0.38.0\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20251103181224-f26f9409b101\n\tgoogle.golang.org/grpc v1.76.0\n\tgoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1\n\tgoogle.golang.org/protobuf v1.36.10\n\tgotest.tools/v3 v3.5.1\n)\n\nrequire (\n\t4d63.com/gocheckcompilerdirectives v1.2.1 // indirect\n\t4d63.com/gochecknoglobals v0.2.1 // indirect\n\tbuf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.9-20250718181942-e35f9b667443.1 // indirect\n\tbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20250912141014-52f32327d4b0.1 // indirect\n\tbuf.build/gen/go/bufbuild/registry/connectrpc/go v1.18.1-20250903170917-c4be0f57e197.1 // indirect\n\tbuf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.9-20250903170917-c4be0f57e197.1 // indirect\n\tbuf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.8-20241007202033-cf42259fcbfc.1 // indirect\n\tbuf.build/go/app v0.1.0 // indirect\n\tbuf.build/go/bufplugin v0.9.0 // indirect\n\tbuf.build/go/interrupt v1.1.0 // indirect\n\tbuf.build/go/protovalidate v1.0.0 // indirect\n\tbuf.build/go/protoyaml v0.6.0 // indirect\n\tbuf.build/go/spdx v0.2.0 // indirect\n\tbuf.build/go/standard v0.1.0 // indirect\n\tcel.dev/expr v0.24.0 // indirect\n\tcloud.google.com/go v0.115.0 // indirect\n\tcloud.google.com/go/auth v0.6.0 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect\n\tcloud.google.com/go/compute/metadata v0.7.0 // indirect\n\tcloud.google.com/go/iam v1.1.9 // indirect\n\tcloud.google.com/go/storage v1.41.0 // indirect\n\tconnectrpc.com/connect v1.18.1 // indirect\n\tconnectrpc.com/otelconnect v0.8.0 // indirect\n\tcosmossdk.io/collections v0.4.0 // indirect\n\tfilippo.io/edwards25519 v1.1.0 // indirect\n\tgithub.com/4meepo/tagalign v1.3.4 // indirect\n\tgithub.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect\n\tgithub.com/99designs/keyring v1.2.2 // indirect\n\tgithub.com/Abirdcfly/dupword v0.0.14 // indirect\n\tgithub.com/Antonboom/errname v0.1.13 // indirect\n\tgithub.com/Antonboom/nilnil v0.1.9 // indirect\n\tgithub.com/Antonboom/testifylint v1.3.1 // indirect\n\tgithub.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect\n\tgithub.com/BurntSushi/toml v1.4.0 // indirect\n\tgithub.com/Crocmagnon/fatcontext v0.2.2 // indirect\n\tgithub.com/DataDog/datadog-go v4.8.3+incompatible // indirect\n\tgithub.com/DataDog/zstd v1.5.7 // indirect\n\tgithub.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect\n\tgithub.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 // indirect\n\tgithub.com/Masterminds/semver/v3 v3.3.1 // indirect\n\tgithub.com/Microsoft/go-winio v0.6.2 // indirect\n\tgithub.com/NathanBaulch/protoc-gen-cobra v1.2.1 // indirect\n\tgithub.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect\n\tgithub.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect\n\tgithub.com/alecthomas/go-check-sumtype v0.1.4 // indirect\n\tgithub.com/alexkohler/nakedret/v2 v2.0.4 // indirect\n\tgithub.com/alexkohler/prealloc v1.0.0 // indirect\n\tgithub.com/alingse/asasalint v0.0.11 // indirect\n\tgithub.com/antlr4-go/antlr/v4 v4.13.1 // indirect\n\tgithub.com/ashanbrown/forbidigo v1.6.0 // indirect\n\tgithub.com/ashanbrown/makezero v1.1.1 // indirect\n\tgithub.com/awalterschulze/gographviz v2.0.3+incompatible // indirect\n\tgithub.com/aws/aws-sdk-go v1.44.224 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect\n\tgithub.com/bgentry/speakeasy v0.2.0 // indirect\n\tgithub.com/bits-and-blooms/bitset v1.20.0 // indirect\n\tgithub.com/bkielbasa/cyclop v1.2.1 // indirect\n\tgithub.com/blang/semver/v4 v4.0.0 // indirect\n\tgithub.com/blizzy78/varnamelen v0.8.0 // indirect\n\tgithub.com/bombsimon/wsl/v4 v4.2.1 // indirect\n\tgithub.com/breml/bidichk v0.2.7 // indirect\n\tgithub.com/breml/errchkjson v0.3.6 // indirect\n\tgithub.com/btcsuite/btcd/btcec/v2 v2.3.6 // indirect\n\tgithub.com/bufbuild/protocompile v0.14.1 // indirect\n\tgithub.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1 // indirect\n\tgithub.com/butuzov/ireturn v0.3.0 // indirect\n\tgithub.com/butuzov/mirror v1.2.0 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.14.1 // indirect\n\tgithub.com/bytedance/sonic/loader v0.3.0 // indirect\n\tgithub.com/catenacyber/perfsprint v0.7.1 // indirect\n\tgithub.com/ccojocar/zxcvbn-go v1.0.2 // indirect\n\tgithub.com/cenkalti/backoff v2.2.1+incompatible // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/charithe/durationcheck v0.0.10 // indirect\n\tgithub.com/chavacava/garif v0.1.0 // indirect\n\tgithub.com/chzyer/readline v1.5.1 // indirect\n\tgithub.com/ckaznocha/intrange v0.1.2 // indirect\n\tgithub.com/cloudflare/circl v1.4.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/cockroachdb/apd/v2 v2.0.2 // indirect\n\tgithub.com/cockroachdb/apd/v3 v3.2.1 // indirect\n\tgithub.com/cockroachdb/errors v1.12.0 // indirect\n\tgithub.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect\n\tgithub.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect\n\tgithub.com/cockroachdb/pebble v1.1.5 // indirect\n\tgithub.com/cockroachdb/redact v1.1.6 // indirect\n\tgithub.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb // indirect\n\tgithub.com/cometbft/cometbft-db v0.14.1 // indirect\n\tgithub.com/containerd/errdefs v1.0.0 // indirect\n\tgithub.com/containerd/errdefs/pkg v0.3.0 // indirect\n\tgithub.com/containerd/stargz-snapshotter/estargz v0.17.0 // indirect\n\tgithub.com/cosmos/btcutil v1.0.5 // indirect\n\tgithub.com/cosmos/go-bip39 v1.0.0 // indirect\n\tgithub.com/cosmos/gogogateway v1.2.0 // indirect\n\tgithub.com/cosmos/iavl v1.2.4 // indirect\n\tgithub.com/cosmos/ics23/go v0.11.0 // indirect\n\tgithub.com/cosmos/ledger-cosmos-go v0.14.0 // indirect\n\tgithub.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect\n\tgithub.com/creachadair/atomicfile v0.3.3 // indirect\n\tgithub.com/creachadair/tomledit v0.0.26 // indirect\n\tgithub.com/curioswitch/go-reassign v0.2.0 // indirect\n\tgithub.com/daixiang0/gci v0.13.4 // indirect\n\tgithub.com/danieljoos/wincred v1.2.2 // indirect\n\tgithub.com/denis-tingaikin/go-header v0.5.0 // indirect\n\tgithub.com/desertbit/timer v1.0.1 // indirect\n\tgithub.com/dgraph-io/badger/v4 v4.2.0 // indirect\n\tgithub.com/dgraph-io/ristretto v0.1.1 // indirect\n\tgithub.com/distribution/reference v0.6.0 // indirect\n\tgithub.com/docker/cli v28.4.0+incompatible // indirect\n\tgithub.com/docker/distribution v2.8.3+incompatible // indirect\n\tgithub.com/docker/docker v28.4.0+incompatible // indirect\n\tgithub.com/docker/docker-credential-helpers v0.9.3 // indirect\n\tgithub.com/docker/go-connections v0.6.0 // indirect\n\tgithub.com/docker/go-units v0.5.0 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/dvsekhvalnov/jose2go v1.7.0 // indirect\n\tgithub.com/emicklei/dot v1.6.2 // indirect\n\tgithub.com/ethereum/go-ethereum v1.16.8 // indirect\n\tgithub.com/ettle/strcase v0.2.0 // indirect\n\tgithub.com/fatih/color v1.17.0 // indirect\n\tgithub.com/fatih/structtag v1.2.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/firefart/nonamedreturns v1.0.5 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/fzipp/gocyclo v0.6.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.11 // indirect\n\tgithub.com/getsentry/sentry-go v0.36.2 // indirect\n\tgithub.com/ghodss/yaml v1.0.0 // indirect\n\tgithub.com/ghostiam/protogetter v0.3.6 // indirect\n\tgithub.com/go-chi/chi/v5 v5.2.3 // indirect\n\tgithub.com/go-critic/go-critic v0.11.4 // indirect\n\tgithub.com/go-kit/kit v0.13.0 // indirect\n\tgithub.com/go-kit/log v0.2.1 // indirect\n\tgithub.com/go-logfmt/logfmt v0.6.0 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/go-playground/validator/v10 v10.28.0 // indirect\n\tgithub.com/go-toolsmith/astcast v1.1.0 // indirect\n\tgithub.com/go-toolsmith/astcopy v1.1.0 // indirect\n\tgithub.com/go-toolsmith/astequal v1.2.0 // indirect\n\tgithub.com/go-toolsmith/astfmt v1.1.0 // indirect\n\tgithub.com/go-toolsmith/astp v1.1.0 // indirect\n\tgithub.com/go-toolsmith/strparse v1.1.0 // indirect\n\tgithub.com/go-toolsmith/typep v1.1.0 // indirect\n\tgithub.com/go-viper/mapstructure/v2 v2.4.0 // indirect\n\tgithub.com/go-xmlfmt/xmlfmt v1.1.2 // indirect\n\tgithub.com/gobwas/glob v0.2.3 // indirect\n\tgithub.com/goccy/go-json v0.10.5 // indirect\n\tgithub.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect\n\tgithub.com/gofrs/flock v0.12.1 // indirect\n\tgithub.com/gogo/googleapis v1.4.1 // indirect\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/golang/glog v1.2.5 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect\n\tgithub.com/golang/snappy v1.0.0 // indirect\n\tgithub.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect\n\tgithub.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect\n\tgithub.com/golangci/golangci-lint v1.59.1 // indirect\n\tgithub.com/golangci/misspell v0.6.0 // indirect\n\tgithub.com/golangci/modinfo v0.3.4 // indirect\n\tgithub.com/golangci/plugin-module-register v0.1.1 // indirect\n\tgithub.com/golangci/revgrep v0.5.3 // indirect\n\tgithub.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect\n\tgithub.com/google/btree v1.1.3 // indirect\n\tgithub.com/google/cel-go v0.26.1 // indirect\n\tgithub.com/google/flatbuffers v24.3.25+incompatible // indirect\n\tgithub.com/google/go-containerregistry v0.20.6 // indirect\n\tgithub.com/google/orderedcode v0.0.1 // indirect\n\tgithub.com/google/s2a-go v0.1.7 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.12.5 // indirect\n\tgithub.com/gordonklaus/ineffassign v0.1.0 // indirect\n\tgithub.com/gorilla/handlers v1.5.2 // indirect\n\tgithub.com/gorilla/websocket v1.5.3 // indirect\n\tgithub.com/gostaticanalysis/analysisutil v0.7.1 // indirect\n\tgithub.com/gostaticanalysis/comment v1.4.2 // indirect\n\tgithub.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect\n\tgithub.com/gostaticanalysis/nilerr v0.1.1 // indirect\n\tgithub.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect\n\tgithub.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-getter v1.7.9 // indirect\n\tgithub.com/hashicorp/go-hclog v1.6.3 // indirect\n\tgithub.com/hashicorp/go-immutable-radix v1.3.1 // indirect\n\tgithub.com/hashicorp/go-plugin v1.6.1 // indirect\n\tgithub.com/hashicorp/go-safetemp v1.0.0 // indirect\n\tgithub.com/hashicorp/go-version v1.7.0 // indirect\n\tgithub.com/hashicorp/golang-lru v1.0.2 // indirect\n\tgithub.com/hashicorp/golang-lru/v2 v2.0.7 // indirect\n\tgithub.com/hashicorp/hcl v1.0.0 // indirect\n\tgithub.com/hashicorp/yamux v0.1.1 // indirect\n\tgithub.com/hdevalence/ed25519consensus v0.2.0 // indirect\n\tgithub.com/hexops/gotextdiff v1.0.3 // indirect\n\tgithub.com/holiman/uint256 v1.3.2 // indirect\n\tgithub.com/huandu/skiplist v1.2.0 // indirect\n\tgithub.com/hyperledger/aries-framework-go v0.3.2 // indirect\n\tgithub.com/hyperledger/aries-framework-go/component/kmscrypto v0.0.0-20230427134832-0c9969493bd3 // indirect\n\tgithub.com/hyperledger/aries-framework-go/component/log v0.0.0-20230427134832-0c9969493bd3 // indirect\n\tgithub.com/hyperledger/aries-framework-go/component/models v0.0.0-20230501135648-a9a7ad029347 // indirect\n\tgithub.com/hyperledger/aries-framework-go/spi v0.0.0-20230427134832-0c9969493bd3 // indirect\n\tgithub.com/iancoleman/strcase v0.3.0 // indirect\n\tgithub.com/improbable-eng/grpc-web v0.15.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/jdx/go-netrc v1.0.0 // indirect\n\tgithub.com/jgautheron/goconst v1.7.1 // indirect\n\tgithub.com/jingyugao/rowserrcheck v1.1.1 // indirect\n\tgithub.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect\n\tgithub.com/jjti/go-spancheck v0.6.1 // indirect\n\tgithub.com/jmespath/go-jmespath v0.4.0 // indirect\n\tgithub.com/jmhodges/levigo v1.0.0 // indirect\n\tgithub.com/julz/importas v0.1.0 // indirect\n\tgithub.com/karamaru-alpha/copyloopvar v1.1.0 // indirect\n\tgithub.com/kilic/bls12-381 v0.1.1-0.20210503002446-7b7597926c69 // indirect\n\tgithub.com/kisielk/errcheck v1.7.0 // indirect\n\tgithub.com/kkHAIKE/contextcheck v1.1.5 // indirect\n\tgithub.com/klauspost/compress v1.18.1 // indirect\n\tgithub.com/klauspost/cpuid/v2 v2.3.0 // indirect\n\tgithub.com/klauspost/pgzip v1.2.6 // indirect\n\tgithub.com/kr/pretty v0.3.1 // indirect\n\tgithub.com/kr/text v0.2.0 // indirect\n\tgithub.com/kulti/thelper v0.6.3 // indirect\n\tgithub.com/kunwardeep/paralleltest v1.0.10 // indirect\n\tgithub.com/kyoh86/exportloopref v0.1.11 // indirect\n\tgithub.com/lasiar/canonicalheader v1.1.1 // indirect\n\tgithub.com/ldez/gomoddirectives v0.2.4 // indirect\n\tgithub.com/ldez/tagliatelle v0.5.0 // indirect\n\tgithub.com/leodido/go-urn v1.4.0 // indirect\n\tgithub.com/leonklingele/grouper v1.1.2 // indirect\n\tgithub.com/lestrrat-go/blackmagic v1.0.4 // indirect\n\tgithub.com/lestrrat-go/httpcc v1.0.1 // indirect\n\tgithub.com/lestrrat-go/httprc v1.0.6 // indirect\n\tgithub.com/lestrrat-go/iter v1.0.2 // indirect\n\tgithub.com/lestrrat-go/option v1.0.1 // indirect\n\tgithub.com/lib/pq v1.10.9 // indirect\n\tgithub.com/linxGnu/grocksdb v1.10.3 // indirect\n\tgithub.com/lufeee/execinquery v1.2.1 // indirect\n\tgithub.com/macabu/inamedparam v0.1.3 // indirect\n\tgithub.com/magiconair/properties v1.8.7 // indirect\n\tgithub.com/manifoldco/promptui v0.9.0 // indirect\n\tgithub.com/maratori/testableexamples v1.0.0 // indirect\n\tgithub.com/maratori/testpackage v1.1.1 // indirect\n\tgithub.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect\n\tgithub.com/mattn/go-colorable v0.1.14 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.14 // indirect\n\tgithub.com/mgechev/revive v1.3.7 // indirect\n\tgithub.com/minio/highwayhash v1.0.3 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/go-testing-interface v1.14.1 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/moby/docker-image-spec v1.3.1 // indirect\n\tgithub.com/moby/term v0.5.2 // indirect\n\tgithub.com/moricho/tparallel v0.3.1 // indirect\n\tgithub.com/morikuni/aec v1.0.0 // indirect\n\tgithub.com/mr-tron/base58 v1.2.0 // indirect\n\tgithub.com/mtibben/percent v0.2.1 // indirect\n\tgithub.com/multiformats/go-base32 v0.1.0 // indirect\n\tgithub.com/multiformats/go-base36 v0.2.0 // indirect\n\tgithub.com/multiformats/go-multibase v0.2.0 // indirect\n\tgithub.com/multiformats/go-multicodec v0.10.0 // indirect\n\tgithub.com/multiformats/go-varint v0.1.0 // indirect\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect\n\tgithub.com/nakabonne/nestif v0.3.1 // indirect\n\tgithub.com/nishanths/exhaustive v0.12.0 // indirect\n\tgithub.com/nishanths/predeclared v0.2.2 // indirect\n\tgithub.com/nunnatsa/ginkgolinter v0.16.2 // indirect\n\tgithub.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect\n\tgithub.com/oklog/run v1.1.0 // indirect\n\tgithub.com/olekukonko/tablewriter v0.0.5 // indirect\n\tgithub.com/onsi/ginkgo/v2 v2.22.1 // indirect\n\tgithub.com/onsi/gomega v1.36.2 // indirect\n\tgithub.com/opencontainers/go-digest v1.0.0 // indirect\n\tgithub.com/opencontainers/image-spec v1.1.1 // indirect\n\tgithub.com/opencontainers/runc v1.2.8 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.2.2 // indirect\n\tgithub.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect\n\tgithub.com/piprate/json-gold v0.7.0 // indirect\n\tgithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect\n\tgithub.com/polyfloyd/go-errorlint v1.5.2 // indirect\n\tgithub.com/pquerna/cachecontrol v0.2.0 // indirect\n\tgithub.com/prometheus/client_golang v1.23.2 // indirect\n\tgithub.com/prometheus/client_model v0.6.2 // indirect\n\tgithub.com/prometheus/common v0.67.2 // indirect\n\tgithub.com/prometheus/procfs v0.19.2 // indirect\n\tgithub.com/quasilyte/go-ruleguard v0.4.2 // indirect\n\tgithub.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect\n\tgithub.com/quasilyte/gogrep v0.5.0 // indirect\n\tgithub.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect\n\tgithub.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect\n\tgithub.com/quic-go/qpack v0.6.0 // indirect\n\tgithub.com/quic-go/quic-go v0.57.0 // indirect\n\tgithub.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect\n\tgithub.com/rivo/uniseg v0.2.0 // indirect\n\tgithub.com/rogpeppe/go-internal v1.14.1 // indirect\n\tgithub.com/rs/cors v1.11.1 // indirect\n\tgithub.com/rs/zerolog v1.33.0 // indirect\n\tgithub.com/russross/blackfriday/v2 v2.1.0 // indirect\n\tgithub.com/ryancurrah/gomodguard v1.3.2 // indirect\n\tgithub.com/ryanrolds/sqlclosecheck v0.5.1 // indirect\n\tgithub.com/sagikazarmark/locafero v0.6.0 // indirect\n\tgithub.com/sagikazarmark/slog-shim v0.1.0 // indirect\n\tgithub.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect\n\tgithub.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect\n\tgithub.com/sasha-s/go-deadlock v0.3.5 // indirect\n\tgithub.com/sashamelentyev/interfacebloat v1.1.0 // indirect\n\tgithub.com/sashamelentyev/usestdlibvars v1.26.0 // indirect\n\tgithub.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 // indirect\n\tgithub.com/segmentio/asm v1.2.1 // indirect\n\tgithub.com/segmentio/encoding v0.5.3 // indirect\n\tgithub.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect\n\tgithub.com/sirupsen/logrus v1.9.3 // indirect\n\tgithub.com/sivchari/containedctx v1.0.3 // indirect\n\tgithub.com/sivchari/tenv v1.7.1 // indirect\n\tgithub.com/sonatard/noctx v0.0.2 // indirect\n\tgithub.com/sourcegraph/conc v0.3.0 // indirect\n\tgithub.com/sourcegraph/go-diff v0.7.0 // indirect\n\tgithub.com/sourcenetwork/zanzi v0.3.1-0.20251104182341-4b1bd0f7be5a // indirect\n\tgithub.com/spf13/afero v1.11.0 // indirect\n\tgithub.com/spf13/cast v1.10.0 // indirect\n\tgithub.com/ssgreg/nlreturn/v2 v2.2.1 // indirect\n\tgithub.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect\n\tgithub.com/stoewer/go-strcase v1.3.1 // indirect\n\tgithub.com/stretchr/objx v0.5.2 // indirect\n\tgithub.com/subosito/gotenv v1.6.0 // indirect\n\tgithub.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect\n\tgithub.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect\n\tgithub.com/tdakkota/asciicheck v0.2.0 // indirect\n\tgithub.com/tendermint/go-amino v0.16.0 // indirect\n\tgithub.com/tetafro/godot v1.4.16 // indirect\n\tgithub.com/tetratelabs/wazero v1.9.0 // indirect\n\tgithub.com/tidwall/btree v1.7.0 // indirect\n\tgithub.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect\n\tgithub.com/timonwong/loggercheck v0.9.4 // indirect\n\tgithub.com/tomarrell/wrapcheck/v2 v2.8.3 // indirect\n\tgithub.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect\n\tgithub.com/twitchyliquid64/golang-asm v0.15.1 // indirect\n\tgithub.com/ulikunitz/xz v0.5.15 // indirect\n\tgithub.com/ultraware/funlen v0.1.0 // indirect\n\tgithub.com/ultraware/whitespace v0.1.1 // indirect\n\tgithub.com/uudashr/gocognit v1.1.2 // indirect\n\tgithub.com/vbatts/tar-split v0.12.1 // indirect\n\tgithub.com/xen0n/gosmopolitan v1.2.2 // indirect\n\tgithub.com/yagipy/maintidx v1.0.0 // indirect\n\tgithub.com/yeya24/promlinter v0.3.0 // indirect\n\tgithub.com/ykadowak/zerologlint v0.1.5 // indirect\n\tgithub.com/zondax/hid v0.9.2 // indirect\n\tgithub.com/zondax/ledger-go v0.14.3 // indirect\n\tgitlab.com/bosi/decorder v0.4.2 // indirect\n\tgo-simpler.org/musttag v0.12.2 // indirect\n\tgo-simpler.org/sloglint v0.7.1 // indirect\n\tgo.etcd.io/bbolt v1.4.0-alpha.1 // indirect\n\tgo.lsp.dev/jsonrpc2 v0.10.0 // indirect\n\tgo.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 // indirect\n\tgo.lsp.dev/protocol v0.12.0 // indirect\n\tgo.lsp.dev/uri v0.3.0 // indirect\n\tgo.opencensus.io v0.24.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect\n\tgo.opentelemetry.io/otel v1.38.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.38.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.38.0 // indirect\n\tgo.uber.org/automaxprocs v1.5.3 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgo.uber.org/zap v1.27.0 // indirect\n\tgo.yaml.in/yaml/v2 v2.4.3 // indirect\n\tgo.yaml.in/yaml/v3 v3.0.4 // indirect\n\tgolang.org/x/arch v0.21.0 // indirect\n\tgolang.org/x/crypto v0.45.0 // indirect\n\tgolang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect\n\tgolang.org/x/mod v0.29.0 // indirect\n\tgolang.org/x/net v0.47.0 // indirect\n\tgolang.org/x/oauth2 v0.32.0 // indirect\n\tgolang.org/x/sync v0.18.0 // indirect\n\tgolang.org/x/sys v0.38.0 // indirect\n\tgolang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect\n\tgolang.org/x/term v0.37.0 // indirect\n\tgolang.org/x/text v0.31.0 // indirect\n\tgolang.org/x/time v0.12.0 // indirect\n\tgoogle.golang.org/api v0.186.0 // indirect\n\tgoogle.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101 // indirect\n\tgopkg.in/ini.v1 v1.67.0 // indirect\n\tgopkg.in/yaml.v2 v2.4.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\thonnef.co/go/tools v0.4.7 // indirect\n\tk8s.io/apimachinery v0.34.1 // indirect\n\tmvdan.cc/gofumpt v0.6.0 // indirect\n\tmvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect\n\tnhooyr.io/websocket v1.8.17 // indirect\n\tpgregory.net/rapid v1.1.0 // indirect\n\tpluginrpc.com/pluginrpc v0.5.0 // indirect\n\tsigs.k8s.io/yaml v1.6.0 // indirect\n)\n\ntool (\n\tgithub.com/bufbuild/buf/cmd/buf\n\tgithub.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar\n\tgithub.com/cosmos/gogoproto/protoc-gen-gocosmos\n\tgithub.com/cosmos/gogoproto/protoc-gen-gogo\n\tgithub.com/golangci/golangci-lint/cmd/golangci-lint\n\tgithub.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2\n\tgolang.org/x/tools/cmd/goimports\n\tgoogle.golang.org/grpc/cmd/protoc-gen-go-grpc\n\tgoogle.golang.org/protobuf/cmd/protoc-gen-go\n)\n"
  },
  {
    "path": "go.sum",
    "content": "4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA=\n4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs=\n4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo=\n4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc=\n4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU=\nbitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M=\nbuf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.9-20250718181942-e35f9b667443.1 h1:HiLfreYRsqycF5QDlsnvSQOnl4tvhBoROl8+DkbaphI=\nbuf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.9-20250718181942-e35f9b667443.1/go.mod h1:WSxC6zKCpqVRcGZCpOgVwkATp9XBIleoAdSAnkq7dhw=\nbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20250912141014-52f32327d4b0.1 h1:31on4W/yPcV4nZHL4+UCiCvLPsMqe/vJcNg8Rci0scc=\nbuf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.10-20250912141014-52f32327d4b0.1/go.mod h1:fUl8CEN/6ZAMk6bP8ahBJPUJw7rbp+j4x+wCcYi2IG4=\nbuf.build/gen/go/bufbuild/registry/connectrpc/go v1.18.1-20250903170917-c4be0f57e197.1 h1:isqFuFhL6JRd7+KF/vivWqZGJMCaTuAccZIWwneCcqE=\nbuf.build/gen/go/bufbuild/registry/connectrpc/go v1.18.1-20250903170917-c4be0f57e197.1/go.mod h1:eGjb9P6sl1irS46NKyXnxkyozT2aWs3BF4tbYWQuCsw=\nbuf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.9-20250903170917-c4be0f57e197.1 h1:q+tABqEH2Cpcp8fO9TBZlvKok7zorHGy+/UyywXaAKo=\nbuf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.9-20250903170917-c4be0f57e197.1/go.mod h1:Y3m+VD8IH6JTgnFYggPHvFul/ry6dL3QDliy8xH7610=\nbuf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.8-20241007202033-cf42259fcbfc.1 h1:KuP+b+in6LGh2ukof5KgDCD8hPXotEq6EVOo13Wg1pE=\nbuf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.8-20241007202033-cf42259fcbfc.1/go.mod h1:dV1Kz6zdmyXt7QWm5OXby44OFpyLemllUDBUG5HMLio=\nbuf.build/go/app v0.1.0 h1:nlqD/h0rhIN73ZoiDElprrPiO2N6JV+RmNK34K29Ihg=\nbuf.build/go/app v0.1.0/go.mod h1:0XVOYemubVbxNXVY0DnsVgWeGkcbbAvjDa1fmhBC+Wo=\nbuf.build/go/bufplugin v0.9.0 h1:ktZJNP3If7ldcWVqh46XKeiYJVPxHQxCfjzVQDzZ/lo=\nbuf.build/go/bufplugin v0.9.0/go.mod h1:Z0CxA3sKQ6EPz/Os4kJJneeRO6CjPeidtP1ABh5jPPY=\nbuf.build/go/interrupt v1.1.0 h1:olBuhgv9Sav4/9pkSLoxgiOsZDgM5VhRhvRpn3DL0lE=\nbuf.build/go/interrupt v1.1.0/go.mod h1:ql56nXPG1oHlvZa6efNC7SKAQ/tUjS6z0mhJl0gyeRM=\nbuf.build/go/protovalidate v1.0.0 h1:IAG1etULddAy93fiBsFVhpj7es5zL53AfB/79CVGtyY=\nbuf.build/go/protovalidate v1.0.0/go.mod h1:KQmEUrcQuC99hAw+juzOEAmILScQiKBP1Oc36vvCLW8=\nbuf.build/go/protoyaml v0.6.0 h1:Nzz1lvcXF8YgNZXk+voPPwdU8FjDPTUV4ndNTXN0n2w=\nbuf.build/go/protoyaml v0.6.0/go.mod h1:RgUOsBu/GYKLDSIRgQXniXbNgFlGEZnQpRAUdLAFV2Q=\nbuf.build/go/spdx v0.2.0 h1:IItqM0/cMxvFJJumcBuP8NrsIzMs/UYjp/6WSpq8LTw=\nbuf.build/go/spdx v0.2.0/go.mod h1:bXdwQFem9Si3nsbNy8aJKGPoaPi5DKwdeEp5/ArZ6w8=\nbuf.build/go/standard v0.1.0 h1:g98T9IyvAl0vS3Pq8iVk6Cvj2ZiFvoUJRtfyGa0120U=\nbuf.build/go/standard v0.1.0/go.mod h1:PiqpHz/7ZFq+kqvYhc/SK3lxFIB9N/aiH2CFC2JHIQg=\ncel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=\ncel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=\ncloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=\ncloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=\ncloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=\ncloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=\ncloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=\ncloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=\ncloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=\ncloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=\ncloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U=\ncloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=\ncloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=\ncloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=\ncloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=\ncloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM=\ncloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I=\ncloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=\ncloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=\ncloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=\ncloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4=\ncloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw=\ncloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E=\ncloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o=\ncloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE=\ncloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM=\ncloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ=\ncloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=\ncloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=\ncloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg=\ncloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ=\ncloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k=\ncloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw=\ncloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=\ncloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4=\ncloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M=\ncloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE=\ncloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE=\ncloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk=\ncloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc=\ncloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8=\ncloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc=\ncloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04=\ncloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8=\ncloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY=\ncloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM=\ncloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc=\ncloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU=\ncloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI=\ncloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8=\ncloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno=\ncloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak=\ncloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84=\ncloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A=\ncloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E=\ncloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4=\ncloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0=\ncloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY=\ncloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k=\ncloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ=\ncloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk=\ncloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0=\ncloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc=\ncloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI=\ncloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ=\ncloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI=\ncloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08=\ncloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o=\ncloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s=\ncloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0=\ncloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ=\ncloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY=\ncloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo=\ncloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg=\ncloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw=\ncloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=\ncloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=\ncloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=\ncloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo=\ncloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0=\ncloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E=\ncloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=\ncloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=\ncloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=\ncloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=\ncloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=\ncloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=\ncloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8=\ncloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM=\ncloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU=\ncloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc=\ncloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI=\ncloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss=\ncloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE=\ncloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE=\ncloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g=\ncloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4=\ncloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8=\ncloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM=\ncloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA=\ncloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw=\ncloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc=\ncloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E=\ncloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac=\ncloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q=\ncloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU=\ncloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY=\ncloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s=\ncloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI=\ncloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y=\ncloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss=\ncloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc=\ncloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM=\ncloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI=\ncloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0=\ncloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk=\ncloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q=\ncloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg=\ncloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590=\ncloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8=\ncloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk=\ncloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk=\ncloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE=\ncloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU=\ncloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U=\ncloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA=\ncloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M=\ncloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg=\ncloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s=\ncloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM=\ncloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk=\ncloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA=\ncloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY=\ncloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI=\ncloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4=\ncloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI=\ncloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y=\ncloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs=\ncloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=\ncloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=\ncloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=\ncloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=\ncloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=\ncloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=\ncloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=\ncloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=\ncloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=\ncloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE=\ncloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo=\ncloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA=\ncloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=\ncloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=\ncloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=\ncloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=\ncloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=\ncloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=\ncloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=\ncloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU=\ncloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=\ncloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY=\ncloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck=\ncloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w=\ncloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg=\ncloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo=\ncloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4=\ncloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM=\ncloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA=\ncloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=\ncloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=\ncloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI=\ncloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s=\ncloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=\ncloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs=\ncloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc=\ncloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE=\ncloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM=\ncloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M=\ncloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0=\ncloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8=\ncloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM=\ncloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ=\ncloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE=\ncloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo=\ncloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE=\ncloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0=\ncloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA=\ncloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE=\ncloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38=\ncloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w=\ncloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8=\ncloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I=\ncloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ=\ncloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM=\ncloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA=\ncloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A=\ncloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ=\ncloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs=\ncloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s=\ncloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI=\ncloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4=\ncloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo=\ncloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA=\ncloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM=\ncloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c=\ncloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo=\ncloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ=\ncloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g=\ncloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4=\ncloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs=\ncloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww=\ncloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c=\ncloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s=\ncloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI=\ncloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ=\ncloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4=\ncloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0=\ncloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8=\ncloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek=\ncloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0=\ncloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM=\ncloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4=\ncloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE=\ncloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM=\ncloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q=\ncloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4=\ncloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU=\ncloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU=\ncloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k=\ncloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4=\ncloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM=\ncloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs=\ncloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y=\ncloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg=\ncloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE=\ncloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk=\ncloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w=\ncloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc=\ncloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY=\ncloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU=\ncloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI=\ncloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8=\ncloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M=\ncloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc=\ncloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw=\ncloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw=\ncloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY=\ncloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w=\ncloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI=\ncloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs=\ncloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg=\ncloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=\ncloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE=\ncloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk=\ncloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg=\ncloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY=\ncloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08=\ncloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw=\ncloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA=\ncloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c=\ncloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM=\ncloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA=\ncloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w=\ncloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM=\ncloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0=\ncloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60=\ncloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo=\ncloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg=\ncloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o=\ncloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A=\ncloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw=\ncloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0=\ncloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0=\ncloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E=\ncloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw=\ncloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA=\ncloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI=\ncloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y=\ncloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=\ncloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM=\ncloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o=\ncloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo=\ncloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c=\ncloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=\ncloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=\ncloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc=\ncloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg=\ncloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE=\ncloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY=\ncloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=\ncloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=\ncloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=\ncloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=\ncloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc=\ncloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A=\ncloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk=\ncloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo=\ncloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74=\ncloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM=\ncloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY=\ncloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4=\ncloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs=\ncloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g=\ncloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o=\ncloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE=\ncloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA=\ncloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg=\ncloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0=\ncloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg=\ncloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w=\ncloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24=\ncloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI=\ncloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=\ncloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=\ncloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE=\ncloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8=\ncloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY=\ncloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=\ncloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=\ncloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo=\ncloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw=\ncloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M=\ncloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE=\ncloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc=\ncloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=\ncloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE=\ncloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM=\ncloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA=\ncloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI=\ncloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw=\ncloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY=\ncloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=\ncloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=\ncloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I=\ncloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=\ncloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=\ncloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA=\ncloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY=\ncloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM=\ncloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=\ncloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=\ncloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8=\ncloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI=\ncloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo=\ncloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk=\ncloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4=\ncloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w=\ncloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw=\ncloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=\ncloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=\ncloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM=\ncloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8=\ncloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E=\ncloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM=\ncloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8=\ncloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4=\ncloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY=\ncloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=\ncloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU=\ncloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k=\ncloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU=\ncloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY=\ncloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34=\ncloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA=\ncloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0=\ncloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE=\ncloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ=\ncloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4=\ncloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs=\ncloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI=\ncloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA=\ncloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk=\ncloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ=\ncloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE=\ncloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc=\ncloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc=\ncloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs=\ncloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg=\ncloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo=\ncloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw=\ncloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw=\ncloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E=\ncloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU=\ncloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70=\ncloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo=\ncloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs=\ncloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0=\ncloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA=\ncloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk=\ncloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg=\ncloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE=\ncloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw=\ncloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc=\ncloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0=\ncloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI=\ncloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg=\ncloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w=\ncloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI=\ncloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0=\ncloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8=\ncloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4=\ncloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg=\ncloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k=\ncloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM=\ncloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4=\ncloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o=\ncloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk=\ncloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo=\ncloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE=\ncloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U=\ncloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA=\ncloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c=\ncloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg=\ncloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4=\ncloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac=\ncloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg=\ncloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c=\ncloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs=\ncloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70=\ncloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ=\ncloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y=\ncloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A=\ncloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA=\ncloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM=\ncloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ=\ncloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA=\ncloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0=\ncloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots=\ncloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo=\ncloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI=\ncloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU=\ncloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg=\ncloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA=\ncloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4=\ncloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY=\ncloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc=\ncloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y=\ncloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14=\ncloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do=\ncloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo=\ncloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM=\ncloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg=\ncloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s=\ncloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI=\ncloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk=\ncloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44=\ncloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc=\ncloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc=\ncloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA=\ncloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4=\ncloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4=\ncloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU=\ncloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4=\ncloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0=\ncloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU=\ncloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q=\ncloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA=\ncloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8=\ncloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0=\ncloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU=\ncloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc=\ncloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk=\ncloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk=\ncloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0=\ncloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag=\ncloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU=\ncloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s=\ncloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA=\ncloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc=\ncloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk=\ncloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs=\ncloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg=\ncloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4=\ncloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U=\ncloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY=\ncloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s=\ncloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco=\ncloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo=\ncloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc=\ncloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4=\ncloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E=\ncloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU=\ncloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec=\ncloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA=\ncloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4=\ncloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw=\ncloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A=\ncloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk=\ncloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos=\ncloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk=\ncloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M=\ncloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM=\ncloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ=\ncloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0=\ncloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco=\ncloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0=\ncloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=\ncloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=\ncloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=\ncloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=\ncloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y=\ncloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4=\ncloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0=\ncloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80=\ncloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w=\ncloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I=\ncloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4=\ncloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw=\ncloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=\ncloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=\ncloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM=\ncloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA=\ncloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c=\ncloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8=\ncloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4=\ncloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc=\ncloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ=\ncloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg=\ncloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM=\ncloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28=\ncloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y=\ncloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA=\ncloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk=\ncloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs=\ncloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg=\ncloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0=\ncloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=\ncloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=\ncloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk=\ncloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw=\ncloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg=\ncloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk=\ncloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=\ncloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=\ncloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=\ncloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=\ncloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M=\ncloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU=\ncloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU=\ncloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=\ncloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo=\ncloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo=\ncloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY=\ncloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E=\ncloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY=\ncloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0=\ncloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE=\ncloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g=\ncloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc=\ncloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY=\ncloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208=\ncloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8=\ncloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY=\ncloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w=\ncloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8=\ncloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes=\ncloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE=\ncloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=\ncloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc=\ncloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A=\ncloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg=\ncloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo=\ncloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ=\ncloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng=\ncloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=\ncloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=\ncloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=\ncloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=\ncloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=\nconnectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw=\nconnectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8=\nconnectrpc.com/otelconnect v0.8.0 h1:a4qrN4H8aEE2jAoCxheZYYfEjXMgVPyL9OzPQLBEFXU=\nconnectrpc.com/otelconnect v0.8.0/go.mod h1:AEkVLjCPXra+ObGFCOClcJkNjS7zPaQSqvO0lCyjfZc=\ncontrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc=\ncosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY=\ncosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38=\ncosmossdk.io/client/v2 v2.0.0-beta.3 h1:+TTuH0DwQYsUq2JFAl3fDZzKq5gQG7nt3dAattkjFDU=\ncosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo=\ncosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s=\ncosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0=\ncosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA=\ncosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0=\ncosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=\ncosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=\ncosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=\ncosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=\ncosmossdk.io/log v1.5.0 h1:dVdzPJW9kMrnAYyMf1duqacoidB9uZIl+7c6z0mnq0g=\ncosmossdk.io/log v1.5.0/go.mod h1:Tr46PUJjiUthlwQ+hxYtUtPn4D/oCZXAkYevBeh5+FI=\ncosmossdk.io/math v1.5.0 h1:sbOASxee9Zxdjd6OkzogvBZ25/hP929vdcYcBJQbkLc=\ncosmossdk.io/math v1.5.0/go.mod h1:AAwwBmUhqtk2nlku174JwSll+/DepUXW3rWIXN5q+Nw=\ncosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y=\ncosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=\ncosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4=\ncosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo=\ncosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ=\ncosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q=\ncosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4=\ncosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc=\ncosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI=\ncosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=\ncosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38=\ncosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\nfilippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=\nfilippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=\ngioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=\ngit.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=\ngithub.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8=\ngithub.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0=\ngithub.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=\ngithub.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=\ngithub.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0=\ngithub.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk=\ngithub.com/Abirdcfly/dupword v0.0.14 h1:3U4ulkc8EUo+CaT105/GJ1BQwtgyj6+VaBVbAX11Ba8=\ngithub.com/Abirdcfly/dupword v0.0.14/go.mod h1:VKDAbxdY8YbKUByLGg8EETzYSuC4crm9WwI6Y3S0cLI=\ngithub.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU=\ngithub.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM=\ngithub.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns=\ngithub.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI=\ngithub.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ=\ngithub.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ=\ngithub.com/Antonboom/testifylint v1.3.1 h1:Uam4q1Q+2b6H7gvk9RQFw6jyVDdpzIirFOOrbs14eG4=\ngithub.com/Antonboom/testifylint v1.3.1/go.mod h1:NV0hTlteCkViPW9mSR4wEMfwp+Hs1T3dY60bkvSfhpM=\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=\ngithub.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=\ngithub.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=\ngithub.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=\ngithub.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=\ngithub.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=\ngithub.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=\ngithub.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=\ngithub.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/Crocmagnon/fatcontext v0.2.2 h1:OrFlsDdOj9hW/oBEJBNSuH7QWf+E9WPVHw+x52bXVbk=\ngithub.com/Crocmagnon/fatcontext v0.2.2/go.mod h1:WSn/c/+MMNiD8Pri0ahRj0o9jVpeowzavOQplBJw6u0=\ngithub.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=\ngithub.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=\ngithub.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q=\ngithub.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=\ngithub.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=\ngithub.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE=\ngithub.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=\ngithub.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=\ngithub.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=\ngithub.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.0/go.mod h1:n/vLeA7V+QY84iYAGwMkkUUp9ooeuftMEvaDrSVch+Q=\ngithub.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c=\ngithub.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI=\ngithub.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=\ngithub.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=\ngithub.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=\ngithub.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=\ngithub.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=\ngithub.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=\ngithub.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=\ngithub.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4=\ngithub.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=\ngithub.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=\ngithub.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=\ngithub.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=\ngithub.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=\ngithub.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=\ngithub.com/NathanBaulch/protoc-gen-cobra v1.2.1 h1:BOqX9glwicbqDJDGndMnhHhx8psGTSjGdZzRDY1a7A8=\ngithub.com/NathanBaulch/protoc-gen-cobra v1.2.1/go.mod h1:ZLPLEPQgV3jP3a7IEp+xxYPk8tF4lhY9ViV0hn6K3iA=\ngithub.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=\ngithub.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=\ngithub.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=\ngithub.com/OpenPeeDeeP/depguard v1.1.0/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc=\ngithub.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA=\ngithub.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=\ngithub.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU=\ngithub.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI=\ngithub.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=\ngithub.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=\ngithub.com/TBD54566975/ssi-sdk v0.0.4-alpha h1:GbZG0S3xeaWQi2suWw2VjGRhM/S2RrIsfiubxSHlViE=\ngithub.com/TBD54566975/ssi-sdk v0.0.4-alpha/go.mod h1:O4iANflxGCX0NbjHOhthq0X0il2ZYNMYlUnjEa0rsC0=\ngithub.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=\ngithub.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=\ngithub.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A=\ngithub.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg=\ngithub.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I=\ngithub.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg=\ngithub.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=\ngithub.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=\ngithub.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=\ngithub.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=\ngithub.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=\ngithub.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=\ngithub.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=\ngithub.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=\ngithub.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c=\ngithub.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=\ngithub.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=\ngithub.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=\ngithub.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=\ngithub.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=\ngithub.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=\ngithub.com/alexkohler/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg=\ngithub.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU=\ngithub.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=\ngithub.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=\ngithub.com/alingse/asasalint v0.0.10/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=\ngithub.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=\ngithub.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=\ngithub.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=\ngithub.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=\ngithub.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=\ngithub.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=\ngithub.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=\ngithub.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=\ngithub.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=\ngithub.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=\ngithub.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=\ngithub.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI=\ngithub.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=\ngithub.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=\ngithub.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU=\ngithub.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=\ngithub.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=\ngithub.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=\ngithub.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=\ngithub.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=\ngithub.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=\ngithub.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=\ngithub.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI=\ngithub.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY=\ngithub.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU=\ngithub.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s=\ngithub.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=\ngithub.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2elIKCm7P2YHFC8v6096G09E=\ngithub.com/awalterschulze/gographviz v2.0.3+incompatible/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs=\ngithub.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=\ngithub.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=\ngithub.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=\ngithub.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=\ngithub.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=\ngithub.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=\ngithub.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=\ngithub.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ=\ngithub.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=\ngithub.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=\ngithub.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=\ngithub.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o=\ngithub.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=\ngithub.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=\ngithub.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=\ngithub.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=\ngithub.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=\ngithub.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=\ngithub.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=\ngithub.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=\ngithub.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E=\ngithub.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=\ngithub.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU=\ngithub.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=\ngithub.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI=\ngithub.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY=\ngithub.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM=\ngithub.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=\ngithub.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=\ngithub.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M=\ngithub.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=\ngithub.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=\ngithub.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM=\ngithub.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo=\ngithub.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=\ngithub.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=\ngithub.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A=\ngithub.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY=\ngithub.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ=\ngithub.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU=\ngithub.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA=\ngithub.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U=\ngithub.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=\ngithub.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c=\ngithub.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=\ngithub.com/btcsuite/btcd/btcec/v2 v2.3.6 h1:IzlsEr9olcSRKB/n7c4351F3xHKxS2lma+1UFGCYd4E=\ngithub.com/btcsuite/btcd/btcec/v2 v2.3.6/go.mod h1:m22FrOAiuxl/tht9wIqAoGHcbnCCaPWyauO8y2LGGtQ=\ngithub.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c=\ngithub.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE=\ngithub.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=\ngithub.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=\ngithub.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=\ngithub.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ=\ngithub.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o=\ngithub.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=\ngithub.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=\ngithub.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=\ngithub.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=\ngithub.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=\ngithub.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=\ngithub.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=\ngithub.com/bufbuild/buf v1.3.1/go.mod h1:CTRUb23N+zlm1U8ZIBKz0Sqluk++qQloB2i/MZNZHIs=\ngithub.com/bufbuild/buf v1.57.1 h1:ti/wP7PXZb5vT32gwRnFZ/WX/WJ/Do5qNHV0PifazKE=\ngithub.com/bufbuild/buf v1.57.1/go.mod h1:8cygE3L/J84dtgQAaquZKpXLo9MjAn+dSdFuXvbUNYg=\ngithub.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw=\ngithub.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c=\ngithub.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1 h1:V1xulAoqLqVg44rY97xOR+mQpD2N+GzhMHVwJ030WEU=\ngithub.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1/go.mod h1:c5D8gWRIZ2HLWO3gXYTtUfw/hbJyD8xikv2ooPxnklQ=\ngithub.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc=\ngithub.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0=\ngithub.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA=\ngithub.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs=\ngithub.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ=\ngithub.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=\ngithub.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=\ngithub.com/bytedance/sonic v1.14.1 h1:FBMC0zVz5XUmE4z9wF4Jey0An5FueFvOsTKKKtwIl7w=\ngithub.com/bytedance/sonic v1.14.1/go.mod h1:gi6uhQLMbTdeP0muCnrjHLeCUPyb70ujhnNlhOylAFc=\ngithub.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=\ngithub.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=\ngithub.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=\ngithub.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg=\ngithub.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc=\ngithub.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50=\ngithub.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg=\ngithub.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60=\ngithub.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=\ngithub.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=\ngithub.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=\ngithub.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=\ngithub.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=\ngithub.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=\ngithub.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=\ngithub.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg=\ngithub.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=\ngithub.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=\ngithub.com/chavacava/garif v0.0.0-20220316182200-5cad0b5181d4/go.mod h1:W8EnPSQ8Nv4fUjc/v1/8tHFqhuOJXnRub0dTfuAQktU=\ngithub.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc=\ngithub.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww=\ngithub.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E=\ngithub.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM=\ngithub.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=\ngithub.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=\ngithub.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=\ngithub.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA=\ngithub.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=\ngithub.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=\ngithub.com/ckaznocha/intrange v0.1.2 h1:3Y4JAxcMntgb/wABQ6e8Q8leMd26JbX2790lIss9MTI=\ngithub.com/ckaznocha/intrange v0.1.2/go.mod h1:RWffCw/vKBwHeOEwWdCikAtY0q4gGt8VhJZEEA5n+RE=\ngithub.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=\ngithub.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY=\ngithub.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=\ngithub.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=\ngithub.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=\ngithub.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=\ngithub.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=\ngithub.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls=\ngithub.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=\ngithub.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=\ngithub.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=\ngithub.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=\ngithub.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=\ngithub.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=\ngithub.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4=\ngithub.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=\ngithub.com/cockroachdb/errors v1.12.0 h1:d7oCs6vuIMUQRVbi6jWWWEJZahLCfJpnJSVobd1/sUo=\ngithub.com/cockroachdb/errors v1.12.0/go.mod h1:SvzfYNNBshAVbZ8wzNc/UPK3w1vf0dKDUP41ucAIf7g=\ngithub.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 h1:pU88SPhIFid6/k0egdR5V6eALQYq2qbSmukrkgIh/0A=\ngithub.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=\ngithub.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k=\ngithub.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo=\ngithub.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw=\ngithub.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo=\ngithub.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314=\ngithub.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=\ngithub.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb h1:3bCgBvB8PbJVMX1ouCcSIxvsqKPYM7gs72o0zC76n9g=\ngithub.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=\ngithub.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=\ngithub.com/cometbft/cometbft v0.38.21 h1:qcIJSH9LiwU5s6ZgKR5eRbsLNucbubfraDs5bzgjtOI=\ngithub.com/cometbft/cometbft v0.38.21/go.mod h1:UCu8dlHqvkAsmAFmWDRWNZJPlu6ya2fTWZlDrWsivwo=\ngithub.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ=\ngithub.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ=\ngithub.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=\ngithub.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=\ngithub.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=\ngithub.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=\ngithub.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=\ngithub.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=\ngithub.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=\ngithub.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=\ngithub.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=\ngithub.com/containerd/stargz-snapshotter/estargz v0.17.0 h1:+TyQIsR/zSFI1Rm31EQBwpAA1ovYgIKHy7kctL3sLcE=\ngithub.com/containerd/stargz-snapshotter/estargz v0.17.0/go.mod h1:s06tWAiJcXQo9/8AReBCIo/QxcXFZ2n4qfsRnpl71SM=\ngithub.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=\ngithub.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=\ngithub.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=\ngithub.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=\ngithub.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=\ngithub.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=\ngithub.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=\ngithub.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=\ngithub.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=\ngithub.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk=\ngithub.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis=\ngithub.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY=\ngithub.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U=\ngithub.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=\ngithub.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=\ngithub.com/cosmos/cosmos-sdk v0.50.14 h1:G8CtGHFWbExa+ZpVOVAb4kFmko/R30igsYOwyzRMtgY=\ngithub.com/cosmos/cosmos-sdk v0.50.14/go.mod h1:hrWEFMU1eoXqLJeE6VVESpJDQH67FS1nnMrQIjO2daw=\ngithub.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY=\ngithub.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw=\ngithub.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE=\ngithub.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI=\ngithub.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU=\ngithub.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHCA=\ngithub.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk=\ngithub.com/cosmos/iavl v1.2.4 h1:IHUrG8dkyueKEY72y92jajrizbkZKPZbMmG14QzsEkw=\ngithub.com/cosmos/iavl v1.2.4/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=\ngithub.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI=\ngithub.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E=\ngithub.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8=\ngithub.com/cosmos/ibc-go/v10 v10.1.1/go.mod h1:0pJCkgEYRMygqkvUcwy6Kuf5wPfIsObRoxFU2DJEil4=\ngithub.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=\ngithub.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=\ngithub.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE=\ngithub.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA=\ngithub.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/creachadair/atomicfile v0.2.6/go.mod h1:BRq8Une6ckFneYXZQ+kO7p1ZZP3I2fzVzf28JxrIkBc=\ngithub.com/creachadair/atomicfile v0.3.3 h1:yJlDq8qk9QmD/6ol+jq1X4bcoLNVdYq95+owOnauziE=\ngithub.com/creachadair/atomicfile v0.3.3/go.mod h1:X1r9P4wigJlGkYJO1HXZREdkVn+b1yHrsBBMLSj7tak=\ngithub.com/creachadair/command v0.0.0-20220426235536-a748effdf6a1/go.mod h1:bAM+qFQb/KwWyCc9MLC4U1jvn3XyakqP5QRkds5T6cY=\ngithub.com/creachadair/mtest v0.0.0-20231015022703-31f2ea539dce h1:BFjvg2Oq88/2DOcUFu1ScIwKUn7KJYYvLr6AeuCJD54=\ngithub.com/creachadair/mtest v0.0.0-20231015022703-31f2ea539dce/go.mod h1:okn1ft6DY+qjPmnvYynyq7ufIQKJ2x2qwOCJZecei1k=\ngithub.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk=\ngithub.com/creachadair/tomledit v0.0.22/go.mod h1:cIu/4x5L855oSRejIqr+WRFh+mv9g4fWLiUFaApYn/Y=\ngithub.com/creachadair/tomledit v0.0.26 h1:MoDdgHIHZ5PctBVsAZDjxdxreWUEa9ObPKTRkk5PPwA=\ngithub.com/creachadair/tomledit v0.0.26/go.mod h1:SJi1OxKpMyR141tq1lzsbPtIg3j8TeVPM/ZftfieD7o=\ngithub.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=\ngithub.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=\ngithub.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo=\ngithub.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc=\ngithub.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=\ngithub.com/daixiang0/gci v0.4.2/go.mod h1:d0f+IJhr9loBtIq+ebwhRoTt1LGbPH96ih8bKlsRT9E=\ngithub.com/daixiang0/gci v0.13.4 h1:61UGkmpoAcxHM2hhNkZEf5SzwQtWJXTSws7jaPyqwlw=\ngithub.com/daixiang0/gci v0.13.4/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=\ngithub.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0=\ngithub.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=\ngithub.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8=\ngithub.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=\ngithub.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=\ngithub.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=\ngithub.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=\ngithub.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c=\ngithub.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=\ngithub.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=\ngithub.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU=\ngithub.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=\ngithub.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo=\ngithub.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE=\ngithub.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE=\ngithub.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs=\ngithub.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak=\ngithub.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=\ngithub.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=\ngithub.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=\ngithub.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=\ngithub.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=\ngithub.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y=\ngithub.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=\ngithub.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=\ngithub.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=\ngithub.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=\ngithub.com/docker/cli v20.10.14+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=\ngithub.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=\ngithub.com/docker/cli v28.4.0+incompatible h1:RBcf3Kjw2pMtwui5V0DIMdyeab8glEw5QY0UUU4C9kY=\ngithub.com/docker/cli v28.4.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=\ngithub.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=\ngithub.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=\ngithub.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=\ngithub.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=\ngithub.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk=\ngithub.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=\ngithub.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=\ngithub.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=\ngithub.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=\ngithub.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=\ngithub.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=\ngithub.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=\ngithub.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=\ngithub.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=\ngithub.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=\ngithub.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=\ngithub.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=\ngithub.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=\ngithub.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=\ngithub.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=\ngithub.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=\ngithub.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=\ngithub.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=\ngithub.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=\ngithub.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=\ngithub.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=\ngithub.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=\ngithub.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=\ngithub.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=\ngithub.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ=\ngithub.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=\ngithub.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34=\ngithub.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q=\ngithub.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M=\ngithub.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A=\ngithub.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw=\ngithub.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=\ngithub.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo=\ngithub.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w=\ngithub.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=\ngithub.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8=\ngithub.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU=\ngithub.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0=\ngithub.com/ethereum/go-ethereum v1.16.8 h1:LLLfkZWijhR5m6yrAXbdlTeXoqontH+Ga2f9igY7law=\ngithub.com/ethereum/go-ethereum v1.16.8/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk=\ngithub.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=\ngithub.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=\ngithub.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A=\ngithub.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64=\ngithub.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg=\ngithub.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0=\ngithub.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=\ngithub.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=\ngithub.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=\ngithub.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=\ngithub.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=\ngithub.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=\ngithub.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=\ngithub.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=\ngithub.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI=\ngithub.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA=\ngithub.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw=\ngithub.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=\ngithub.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=\ngithub.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=\ngithub.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=\ngithub.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=\ngithub.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo=\ngithub.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=\ngithub.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=\ngithub.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=\ngithub.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=\ngithub.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=\ngithub.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=\ngithub.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=\ngithub.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=\ngithub.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=\ngithub.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=\ngithub.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=\ngithub.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=\ngithub.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM=\ngithub.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=\ngithub.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=\ngithub.com/gabriel-vasile/mimetype v1.4.11 h1:AQvxbp830wPhHTqc1u7nzoLT+ZFxGY7emj5DR5DYFik=\ngithub.com/gabriel-vasile/mimetype v1.4.11/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=\ngithub.com/getsentry/sentry-go v0.36.2 h1:uhuxRPTrUy0dnSzTd0LrYXlBYygLkKY0hhlG5LXarzM=\ngithub.com/getsentry/sentry-go v0.36.2/go.mod h1:p5Im24mJBeruET8Q4bbcMfCQ+F+Iadc4L48tB1apo2c=\ngithub.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=\ngithub.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=\ngithub.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk=\ngithub.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw=\ngithub.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=\ngithub.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=\ngithub.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE=\ngithub.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=\ngithub.com/go-critic/go-critic v0.6.3/go.mod h1:c6b3ZP1MQ7o6lPR7Rv3lEf7pYQUmAcx8ABHgdZCQt/k=\ngithub.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU=\ngithub.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc=\ngithub.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=\ngithub.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=\ngithub.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=\ngithub.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=\ngithub.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=\ngithub.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=\ngithub.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=\ngithub.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=\ngithub.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=\ngithub.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=\ngithub.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs=\ngithub.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU=\ngithub.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg=\ngithub.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=\ngithub.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=\ngithub.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=\ngithub.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=\ngithub.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=\ngithub.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=\ngithub.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=\ngithub.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=\ngithub.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=\ngithub.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=\ngithub.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=\ngithub.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=\ngithub.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=\ngithub.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=\ngithub.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=\ngithub.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=\ngithub.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=\ngithub.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=\ngithub.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=\ngithub.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=\ngithub.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=\ngithub.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=\ngithub.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=\ngithub.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=\ngithub.com/go-playground/validator/v10 v10.28.0 h1:Q7ibns33JjyW48gHkuFT91qX48KG0ktULL6FgHdG688=\ngithub.com/go-playground/validator/v10 v10.28.0/go.mod h1:GoI6I1SjPBh9p7ykNE/yj3fFYbyDOpwMn5KXd+m2hUU=\ngithub.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=\ngithub.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=\ngithub.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=\ngithub.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=\ngithub.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=\ngithub.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=\ngithub.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=\ngithub.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=\ngithub.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=\ngithub.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4=\ngithub.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=\ngithub.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU=\ngithub.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ=\ngithub.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s=\ngithub.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw=\ngithub.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=\ngithub.com/go-toolsmith/astequal v1.0.1/go.mod h1:4oGA3EZXTVItV/ipGiOx7NWkY5veFfcsOJVS2YxltLw=\ngithub.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4=\ngithub.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ=\ngithub.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw=\ngithub.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY=\ngithub.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw=\ngithub.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco=\ngithub.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4=\ngithub.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI=\ngithub.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA=\ngithub.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA=\ngithub.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM=\ngithub.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk=\ngithub.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus=\ngithub.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=\ngithub.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw=\ngithub.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=\ngithub.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=\ngithub.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=\ngithub.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=\ngithub.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=\ngithub.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=\ngithub.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=\ngithub.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U=\ngithub.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=\ngithub.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=\ngithub.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=\ngithub.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=\ngithub.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=\ngithub.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=\ngithub.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=\ngithub.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=\ngithub.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=\ngithub.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=\ngithub.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=\ngithub.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=\ngithub.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=\ngithub.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=\ngithub.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=\ngithub.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=\ngithub.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=\ngithub.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=\ngithub.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c=\ngithub.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=\ngithub.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=\ngithub.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=\ngithub.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=\ngithub.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=\ngithub.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=\ngithub.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=\ngithub.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8=\ngithub.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=\ngithub.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=\ngithub.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I=\ngithub.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=\ngithub.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=\ngithub.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=\ngithub.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=\ngithub.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=\ngithub.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=\ngithub.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=\ngithub.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ=\ngithub.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=\ngithub.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g=\ngithub.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM=\ngithub.com/golangci/golangci-lint v1.47.0/go.mod h1:3TZhfF5KolbIkXYjUFvER6G9CoxzLEaafr/u/QI1S5A=\ngithub.com/golangci/golangci-lint v1.59.1 h1:CRRLu1JbhK5avLABFJ/OHVSQ0Ie5c4ulsOId1h3TTks=\ngithub.com/golangci/golangci-lint v1.59.1/go.mod h1:jX5Oif4C7P0j9++YB2MMJmoNrb01NJ8ITqKWNLewThg=\ngithub.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=\ngithub.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=\ngithub.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=\ngithub.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs=\ngithub.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo=\ngithub.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA=\ngithub.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM=\ngithub.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c=\ngithub.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc=\ngithub.com/golangci/revgrep v0.0.0-20210930125155-c22e5001d4f2/go.mod h1:LK+zW4MpyytAWQRz0M4xnzEk50lSvqDQKfx304apFkY=\ngithub.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs=\ngithub.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=\ngithub.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=\ngithub.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs=\ngithub.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=\ngithub.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=\ngithub.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ=\ngithub.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=\ngithub.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg=\ngithub.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs=\ngithub.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=\ngithub.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI=\ngithub.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=\ngithub.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-containerregistry v0.20.6 h1:cvWX87UxxLgaH76b4hIvya6Dzz9qHB31qAwjAohdSTU=\ngithub.com/google/go-containerregistry v0.20.6/go.mod h1:T0x8MuoAoKX/873bkeSfLD2FAkwCDf9/HZgsFJ02E2Y=\ngithub.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=\ngithub.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us=\ngithub.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=\ngithub.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=\ngithub.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=\ngithub.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=\ngithub.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw=\ngithub.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=\ngithub.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=\ngithub.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=\ngithub.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=\ngithub.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=\ngithub.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=\ngithub.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=\ngithub.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=\ngithub.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=\ngithub.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8=\ngithub.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI=\ngithub.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=\ngithub.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=\ngithub.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=\ngithub.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=\ngithub.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM=\ngithub.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=\ngithub.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU=\ngithub.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=\ngithub.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=\ngithub.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=\ngithub.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA=\ngithub.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=\ngithub.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=\ngithub.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=\ngithub.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=\ngithub.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=\ngithub.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=\ngithub.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=\ngithub.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=\ngithub.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=\ngithub.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=\ngithub.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=\ngithub.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=\ngithub.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=\ngithub.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0=\ngithub.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=\ngithub.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc=\ngithub.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI=\ngithub.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado=\ngithub.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q=\ngithub.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM=\ngithub.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70=\ngithub.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak=\ngithub.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk=\ngithub.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A=\ngithub.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=\ngithub.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY=\ngithub.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU=\ngithub.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY=\ngithub.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=\ngithub.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=\ngithub.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=\ngithub.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=\ngithub.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c=\ngithub.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=\ngithub.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 h1:NmZ1PKzSTQbuGHw9DGPFomqkkLWMC+vZCkfs+FHv1Vg=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3/go.mod h1:zQrxl1YP88HQlA6i9c63DSVPFklWpGX4OWAc9bFuaH4=\ngithub.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=\ngithub.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=\ngithub.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=\ngithub.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=\ngithub.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=\ngithub.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0=\ngithub.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=\ngithub.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-getter v1.7.9 h1:G9gcjrDixz7glqJ+ll5IWvggSBR+R0B54DSRt4qfdC4=\ngithub.com/hashicorp/go-getter v1.7.9/go.mod h1:dyFCmT1AQkDfOIt9NH8pw9XBDqNrIKJT5ylbpi7zPNE=\ngithub.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=\ngithub.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=\ngithub.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=\ngithub.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=\ngithub.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE=\ngithub.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE=\ngithub.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=\ngithub.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=\ngithub.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI=\ngithub.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0=\ngithub.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=\ngithub.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=\ngithub.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=\ngithub.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=\ngithub.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=\ngithub.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=\ngithub.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=\ngithub.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=\ngithub.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=\ngithub.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=\ngithub.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=\ngithub.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=\ngithub.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=\ngithub.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=\ngithub.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=\ngithub.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=\ngithub.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=\ngithub.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=\ngithub.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=\ngithub.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=\ngithub.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=\ngithub.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=\ngithub.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=\ngithub.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=\ngithub.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=\ngithub.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=\ngithub.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU=\ngithub.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo=\ngithub.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=\ngithub.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=\ngithub.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA=\ngithub.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=\ngithub.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=\ngithub.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=\ngithub.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=\ngithub.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=\ngithub.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=\ngithub.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=\ngithub.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=\ngithub.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=\ngithub.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo=\ngithub.com/hyperledger/aries-framework-go v0.3.2 h1:GsSUaSEW82cr5X8b3Qf90GAi37kmTKHqpPJLhar13X8=\ngithub.com/hyperledger/aries-framework-go v0.3.2/go.mod h1:SorUysWEBw+uyXhY5RAtg2iyNkWTIIPM8+Slkt1Spno=\ngithub.com/hyperledger/aries-framework-go/component/kmscrypto v0.0.0-20230427134832-0c9969493bd3 h1:PCbDSujjQ6oTEnAHgtThNmbS7SPAYEDBlKOnZFE+Ujw=\ngithub.com/hyperledger/aries-framework-go/component/kmscrypto v0.0.0-20230427134832-0c9969493bd3/go.mod h1:aEk0vHBmZsAdDfXaI12Kg5ipZGiB3qNqgbPt/e/Hm2s=\ngithub.com/hyperledger/aries-framework-go/component/log v0.0.0-20230427134832-0c9969493bd3 h1:x5qFQraTX86z9GCwF28IxfnPm6QH5YgHaX+4x97Jwvw=\ngithub.com/hyperledger/aries-framework-go/component/log v0.0.0-20230427134832-0c9969493bd3/go.mod h1:CvYs4l8X2NrrF93weLOu5RTOIJeVdoZITtjEflyuTyM=\ngithub.com/hyperledger/aries-framework-go/component/models v0.0.0-20230501135648-a9a7ad029347 h1:oPGUCpmnm7yxsVllcMQnHF3uc3hy4jfrSCh7nvzXA00=\ngithub.com/hyperledger/aries-framework-go/component/models v0.0.0-20230501135648-a9a7ad029347/go.mod h1:nF8fHsYY+GZl74AFAQaKAhYWOOSaLVzW/TZ0Sq/6axI=\ngithub.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20230427134832-0c9969493bd3 h1:JGYA9l5zTlvsvfnXT9hYPpCokAjmVKX0/r7njba7OX4=\ngithub.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20230427134832-0c9969493bd3/go.mod h1:aSG2dWjYVzu2PVBtOqsYghaChA5+UUXnBbL+MfVceYQ=\ngithub.com/hyperledger/aries-framework-go/spi v0.0.0-20230427134832-0c9969493bd3 h1:ytWmOQZIYQfVJ4msFvrqlp6d+ZLhT43wS8rgE2m+J1A=\ngithub.com/hyperledger/aries-framework-go/spi v0.0.0-20230427134832-0c9969493bd3/go.mod h1:oryUyWb23l/a3tAP9KW+GBbfcfqp9tZD4y5hSkFrkqI=\ngithub.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=\ngithub.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=\ngithub.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ignite/cli/v28 v28.6.1 h1:PmlZ7ulD/Y9yw3QZ2EN0joMBEyGIrJbEyVSxNywEeMI=\ngithub.com/ignite/cli/v28 v28.6.1/go.mod h1:HzT0fYcTX1q8rbgm/OTxTwHl0rsJSOxJ9O3urSNu/6Y=\ngithub.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=\ngithub.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=\ngithub.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=\ngithub.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=\ngithub.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ=\ngithub.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8=\ngithub.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=\ngithub.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=\ngithub.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=\ngithub.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=\ngithub.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=\ngithub.com/jdx/go-netrc v1.0.0 h1:QbLMLyCZGj0NA8glAhxUpf1zDg6cxnWgMBbjq40W0gQ=\ngithub.com/jdx/go-netrc v1.0.0/go.mod h1:Gh9eFQJnoTNIRHXl2j5bJXA1u84hQWJWgGh569zF3v8=\ngithub.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw=\ngithub.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=\ngithub.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=\ngithub.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=\ngithub.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk=\ngithub.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=\ngithub.com/jhump/protocompile v0.0.0-20220216033700-d705409f108f/go.mod h1:qr2b5kx4HbFS7/g4uYO5qv9ei8303JMsC7ESbYiqr2Q=\ngithub.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4=\ngithub.com/jhump/protoreflect v1.11.1-0.20220213155251-0c2aedc66cf4/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=\ngithub.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=\ngithub.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=\ngithub.com/jhump/protoreflect/v2 v2.0.0-beta.2 h1:qZU+rEZUOYTz1Bnhi3xbwn+VxdXkLVeEpAeZzVXLY88=\ngithub.com/jhump/protoreflect/v2 v2.0.0-beta.2/go.mod h1:4tnOYkB/mq7QTyS3YKtVtNrJv4Psqout8HA1U+hZtgM=\ngithub.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=\ngithub.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=\ngithub.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=\ngithub.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=\ngithub.com/jjti/go-spancheck v0.6.1 h1:ZK/wE5Kyi1VX3PJpUO2oEgeoI4FWOUm7Shb2Gbv5obI=\ngithub.com/jjti/go-spancheck v0.6.1/go.mod h1:vF1QkOO159prdo6mHRxak2CpzDpHAfKiPUDP/NeRnX8=\ngithub.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=\ngithub.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=\ngithub.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=\ngithub.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=\ngithub.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=\ngithub.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=\ngithub.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=\ngithub.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=\ngithub.com/josharian/txtarfs v0.0.0-20210218200122-0702f000015a/go.mod h1:izVPOvVRsHiKkeGCT6tYBNWyDVuzj9wAaBb5R9qamfw=\ngithub.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=\ngithub.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=\ngithub.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=\ngithub.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=\ngithub.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk=\ngithub.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=\ngithub.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=\ngithub.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY=\ngithub.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0=\ngithub.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=\ngithub.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=\ngithub.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=\ngithub.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos=\ngithub.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k=\ngithub.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=\ngithub.com/kilic/bls12-381 v0.1.1-0.20210503002446-7b7597926c69 h1:kMJlf8z8wUcpyI+FQJIdGjAhfTww1y0AbQEv86bpVQI=\ngithub.com/kilic/bls12-381 v0.1.1-0.20210503002446-7b7597926c69/go.mod h1:tlkavyke+Ac7h8R3gZIjI5LKBcvMlSWnXNMgT3vZXo8=\ngithub.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=\ngithub.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/errcheck v1.6.1/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw=\ngithub.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0=\ngithub.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg=\ngithub.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA=\ngithub.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=\ngithub.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=\ngithub.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=\ngithub.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=\ngithub.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=\ngithub.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=\ngithub.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=\ngithub.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=\ngithub.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=\ngithub.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=\ngithub.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co=\ngithub.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0=\ngithub.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=\ngithub.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=\ngithub.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=\ngithub.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=\ngithub.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=\ngithub.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=\ngithub.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=\ngithub.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=\ngithub.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs=\ngithub.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I=\ngithub.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes=\ngithub.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs=\ngithub.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY=\ngithub.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg=\ngithub.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ=\ngithub.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA=\ngithub.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I=\ngithub.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0=\ngithub.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0=\ngithub.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg=\ngithub.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g=\ngithub.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88=\ngithub.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo=\ngithub.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4=\ngithub.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=\ngithub.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=\ngithub.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=\ngithub.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY=\ngithub.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=\ngithub.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=\ngithub.com/lestrrat-go/blackmagic v1.0.4 h1:IwQibdnf8l2KoO+qC3uT4OaTWsW7tuRQXy9TRN9QanA=\ngithub.com/lestrrat-go/blackmagic v1.0.4/go.mod h1:6AWFyKNNj0zEXQYfTMPfZrAXUWUfTIZ5ECEUEJaijtw=\ngithub.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE=\ngithub.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=\ngithub.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k=\ngithub.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo=\ngithub.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI=\ngithub.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=\ngithub.com/lestrrat-go/jwx/v2 v2.1.6 h1:hxM1gfDILk/l5ylers6BX/Eq1m/pnxe9NBwW6lVfecA=\ngithub.com/lestrrat-go/jwx/v2 v2.1.6/go.mod h1:Y722kU5r/8mV7fYDifjug0r8FK8mZdw0K0GpJw/l8pU=\ngithub.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU=\ngithub.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=\ngithub.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag=\ngithub.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=\ngithub.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=\ngithub.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=\ngithub.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=\ngithub.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=\ngithub.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=\ngithub.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=\ngithub.com/linxGnu/grocksdb v1.10.3 h1:0laII9AQ6kFxo5SjhdTfSh9EgF20piD6TMHK6YuDm+4=\ngithub.com/linxGnu/grocksdb v1.10.3/go.mod h1:OLQKZwiKwaJiAVCsOzWKvwiLwfZ5Vz8Md5TYR7t7pM8=\ngithub.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM=\ngithub.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM=\ngithub.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=\ngithub.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=\ngithub.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=\ngithub.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=\ngithub.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=\ngithub.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=\ngithub.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk=\ngithub.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I=\ngithub.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=\ngithub.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=\ngithub.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=\ngithub.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=\ngithub.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=\ngithub.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=\ngithub.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=\ngithub.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=\ngithub.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=\ngithub.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc=\ngithub.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=\ngithub.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc=\ngithub.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=\ngithub.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE=\ngithub.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=\ngithub.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=\ngithub.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=\ngithub.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=\ngithub.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=\ngithub.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=\ngithub.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=\ngithub.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=\ngithub.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=\ngithub.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=\ngithub.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=\ngithub.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=\ngithub.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=\ngithub.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=\ngithub.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=\ngithub.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=\ngithub.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=\ngithub.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=\ngithub.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=\ngithub.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=\ngithub.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=\ngithub.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=\ngithub.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=\ngithub.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc=\ngithub.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg=\ngithub.com/mgechev/revive v1.2.1/go.mod h1:+Ro3wqY4vakcYNtkBWdZC7dBg1xSB6sp054wWwmeFm0=\ngithub.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE=\ngithub.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA=\ngithub.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=\ngithub.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=\ngithub.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=\ngithub.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=\ngithub.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=\ngithub.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=\ngithub.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=\ngithub.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=\ngithub.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=\ngithub.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=\ngithub.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=\ngithub.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=\ngithub.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=\ngithub.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=\ngithub.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=\ngithub.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=\ngithub.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=\ngithub.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=\ngithub.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=\ngithub.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=\ngithub.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=\ngithub.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=\ngithub.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=\ngithub.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=\ngithub.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=\ngithub.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=\ngithub.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=\ngithub.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=\ngithub.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=\ngithub.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=\ngithub.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=\ngithub.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=\ngithub.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo=\ngithub.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=\ngithub.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc=\ngithub.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw=\ngithub.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=\ngithub.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=\ngithub.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=\ngithub.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=\ngithub.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA=\ngithub.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI=\ngithub.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=\ngithub.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=\ngithub.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8=\ngithub.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s=\ngithub.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=\ngithub.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=\ngithub.com/mroth/weightedrand v0.4.1/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE=\ngithub.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=\ngithub.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=\ngithub.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=\ngithub.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=\ngithub.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=\ngithub.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=\ngithub.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=\ngithub.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=\ngithub.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=\ngithub.com/multiformats/go-multicodec v0.10.0 h1:UpP223cig/Cx8J76jWt91njpK3GTAO1w02sdcjZDSuc=\ngithub.com/multiformats/go-multicodec v0.10.0/go.mod h1:wg88pM+s2kZJEQfRCKBNU+g32F5aWBEjyFHXvZLTcLI=\ngithub.com/multiformats/go-varint v0.1.0 h1:i2wqFp4sdl3IcIxfAonHQV9qU5OsZ4Ts9IOoETFs5dI=\ngithub.com/multiformats/go-varint v0.1.0/go.mod h1:5KVAVXegtfmNQQm/lCY+ATvDzvJJhSkUlGQV9wgObdI=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=\ngithub.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=\ngithub.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=\ngithub.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo=\ngithub.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc=\ngithub.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=\ngithub.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=\ngithub.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE=\ngithub.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=\ngithub.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=\ngithub.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q=\ngithub.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY=\ngithub.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=\ngithub.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g=\ngithub.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=\ngithub.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w=\ngithub.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=\ngithub.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=\ngithub.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s=\ngithub.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=\ngithub.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=\ngithub.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8=\ngithub.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=\ngithub.com/nishanths/exhaustive v0.8.1/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg=\ngithub.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg=\ngithub.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=\ngithub.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ=\ngithub.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=\ngithub.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=\ngithub.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk=\ngithub.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ=\ngithub.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=\ngithub.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=\ngithub.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=\ngithub.com/oasisprotocol/curve25519-voi v0.0.0-20210609091139-0a56a4bca00b/go.mod h1:TLJifjWF6eotcfzDjKZsDqWJ+73Uvj/N85MvVyrvynM=\ngithub.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q=\ngithub.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s=\ngithub.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=\ngithub.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=\ngithub.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=\ngithub.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=\ngithub.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOEiwQ68=\ngithub.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=\ngithub.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=\ngithub.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ=\ngithub.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=\ngithub.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=\ngithub.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=\ngithub.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=\ngithub.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=\ngithub.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=\ngithub.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=\ngithub.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=\ngithub.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=\ngithub.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=\ngithub.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=\ngithub.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=\ngithub.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=\ngithub.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=\ngithub.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=\ngithub.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=\ngithub.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=\ngithub.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=\ngithub.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=\ngithub.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=\ngithub.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=\ngithub.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=\ngithub.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=\ngithub.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=\ngithub.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=\ngithub.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=\ngithub.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=\ngithub.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc=\ngithub.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg=\ngithub.com/opencontainers/runc v1.2.8 h1:RnEICeDReapbZ5lZEgHvj7E9Q3Eex9toYmaGBsbvU5Q=\ngithub.com/opencontainers/runc v1.2.8/go.mod h1:cC0YkmZcuvr+rtBZ6T7NBoVbMGNAdLa/21vIElJDOzI=\ngithub.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=\ngithub.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=\ngithub.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=\ngithub.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=\ngithub.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=\ngithub.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=\ngithub.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=\ngithub.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=\ngithub.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=\ngithub.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=\ngithub.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE=\ngithub.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=\ngithub.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=\ngithub.com/ory/dockertest/v3 v3.9.1/go.mod h1:42Ir9hmvaAPm0Mgibk6mBPi7SFvTXxEcnztDYOJ//uM=\ngithub.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=\ngithub.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=\ngithub.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=\ngithub.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=\ngithub.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=\ngithub.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=\ngithub.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=\ngithub.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=\ngithub.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=\ngithub.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=\ngithub.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=\ngithub.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=\ngithub.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=\ngithub.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=\ngithub.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=\ngithub.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=\ngithub.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=\ngithub.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=\ngithub.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=\ngithub.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM=\ngithub.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=\ngithub.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o=\ngithub.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw=\ngithub.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=\ngithub.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=\ngithub.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=\ngithub.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=\ngithub.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=\ngithub.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=\ngithub.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=\ngithub.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=\ngithub.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=\ngithub.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=\ngithub.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=\ngithub.com/piprate/json-gold v0.7.0 h1:bEMirgA5y8Z2loTQfxyIFfY+EflxH1CTP6r/KIlcJNw=\ngithub.com/piprate/json-gold v0.7.0/go.mod h1:RVhE35veDX19r5gfUAR+IYHkAUuPwJO8Ie/qVeFaIzw=\ngithub.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=\ngithub.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=\ngithub.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=\ngithub.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=\ngithub.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18=\ngithub.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=\ngithub.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/polyfloyd/go-errorlint v1.0.0/go.mod h1:KZy4xxPJyy88/gldCe5OdW6OQRtNO3EZE7hXzmnebgA=\ngithub.com/polyfloyd/go-errorlint v1.5.2 h1:SJhVik3Umsjh7mte1vE0fVZ5T1gznasQG3PV7U5xFdA=\ngithub.com/polyfloyd/go-errorlint v1.5.2/go.mod h1:sH1QC1pxxi0fFecsVIzBmxtrgd9IF/SkJpA6wqyKAJs=\ngithub.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=\ngithub.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=\ngithub.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=\ngithub.com/pquerna/cachecontrol v0.2.0 h1:vBXSNuE5MYP9IJ5kjsdo8uq+w41jSPgvba2DEnkRx9k=\ngithub.com/pquerna/cachecontrol v0.2.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=\ngithub.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=\ngithub.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=\ngithub.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=\ngithub.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=\ngithub.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=\ngithub.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=\ngithub.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=\ngithub.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=\ngithub.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=\ngithub.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=\ngithub.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=\ngithub.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=\ngithub.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=\ngithub.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=\ngithub.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=\ngithub.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=\ngithub.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=\ngithub.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=\ngithub.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=\ngithub.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=\ngithub.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=\ngithub.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=\ngithub.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=\ngithub.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=\ngithub.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=\ngithub.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=\ngithub.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8=\ngithub.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko=\ngithub.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=\ngithub.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=\ngithub.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=\ngithub.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=\ngithub.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=\ngithub.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=\ngithub.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=\ngithub.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws=\ngithub.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw=\ngithub.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA=\ngithub.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q=\ngithub.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30=\ngithub.com/quasilyte/go-ruleguard v0.3.16-0.20220213074421-6aa060fab41a/go.mod h1:VMX+OnnSw4LicdiEGtRSD/1X8kW7GuEscjYNr4cOIT4=\ngithub.com/quasilyte/go-ruleguard v0.4.2 h1:htXcXDK6/rO12kiTHKfHuqR4kr3Y4M0J0rOL6CH/BYs=\ngithub.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.16/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=\ngithub.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=\ngithub.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc=\ngithub.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50=\ngithub.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM=\ngithub.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=\ngithub.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=\ngithub.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=\ngithub.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU=\ngithub.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=\ngithub.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=\ngithub.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=\ngithub.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=\ngithub.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=\ngithub.com/quic-go/quic-go v0.57.0 h1:AsSSrrMs4qI/hLrKlTH/TGQeTMY0ib1pAOX7vA3AdqE=\ngithub.com/quic-go/quic-go v0.57.0/go.mod h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s=\ngithub.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=\ngithub.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=\ngithub.com/remyoudompheng/go-dbus v0.0.0-20121104212943-b7232d34b1d5/go.mod h1:+u151txRmLpwxBmpYn9z3d1sdJdjRPQpsXuYeY9jNls=\ngithub.com/remyoudompheng/go-liblzma v0.0.0-20190506200333-81bf2d431b96/go.mod h1:90HvCY7+oHHUKkbeMCiHt1WuFR2/hPJ9QrljDG+v6ls=\ngithub.com/remyoudompheng/go-misc v0.0.0-20190427085024-2d6ac652a50e/go.mod h1:80FQABjoFzZ2M5uEa6FUaJYEmqU2UOKojlFVak1UAwI=\ngithub.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=\ngithub.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=\ngithub.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=\ngithub.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=\ngithub.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=\ngithub.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=\ngithub.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=\ngithub.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=\ngithub.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=\ngithub.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=\ngithub.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=\ngithub.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=\ngithub.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=\ngithub.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=\ngithub.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=\ngithub.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=\ngithub.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=\ngithub.com/ryancurrah/gomodguard v1.2.3/go.mod h1:rYbA/4Tg5c54mV1sv4sQTP5WOPBcoLtnBZ7/TEhXAbg=\ngithub.com/ryancurrah/gomodguard v1.3.2 h1:CuG27ulzEB1Gu5Dk5gP8PFxSOZ3ptSdP5iI/3IXxM18=\ngithub.com/ryancurrah/gomodguard v1.3.2/go.mod h1:LqdemiFomEjcxOqirbQCb3JFvSxH2JUYMerTFd3sF2o=\ngithub.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA=\ngithub.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=\ngithub.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ=\ngithub.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=\ngithub.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=\ngithub.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8=\ngithub.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk=\ngithub.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0=\ngithub.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=\ngithub.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=\ngithub.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=\ngithub.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=\ngithub.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc=\ngithub.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI=\ngithub.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=\ngithub.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=\ngithub.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM=\ngithub.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU=\ngithub.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U=\ngithub.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=\ngithub.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=\ngithub.com/sashamelentyev/usestdlibvars v1.26.0 h1:LONR2hNVKxRmzIrZR0PhSF3mhCAzvnr+DcUiHgREfXE=\ngithub.com/sashamelentyev/usestdlibvars v1.26.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=\ngithub.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=\ngithub.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=\ngithub.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg=\ngithub.com/securego/gosec/v2 v2.12.0/go.mod h1:iTpT+eKTw59bSgklBHlSnH5O2tNygHMDxfvMubA4i7I=\ngithub.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 h1:rnO6Zp1YMQwv8AyxzuwsVohljJgp4L0ZqiCgtACsPsc=\ngithub.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9/go.mod h1:dg7lPlu/xK/Ut9SedURCoZbVCR4yC7fM65DtH9/CDHs=\ngithub.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=\ngithub.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=\ngithub.com/segmentio/encoding v0.5.3 h1:OjMgICtcSFuNvQCdwqMCv9Tg7lEOXGwm1J5RPQccx6w=\ngithub.com/segmentio/encoding v0.5.3/go.mod h1:HS1ZKa3kSN32ZHVZ7ZLPLXWvOVIiZtyJnO1gPH1sKt0=\ngithub.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=\ngithub.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=\ngithub.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=\ngithub.com/shirou/gopsutil/v3 v3.22.6/go.mod h1:EdIubSnZhbAvBS1yJ7Xi+AShB/hxwLHOMz4MCYz7yMs=\ngithub.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=\ngithub.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=\ngithub.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=\ngithub.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=\ngithub.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=\ngithub.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=\ngithub.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=\ngithub.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=\ngithub.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw=\ngithub.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE=\ngithub.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4=\ngithub.com/sivchari/nosnakecase v1.5.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY=\ngithub.com/sivchari/tenv v1.6.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=\ngithub.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak=\ngithub.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg=\ngithub.com/skip-mev/block-sdk/v2 v2.1.5 h1:3uoYG2ayP253wiohBPKdD3LrkJGd1Kgw914mmI1ZyOI=\ngithub.com/skip-mev/block-sdk/v2 v2.1.5/go.mod h1:E8SvITZUdxkes3gI3+kgESZL+NLffkcLKnowUgYTOf4=\ngithub.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=\ngithub.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=\ngithub.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4=\ngithub.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=\ngithub.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=\ngithub.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00=\ngithub.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo=\ngithub.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=\ngithub.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=\ngithub.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=\ngithub.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=\ngithub.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=\ngithub.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=\ngithub.com/sourcenetwork/acp_core v0.8.1 h1:xCbFGs9HqQTG/LjfNa7aoD8dc6XhIYLgRdZCQrRcML0=\ngithub.com/sourcenetwork/acp_core v0.8.1/go.mod h1:vmxU/mBphMaU2NjKYEFJLSpk5lbRdWDqgsJZNd+WfZ0=\ngithub.com/sourcenetwork/corekv v0.0.0-20250122161438-c4cec0f30dbe h1:xML1pxD5zf14MAqjCkW584ri6yjp6go+ud83wpMzWtM=\ngithub.com/sourcenetwork/corekv v0.0.0-20250122161438-c4cec0f30dbe/go.mod h1:hap4+bqs9JcHPcAMALLj2Vu+QDxmHwYBlRyv8mlwsw4=\ngithub.com/sourcenetwork/raccoondb v0.2.1-0.20240722161350-d4a78b691ec8 h1:d0jNogSYqMt+dC05tnd+x7lmzEcBHpKoIU5woZSSHFM=\ngithub.com/sourcenetwork/raccoondb v0.2.1-0.20240722161350-d4a78b691ec8/go.mod h1:/WJdZWouiY199DypsN0xaP5PF0zy3rka3FxH5Y8o9Bc=\ngithub.com/sourcenetwork/raccoondb/v2 v2.0.0 h1:Gb0SjsZUbrbkHCEg7PyyNs0+2IzPxjE/BkEQnlu1nfA=\ngithub.com/sourcenetwork/raccoondb/v2 v2.0.0/go.mod h1:tPKAWHUgYcSoXNMt01iWJ+Y51AQYc2knY93IjmmbejY=\ngithub.com/sourcenetwork/zanzi v0.3.1-0.20251104182341-4b1bd0f7be5a h1:TlnRmk1v4+nIKGUdzMht4qnrf8AxCUAvpxSIqJ2CX94=\ngithub.com/sourcenetwork/zanzi v0.3.1-0.20251104182341-4b1bd0f7be5a/go.mod h1:j7QmuHK+zfA0JO6FliJzQHijVNSXDuQy8hUzFC5pucA=\ngithub.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=\ngithub.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=\ngithub.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=\ngithub.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=\ngithub.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=\ngithub.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo=\ngithub.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=\ngithub.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=\ngithub.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=\ngithub.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=\ngithub.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=\ngithub.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=\ngithub.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=\ngithub.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=\ngithub.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=\ngithub.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=\ngithub.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=\ngithub.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=\ngithub.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=\ngithub.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=\ngithub.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=\ngithub.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=\ngithub.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=\ngithub.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=\ngithub.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=\ngithub.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=\ngithub.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=\ngithub.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=\ngithub.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=\ngithub.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=\ngithub.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=\ngithub.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=\ngithub.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=\ngithub.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc=\ngithub.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I=\ngithub.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs=\ngithub.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=\ngithub.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=\ngithub.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=\ngithub.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=\ngithub.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=\ngithub.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngithub.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=\ngithub.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs=\ngithub.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo=\ngithub.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=\ngithub.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=\ngithub.com/sylvia7788/contextcheck v1.0.4/go.mod h1:vuPKJMQ7MQ91ZTqfdyreNKwZjyUg6KO+IebVyQDedZQ=\ngithub.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=\ngithub.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=\ngithub.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=\ngithub.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8=\ngithub.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk=\ngithub.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=\ngithub.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM=\ngithub.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg=\ngithub.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8=\ngithub.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E=\ngithub.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME=\ngithub.com/tendermint/tendermint v0.35.9 h1:yUEgfkcNHWSidsU8wHjRDbYPVijV4cHxCclKVITGRAQ=\ngithub.com/tendermint/tendermint v0.35.9/go.mod h1:FYvzUDkmVv1awfFl9V85yl5NKyjxz6XLZGX132+ftAY=\ngithub.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI=\ngithub.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA=\ngithub.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=\ngithub.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=\ngithub.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=\ngithub.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=\ngithub.com/tetafro/godot v1.4.16 h1:4ChfhveiNLk4NveAZ9Pu2AN8QZ2nkUGFuadM9lrr5D0=\ngithub.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio=\ngithub.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I=\ngithub.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM=\ngithub.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI=\ngithub.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=\ngithub.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=\ngithub.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M=\ngithub.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ=\ngithub.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4=\ngithub.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg=\ngithub.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg=\ngithub.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=\ngithub.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=\ngithub.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=\ngithub.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=\ngithub.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=\ngithub.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=\ngithub.com/tomarrell/wrapcheck/v2 v2.6.2/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg=\ngithub.com/tomarrell/wrapcheck/v2 v2.8.3 h1:5ov+Cbhlgi7s/a42BprYoxsr73CbdMUTzE3bRDFASUs=\ngithub.com/tomarrell/wrapcheck/v2 v2.8.3/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo=\ngithub.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4=\ngithub.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=\ngithub.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=\ngithub.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=\ngithub.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q=\ngithub.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=\ngithub.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=\ngithub.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=\ngithub.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=\ngithub.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=\ngithub.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=\ngithub.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=\ngithub.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=\ngithub.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=\ngithub.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI=\ngithub.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4=\ngithub.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=\ngithub.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ=\ngithub.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=\ngithub.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=\ngithub.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=\ngithub.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY=\ngithub.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI=\ngithub.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k=\ngithub.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=\ngithub.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=\ngithub.com/valyala/quicktemplate v1.7.0/go.mod h1:sqKJnoaOF88V07vkO+9FL8fb9uZg/VPSJnLYn+LmLk8=\ngithub.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=\ngithub.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=\ngithub.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=\ngithub.com/vektra/mockery/v2 v2.14.0/go.mod h1:bnD1T8tExSgPD1ripLkDbr60JA9VtQeu12P3wgLZd7M=\ngithub.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE=\ngithub.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=\ngithub.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=\ngithub.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=\ngithub.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=\ngithub.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=\ngithub.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU=\ngithub.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg=\ngithub.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=\ngithub.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=\ngithub.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=\ngithub.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM=\ngithub.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk=\ngithub.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA=\ngithub.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs=\ngithub.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4=\ngithub.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw=\ngithub.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg=\ngithub.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=\ngithub.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=\ngithub.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngithub.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=\ngithub.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=\ngithub.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=\ngithub.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=\ngithub.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=\ngithub.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=\ngithub.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI=\ngitlab.com/bosi/decorder v0.2.2/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE=\ngitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=\ngitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8=\ngo-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ=\ngo-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28=\ngo-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs=\ngo-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM=\ngo-simpler.org/sloglint v0.7.1 h1:qlGLiqHbN5islOxjeLXoPtUdZXb669RW+BDQ+xOSNoU=\ngo-simpler.org/sloglint v0.7.1/go.mod h1:OlaVDRh/FKKd4X4sIMbsz8st97vomydceL146Fthh/c=\ngo.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=\ngo.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=\ngo.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=\ngo.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4=\ngo.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw=\ngo.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=\ngo.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k=\ngo.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=\ngo.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=\ngo.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=\ngo.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=\ngo.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=\ngo.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=\ngo.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU=\ngo.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=\ngo.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY=\ngo.lsp.dev/jsonrpc2 v0.10.0 h1:Pr/YcXJoEOTMc/b6OTmcR1DPJ3mSWl/SWiU1Cct6VmI=\ngo.lsp.dev/jsonrpc2 v0.10.0/go.mod h1:fmEzIdXPi/rf6d4uFcayi8HpFP1nBF99ERP1htC72Ac=\ngo.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 h1:hCzQgh6UcwbKgNSRurYWSqh8MufqRRPODRBblutn4TE=\ngo.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2/go.mod h1:gtSHRuYfbCT0qnbLnovpie/WEmqyJ7T4n6VXiFMBtcw=\ngo.lsp.dev/protocol v0.12.0 h1:tNprUI9klQW5FAFVM4Sa+AbPFuVQByWhP1ttNUAjIWg=\ngo.lsp.dev/protocol v0.12.0/go.mod h1:Qb11/HgZQ72qQbeyPfJbu3hZBH23s1sr4st8czGeDMQ=\ngo.lsp.dev/uri v0.3.0 h1:KcZJmh6nFIBeJzTugn5JTU6OOyG0lDOo3R9KwTxTYbo=\ngo.lsp.dev/uri v0.3.0/go.mod h1:P5sbO1IQR+qySTWOCnhnK7phBx+W3zbLqSMDJNTw88I=\ngo.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o=\ngo.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=\ngo.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=\ngo.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=\ngo.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=\ngo.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0=\ngo.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=\ngo.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=\ngo.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=\ngo.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=\ngo.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=\ngo.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=\ngo.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=\ngo.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=\ngo.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=\ngo.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=\ngo.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=\ngo.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE=\ngo.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0=\ngo.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=\ngo.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=\ngo.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=\ngo.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=\ngo.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=\ngo.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=\ngo.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=\ngo.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=\ngo.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=\ngo.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=\ngo.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=\ngo.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=\ngo.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=\ngo.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=\ngo.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=\ngo.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=\ngo.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=\ngo.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=\ngo.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=\ngo.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=\ngo.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=\ngo.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=\ngo.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=\ngo.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=\ngo.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=\ngo.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/arch v0.21.0 h1:iTC9o7+wP6cPWpDWkivCvQFGAHDQ59SrSxsLPcnkArw=\ngolang.org/x/arch v0.21.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=\ngolang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=\ngolang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=\ngolang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=\ngolang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=\ngolang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=\ngolang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=\ngolang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=\ngolang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=\ngolang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=\ngolang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=\ngolang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=\ngolang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=\ngolang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=\ngolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=\ngolang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=\ngolang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=\ngolang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=\ngolang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=\ngolang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8=\ngolang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=\ngolang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=\ngolang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=\ngolang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=\ngolang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=\ngolang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=\ngolang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=\ngolang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=\ngolang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=\ngolang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=\ngolang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=\ngolang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=\ngolang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=\ngolang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=\ngolang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=\ngolang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=\ngolang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=\ngolang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=\ngolang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=\ngolang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=\ngolang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=\ngolang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=\ngolang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=\ngolang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=\ngolang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=\ngolang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=\ngolang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=\ngolang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=\ngolang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=\ngolang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=\ngolang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=\ngolang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=\ngolang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=\ngolang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=\ngolang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=\ngolang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=\ngolang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=\ngolang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=\ngolang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY=\ngolang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=\ngolang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=\ngolang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=\ngolang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=\ngolang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=\ngolang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=\ngolang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220406163625-3f8b81556e12/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=\ngolang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=\ngolang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU=\ngolang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE=\ngolang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=\ngolang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=\ngolang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=\ngolang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=\ngolang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=\ngolang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=\ngolang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=\ngolang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=\ngolang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=\ngolang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=\ngolang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=\ngolang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=\ngolang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=\ngolang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=\ngolang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=\ngolang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=\ngolang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=\ngolang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=\ngolang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=\ngolang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190228203856-589c23e65e65/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=\ngolang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=\ngolang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=\ngolang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=\ngolang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=\ngolang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=\ngolang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=\ngolang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=\ngolang.org/x/tools v0.1.11-0.20220513221640-090b14e8501f/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=\ngolang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=\ngolang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=\ngolang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=\ngolang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=\ngolang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=\ngolang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=\ngolang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=\ngolang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=\ngolang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=\ngolang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=\ngolang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=\ngolang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=\ngolang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=\ngolang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=\ngolang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=\ngonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=\ngonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=\ngonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=\ngonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=\ngonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY=\ngonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo=\ngoogle.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=\ngoogle.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=\ngoogle.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=\ngoogle.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=\ngoogle.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=\ngoogle.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=\ngoogle.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU=\ngoogle.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=\ngoogle.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=\ngoogle.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=\ngoogle.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=\ngoogle.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=\ngoogle.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=\ngoogle.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=\ngoogle.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=\ngoogle.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=\ngoogle.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=\ngoogle.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=\ngoogle.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko=\ngoogle.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=\ngoogle.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=\ngoogle.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=\ngoogle.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=\ngoogle.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI=\ngoogle.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=\ngoogle.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=\ngoogle.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=\ngoogle.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08=\ngoogle.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=\ngoogle.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo=\ngoogle.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0=\ngoogle.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=\ngoogle.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=\ngoogle.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=\ngoogle.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI=\ngoogle.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0=\ngoogle.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg=\ngoogle.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=\ngoogle.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=\ngoogle.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=\ngoogle.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=\ngoogle.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=\ngoogle.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=\ngoogle.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=\ngoogle.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=\ngoogle.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=\ngoogle.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=\ngoogle.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=\ngoogle.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=\ngoogle.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=\ngoogle.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=\ngoogle.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=\ngoogle.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=\ngoogle.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=\ngoogle.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=\ngoogle.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=\ngoogle.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=\ngoogle.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=\ngoogle.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=\ngoogle.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE=\ngoogle.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=\ngoogle.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=\ngoogle.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=\ngoogle.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=\ngoogle.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=\ngoogle.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=\ngoogle.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=\ngoogle.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=\ngoogle.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=\ngoogle.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=\ngoogle.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=\ngoogle.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=\ngoogle.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=\ngoogle.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=\ngoogle.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=\ngoogle.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=\ngoogle.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=\ngoogle.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=\ngoogle.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=\ngoogle.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo=\ngoogle.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=\ngoogle.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE=\ngoogle.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=\ngoogle.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA=\ngoogle.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=\ngoogle.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=\ngoogle.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA=\ngoogle.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=\ngoogle.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=\ngoogle.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=\ngoogle.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=\ngoogle.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=\ngoogle.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=\ngoogle.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8=\ngoogle.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20251103181224-f26f9409b101 h1:vk5TfqZHNn0obhPIYeS+cxIFKFQgser/M2jnI+9c6MM=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20251103181224-f26f9409b101/go.mod h1:E17fc4PDhkr22dE3RgnH2hEubUaky6ZwW4VhANxyspg=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101 h1:tRPGkdGHuewF4UisLzzHHr1spKw92qLM98nIzxbC0wY=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=\ngoogle.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=\ngoogle.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=\ngoogle.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=\ngoogle.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=\ngoogle.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=\ngoogle.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=\ngoogle.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=\ngoogle.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=\ngoogle.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=\ngoogle.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=\ngoogle.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=\ngoogle.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=\ngoogle.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=\ngoogle.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=\ngoogle.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=\ngoogle.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=\ngoogle.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=\ngoogle.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=\ngoogle.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=\ngoogle.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngoogle.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngoogle.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngoogle.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\ngoogle.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=\ngoogle.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=\ngoogle.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=\ngopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=\ngopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=\ngopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=\ngopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=\ngopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=\ngopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=\ngopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=\ngopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=\ngopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=\ngotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=\ngotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A=\ngotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=\ngotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=\nhonnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=\nhonnef.co/go/tools v0.3.2/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw=\nhonnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs=\nhonnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0=\nk8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4=\nk8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=\nlukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=\nlukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=\nmodernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=\nmodernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=\nmodernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=\nmodernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc=\nmodernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw=\nmodernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=\nmodernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=\nmodernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws=\nmodernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo=\nmodernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=\nmodernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=\nmodernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=\nmodernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A=\nmodernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU=\nmodernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU=\nmodernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=\nmodernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0=\nmodernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s=\nmodernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=\nmodernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=\nmodernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=\nmodernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=\nmodernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=\nmodernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=\nmodernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=\nmodernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=\nmodernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4=\nmodernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=\nmodernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=\nmodernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw=\nmodernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=\nmodernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8=\nmvdan.cc/gofumpt v0.3.1/go.mod h1:w3ymliuxvzVx8DAutBnVyDqYb1Niy/yCJt/lk821YCE=\nmvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=\nmvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA=\nmvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=\nmvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=\nmvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5/go.mod h1:b8RRCBm0eeiWR8cfN88xeq2G5SG3VKGO+5UPWi5FSOY=\nmvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U=\nmvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ=\nnhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=\nnhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y=\nnhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=\npgregory.net/rapid v0.4.8/go.mod h1:Z5PbWqjvWR1I3UGjvboUuan4fe4ZYEYNLNQLExzCoUs=\npgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=\npgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=\npluginrpc.com/pluginrpc v0.5.0 h1:tOQj2D35hOmvHyPu8e7ohW2/QvAnEtKscy2IJYWQ2yo=\npluginrpc.com/pluginrpc v0.5.0/go.mod h1:UNWZ941hcVAoOZUn8YZsMmOZBzbUjQa3XMns8RQLp9o=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\nsigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=\nsigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=\nsigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=\nsigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=\nsourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=\n"
  },
  {
    "path": "manual/acp/cmd_auth.md",
    "content": "# Policy Command Authentication\n\nIn SourceHub, a Policy is defined alongside a set of relationships, which are used to derive authorization decisions for the Policy.\nRelationships in a Policy are mutate (created, deleted or updated) through a Policy Command.\nThe command is created and sent by the Policy end users (actors) directly (as opposed to an administrator as is often the case in Access Control systems).\n \nIn order to execute these commands, it's necessary to authenticate the entity sending them.\nAs it is the end user crafting said commands, actor authentication may be completely isolated from SourceHub and Tx authentcation. \n\nCurrently, there are 3 supported authentication schemes for Policy Commands: direct, signed command and Bearer.\n\n## Direct\nTODO\n\n## Signed\nTODO\n\n## Bearer\n\nBearer Authentication is done through a JWS.\nA JWS is a signed JSON object containing \"claims\", which contain data identifying the user.\n\nACP Bearer JWSs are different from commonly used JWS in that they are self signed (as opposed to generated by party A and used by party B).\nThe JWS MUST contain the following claims: `iss`, `exp`, `iat` and `authorized_account`, each claim will be detailed further on.\nAll the aforementioned claims MUST be present in the JWS.\n\n### Claims\n\nThe `exp` (expires) and `isa` (issued at) claims are used as defined in the JWT RFC, a Unix time stamp (ie seconds since the epoch).\n\nThe `iss` claim is as defined by the JWT RFC, it identifies the entity that issued the JWS through a string.\nThis string MUST be the DID of the Actor issuing the JWS.\nThe DID MUST resolve to a DID Document containing a Verification Method which is a Public Key.\nThis public key is used to validate the JWS signature.\n\nThe `authorized_account` claim MUST contain a valid SourceHub address (ie a bech32 encoded Cosmos Account with the `source` prefix).\nThe address specified in this claim is used to limit which account can use the Bearer JWS.\nA Policy Cmd is only accepted and processed if it is submitted in a Tx signed by the SAME account as the one set in the claim.\nThis is done to prevent malicious actors from extracting Bearer JWSs from the public ledger and impersonating an Actor.\n\nThe following is an example of a acceptable Bearer JWS payload:\n```json\n {\n    \"iss\": \"did:key:z6MkkHsQbp3tXECqmUJoCJwyuxSKn1BDF1RHzwDGg9tHbXKw\",\n    \"authorized_account\": \"source12frvft2an4sjrdlvjhjunq9m7j0ygaev05crmh\",\n    \"iat\": 1718814750,\n    \"exp\": 1718815650\n}\n```\n\n### JWS Signature and Serialization and Headers\n\nThe JWS MUST be signed by a private key whose public key is resolvable through the did specified in the `iss` claim.\n\nThe signed JWS MUST be serialized using the compact serialization format.\nBearer JWSs serialized following the JSON Serialization format will be rejected.\n\nAll JOSE Header specified in the Bearer JWS are ignored (eg `jku`, `jwk`, `kid`, `x5u`).\nThe key used during validation is the one resolved from the issuer did.\n\nThe following is an example of a valid Bearer JWS:\n\n```\neyJhbGciOiJFZERTQSJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtrSHNRYnAzdFhFQ3FtVUpvQ0p3eXV4U0tuMUJERjFSSHp3REdnOXRIYlhLdyIsImF1dGhvcml6ZWRfYWNjb3VudCI6InNvdXJjZTEyZnJ2ZnQyYW40c2pyZGx2amhqdW5xOW03ajB5Z2FldjA1Y3JtaCIsImlhdCI6MTcxODgxNDc1MCwiZXhwIjoxNzE4ODE1NjUwfQ.ZW0CLlDU2431FQrqNXxX-lI8aNnjTYPclj-QJVCc8Pqqs3vwqVxKPDSss9dTEcqLCrLxhlGr5kuIFblrhy8NDg\n```\n\n### Usage Recommendation\n\nA Bearer JWS allows the holder with the `authorized_account` to issue *any* Policy Commands on behalf of the issuer for the lifespan of the token.\nAs such, we recommend that SourceHub users use this method ONLY if they truly 100% trust the Account owner to act on their behalf.\n\nFurthermore, a short JWS validity (~15 mins) is still RECOMMENDED to minimize the risk if the `authorized_account` gets compromised.\n\n### Notes for SourceHub developers\n\nThe Bearer JWS uses the standard timestamping mechanisms defined in JWT (`iat` and `exp`) to ease user adoption.\nNote however that under no circumstance the validation must rely under the local time of the machine running sourcehub.\nThe `Block Time` (available through the sdk ctx) MUST be used as the reference time in the system.\nDue to clock skew, this is necessary to maintain the deterministic execution of the blockchain.\n"
  },
  {
    "path": "manual/acp/readme.md",
    "content": "# ACP Module Manual"
  },
  {
    "path": "manual/faucet.md",
    "content": "# Faucet\n\nThe SourceHub chain includes a faucet for requesting test funds.\n\n## Setup\n\nFaucet account is initialized as part of the main setup script:\n\n```bash\n./scripts/genesis-setup.sh\n```\n\nThe faucet account is created with 100m $OPEN using a mnemonic from `scripts/faucet-key.json`.\n\n## API Endpoints\n\n### Get Faucet Info\n```bash\ncurl http://localhost:1317/faucet/info\n```\n\nReturns faucet address, balance, and request count.\n\n### Request Funds\n```bash\ncurl -X POST http://localhost:1317/faucet/request \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"address\": \"source1...\"\n  }'\n```\n\nSends 1000000000uopen (i.e. 1,000 $OPEN) from the faucet to the specified address.\n\n### Initialize Account\n```bash\ncurl -X POST http://localhost:1317/faucet/init-account \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"address\": \"source1...\"\n  }'\n```\n\nInitializes an account in the auth module by sending 1 uopen. This ensures the account exists on-chain.\n\n### Grant Fee Allowance\n```bash\ncurl -X POST http://localhost:1317/faucet/grant-allowance \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"address\": \"source1...\",\n    \"amount_limit\": {\n      \"denom\": \"uopen\",\n      \"amount\": \"10000000000000\"\n    },\n    \"expiration\": \"2025-12-31T23:59:59Z\"\n  }'\n```\n\nGrants a fee allowance from the faucet account to the specified address. This allows the grantee to pay transaction fees using the granter's (e.g. faucet) account balance.\n\n**Notes:**\n- `amount_limit` is optional. If not provided, defaults to 10,000 OPEN (10000000000 uopen)\n- `expiration` is optional. If not provided, defaults to 30 days from now\n\n### Grant DID Fee Allowance\n```bash\ncurl -X POST http://localhost:1317/faucet/grant-did-allowance \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"did\": \"did:key:alice\",\n    \"amount_limit\": {\n      \"denom\": \"uopen\",\n      \"amount\": \"10000000000\"\n    },\n    \"expiration\": \"2025-12-31T23:59:59Z\"\n  }'\n```\n\nGrants a fee allowance from the faucet account to the specified DID. This allows transactions with JWS extensions containing the DID to pay transaction fees using the faucet's account balance.\n\n**Notes:**\n- `amount_limit` is optional. If not provided, defaults to 10,000 OPEN (10000000000 uopen)\n- `expiration` is optional. If not provided, defaults to 30 days from now\n\n**Response:**\n```json\n{\n  \"message\": \"DID fee allowance granted successfully\",\n  \"txhash\": \"A1B2C3...\",\n  \"granter\": \"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\",\n  \"grantee_did\": \"did:key:alice\",\n  \"amount_limit\": {\n    \"denom\": \"uopen\",\n    \"amount\": \"10000000000\"\n  },\n  \"expiration\": \"2025-12-31T23:59:59Z\"\n}\n```\n\n**Query DID allowance via CLI:**\n```bash\n# Query specific DID allowance\nbuild/sourcehubd q feegrant did-grant $(curl -s http://localhost:1317/faucet/info | jq -r '.address') did:key:alice\n\n# List all DID allowances by granter\nbuild/sourcehubd q feegrant did-grants-by-granter $(curl -s http://localhost:1317/faucet/info | jq -r '.address')\n```\n\n## Configuration\n\nThe faucet can be enabled/disabled in `app.toml`:\n\n```toml\n[faucet]\n# Defines if the faucet service should be enabled.\nenable_faucet = true\n```\n\nWhen disabled (`enable_faucet = false`), the faucet routes are not registered and endpoints return `Not Implemented`.\n\nThe faucet is disabled by default and must be explicitly enabled in configuration (or via `./scripts/genesis-setup.sh`) .\n\n## CLI Usage\n\nThe CLI faucet script (`./scripts/faucet.sh`) operates independently of the `enable_faucet` setting in `app.toml` and uses the `./scripts/faucet-key.json` directly.\n\n```bash\n# Send 1,000 $OPEN to an address\n./scripts/faucet.sh source1...\n# Send custom amount\n./scripts/faucet.sh source1... 5000000000uopen\n```\n\n## Security\n\n- For development and testing purposes only.\n- Uses mnemonic from `scripts/faucet-key.json` that is copied into node config directory (e.g. `$HOME/.sourcehub/config`).\n- `/faucet/request` is limited to one request of 1,000 $OPEN per address.\n- `./scripts/faucet.sh` is not limited and can be used to request arbitrary token amounts."
  },
  {
    "path": "manual/readme.md",
    "content": "# SourceHub Manual"
  },
  {
    "path": "proto/buf.gen.gogo.yaml",
    "content": "# This file is auto-generated from Ignite. You can edit\n# the file content but do not change the file name or path.\n#\n# buf.gen.gogo.yaml\n#\nversion: v1\nplugins:\n  - name: gocosmos\n    out: .\n    opt:\n      - plugins=grpc\n      - Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types\n      - Mcosmos/orm/v1/orm.proto=cosmossdk.io/orm\n      - Mgoogle/protobuf/timestamp.proto=github.com/cosmos/gogoproto/types\n      - Mgoogle/protobuf/duration.proto=github.com/cosmos/gogoproto/types\n  - name: grpc-gateway\n    out: .\n    opt:\n      - logtostderr=true"
  },
  {
    "path": "proto/buf.gen.pulsar.yaml",
    "content": "# This file is auto-generated from Ignite. You can edit\n# the file content but do not change the file name or path.\n#\n# buf.gen.pulsar.yaml\n#\nversion: v1\nmanaged:\n  enabled: true\n  go_package_prefix:\n    default: cosmossdk.io/api\n    except:\n      - buf.build/googleapis/googleapis\n      - buf.build/cosmos/gogo-proto\n      - buf.build/cosmos/cosmos-proto\n      - buf.build/sourcenetwork/acp-core\nplugins:\n  - name: go-pulsar\n    out: ./api\n    opt: \n    - paths=source_relative\n    - Msourcenetwork/acp_core/relationship.proto=github.com/sourcenetwork/acp_core/pkg/pulsar/types\n    - Msourcenetwork/acp_core/policy_short.proto=github.com/sourcenetwork/acp_core/pkg/pulsar/types\n    - Msourcenetwork/acp_core/policy.proto=github.com/sourcenetwork/acp_core/pkg/pulsar/types\n    - Msourcenetwork/acp_core/relationship_selector.proto=github.com/sourcenetwork/acp_core/pkg/pulsar/types\n    - Msourcenetwork/acp_core/request.proto=github.com/sourcenetwork/acp_core/pkg/pulsar/types\n\n  - name: go-grpc\n    out: ./api\n    opt: paths=source_relative\n"
  },
  {
    "path": "proto/buf.gen.sta.yaml",
    "content": "# This file is auto-generated from Ignite. You can edit\n# the file content but do not change the file name or path.\n#\n# buf.gen.sta.yaml\n#\nversion: v1\nplugins:\n  - name: openapiv2\n    out: .\n    opt:\n      - logtostderr=true\n      - openapi_naming_strategy=simple\n      - ignore_comments=true\n      - simple_operation_ids=false\n      - json_names_for_fields=false\n"
  },
  {
    "path": "proto/buf.gen.swagger.yaml",
    "content": "# This file is auto-generated from Ignite. You can edit\n# the file content but do not change the file name or path.\n#\n# buf.gen.swagger.yaml\n#\nversion: v1\nplugins:\n  - name: openapiv2\n    out: .\n    opt:\n      - logtostderr=true\n      - openapi_naming_strategy=fqn\n      - json_names_for_fields=false\n      - generate_unbound_methods=true"
  },
  {
    "path": "proto/buf.gen.ts.yaml",
    "content": "# This file is auto-generated from Ignite. You can edit\n# the file content but do not change the file name or path.\n#\n# buf.gen.ts.yaml\n#\nversion: v1\nmanaged:\n  enabled: true\nplugins:\n  - plugin: buf.build/community/stephenh-ts-proto\n    out: .\n    opt:\n      - logtostderr=true\n      - allow_merge=true\n      - json_names_for_fields=false\n      - ts_proto_opt=snakeToCamel=true\n      - ts_proto_opt=esModuleInterop=true\n      - ts_proto_out=.\n"
  },
  {
    "path": "proto/buf.yaml",
    "content": "breaking:\n  use:\n  - FILE\ndeps:\n- buf.build/protocolbuffers/wellknowntypes\n- buf.build/cosmos/cosmos-sdk\n- buf.build/cosmos/cosmos-proto\n- buf.build/cosmos/gogo-proto\n- buf.build/googleapis/googleapis\n- buf.build/cosmos/ics23\n- buf.build/cosmos/ibc\n- buf.build/sourcenetwork/acp-core\nlint:\n  except:\n  - UNARY_RPC\n  - COMMENT_FIELD\n  - SERVICE_SUFFIX\n  - PACKAGE_VERSION_SUFFIX\n  - RPC_REQUEST_STANDARD_NAME\n  ignore:\n  - tendermint\n  use:\n  - DEFAULT\n  - COMMENTS\n  - FILE_LOWER_SNAKE_CASE\nversion: v1\n"
  },
  {
    "path": "proto/osmosis/epochs/module/v1beta1/module.proto",
    "content": "syntax = \"proto3\";\npackage osmosis.epochs.module.v1beta1;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object for the module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {go_import: \"github.com/sourcenetwork/sourcehub/x/epochs\"};\n\n  // hooks_order specifies the order of epochs hooks and should be a list\n  // of module names which provide a epochs hooks instance. If no order is\n  // provided, then hooks will be applied in alphabetical order of module names.\n  repeated string hooks_order = 1;\n}\n"
  },
  {
    "path": "proto/osmosis/epochs/v1beta1/genesis.proto",
    "content": "syntax = \"proto3\";\npackage osmosis.epochs.v1beta1;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/epochs/types\";\n\n// EpochInfo is a struct that describes the data going into\n// a timer defined by the x/epochs module.\nmessage EpochInfo {\n  // identifier is a unique reference to this particular timer.\n  string identifier = 1;\n  // start_time is the time at which the timer first ever ticks.\n  // If start_time is in the future, the epoch will not begin until the start\n  // time.\n  google.protobuf.Timestamp start_time = 2 [\n    (gogoproto.stdtime) = true,\n    (gogoproto.nullable) = false,\n    (gogoproto.moretags) = \"yaml:\\\"start_time\\\"\"\n  ];\n  // duration is the time in between epoch ticks.\n  // In order for intended behavior to be met, duration should\n  // be greater than the chains expected block time.\n  // Duration must be non-zero.\n  google.protobuf.Duration duration = 3 [\n    (gogoproto.nullable) = false,\n    (gogoproto.stdduration) = true,\n    (gogoproto.jsontag) = \"duration,omitempty\",\n    (gogoproto.moretags) = \"yaml:\\\"duration\\\"\"\n  ];\n  // current_epoch is the current epoch number, or in other words,\n  // how many times has the timer 'ticked'.\n  // The first tick (current_epoch=1) is defined as\n  // the first block whose blocktime is greater than the EpochInfo start_time.\n  int64 current_epoch = 4;\n  // current_epoch_start_time describes the start time of the current timer\n  // interval. The interval is (current_epoch_start_time,\n  // current_epoch_start_time + duration] When the timer ticks, this is set to\n  // current_epoch_start_time = last_epoch_start_time + duration only one timer\n  // tick for a given identifier can occur per block.\n  //\n  // NOTE! The current_epoch_start_time may diverge significantly from the\n  // wall-clock time the epoch began at. Wall-clock time of epoch start may be\n  // >> current_epoch_start_time. Suppose current_epoch_start_time = 10,\n  // duration = 5. Suppose the chain goes offline at t=14, and comes back online\n  // at t=30, and produces blocks at every successive time. (t=31, 32, etc.)\n  // * The t=30 block will start the epoch for (10, 15]\n  // * The t=31 block will start the epoch for (15, 20]\n  // * The t=32 block will start the epoch for (20, 25]\n  // * The t=33 block will start the epoch for (25, 30]\n  // * The t=34 block will start the epoch for (30, 35]\n  // * The **t=36** block will start the epoch for (35, 40]\n  google.protobuf.Timestamp current_epoch_start_time = 5 [\n    (gogoproto.stdtime) = true,\n    (gogoproto.nullable) = false,\n    (gogoproto.moretags) = \"yaml:\\\"current_epoch_start_time\\\"\"\n  ];\n  // epoch_counting_started is a boolean, that indicates whether this\n  // epoch timer has began yet.\n  bool epoch_counting_started = 6;\n  reserved 7;\n  // current_epoch_start_height is the block height at which the current epoch\n  // started. (The block height at which the timer last ticked)\n  int64 current_epoch_start_height = 8;\n}\n\n// GenesisState defines the epochs module's genesis state.\nmessage GenesisState {\n  repeated EpochInfo epochs = 1 [(gogoproto.nullable) = false];\n}\n"
  },
  {
    "path": "proto/osmosis/epochs/v1beta1/query.proto",
    "content": "syntax = \"proto3\";\npackage osmosis.epochs.v1beta1;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/api/annotations.proto\";\nimport \"osmosis/epochs/v1beta1/genesis.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/epochs/types\";\n\n// Query defines the gRPC querier service.\nservice Query {\n  // EpochInfos provide running epochInfos\n  rpc EpochInfos(QueryEpochsInfoRequest) returns (QueryEpochsInfoResponse) {\n    option (google.api.http).get = \"/osmosis/epochs/v1beta1/epochs\";\n  }\n  // CurrentEpoch provide current epoch of specified identifier\n  rpc CurrentEpoch(QueryCurrentEpochRequest) returns (QueryCurrentEpochResponse) {\n    option (google.api.http).get = \"/osmosis/epochs/v1beta1/current_epoch\";\n  }\n}\n\nmessage QueryEpochsInfoRequest {}\nmessage QueryEpochsInfoResponse {\n  repeated EpochInfo epochs = 1 [(gogoproto.nullable) = false];\n}\n\nmessage QueryCurrentEpochRequest {\n  string identifier = 1;\n}\nmessage QueryCurrentEpochResponse {\n  int64 current_epoch = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/access_decision.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.acp;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/time.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\nimport \"sourcenetwork/acp_core/request.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// AccessDecision models the result of evaluating a set of AccessRequests for an Actor\nmessage AccessDecision {\n  string id = 1;\n\n  string policy_id = 2; // used as part of id generation\n\n  string creator = 3; // used as part of id generation\n\n  uint64 creator_acc_sequence = 4; // used as part of id generation\n\n  repeated sourcenetwork.acp_core.Operation operations = 5; // used as part of id generation\n\n  string actor = 6; // used as part of id generation\n\n  DecisionParams params = 7; // used as part of id generation\n\n  Timestamp creation_time = 8;\n\n  // issued_height stores the block height when the Decision was evaluated\n  uint64 issued_height = 9;\n}\n\n// DecisionParams stores auxiliary information regarding the validity of a decision\nmessage DecisionParams {\n  // number of blocks a Decision is valid for\n  uint64 decision_expiration_delta = 1;\n\n  // number of blocks a DecisionProof is valid for\n  uint64 proof_expiration_delta = 2;\n\n  // number of blocks an AccessTicket is valid for\n  uint64 ticket_expiration_delta = 3;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/access_ticket.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/access_decision.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// Represents a Capability token containing an opaque proof and a set of Operations\n// the Actor is allowed to perform.\n// Tickets should be verified by a Reference Monitor before granting access to the requested operations.\nmessage AccessTicket {\n  // identified the ticket version\n  string version_denominator = 1;\n\n  string decision_id = 2;\n\n  AccessDecision decision = 3;\n\n  // proof of existance that the given decision exists in the chain\n  // validation strategy is dependent on ticket version\n  bytes decision_proof = 4;\n\n  // application to which this ticket was issue to\n  //string audience = 4;\n\n  // timestamp\n\n  // signature of ticket which must match actor pkey in the access decision\n  bytes signature = 5;\n\n  // TODO could add metadata such as issued time stamp and so on\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/commitment.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcehub/acp/time.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// RegistrationProof models an opening proof for a RegistrationCommitment\nmessage RegistrationProof {\n  sourcenetwork.acp_core.Object object = 1;\n  // Hash of neighbors required to validate proof.\n  //\n  // Hashes must be ordered as a RFC6962 \"merkle audit path\"\n  // https://www.rfc-editor.org/rfc/rfc6962#section-2.1.1\n  repeated bytes merkle_proof = 2;\n  uint64 leaf_count = 3;\n  uint64 leaf_index = 4;\n}\n\n// RegistrationsCommitment models a batched cryptographic commitment\n// of a set of Object registrations issued by an Actor\nmessage RegistrationsCommitment {\n  uint64 id = 1;\n\n  string policy_id = 2;\n\n  // commitment is a merkle root of registrations\n  bytes commitment = 3;\n\n  bool expired = 4;\n\n  // validity models the duration for which the commitment is valid for\n  Duration validity = 5;\n\n  RecordMetadata metadata = 6;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/genesis.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/acp/params.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// GenesisState defines the acp module's genesis state.\nmessage GenesisState {\n  // params defines all the parameters of the module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/module/module.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.acp.module;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object for the module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {go_import: \"github.com/sourcenetwork/sourcehub/x/acp\"};\n\n  // authority defines the custom module authority. If not set, defaults to the governance module.\n  string authority = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/params.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/acp/time.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// Params defines the parameters for the module.\nmessage Params {\n  option (amino.name) = \"sourcehub/x/acp/Params\";\n\n  // policy_command_max_expiration_delta specifies a global thershold for how old a Command will be accepted for.\n  uint64 policy_command_max_expiration_delta = 1;\n\n  // registrations_commitment_validity specifies a duration for the lifetime of a commitment.\n  // Performing a RevealRegistration against an expired commitment causes a protocol error.\n  Duration registrations_commitment_validity = 2;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/policy_cmd.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/commitment.proto\";\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcehub/acp/registration.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// PolicyCmd models an operation to be performed against the context of a Policy\nmessage PolicyCmd {\n  oneof cmd {\n    SetRelationshipCmd set_relationship_cmd = 1;\n    DeleteRelationshipCmd delete_relationship_cmd = 2;\n    RegisterObjectCmd register_object_cmd = 3;\n    ArchiveObjectCmd archive_object_cmd = 4;\n    CommitRegistrationsCmd commit_registrations_cmd = 5;\n    RevealRegistrationCmd reveal_registration_cmd = 6;\n    FlagHijackAttemptCmd flag_hijack_attempt_cmd = 7;\n    UnarchiveObjectCmd unarchive_object_cmd = 8;\n  }\n}\n\n// SetRelationship creates or updates a Relationship within a Policy\n// A Relationship is a statement which ties together an object and a subjecto with a \"relation\",\n// which means the set of high level rules defined in the Policy will apply to these entities.\nmessage SetRelationshipCmd {\n  sourcenetwork.acp_core.Relationship relationship = 1;\n}\n\n// DelereRelationship removes a Relationship from a Policy.\n// If the Relationship was not found in a Policy, this Cmd is a no-op.\nmessage DeleteRelationshipCmd {\n  sourcenetwork.acp_core.Relationship relationship = 1;\n}\n\n// RegisterObject creates a special kind of Relationship within a Policy which ties\n// the msg's Actor as the owner of the msg's Object.\n// The Owner has complete control over the set of subjects that are related to their Object,\n// giving them autonomy to share the object and revoke acces to the object,\n// much like owners in a Discretionary Access Control model.\n//\n// Attempting to register a previously registered Object is an error,\n// Object IDs are therefore assumed to be unique within a Policy.\nmessage RegisterObjectCmd {\n  sourcenetwork.acp_core.Object object = 1;\n}\n\n// CommitRegistrationsCmd creates a new batched commitment to a set of Object registrations\nmessage CommitRegistrationsCmd {\n  bytes commitment = 1;\n}\n\nmessage CommitRegistrationsCmdResult {\n  RegistrationsCommitment registrations_commitment = 1;\n}\n\nmessage RevealRegistrationCmd {\n  uint64 registrations_commitment_id = 1;\n  RegistrationProof proof = 2;\n}\n\nmessage RevealRegistrationCmdResult {\n  RelationshipRecord record = 1;\n  AmendmentEvent event = 2;\n}\n\nmessage FlagHijackAttemptCmd {\n  uint64 event_id = 1;\n}\n\nmessage FlagHijackAttemptCmdResult {\n  AmendmentEvent event = 1;\n}\n\nmessage UnarchiveObjectCmd {\n  sourcenetwork.acp_core.Object object = 1;\n}\n\nmessage UnarchiveObjectCmdResult {\n  RelationshipRecord record = 1;\n  bool relationship_modified = 2;\n}\n\n// ArchiveObject let's an Object's Owner effectively \"unshare\" their Object.\n// This method wipes all Relationships referencing the given Object.\n//\n// A caveat is that after removing the Relationships, a record of the original Object owner\n// is maintained to prevent an \"ownership hijack\" attack.\n//\n// Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n// Eve wants to access Foo but was not given permission to, they could \"hijack\" Bob's object by waiting for Bob to Archive Foo,\n// then submitting a RegisterObject Msg, effectively becoming Foo's new owner.\n// If Charlie has a copy of the object, Eve could convince Charlie to share his copy, granting Eve access to Foo.\n// The previous scenario where an unauthorized user is able to claim ownership to data previously unaccessible to them\n// is an \"ownership hijack\".\nmessage ArchiveObjectCmd {\n  sourcenetwork.acp_core.Object object = 1;\n}\n\n// SetRelationshipCmd sets a Relationship in a Policy\nmessage SetRelationshipCmdResult {\n  // Indicates whether the given Relationship previously existed, ie the Tx was a no op\n  bool record_existed = 1;\n  RelationshipRecord record = 2;\n}\n\n// DeleteRelationshipCmdResult removes a Relationship in a Policy\nmessage DeleteRelationshipCmdResult {\n  bool record_found = 1;\n}\n\n// RegisterObjectCmdResult registers an Object in a Policy\nmessage RegisterObjectCmdResult {\n  RelationshipRecord record = 1;\n}\n\n// ArchiveObjectCmdResult unregisters an Object in a Policy\nmessage ArchiveObjectCmdResult {\n  bool found = 1;\n  uint64 relationships_removed = 2;\n}\n\nmessage PolicyCmdResult {\n  oneof result {\n    SetRelationshipCmdResult set_relationship_result = 1;\n    DeleteRelationshipCmdResult delete_relationship_result = 2;\n    RegisterObjectCmdResult register_object_result = 3;\n    ArchiveObjectCmdResult archive_object_result = 4;\n    CommitRegistrationsCmdResult commit_registrations_result = 5;\n    RevealRegistrationCmdResult reveal_registration_result = 6;\n    FlagHijackAttemptCmdResult flag_hijack_attempt_result = 7;\n    UnarchiveObjectCmdResult unarchive_object_result = 8;\n  }\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/query.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/base/query/v1beta1/pagination.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/api/annotations.proto\";\nimport \"sourcehub/acp/access_decision.proto\";\nimport \"sourcehub/acp/commitment.proto\";\nimport \"sourcehub/acp/params.proto\";\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcehub/acp/registration.proto\";\nimport \"sourcenetwork/acp_core/policy.proto\";\nimport \"sourcenetwork/acp_core/policy_short.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\nimport \"sourcenetwork/acp_core/relationship_selector.proto\";\nimport \"sourcenetwork/acp_core/request.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// Query defines the gRPC querier service.\nservice Query {\n  // Parameters queries the parameters of the module.\n  rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/params\";\n  }\n\n  // Policy returns a Policy with the given ID.\n  rpc Policy(QueryPolicyRequest) returns (QueryPolicyResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/policy/{id}\";\n  }\n\n  // PolicyIds returns list of Ids for Policies registered in the system.\n  rpc PolicyIds(QueryPolicyIdsRequest) returns (QueryPolicyIdsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/policy_ids\";\n  }\n\n  // FilterRelationships returns filtered set of Relationships in a Policy.\n  rpc FilterRelationships(QueryFilterRelationshipsRequest) returns (QueryFilterRelationshipsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/filter_relationships/{policy_id}\";\n  }\n\n  // VerifyAccessRequest verifies whether an Access Request is accepted with respect to the given Policy's Relation Graph.\n  rpc VerifyAccessRequest(QueryVerifyAccessRequestRequest) returns (QueryVerifyAccessRequestResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/verify_access_request/{policy_id}\";\n  }\n\n  // ValidatePolicy verifies whether the given Policy definition is properly formatted\n  rpc ValidatePolicy(QueryValidatePolicyRequest) returns (QueryValidatePolicyResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/validate_policy/{policy}\";\n  }\n\n  // AccessDecision queries the system for an AccessDecision with the given ID.\n  rpc AccessDecision(QueryAccessDecisionRequest) returns (QueryAccessDecisionResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/access_decision/{id}\";\n  }\n\n  // ObjectOwner returns the Actor ID of the the given Object's owner\n  rpc ObjectOwner(QueryObjectOwnerRequest) returns (QueryObjectOwnerResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/object_owner/{policy_id}/{object.resource}/{object.id}\";\n  }\n\n  // RegistrationsCommitment returns a specific RegistrationsCommitment record\n  rpc RegistrationsCommitment(QueryRegistrationsCommitmentRequest) returns (QueryRegistrationsCommitmentResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/registrations_commitment\";\n  }\n\n  // RegistrationsCommitmentByCommitment returns all RegistrationCommitment records with a given commitment\n  rpc RegistrationsCommitmentByCommitment(QueryRegistrationsCommitmentByCommitmentRequest) returns (QueryRegistrationsCommitmentByCommitmentResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/registrations_commitment_by_commitment\";\n  }\n\n  // GenerateCommitment generates a Object registration commitment for the given objects\n  //\n  // Note: this operation assures the commitment is valid (no object is registered and the policy exists)\n  // but exposes the Object Ids to the RPC node.\n  // ONLY use this method if the node is trusted\n  rpc GenerateCommitment(QueryGenerateCommitmentRequest) returns (QueryGenerateCommitmentResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/generate_commitment\";\n  }\n\n  // HijackAttemptsByPolicy returns, for a given policy, all AmendmentEvent whose hijack flag is true\n  rpc HijackAttemptsByPolicy(QueryHijackAttemptsByPolicyRequest) returns (QueryHijackAttemptsByPolicyResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/acp/hijack_attempts_by_policy\";\n  }\n}\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\nmessage QueryParamsRequest {}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\nmessage QueryParamsResponse {\n  // params holds all the parameters of this module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\nmessage QueryPolicyRequest {\n  string id = 1;\n}\n\nmessage QueryPolicyResponse {\n  PolicyRecord record = 1;\n}\n\nmessage QueryPolicyIdsRequest {\n  cosmos.base.query.v1beta1.PageRequest pagination = 1;\n}\n\nmessage QueryPolicyIdsResponse {\n  repeated string ids = 1;\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\nmessage QueryFilterRelationshipsRequest {\n  string policy_id = 1;\n  sourcenetwork.acp_core.RelationshipSelector selector = 2;\n}\n\nmessage QueryFilterRelationshipsResponse {\n  repeated RelationshipRecord records = 1;\n}\n\nmessage QueryVerifyAccessRequestRequest {\n  string policy_id = 1;\n  sourcenetwork.acp_core.AccessRequest access_request = 2;\n}\n\nmessage QueryVerifyAccessRequestResponse {\n  bool valid = 1;\n}\n\nmessage QueryValidatePolicyRequest {\n  string policy = 1;\n  sourcenetwork.acp_core.PolicyMarshalingType marshal_type = 3;\n}\n\nmessage QueryValidatePolicyResponse {\n  bool valid = 1;\n  string error_msg = 2;\n  sourcenetwork.acp_core.Policy policy = 3;\n}\n\nmessage QueryAccessDecisionRequest {\n  string id = 1;\n}\n\nmessage QueryAccessDecisionResponse {\n  AccessDecision decision = 1;\n}\n\nmessage QueryObjectOwnerRequest {\n  string policy_id = 1;\n  sourcenetwork.acp_core.Object object = 2;\n}\n\nmessage QueryObjectOwnerResponse {\n  bool is_registered = 1;\n  RelationshipRecord record = 2;\n}\n\nmessage QueryRegistrationsCommitmentRequest {\n  uint64 id = 1;\n}\n\nmessage QueryRegistrationsCommitmentResponse {\n  RegistrationsCommitment registrations_commitment = 1;\n}\n\nmessage QueryRegistrationsCommitmentByCommitmentRequest {\n  bytes commitment = 1;\n}\n\nmessage QueryRegistrationsCommitmentByCommitmentResponse {\n  repeated RegistrationsCommitment registrations_commitments = 1;\n}\n\nmessage QueryGenerateCommitmentRequest {\n  string policy_id = 1;\n  repeated sourcenetwork.acp_core.Object objects = 2;\n  sourcenetwork.acp_core.Actor actor = 3;\n}\n\nmessage QueryGenerateCommitmentResponse {\n  bytes commitment = 1;\n  string hex_commitment = 2;\n  repeated RegistrationProof proofs = 3;\n  repeated string proofs_json = 4;\n}\n\nmessage QueryHijackAttemptsByPolicyRequest {\n  string policy_id = 1;\n}\n\nmessage QueryHijackAttemptsByPolicyResponse {\n  repeated AmendmentEvent events = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/record.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/access_decision.proto\";\nimport \"sourcehub/acp/time.proto\";\nimport \"sourcenetwork/acp_core/policy.proto\";\nimport \"sourcenetwork/acp_core/policy_short.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// RecordMetadata models metadata which is stored alongside acp records\nmessage RecordMetadata {\n  // creation_ts is the timestamp of record creation\n  Timestamp creation_ts = 1;\n  // tx_hash is the hash256 of the tx bytes which produced the record\n  bytes tx_hash = 2;\n  // tx_signer is the SourceHub bech32 address of the account that signed the Tx\n  string tx_signer = 3;\n  // owner_did is the DID of the PolicyCmd actor\n  string owner_did = 4;\n}\n\nmessage PolicyRecord {\n  sourcenetwork.acp_core.Policy policy = 1;\n  RecordMetadata metadata = 2;\n  string raw_policy = 3;\n  // marshal_type flags the format of policy_raw\n  sourcenetwork.acp_core.PolicyMarshalingType marshal_type = 4;\n}\n\nmessage RelationshipRecord {\n  string policy_id = 1;\n  sourcenetwork.acp_core.Relationship relationship = 2;\n  bool archived = 3;\n  RecordMetadata metadata = 4;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/registration.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcehub/acp/time.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// AmendmentEvent is a record which tracks executions of the Registration Amendment rule in SourceHub ACP\nmessage AmendmentEvent {\n  // event id\n  uint64 id = 1;\n  // id of affected policy\n  string policy_id = 2;\n  // object whose registration was amended\n  sourcenetwork.acp_core.Object object = 3;\n  // new_owner is the new object owner\n  sourcenetwork.acp_core.Actor new_owner = 4;\n  // previous_owner is the previous object owner\n  sourcenetwork.acp_core.Actor previous_owner = 5;\n  // commitment_id is the id of the commitment which generated the amendment\n  uint64 commitment_id = 6;\n  // hijack_flag is true if the amendment rule was executed and the new_owner chose to flag\n  // the previous_owner as a potential object hijacker\n  bool hijack_flag = 7;\n  RecordMetadata metadata = 8;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/signed_policy_cmd.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/commitment.proto\";\nimport \"sourcehub/acp/policy_cmd.proto\";\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcehub/acp/registration.proto\";\nimport \"sourcenetwork/acp_core/relationship.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// SignedPolicyCmd represents a Command issued by an Actor in the context of a Policy\n// The command represents an instruction to be executed\n// The message type contains a signature which is used to authenticate the Command's Actor\nmessage SignedPolicyCmd {\n  // payload contains the command context\n  SignedPolicyCmdPayload payload = 1;\n\n  // signature is a signature of the payload.\n  // The signature is generated using the VerificationMethod / Authorization fields\n  // specificied by the DID document of the Actor.\n  bytes signature = 2;\n}\n\n// SignedPolicyCmdPayload represents the payload containing the context of the issued command\nmessage SignedPolicyCmdPayload {\n  // actor is a did string representing the actor which issued the command\n  string actor = 1;\n\n  // issued_height is the SourceHub block height of when the Payload was created\n  uint64 issued_height = 2;\n\n  // issued_at contains a client generated timestamp for the creation of the command.\n  // This is used only as metadata and isn't trusted\n  google.protobuf.Timestamp issued_at = 3;\n\n  // expiration_delta specifies the maximum number of blocks from the issued height during which the Command Payload will be accepted.\n  // This field is mandatory and is used to prevent replay attacks\n  uint64 expiration_delta = 4;\n\n  // policy_id is the ID of the policy under which the Command will be executed\n  string policy_id = 5;\n\n  PolicyCmd cmd = 6;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/time.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// Duration models a time interval expressed either as a wallclock\n// Duration interval or a number of blocks\nmessage Duration {\n  oneof duration {\n    google.protobuf.Duration proto_duration = 1 [(amino.oneof_name) = \"proto_duration\"];\n    uint64 block_count = 2 [(amino.oneof_name) = \"block_count\"];\n  }\n}\n\n// Timestamp models an instant in time expressed as a wallclock\n// Timestamp and a block height\nmessage Timestamp {\n  google.protobuf.Timestamp proto_ts = 1;\n  uint64 block_height = 2;\n}\n"
  },
  {
    "path": "proto/sourcehub/acp/tx.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.acp;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/acp/access_decision.proto\";\nimport \"sourcehub/acp/params.proto\";\nimport \"sourcehub/acp/policy_cmd.proto\";\nimport \"sourcehub/acp/record.proto\";\nimport \"sourcenetwork/acp_core/policy.proto\";\nimport \"sourcenetwork/acp_core/policy_short.proto\";\nimport \"sourcenetwork/acp_core/request.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/acp/types\";\n\n// Msg defines the Msg service.\nservice Msg {\n  option (cosmos.msg.v1.service) = true;\n\n  // UpdateParams defines a (governance) operation for updating the module\n  // parameters. The authority defaults to the x/gov module account.\n  rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);\n\n  // CreatePolicy adds a new Policy to SourceHub.\n  // The Policy models an aplication's high level access control rules.\n  rpc CreatePolicy(MsgCreatePolicy) returns (MsgCreatePolicyResponse);\n\n  // EditPolicy mutates the rules defined by a Policy.\n  //\n  // Relations may be added and removed to resources (if they are not required),\n  // new resources may be added, but resources may not be removed.\n  //\n  // Removing a relation removes all relationships that reference the removed relation\n  //\n  // A few other invariants are enforced such as:\n  // - the name of the actor resource may not be mutated\n  // - resources cannot be removed\n  // - the specification of a policy cannot be mutated\n  // Violations of these constraints will return an error.\n  rpc EditPolicy(MsgEditPolicy) returns (MsgEditPolicyResponse);\n\n  // CheckAccess executes an Access Request for an User and stores the result of the evaluation in SourceHub.\n  // The resulting evaluation is used to generate a cryptographic proof that the given Access Request\n  // was valid at a particular block height.\n  rpc CheckAccess(MsgCheckAccess) returns (MsgCheckAccessResponse);\n\n  // SignedPolicyCmd is a wrapper for a Command which is executed within the Context of a Policy.\n  // The Command is signed by the Actor issuing it.\n  rpc SignedPolicyCmd(MsgSignedPolicyCmd) returns (MsgSignedPolicyCmdResponse);\n\n  // BearerPolicyCmd is a Msg containing an instruction which changes the authorization\n  // rules in a Policy.\n  // This Msg authenticates the actor through the the Bearer authentication protocol.\n\n  // The Msg authenticates the actor initiating the command through a Bearer token.\n  // This token MUST be issued and signed by some DID Actor, the verification of the signature\n  // is used as authentication proof.\n  // Lastly, the Bearer token MUST be bound to some SourceHub account.\n  rpc BearerPolicyCmd(MsgBearerPolicyCmd) returns (MsgBearerPolicyCmdResponse);\n  rpc DirectPolicyCmd(MsgDirectPolicyCmd) returns (MsgDirectPolicyCmdResponse);\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\nmessage MsgUpdateParams {\n  option (cosmos.msg.v1.signer) = \"authority\";\n  option (amino.name) = \"sourcehub/x/acp/MsgUpdateParams\";\n\n  // authority is the address that controls the module (defaults to x/gov unless overwritten).\n  string authority = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // params defines the module parameters to update.\n\n  // NOTE: All parameters must be supplied.\n  Params params = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\nmessage MsgUpdateParamsResponse {}\n\nmessage MsgCreatePolicy {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string policy = 2;\n  sourcenetwork.acp_core.PolicyMarshalingType marshal_type = 3;\n}\n\nmessage MsgCreatePolicyResponse {\n  PolicyRecord record = 1;\n}\n\nmessage MsgEditPolicy {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string policy_id = 2;\n  string policy = 3;\n  sourcenetwork.acp_core.PolicyMarshalingType marshal_type = 4;\n}\n\nmessage MsgEditPolicyResponse {\n  uint64 relationships_removed = 1;\n  PolicyRecord record = 2;\n}\n\nmessage MsgCheckAccess {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string policy_id = 2;\n  sourcenetwork.acp_core.AccessRequest access_request = 3;\n}\n\nmessage MsgCheckAccessResponse {\n  AccessDecision decision = 1;\n}\n\nmessage MsgSignedPolicyCmd {\n  enum ContentType {\n    UNKNOWN = 0;\n    JWS = 1;\n  }\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string payload = 2;\n  ContentType type = 3;\n}\n\nmessage MsgSignedPolicyCmdResponse {\n  PolicyCmdResult result = 1;\n}\n\nmessage MsgBearerPolicyCmd {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string bearer_token = 2;\n  string policy_id = 3;\n  PolicyCmd cmd = 4;\n}\n\nmessage MsgBearerPolicyCmdResponse {\n  PolicyCmdResult result = 1;\n}\n\nmessage MsgDirectPolicyCmd {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string policy_id = 2;\n  PolicyCmd cmd = 3;\n}\n\nmessage MsgDirectPolicyCmdResponse {\n  PolicyCmdResult result = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/ante/jws_extension.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.ante;\n\nimport \"gogoproto/gogo.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/app/ante/types\";\n\n// JWSExtensionOption represents a transaction extension option with a bearer token.\n// The bearer token is a JWS containing issuer DID, authorized account, issued at, and expiration time claims.\nmessage JWSExtensionOption {\n  option (gogoproto.equal) = false;\n  option (gogoproto.goproto_getters) = false;\n\n  string bearer_token = 1 [(gogoproto.moretags) = \"yaml:\\\"bearer_token\\\"\"];\n}"
  },
  {
    "path": "proto/sourcehub/bulletin/collaborator.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin;\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Collaborator represents an actor with collaborator permissions in a namespace.\nmessage Collaborator {\n  string address = 1;\n  string did = 2;\n  string namespace = 3;\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/events.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.bulletin;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// EventNamespaceRegistered is emitted when a namespace is registered.\nmessage EventNamespaceRegistered {\n  // namespace_id is the unique identifier of the namespace.\n  string namespace_id = 1;\n  // owner_did is the DID of the namespace owner.\n  string owner_did = 2;\n  // created_at is the timestamp when the namespace was created.\n  google.protobuf.Timestamp created_at = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];\n}\n\n// EventPostCreated is emitted when a post is created.\nmessage EventPostCreated {\n  // namespace_id is the namespace the post belongs to.\n  string namespace_id = 1;\n  // post_id is the unique identifier of the post.\n  string post_id = 2;\n  // creator_did is the DID of the post creator.\n  string creator_did = 3;\n  // payload is the base64-encoded content of the post.\n  string payload = 4;\n  // artifact is sent with a post call for tracking purposes \n  string artifact = 5;\n}\n\n// EventCollaboratorAdded is emitted when a collaborator is added to a namespace.\nmessage EventCollaboratorAdded {\n  // namespace_id is the namespace the collaborator was added to.\n  string namespace_id = 1;\n  // collaborator_did is the DID of the collaborator.\n  string collaborator_did = 2;\n  // added_by is the DID of the user who added the collaborator.\n  string added_by = 3;\n}\n\n// EventCollaboratorRemoved is emitted when a collaborator is removed from a namespace.\nmessage EventCollaboratorRemoved {\n  // namespace_id is the namespace the collaborator was removed from.\n  string namespace_id = 1;\n  // collaborator_did is the DID of the collaborator.\n  string collaborator_did = 2;\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/genesis.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/bulletin/params.proto\";\nimport \"sourcehub/bulletin/namespace.proto\";\nimport \"sourcehub/bulletin/collaborator.proto\";\nimport \"sourcehub/bulletin/post.proto\";\n\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// GenesisState defines the bulletin module's genesis state.\nmessage GenesisState {\n  // params defines all the parameters of the module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  string policy_id = 2;\n  repeated Namespace namespaces = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated Collaborator collaborators = 4 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated Post posts = 5 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/module/module.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin.module;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object for the module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {go_import: \"github.com/sourcenetwork/sourcehub/x/bulletin\"};\n\n  // authority defines the custom module authority. If not set, defaults to the governance module.\n  string authority = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/namespace.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/bulletin/post.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Namespace represents a logical bulletin space used to group posts.\nmessage Namespace {\n  string id = 1;\n  string creator = 2;\n  string owner_did = 3;\n  google.protobuf.Timestamp created_at = 4 [\n    (gogoproto.nullable) = false,\n    (gogoproto.stdtime) = true\n  ];\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/params.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Params defines the parameters for the module.\nmessage Params {\n  option (amino.name) = \"sourcehub/x/bulletin/Params\";\n  option (gogoproto.equal) = true;\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/post.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.bulletin;\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Post represents a bulletin entry created within a specific namespace.\nmessage Post {\n  string id = 1;\n  string namespace = 2;\n  string creator_did = 3;\n  bytes payload = 4;\n}\n"
  },
  {
    "path": "proto/sourcehub/bulletin/query.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.bulletin;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/base/query/v1beta1/pagination.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/api/annotations.proto\";\nimport \"sourcehub/bulletin/params.proto\";\nimport \"sourcehub/bulletin/namespace.proto\";\nimport \"sourcehub/bulletin/collaborator.proto\";\nimport \"sourcehub/bulletin/post.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Query defines the gRPC querier service.\nservice Query {\n  // Parameters queries the parameters of the module.\n  rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/params\";\n  }\n  // Queries a namespace based on the specified namespace id.\n  rpc Namespace(QueryNamespaceRequest) returns (QueryNamespaceResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/namespace/{namespace}\";\n  }\n  // Queries all namespaces.\n  rpc Namespaces(QueryNamespacesRequest) returns (QueryNamespacesResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/namespaces\";\n  }\n  // Queries all namespace collaborators.\n  rpc NamespaceCollaborators(QueryNamespaceCollaboratorsRequest) returns (QueryNamespaceCollaboratorsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/collaborators/{namespace}\";\n  }\n  // Queries all namespace posts.\n  rpc NamespacePosts(QueryNamespacePostsRequest) returns (QueryNamespacePostsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/posts/{namespace}\";\n  }\n  // Queries a post based on the specified namespace and post id.\n  rpc Post(QueryPostRequest) returns (QueryPostResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/post/{namespace}/{id}\";\n  }\n  // Queries all posts.\n  rpc Posts(QueryPostsRequest) returns (QueryPostsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/posts\";\n  }\n\n  // Glob iteration over a namespace\n  rpc IterateGlob(QueryIterateGlobRequest) returns (QueryIterateGlobResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/iterate_glob\";\n  }\n\n  // Queries the bulletin module policy id.\n  rpc BulletinPolicyId(QueryBulletinPolicyIdRequest) returns (QueryBulletinPolicyIdResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/bulletin/policy_id\";\n  }\n}\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\nmessage QueryParamsRequest {}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\nmessage QueryParamsResponse {\n  // params holds all the parameters of this module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\nmessage QueryNamespaceRequest {\n  string namespace = 1;\n}\n\nmessage QueryNamespaceResponse {\n  Namespace namespace = 1;\n}\n\nmessage QueryNamespacesRequest {\n  cosmos.base.query.v1beta1.PageRequest pagination = 1;\n}\n\nmessage QueryNamespacesResponse {\n  repeated Namespace namespaces = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\nmessage QueryNamespaceCollaboratorsRequest {\n  string namespace = 1;\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\nmessage QueryNamespaceCollaboratorsResponse {\n  repeated Collaborator collaborators = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\nmessage QueryNamespacePostsRequest {\n  string namespace = 1;\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\nmessage QueryNamespacePostsResponse {\n  repeated Post posts = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\nmessage QueryPostRequest {\n  string namespace = 1;\n  string id = 2;\n}\n\nmessage QueryPostResponse {\n  Post post = 1;\n}\n\nmessage QueryPostsRequest {\n  cosmos.base.query.v1beta1.PageRequest pagination = 1;\n}\n\nmessage QueryPostsResponse {\n  repeated Post posts = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// QueryBulletinPolicyIdRequest is request type for the Query/BulletinPolicyId RPC method.\nmessage QueryBulletinPolicyIdRequest {}\n\n// QueryBulletinPolicyIdResponse is response type for the Query/BulletinPolicyId RPC method.\nmessage QueryBulletinPolicyIdResponse {\n  string policy_id = 1;\n}\n\n// QueryIterateGlobRequest\nmessage QueryIterateGlobRequest {\n  string namespace = 1;\n  string glob = 2;\n  // pagination defines an optional pagination for the request.\n  cosmos.base.query.v1beta1.PageRequest pagination = 3;\n}\n\n// QueryIterateGlobResponse\nmessage QueryIterateGlobResponse {\n  repeated Post posts = 1;\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}"
  },
  {
    "path": "proto/sourcehub/bulletin/tx.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.bulletin;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/bulletin/params.proto\";\nimport \"sourcehub/bulletin/namespace.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/bulletin/types\";\n\n// Msg defines the Msg service.\nservice Msg {\n  option (cosmos.msg.v1.service) = true;\n\n  // UpdateParams defines a (governance) operation for updating the module\n  // parameters. The authority defaults to the x/gov module account.\n  rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);\n  rpc CreatePost(MsgCreatePost) returns (MsgCreatePostResponse);\n  rpc RegisterNamespace(MsgRegisterNamespace) returns (MsgRegisterNamespaceResponse);\n  rpc AddCollaborator(MsgAddCollaborator) returns (MsgAddCollaboratorResponse);\n  rpc RemoveCollaborator(MsgRemoveCollaborator) returns (MsgRemoveCollaboratorResponse);\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\nmessage MsgUpdateParams {\n  option (cosmos.msg.v1.signer) = \"authority\";\n  option (amino.name) = \"sourcehub/x/bulletin/MsgUpdateParams\";\n\n  // authority is the address that controls the module (defaults to x/gov unless overwritten).\n  string authority = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // params defines the module parameters to update.\n\n  // NOTE: All parameters must be supplied.\n  Params params = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\nmessage MsgUpdateParamsResponse {}\n\nmessage MsgCreatePost {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string namespace = 2;\n  bytes payload = 3;\n  string artifact = 5;\n}\n\nmessage MsgCreatePostResponse {}\n\nmessage MsgRegisterNamespace {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string namespace = 2;\n}\n\nmessage MsgRegisterNamespaceResponse {\n  Namespace namespace = 1;\n}\n\nmessage MsgAddCollaborator {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string namespace = 2;\n  string collaborator = 3;\n}\n\nmessage MsgAddCollaboratorResponse {\n  string collaborator_did = 1;\n}\n\nmessage MsgRemoveCollaborator {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  string creator = 1;\n  string namespace = 2;\n  string collaborator = 3;\n}\n\nmessage MsgRemoveCollaboratorResponse {\n  string collaborator_did = 1;\n}"
  },
  {
    "path": "proto/sourcehub/faucet/faucet.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.faucet;\n\nimport \"amino/amino.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"cosmos/base/v1beta1/coin.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/app/faucet/types\";\n\n// FaucetRequestRecord represents a faucet request record stored internally.\nmessage FaucetRequestRecord {\n  string address = 1;\n  cosmos.base.v1beta1.Coin amount = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  string tx_hash = 3;\n}\n\n// FaucetRequest represents a request to get funds from the faucet.\nmessage FaucetRequest {\n  string address = 1;\n}\n\n// FaucetResponse represents the response from a faucet request.\nmessage FaucetResponse {\n  string txhash = 1;\n  uint32 code = 2;\n  string raw_log = 3;\n  string address = 4;\n  cosmos.base.v1beta1.Coin amount = 5 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// InitAccountRequest represents a request to initialize an account.\nmessage InitAccountRequest {\n  string address = 1;\n}\n\n// InitAccountResponse represents the response from an account initialization request.\nmessage InitAccountResponse {\n  string message = 1;\n  string txhash = 2;\n  uint32 code = 3;\n  string raw_log = 4;\n  string address = 5;\n  cosmos.base.v1beta1.Coin amount = 6 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  bool exists = 7;\n}\n\n// FaucetInfoResponse represents the faucet information response.\nmessage FaucetInfoResponse {\n  string address = 1;\n  cosmos.base.v1beta1.Coin balance = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  int32 request_count = 3;\n}\n\n// GrantAllowanceRequest represents a request to grant fee allowance from the faucet.\nmessage GrantAllowanceRequest {\n  string address = 1;\n  // Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n  cosmos.base.v1beta1.Coin amount_limit = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  // Optional expiration time. If not provided, defaults to 30 days from now\n  google.protobuf.Timestamp expiration = 3 [(gogoproto.stdtime) = true];\n}\n\n// GrantAllowanceResponse represents the response from a grant allowance request.\nmessage GrantAllowanceResponse {\n  string message = 1;\n  string txhash = 2;\n  uint32 code = 3;\n  string raw_log = 4;\n  string granter = 5;\n  string grantee = 6;\n  cosmos.base.v1beta1.Coin amount_limit = 7 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  google.protobuf.Timestamp expiration = 8 [(gogoproto.stdtime) = true];\n} \n\n// GrantDIDAllowanceRequest represents a request to grant fee allowance to a DID from the faucet.\nmessage GrantDIDAllowanceRequest {\n  string did = 1;\n  // Optional amount limit for the allowance (in uopen). If not provided, defaults to 10000000000 (10,000 OPEN)\n  cosmos.base.v1beta1.Coin amount_limit = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  // Optional expiration time. If not provided, defaults to 30 days from now\n  google.protobuf.Timestamp expiration = 3 [(gogoproto.stdtime) = true];\n}\n\n// GrantDIDAllowanceResponse represents the response from a DID grant allowance request.\nmessage GrantDIDAllowanceResponse {\n  string message = 1;\n  string txhash = 2;\n  uint32 code = 3;\n  string raw_log = 4;\n  string granter = 5;\n  string grantee_did = 6;\n  cosmos.base.v1beta1.Coin amount_limit = 7 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  google.protobuf.Timestamp expiration = 8 [(gogoproto.stdtime) = true];\n}"
  },
  {
    "path": "proto/sourcehub/feegrant/module/v1/module.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.feegrant.module.v1;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object of the feegrant module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {\n    go_import: \"github.com/sourcenetwork/sourcehub/x/feegrant\"\n  };\n}"
  },
  {
    "path": "proto/sourcehub/feegrant/v1beta1/feegrant.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.feegrant.v1beta1;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/any.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"cosmos/base/v1beta1/coin.proto\";\nimport \"amino/amino.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"google/protobuf/duration.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/feegrant\";\n\n// BasicAllowance implements Allowance with a one-time grant of coins\n// that optionally expires. The grantee can use up to SpendLimit to cover fees.\nmessage BasicAllowance {\n  option (cosmos_proto.implements_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\";\n  option (amino.name)                        = \"cosmos-sdk/BasicAllowance\";\n\n  // spend_limit specifies the maximum amount of coins that can be spent\n  // by this allowance and will be updated as coins are spent. If it is\n  // empty, there is no spend limit and any amount of coins can be spent.\n  repeated cosmos.base.v1beta1.Coin spend_limit = 1 [\n    (gogoproto.nullable)     = false,\n    (amino.dont_omitempty)   = true,\n    (amino.encoding)         = \"legacy_coins\",\n    (gogoproto.castrepeated) = \"github.com/cosmos/cosmos-sdk/types.Coins\"\n  ];\n\n  // expiration specifies an optional time when this allowance expires\n  google.protobuf.Timestamp expiration = 2 [(gogoproto.stdtime) = true];\n}\n\n// PeriodicAllowance extends Allowance to allow for both a maximum cap,\n// as well as a limit per time period.\nmessage PeriodicAllowance {\n  option (cosmos_proto.implements_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\";\n  option (amino.name)                        = \"cosmos-sdk/PeriodicAllowance\";\n\n  // basic specifies a struct of `BasicAllowance`\n  BasicAllowance basic = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n\n  // period specifies the time duration in which period_spend_limit coins can\n  // be spent before that allowance is reset\n  google.protobuf.Duration period = 2\n      [(gogoproto.stdduration) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n\n  // period_spend_limit specifies the maximum number of coins that can be spent\n  // in the period\n  repeated cosmos.base.v1beta1.Coin period_spend_limit = 3 [\n    (gogoproto.nullable)     = false,\n    (amino.dont_omitempty)   = true,\n    (amino.encoding)         = \"legacy_coins\",\n    (gogoproto.castrepeated) = \"github.com/cosmos/cosmos-sdk/types.Coins\"\n  ];\n\n  // period_can_spend is the number of coins left to be spent before the period_reset time\n  repeated cosmos.base.v1beta1.Coin period_can_spend = 4 [\n    (gogoproto.nullable)     = false,\n    (amino.dont_omitempty)   = true,\n    (amino.encoding)         = \"legacy_coins\",\n    (gogoproto.castrepeated) = \"github.com/cosmos/cosmos-sdk/types.Coins\"\n  ];\n\n  // period_reset is the time at which this period resets and a new one begins,\n  // it is calculated from the start time of the first transaction after the\n  // last period ended\n  google.protobuf.Timestamp period_reset = 5\n      [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n}\n\n// AllowedMsgAllowance creates allowance only for specified message types.\nmessage AllowedMsgAllowance {\n  option (gogoproto.goproto_getters)         = false;\n  option (cosmos_proto.implements_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\";\n  option (amino.name)                        = \"cosmos-sdk/AllowedMsgAllowance\";\n\n  // allowance can be any of basic and periodic fee allowance.\n  google.protobuf.Any allowance = 1 [(cosmos_proto.accepts_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\"];\n\n  // allowed_messages are the messages for which the grantee has the access.\n  repeated string allowed_messages = 2;\n}\n\n// Grant is stored in the KVStore to record a grant with full context\nmessage Grant {\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // grantee is the address of the user being granted an allowance of another user's funds.\n  string grantee = 2 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // allowance can be any of basic, periodic, allowed fee allowance.\n  google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\"];\n}\n\n// DIDGrant is stored in the KVStore to record a grant with DID as grantee\nmessage DIDGrant {\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // grantee_did is the DID of the user being granted an allowance of another user's funds.\n  string grantee_did = 2;\n\n  // allowance can be any of basic, periodic, allowed fee allowance.\n  google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\"];\n}"
  },
  {
    "path": "proto/sourcehub/feegrant/v1beta1/genesis.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.feegrant.v1beta1;\n\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/feegrant/v1beta1/feegrant.proto\";\nimport \"amino/amino.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/feegrant\";\n\n// GenesisState contains a set of fee allowances, persisted from the store.\nmessage GenesisState {\n  repeated Grant allowances = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n  repeated DIDGrant did_allowances = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];\n}"
  },
  {
    "path": "proto/sourcehub/feegrant/v1beta1/query.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.feegrant.v1beta1;\n\nimport \"sourcehub/feegrant/v1beta1/feegrant.proto\";\nimport \"cosmos/base/query/v1beta1/pagination.proto\";\nimport \"google/api/annotations.proto\";\nimport \"cosmos_proto/cosmos.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/feegrant\";\n\n// Query defines the gRPC querier service.\nservice Query {\n\n  // Allowance returns granted allowance to the grantee by the granter.\n  rpc Allowance(QueryAllowanceRequest) returns (QueryAllowanceResponse) {\n    option (google.api.http).get = \"/sourcehub/feegrant/v1beta1/allowance/{granter}/{grantee}\";\n  }\n\n  // Allowances returns all the grants for the given grantee address.\n  rpc Allowances(QueryAllowancesRequest) returns (QueryAllowancesResponse) {\n    option (google.api.http).get = \"/sourcehub/feegrant/v1beta1/allowances/{grantee}\";\n  }\n\n  // AllowancesByGranter returns all the grants given by an address.\n  rpc AllowancesByGranter(QueryAllowancesByGranterRequest) returns (QueryAllowancesByGranterResponse) {\n    option (google.api.http).get          = \"/sourcehub/feegrant/v1beta1/issued/{granter}\";\n    option (cosmos_proto.method_added_in) = \"cosmos-sdk 0.46\";\n  }\n\n  // DIDAllowance returns granted allowance to the DID by the granter.\n  rpc DIDAllowance(QueryDIDAllowanceRequest) returns (QueryDIDAllowanceResponse) {\n    option (google.api.http).get = \"/sourcehub/feegrant/v1beta1/did_allowance/{granter}/{grantee_did}\";\n  }\n\n  // DIDAllowances returns all the DID grants for the given grantee DID.\n  rpc DIDAllowances(QueryDIDAllowancesRequest) returns (QueryDIDAllowancesResponse) {\n    option (google.api.http).get = \"/sourcehub/feegrant/v1beta1/did_allowances/{grantee_did}\";\n  }\n\n  // DIDAllowancesByGranter returns all the DID grants given by an address.\n  rpc DIDAllowancesByGranter(QueryDIDAllowancesByGranterRequest) returns (QueryDIDAllowancesByGranterResponse) {\n    option (google.api.http).get = \"/sourcehub/feegrant/v1beta1/did_issued/{granter}\";\n  }\n}\n\n// QueryAllowanceRequest is the request type for the Query/Allowance RPC method.\nmessage QueryAllowanceRequest {\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // grantee is the address of the user being granted an allowance of another user's funds.\n  string grantee = 2 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n}\n\n// QueryAllowanceResponse is the response type for the Query/Allowance RPC method.\nmessage QueryAllowanceResponse {\n  // allowance is an allowance granted for grantee by granter.\n  sourcehub.feegrant.v1beta1.Grant allowance = 1;\n}\n\n// QueryAllowancesRequest is the request type for the Query/Allowances RPC method.\nmessage QueryAllowancesRequest {\n  string grantee = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // pagination defines a pagination for the request.\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// QueryAllowancesResponse is the response type for the Query/Allowances RPC method.\nmessage QueryAllowancesResponse {\n  // allowances are allowance's granted for grantee by granter.\n  repeated sourcehub.feegrant.v1beta1.Grant allowances = 1;\n\n  // pagination defines a pagination for the response.\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// QueryAllowancesByGranterRequest is the request type for the Query/AllowancesByGranter RPC method.\nmessage QueryAllowancesByGranterRequest {\n  option (cosmos_proto.message_added_in) = \"cosmos-sdk 0.46\";\n  string granter                         = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // pagination defines a pagination for the request.\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\nmessage QueryAllowancesByGranterResponse {\n  option (cosmos_proto.message_added_in) = \"cosmos-sdk 0.46\";\n  // allowances that have been issued by the granter.\n  repeated sourcehub.feegrant.v1beta1.Grant allowances = 1;\n\n  // pagination defines a pagination for the response.\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// QueryDIDAllowanceRequest is the request type for the Query/DIDAllowance RPC method.\nmessage QueryDIDAllowanceRequest {\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // grantee_did is the DID being granted an allowance of another user's funds.\n  string grantee_did = 2;\n}\n\n// QueryDIDAllowanceResponse is the response type for the Query/DIDAllowance RPC method.\nmessage QueryDIDAllowanceResponse {\n  // allowance is an allowance granted for DID by granter.\n  sourcehub.feegrant.v1beta1.Grant allowance = 1;\n}\n\n// QueryDIDAllowancesRequest is the request type for the Query/DIDAllowances RPC method.\nmessage QueryDIDAllowancesRequest {\n  // grantee_did is the DID being granted allowances.\n  string grantee_did = 1;\n\n  // pagination defines a pagination for the request.\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// QueryDIDAllowancesResponse is the response type for the Query/DIDAllowances RPC method.\nmessage QueryDIDAllowancesResponse {\n  // allowances are DID allowances granted for the grantee DID.\n  repeated sourcehub.feegrant.v1beta1.Grant allowances = 1;\n\n  // pagination defines a pagination for the response.\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// QueryDIDAllowancesByGranterRequest is the request type for the Query/DIDAllowancesByGranter RPC method.\nmessage QueryDIDAllowancesByGranterRequest {\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // pagination defines a pagination for the request.\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// QueryDIDAllowancesByGranterResponse is the response type for the Query/DIDAllowancesByGranter RPC method.\nmessage QueryDIDAllowancesByGranterResponse {\n  // allowances that have been issued by the granter to DIDs.\n  repeated sourcehub.feegrant.v1beta1.Grant allowances = 1;\n\n  // pagination defines a pagination for the response.\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}"
  },
  {
    "path": "proto/sourcehub/feegrant/v1beta1/tx.proto",
    "content": "\nsyntax = \"proto3\";\npackage sourcehub.feegrant.v1beta1;\n\nimport \"google/protobuf/any.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"amino/amino.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/feegrant\";\n\n// Msg defines the feegrant msg service.\nservice Msg {\n  option (cosmos.msg.v1.service) = true;\n\n  // GrantAllowance grants fee allowance to the grantee on the granter's\n  // account with the provided expiration time.\n  rpc GrantAllowance(MsgGrantAllowance) returns (MsgGrantAllowanceResponse);\n\n  // RevokeAllowance revokes any fee allowance of granter's account that\n  // has been granted to the grantee.\n  rpc RevokeAllowance(MsgRevokeAllowance) returns (MsgRevokeAllowanceResponse);\n\n  // PruneAllowances prunes expired fee allowances, currently up to 75 at a time.\n  rpc PruneAllowances(MsgPruneAllowances) returns (MsgPruneAllowancesResponse) {\n    option (cosmos_proto.method_added_in) = \"cosmos-sdk v0.50.0\";\n  };\n\n  // GrantDIDAllowance grants fee allowance to a DID on the granter's account.\n  rpc GrantDIDAllowance(MsgGrantDIDAllowance) returns (MsgGrantDIDAllowanceResponse);\n\n  // ExpireDIDAllowance expires a fee allowance by setting the expiration to current PeriodReset.\n  // This allows the allowance to be automatically pruned when the current period expires.\n  rpc ExpireDIDAllowance(MsgExpireDIDAllowance) returns (MsgExpireDIDAllowanceResponse);\n\n  // PruneDIDAllowances prunes expired DID fee allowances, currently up to 75 at a time.\n  rpc PruneDIDAllowances(MsgPruneDIDAllowances) returns (MsgPruneDIDAllowancesResponse);\n}\n\n// MsgGrantAllowance adds permission for Grantee to spend up to Allowance\n// of fees from the account of Granter.\nmessage MsgGrantAllowance {\n  option (cosmos.msg.v1.signer) = \"granter\";\n  option (amino.name)           = \"cosmos-sdk/MsgGrantAllowance\";\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // grantee is the address of the user being granted an allowance of another user's funds.\n  string grantee = 2 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // allowance can be any of basic, periodic, allowed fee allowance.\n  google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\"];\n}\n\n// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.\nmessage MsgGrantAllowanceResponse {}\n\n// MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.\nmessage MsgRevokeAllowance {\n  option (cosmos.msg.v1.signer) = \"granter\";\n  option (amino.name)           = \"cosmos-sdk/MsgRevokeAllowance\";\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // grantee is the address of the user being granted an allowance of another user's funds.\n  string grantee = 2 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n}\n\n// MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.\nmessage MsgRevokeAllowanceResponse {}\n\n// MsgPruneAllowances prunes expired fee allowances.\nmessage MsgPruneAllowances {\n  option (cosmos.msg.v1.signer)          = \"pruner\";\n  option (cosmos_proto.message_added_in) = \"cosmos-sdk v0.50\";\n  // pruner is the address of the user pruning expired allowances.\n  string pruner = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n}\n\n// MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\nmessage MsgPruneAllowancesResponse {\n  option (cosmos_proto.message_added_in) = \"cosmos-sdk v0.50\";\n}\n\n// MsgGrantDIDAllowance adds permission for a DID to spend up to Allowance\n// of fees from the account of Granter.\nmessage MsgGrantDIDAllowance {\n  option (cosmos.msg.v1.signer) = \"granter\";\n  option (amino.name)           = \"sourcehub/MsgGrantDIDAllowance\";\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // grantee_did is the DID being granted an allowance of another user's funds.\n  string grantee_did = 2;\n  // allowance can be any of basic, periodic, allowed fee allowance.\n  google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = \"sourcehub.feegrant.v1beta1.FeeAllowanceI\"];\n}\n\n// MsgGrantDIDAllowanceResponse defines the Msg/GrantDIDAllowanceResponse response type.\nmessage MsgGrantDIDAllowanceResponse {}\n\n// MsgExpireDIDAllowance expires an existing DID allowance by setting the expiration to current PeriodReset.\nmessage MsgExpireDIDAllowance {\n  option (cosmos.msg.v1.signer) = \"granter\";\n  option (amino.name)           = \"sourcehub/MsgExpireDIDAllowance\";\n  // granter is the address of the user who granted the allowance.\n  string granter = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // grantee_did is the DID whose allowance should be expired.\n  string grantee_did = 2;\n}\n\n// MsgExpireDIDAllowanceResponse defines the Msg/ExpireDIDAllowanceResponse response type.\nmessage MsgExpireDIDAllowanceResponse {}\n\n// EventGrantDIDAllowance is emitted when a DID allowance is granted.\nmessage EventGrantDIDAllowance {\n  // granter is the address of the user granting an allowance of their funds.\n  string granter = 1;\n  // grantee_did is the DID being granted an allowance of another user's funds.\n  string grantee_did = 2;\n}\n\n// EventExpireDIDAllowance is emitted when a DID allowance is expired.\nmessage EventExpireDIDAllowance {\n  // granter is the address of the user expiring an allowance of their funds.\n  string granter = 1;\n  // grantee_did is the DID whose allowance is being expired.\n  string grantee_did = 2;\n}\n\n// MsgPruneDIDAllowances prunes expired DID fee allowances.\nmessage MsgPruneDIDAllowances {\n  option (cosmos.msg.v1.signer) = \"pruner\";\n  // pruner is the address of the user pruning expired DID allowances.\n  string pruner = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n}\n\n// MsgPruneDIDAllowancesResponse defines the Msg/PruneDIDAllowancesResponse response type.\nmessage MsgPruneDIDAllowancesResponse {}\n"
  },
  {
    "path": "proto/sourcehub/hub/chain_config.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// ChainConfig specifies flags and parameters which\n// tune the chain behavior during genesis creation\nmessage ChainConfig {\n  option (gogoproto.equal) = true;\n\n  // allow_zero_fee_txs if true configures the ante handler\n  // to not reject txs with 0 fees\n  bool allow_zero_fee_txs = 1 [\n    (amino.dont_omitempty) = true\n  ];\n\n  // ignore_bearer_auth if true ignores the `authorized_account`\n  // field in the Bearer JWS from Extension Options\n  bool ignore_bearer_auth = 2 [\n    (amino.dont_omitempty) = true\n  ];\n}"
  },
  {
    "path": "proto/sourcehub/hub/genesis.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/hub/params.proto\";\nimport \"sourcehub/hub/ica_connection.proto\";\nimport \"sourcehub/hub/jws_token.proto\";\nimport \"sourcehub/hub/chain_config.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// GenesisState defines the hub module's genesis state.\nmessage GenesisState {\n  // params defines all the parameters of the module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  // ica_connections defines the list of ICA connections.\n  repeated ICAConnection ica_connections = 2 [(gogoproto.nullable) = false];\n  // jws_tokens defines the list of JWS token records.\n  repeated JWSTokenRecord jws_tokens = 3 [(gogoproto.nullable) = false];\n\n  ChainConfig chain_config = 4 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}"
  },
  {
    "path": "proto/sourcehub/hub/ica_connection.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.hub;\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// ICAConnection represents an interchain account connection between a controller and host chain.\nmessage ICAConnection {\n  // ica_address is the interchain account address generated on the host chain.\n  string ica_address = 1;\n  // controller_address is the address of the controlling account on the controller chain.\n  string controller_address = 2;\n  // controller_chain_id is the chain ID of the controller chain.\n  string controller_chain_id = 3;\n  // connection_id is the IBC connection ID used for this interchain account.\n  string connection_id = 4;\n}"
  },
  {
    "path": "proto/sourcehub/hub/jws_token.proto",
    "content": "syntax = \"proto3\";\n\npackage sourcehub.hub;\n\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// JWSTokenStatus represents the validity status of a JWS token.\nenum JWSTokenStatus {\n  // STATUS_UNSPECIFIED is the default/invalid status.\n  STATUS_UNSPECIFIED = 0;\n  // STATUS_VALID indicates the token is valid and can be used.\n  STATUS_VALID = 1;\n  // STATUS_INVALID indicates the token has been invalidated.\n  STATUS_INVALID = 2;\n}\n\n// JWSTokenRecord represents a stored JWS token with its metadata.\n// The bearer_token field contains sensitive credentials and should not be exposed via public endpoints.\nmessage JWSTokenRecord {\n  // token_hash is the unique identifier of the JWS token\n  string token_hash = 1;\n  // bearer_token is the full JWS token string.\n  string bearer_token = 2;\n  // issuer_did is the DID that issued/signed the token.\n  string issuer_did = 3;\n  // authorized_account is the account authorized to use this token.\n  string authorized_account = 4;\n  // issued_at is when the token was created.\n  google.protobuf.Timestamp issued_at = 5 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];\n  // expires_at is when the token expires.\n  google.protobuf.Timestamp expires_at = 6 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];\n  // status is the current validity status of the token.\n  JWSTokenStatus status = 7;\n  // first_used_at is when the token was first used in a transaction.\n  google.protobuf.Timestamp first_used_at = 8 [(gogoproto.stdtime) = true];\n  // last_used_at is when the token was last used in a transaction.\n  google.protobuf.Timestamp last_used_at = 9 [(gogoproto.stdtime) = true];\n  // invalidated_at is when the token was manually invalidated (if applicable).\n  google.protobuf.Timestamp invalidated_at = 10 [(gogoproto.stdtime) = true];\n  // invalidated_by is the account that invalidated the token (if applicable).\n  string invalidated_by = 11;\n}\n\n// EventJWSTokenInvalidated is emitted when a JWS token is invalidated.\nmessage EventJWSTokenInvalidated {\n  // token_hash is the unique identifier of the invalidated token.\n  string token_hash = 1;\n  // issuer_did is the DID that issued the token.\n  string issuer_did = 2;\n  // authorized_account is the account that was authorized to use this token.\n  string authorized_account = 3;\n  // invalidated_by is the account that invalidated the token.\n  string invalidated_by = 4;\n}\n"
  },
  {
    "path": "proto/sourcehub/hub/module/module.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub.module;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object for the module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {\n    go_import: \"github.com/sourcenetwork/sourcehub/x/hub\"\n  };\n  // authority defines the custom module authority. If not set, defaults to the governance module.\n  string authority = 1;\n}"
  },
  {
    "path": "proto/sourcehub/hub/params.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// Params defines the parameters for the module.\nmessage Params {\n  option (amino.name) = \"sourcehub/x/hub/Params\";\n  option (gogoproto.equal) = true;\n}"
  },
  {
    "path": "proto/sourcehub/hub/query.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/api/annotations.proto\";\nimport \"sourcehub/hub/params.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// Query defines the gRPC querier service.\nservice Query {\n  // Parameters queries the parameters of the module.\n  rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {\n    option (google.api.http).get = \"/sourcenetwork/sourcehub/hub/params\";\n  }\n}\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\nmessage QueryParamsRequest {}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\nmessage QueryParamsResponse {\n  // params holds all the parameters of this module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}"
  },
  {
    "path": "proto/sourcehub/hub/tx.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.hub;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/hub/params.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/hub/types\";\n\n// Msg defines the Msg service.\nservice Msg {\n  option (cosmos.msg.v1.service) = true;\n\n  // UpdateParams defines a (governance) operation for updating the module\n  // parameters. The authority defaults to the x/gov module account.\n  rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);\n\n  // InvalidateJWS allows a user to manually invalidate a JWS token\n  // that they own (same DID) or are authorized to use (same creator account).\n  rpc InvalidateJWS(MsgInvalidateJWS) returns (MsgInvalidateJWSResponse);\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\nmessage MsgUpdateParams {\n  option (cosmos.msg.v1.signer) = \"authority\";\n  option (amino.name) = \"sourcehub/x/hub/MsgUpdateParams\";\n\n  // authority is the address that controls the module (defaults to x/gov unless overwritten).\n  string authority = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // params defines the module parameters to update.\n  //\n  // NOTE: All parameters must be supplied.\n  Params params = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a MsgUpdateParams message.\nmessage MsgUpdateParamsResponse {}\n\n// MsgInvalidateJWS is the Msg/InvalidateJWS request type.\n// This message allows a user to invalidate a JWS token:\n// - By providing a JWS extension option with matching DID.\n// - By being the creator/signer of the message with matching authorized account.\nmessage MsgInvalidateJWS {\n  option (cosmos.msg.v1.signer) = \"creator\";\n  option (amino.name) = \"sourcehub/x/hub/MsgInvalidateJWS\";\n  // creator is the address of the message signer.\n  string creator = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // token_hash is the hash/identifier of the JWS token to invalidate.\n  string token_hash = 2;\n}\n\n// MsgInvalidateJWSResponse defines the response structure for executing a MsgInvalidateJWS message.\nmessage MsgInvalidateJWSResponse {\n  // success indicates whether the invalidation was successful.\n  bool success = 1;\n}"
  },
  {
    "path": "proto/sourcehub/tier/module/v1beta1/module.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.module.v1beta1;\n\nimport \"cosmos/app/v1alpha1/module.proto\";\n\n// Module is the config object for the module.\nmessage Module {\n  option (cosmos.app.v1alpha1.module) = {go_import: \"github.com/sourcenetwork/sourcehub/x/tier\"};\n\n  // authority defines the custom module authority. If not set, defaults to the governance module.\n  string authority = 1;\n}\n"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/genesis.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"sourcehub/tier/v1beta1/lockup.proto\";\nimport \"sourcehub/tier/v1beta1/params.proto\";\nimport \"sourcehub/tier/v1beta1/subscription.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// GenesisState defines the tier module's genesis state.\nmessage GenesisState {\n  // params defines all the parameters of the module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated Lockup lockups = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated UnlockingLockup unlockingLockups = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated Lockup insuranceLockups = 4 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated Developer developers = 5 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  repeated UserSubscription userSubscriptions = 6 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/lockup.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// Lockup tracks the locked stake of a delegator.\nmessage Lockup {\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  string amount = 3 [\n    (cosmos_proto.scalar) = \"cosmos.Int\",\n    (gogoproto.customtype) = \"cosmossdk.io/math.Int\",\n    (gogoproto.nullable) = false\n  ];\n}\n\n// UnlockingLockup tracks the unlocking stake of a delegator.\nmessage UnlockingLockup {\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  int64 creation_height = 3;\n\n  string amount = 4 [\n    (cosmos_proto.scalar) = \"cosmos.Int\",\n    (gogoproto.customtype) = \"cosmossdk.io/math.Int\",\n    (gogoproto.nullable) = false\n  ];\n\n  // The time at which the stake undelegation will be completed.\n  google.protobuf.Timestamp completion_time = 5 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n\n  // The time after which the unlocking lockup can be completed.\n  google.protobuf.Timestamp unlock_time = 6 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n}\n"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/params.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/duration.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// Params defines the parameters for the module.\nmessage Params {\n  option (amino.name) = \"sourcehub/x/tier/Params\";\n\n  google.protobuf.Duration epoch_duration = 1 [(gogoproto.stdduration) = true];\n  int64 unlocking_epochs = 2;\n  int64 developer_pool_fee = 3;\n  int64 insurance_pool_fee = 4;\n  int64 insurance_pool_threshold = 5;\n  int64 process_rewards_interval = 6;\n  repeated Rate reward_rates = 7 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// Rate defines the rate for a specific locked stake.\nmessage Rate {\n  // amount of locked stake required for earning rewards at this rate.\n  string amount = 1 [\n    (cosmos_proto.scalar) = \"cosmos.Int\",\n    (gogoproto.customtype) = \"cosmossdk.io/math.Int\",\n    (gogoproto.nullable) = false\n  ];\n  int64 rate = 2;\n}\n"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/query.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/base/query/v1beta1/pagination.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/api/annotations.proto\";\nimport \"sourcehub/tier/v1beta1/lockup.proto\";\nimport \"sourcehub/tier/v1beta1/params.proto\";\nimport \"sourcehub/tier/v1beta1/subscription.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// Query defines the gRPC querier service.\nservice Query {\n  // Parameters queries the parameters of the module.\n  rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/params\";\n  }\n\n  // Lockup queries a lockup by delegator and validator address.\n  rpc Lockup(LockupRequest) returns (LockupResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/locked/{delegator_address}/{validator_address}\";\n  }\n\n  // Lockups queries all the lockups of a delegator.\n  rpc Lockups(LockupsRequest) returns (LockupsResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/locked/{delegator_address}\";\n  }\n\n  // UnlockingLockup queries an unlocking lockup by delegator and validator address.\n  rpc UnlockingLockup(UnlockingLockupRequest) returns (UnlockingLockupResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/unlocking/{delegator_address}/{validator_address}/{creation_height}\";\n  }\n\n  // UnlockingLockups queries all the unlocking lockups of a delegator.\n  rpc UnlockingLockups(UnlockingLockupsRequest) returns (UnlockingLockupsResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/unlocking/{delegator_address}\";\n  }\n\n  // Developers queries all registered developers.\n  rpc Developers(DevelopersRequest) returns (DevelopersResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/developers\";\n  }\n\n  // UserSubscriptions queries all user subscriptions for a specific developer.\n  rpc UserSubscriptions(UserSubscriptionsRequest) returns (UserSubscriptionsResponse) {\n    option (google.api.http).get = \"/sourcehub/tier/v1beta1/subscriptions/{developer}\";\n  }\n}\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\nmessage QueryParamsRequest {}\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\nmessage QueryParamsResponse {\n  // params holds all the parameters of this module.\n  Params params = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// LockupRequest is the request type for the Query/Lockup RPC method.\nmessage LockupRequest {\n  string delegator_address = 1;\n  string validator_address = 2;\n}\n\n// LockupResponse is the response type for the Query/Lockup RPC method.\nmessage LockupResponse {\n  Lockup lockup = 1 [(gogoproto.nullable) = false];\n}\n\n// LockupsRequest is the request type for the Query/Lockups RPC method.\nmessage LockupsRequest {\n  string delegator_address = 1;\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// LockupsResponse is the response type for the Query/Lockups RPC method.\nmessage LockupsResponse {\n  repeated Lockup lockups = 1 [(gogoproto.nullable) = false];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// UnlockingLockupRequest is the request type for the Query/UnlockingLockup RPC method.\nmessage UnlockingLockupRequest {\n  string delegator_address = 1;\n  string validator_address = 2;\n  int64 creation_height = 3;\n}\n\n// UnlockingLockupResponse is the response type for the Query/UnlockingLockup RPC method.\nmessage UnlockingLockupResponse {\n  UnlockingLockup unlockingLockup = 1 [(gogoproto.nullable) = false];\n}\n\n// UnlockingLockupsRequest is the request type for the Query/UnlockingLockups RPC method.\nmessage UnlockingLockupsRequest {\n  string delegator_address = 1;\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// UnlockingLockupsResponse is the response type for the Query/UnlockingLockups RPC method.\nmessage UnlockingLockupsResponse {\n  repeated UnlockingLockup unlockingLockups = 1 [(gogoproto.nullable) = false];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// DevelopersRequest is the request type for the Query/Developers RPC method.\nmessage DevelopersRequest {\n  cosmos.base.query.v1beta1.PageRequest pagination = 1;\n}\n\n// DevelopersResponse is the response type for the Query/Developers RPC method.\nmessage DevelopersResponse {\n  repeated Developer developers = 1 [(gogoproto.nullable) = false];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}\n\n// UserSubscriptionsRequest is the request type for the Query/UserSubscriptions RPC method.\nmessage UserSubscriptionsRequest {\n  string developer = 1;\n  cosmos.base.query.v1beta1.PageRequest pagination = 2;\n}\n\n// UserSubscriptionsResponse is the response type for the Query/UserSubscriptions RPC method.\nmessage UserSubscriptionsResponse {\n  repeated UserSubscription user_subscriptions = 1 [(gogoproto.nullable) = false];\n  cosmos.base.query.v1beta1.PageResponse pagination = 2;\n}"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/subscription.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// Developer represents a developer configuration.\nmessage Developer {\n  // address is the address of the developer.\n  string address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens, \n  // so that the developer always has enough credits to cover all active user subscriptions.\n  bool auto_lock_enabled = 2;\n}\n\n// UserSubscription represents a user subscribed to a developer.\nmessage UserSubscription {\n  // developer is the address of the developer who registered this user.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // user_did is the DID of the registered user.\n  string user_did = 2;\n  // credit_amount is the credit amount allocated to this user.\n  uint64 credit_amount = 3;\n  // period is the subscription period duration in seconds.\n  uint64 period = 4;\n  // start_date is when the subscription started.\n  google.protobuf.Timestamp start_date = 5 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n  // last_renewed is when the subscription was last renewed.\n  google.protobuf.Timestamp last_renewed = 6 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n}\n\n// TotalDevGranted represents the total credit amount granted by a developer to all users.\nmessage TotalDevGranted {\n  // developer is the address of the developer.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // total_granted is the total credit amount granted to all users.\n  uint64 total_granted = 2;\n} \n"
  },
  {
    "path": "proto/sourcehub/tier/v1beta1/tx.proto",
    "content": "syntax = \"proto3\";\npackage sourcehub.tier.v1beta1;\n\nimport \"amino/amino.proto\";\nimport \"cosmos/base/v1beta1/coin.proto\";\nimport \"cosmos/msg/v1/msg.proto\";\nimport \"cosmos_proto/cosmos.proto\";\nimport \"gogoproto/gogo.proto\";\nimport \"google/protobuf/timestamp.proto\";\nimport \"sourcehub/tier/v1beta1/params.proto\";\n\noption go_package = \"github.com/sourcenetwork/sourcehub/x/tier/types\";\n\n// Msg defines the Msg service.\nservice Msg {\n  option (cosmos.msg.v1.service) = true;\n\n  // UpdateParams defines a (governance) operation for updating the module\n  // parameters. The authority defaults to the x/gov module account.\n  rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);\n\n  // Lock defines a (developer) operation for locking a stake.\n  rpc Lock(MsgLock) returns (MsgLockResponse);\n\n  // LockAuto defines a (developer) operation for locking a stake with automatic validator selection.\n  rpc LockAuto(MsgLockAuto) returns (MsgLockAutoResponse);\n\n  // Unlock defines a (developer) operation for unlocking a stake.\n  rpc Unlock(MsgUnlock) returns (MsgUnlockResponse);\n\n  // Redelegate defines a (developer) operation for re-delegating a stake.\n  rpc Redelegate(MsgRedelegate) returns (MsgRedelegateResponse);\n\n  // CancelUnlocking defines a (developer) operation for canceling an unlocking stake.\n  rpc CancelUnlocking(MsgCancelUnlocking) returns (MsgCancelUnlockingResponse);\n\n  // CreateDeveloper defines a (developer) operation for creating a new developer record.\n  rpc CreateDeveloper(MsgCreateDeveloper) returns (MsgCreateDeveloperResponse);\n\n  // UpdateDeveloper defines a (developer) operation for updating an existing developer record.\n  rpc UpdateDeveloper(MsgUpdateDeveloper) returns (MsgUpdateDeveloperResponse);\n\n  // RemoveDeveloper defines a (developer) operation for removing a developer record.\n  rpc RemoveDeveloper(MsgRemoveDeveloper) returns (MsgRemoveDeveloperResponse);\n\n  // AddUserSubscription defines a (developer) operation for adding a user subscription.\n  rpc AddUserSubscription(MsgAddUserSubscription) returns (MsgAddUserSubscriptionResponse);\n\n  // UpdateUserSubscription defines a (developer) operation for updating a user subscription.\n  rpc UpdateUserSubscription(MsgUpdateUserSubscription) returns (MsgUpdateUserSubscriptionResponse);\n\n  // RemoveUserSubscription defines a (developer) operation for removing a user subscription.\n  // This expires the allowance at the end of the current period rather than immediately revoking it.\n  rpc RemoveUserSubscription(MsgRemoveUserSubscription) returns (MsgRemoveUserSubscriptionResponse);\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\nmessage MsgUpdateParams {\n  option (cosmos.msg.v1.signer) = \"authority\";\n  option (amino.name) = \"sourcehub/x/tier/MsgUpdateParams\";\n\n  // authority is the address that controls the module (defaults to x/gov unless overwritten).\n  string authority = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n\n  // params defines the module parameters to update.\n\n  // NOTE: All parameters must be supplied.\n  Params params = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\nmessage MsgUpdateParamsResponse {}\n\n// MsgLock is the Msg/Lock request type.\nmessage MsgLock {\n  option (cosmos.msg.v1.signer) = \"delegator_address\";\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  cosmos.base.v1beta1.Coin stake = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgLockResponse defines the response structure for executing a MsgLock message.\nmessage MsgLockResponse {}\n\n// MsgLockAuto is the Msg/LockAuto request type.\nmessage MsgLockAuto {\n  option (cosmos.msg.v1.signer) = \"delegator_address\";\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  cosmos.base.v1beta1.Coin stake = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgLockAutoResponse defines the response structure for executing a MsgLockAuto message.\nmessage MsgLockAutoResponse {\n  string validator_address = 1 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n}\n\n// MsgUnlock is the Msg/Unlock request type.\nmessage MsgUnlock {\n  option (cosmos.msg.v1.signer) = \"delegator_address\";\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  cosmos.base.v1beta1.Coin stake = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgUnlockResponse defines the response structure for executing a MsgUnlock message.\nmessage MsgUnlockResponse {\n  int64 creation_height = 1;\n  google.protobuf.Timestamp completion_time = 2 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n  google.protobuf.Timestamp unlock_time = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n}\n\n// MsgRedelegate is the Msg/Redelegate request type.\nmessage MsgRedelegate {\n  option (cosmos.msg.v1.signer) = \"delegator_address\";\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string src_validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  string dst_validator_address = 3 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  cosmos.base.v1beta1.Coin stake = 4 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n}\n\n// MsgRedelegateResponse defines the response structure for executing a MsgRedelegate message.\nmessage MsgRedelegateResponse {\n  google.protobuf.Timestamp completion_time = 1 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true,\n    (gogoproto.stdtime) = true\n  ];\n}\n\n// MsgCancelUnlocking is the Msg/CancelUnlocking request type.\nmessage MsgCancelUnlocking {\n  option (cosmos.msg.v1.signer) = \"delegator_address\";\n  string delegator_address = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  string validator_address = 2 [(cosmos_proto.scalar) = \"cosmos.ValidatorAddressString\"];\n  // amount is always less than or equal to unlocking delegation entry balance.\n  cosmos.base.v1beta1.Coin stake = 3 [\n    (gogoproto.nullable) = false,\n    (amino.dont_omitempty) = true\n  ];\n  // creation_height is the height which the unlocking took place.\n  int64 creation_height = 4;\n}\n\n// MsgCancelUnlockingResponse defines the response structure for executing a MsgCancelUnlocking message.\nmessage MsgCancelUnlockingResponse {}\n\n// MsgCreateDeveloper is the Msg/CreateDeveloper request type.\nmessage MsgCreateDeveloper {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer being created.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens, \n  // so that the developer always has enough credits to cover all active user subscriptions.\n  bool auto_lock_enabled = 2;\n}\n\n// MsgCreateDeveloperResponse defines the response structure for executing a MsgCreateDeveloper message.\nmessage MsgCreateDeveloperResponse {}\n\n// MsgUpdateDeveloper is the Msg/UpdateDeveloper request type.\nmessage MsgUpdateDeveloper {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer being updated.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens, \n  // so that the developer always has enough credits to cover all active user subscriptions.\n  bool auto_lock_enabled = 2;\n}\n\n// MsgUpdateDeveloperResponse defines the response structure for executing a MsgUpdateDeveloper message.\nmessage MsgUpdateDeveloperResponse {}\n\n// MsgRemoveDeveloper is the Msg/RemoveDeveloper request type.\nmessage MsgRemoveDeveloper {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer being removed.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n}\n\n// MsgRemoveDeveloperResponse defines the response structure for executing a MsgRemoveDeveloper message.\nmessage MsgRemoveDeveloperResponse {}\n\n// MsgAddUserSubscription is the Msg/AddUserSubscription request type.\nmessage MsgAddUserSubscription {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer adding the subscription.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // user_did is the DID of the user being added to the subscription.\n  string user_did = 2;\n  // amount is the credit amount to be allocated to the user per period.\n  uint64 amount = 3;\n  // period is the subscription period duration in seconds.\n  uint64 period = 4;\n}\n\n// MsgAddUserSubscriptionResponse defines the response structure for executing a MsgAddUserSubscription message.\nmessage MsgAddUserSubscriptionResponse {}\n\n// MsgUpdateUserSubscription is the Msg/UpdateUserSubscription request type.\nmessage MsgUpdateUserSubscription {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer updating the subscription.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // user_did is the DID of the user whose subscription is being updated.\n  string user_did = 2;\n  // amount is the new credit amount to be allocated to the user per period.\n  uint64 amount = 3;\n  // period is the new subscription period duration in seconds.\n  uint64 period = 4;\n}\n\n// MsgUpdateUserSubscriptionResponse defines the response structure for executing a MsgUpdateUserSubscription message.\nmessage MsgUpdateUserSubscriptionResponse {}\n\n// MsgRemoveUserSubscription is the Msg/RemoveUserSubscription request type.\n// This message removes the user subscription and expires the associated allowance at the end of the current period.\nmessage MsgRemoveUserSubscription {\n  option (cosmos.msg.v1.signer) = \"developer\";\n  // developer is the address of the developer removing the subscription.\n  string developer = 1 [(cosmos_proto.scalar) = \"cosmos.AddressString\"];\n  // user_did is the DID of the user whose subscription is being removed.\n  string user_did = 2;\n}\n\n// MsgRemoveUserSubscriptionResponse defines the response structure for executing a MsgRemoveUserSubscription message.\nmessage MsgRemoveUserSubscriptionResponse {}\n"
  },
  {
    "path": "readme.md",
    "content": "# SourceHub\n\nSource's Trust Layer\n\n## Getting Started\n\nTo quickly spin up a standalone SourceHub network, we recommend using Docker.\nThis repository contains a Dockerfile which if run with the environment variable `STANDALONE=1`, spins up a new single node SourceHub network.\n\nTo get started build the docker image with,\n\n```\ndocker image build -t sourcehub:latest .\n```\n\nand start it with:\n\n```\ndocker run -p 9090:9090 -p 26657:26657 -p 26656:26656 -p 1317:1317 -e STANDALONE=1 sourcehub:latest\n```\n\nThe container will start a new network with no fees and a funded faucet account which can be used.\nThe funded account is static for all new instances of the standalone deployment and can be imported by a keyring outside docker or a wallet (eg keplr) to broadcast transactions.\n\nThe account mnemonic is:\n\n```\ncomic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\n```\n\nFor a complete list of params regarding the Dockerfile, see [docker readme](./docker/README.md)\n\n## Development\n\n### Prerequisites\n\n- Go 1.23 or later\n- Ignite CLI (for proto generation)\n- Docker (optional)\n\n### Building the Project\n\n```bash\n# Generate protos\nmake proto\n# Build the binary\nmake build # or \"make build-mac\" for macOS\n# Install globally\nmake install\n```\n\n### Running the Chain Locally\n\n```bash\n# Run build/sourcehubd directly\n./scripts/dev-entrypoint.sh start\n# or using Docker\ndocker-compose up\n```\n\nThe `./scripts/dev-entrypoint.sh` script runs `./scripts/genesis-setup.sh` internally and automatically initializes a new node with chain ID `sourcehub-dev`, creates validator and faucet keys, and configures dev settings.\n\n### Configuration\n\nThe `./scripts/genesis-setup.sh` script configures:\n\n- **Zero-fee transactions**: `allow_zero_fee_txs = true` for easier testing\n- **Gas**: Minimum gas prices set to `0.001uopen,0.001ucredit`\n- **IBC**: IBC transfers enabled\n- **API & Swagger**: API and Swagger enabled\n- **CORS**: CORS enabled to interact with API locally\n- **Metrics**: Prometheus metrics enabled\n- **Faucet**: Built-in faucet with test funds\n\n### Testing\n\n```bash\n# Run all tests\nmake test\n# Run test matrix\nmake test:all\n```\n\n## Documentation\n\n- [Ignite CLI](https://ignite.com/cli)\n- [Tutorials](https://docs.ignite.com/guide)\n- [Ignite CLI docs](https://docs.ignite.com)\n- [Cosmos SDK docs](https://docs.cosmos.network)\n"
  },
  {
    "path": "scripts/faucet-key.json",
    "content": "{\n  \"mnemonic\": \"comic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\",\n  \"name\": \"faucet\",\n  \"address\": \"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\"\n} "
  },
  {
    "path": "scripts/faucet.sh",
    "content": "#!/usr/bin/env sh\n#\nFAUCET_KEY_FILE=\"$HOME/.sourcehub/config/faucet-key.json\"\n\nif [ ! -f \"$FAUCET_KEY_FILE\" ]; then\n    echo \"Error: Faucet key file not found at $FAUCET_KEY_FILE\"\n    exit 1\nfi\n\nFAUCET_ADDRESS=$(jq -r '.address' \"$FAUCET_KEY_FILE\")\nif [ -z \"$FAUCET_ADDRESS\" ] || [ \"$FAUCET_ADDRESS\" = \"null\" ]; then\n    echo \"Error: Could not extract faucet address from $FAUCET_KEY_FILE\"\n    exit 1\nfi\n\nif [ -z $1 ];\nthen\n    echo 'faucet.sh target-account [amount]'\n    exit 1\nfi\n\nTARGET_ADDRESS=$1\nAMOUNT=${2:-\"1000000000uopen\"}\n\necho \"Sending $AMOUNT from faucet ($FAUCET_ADDRESS) to $TARGET_ADDRESS\"\n\nbuild/sourcehubd tx bank send \"$FAUCET_ADDRESS\" \"$TARGET_ADDRESS\" \"$AMOUNT\" --from \"$FAUCET_ADDRESS\" --chain-id sourcehub-dev --keyring-backend test --gas auto --fees 200uopen -y"
  },
  {
    "path": "scripts/full-node.sh",
    "content": "#!/bin/bash\nset -e\n\nrm -rf ~/.sourcehub-full || true\n\nBIN=\"build/sourcehubd\"\nCHAIN_ID=\"sourcehub-dev\"\nHOME_DIR=\"$HOME/.sourcehub-full\"\nSNAPSHOT_INTERVAL=50\nP2P=tcp://0.0.0.0:27684\nADDR=tcp://0.0.0.0:27685\nRPC=tcp://127.0.0.1:27686\nGRPC=localhost:9095\nPPROF=localhost:6065\n\nsedi() {\n  if [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    sed -i '' \"$@\"\n  else\n    sed -i \"$@\"\n  fi\n}\n\necho \"Initializing full node...\"\n$BIN init full-node --chain-id $CHAIN_ID --home $HOME_DIR\n\nrsync -a --exclude priv_validator_state.json ~/.sourcehub/data/ $HOME_DIR/data/\n\nsedi 's/^minimum-gas-prices = .*/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' $HOME_DIR/config/app.toml\nsedi 's/^enable = .*/enable = true/' $HOME_DIR/config/app.toml\n\n# Enable storing snapshots\nsedi \"s/^snapshot-interval = .*/snapshot-interval = $SNAPSHOT_INTERVAL/\" $HOME_DIR/config/app.toml\n\nNODE_ID=$($BIN tendermint show-node-id --home ~/.sourcehub)\n# NODE_ID=$(curl -s http://localhost:26657/status | jq -r '.result.node_info.id')\nsedi \"s|^#* *persistent_peers *=.*|persistent_peers = \\\"$NODE_ID@0.0.0.0:26656\\\"|\" $HOME_DIR/config/config.toml\n\n# For local setups\nsedi \"s/^allow_duplicate_ip *=.*/allow_duplicate_ip = true/\" $HOME_DIR/config/config.toml\nsedi \"s/^addr_book_strict *=.*/addr_book_strict = false/\" $HOME_DIR/config/config.toml\n\necho \"Starting full node with snapshot serving...\"\n$BIN start \\\n  --home $HOME_DIR \\\n  --p2p.laddr $P2P \\\n  --address $ADDR \\\n  --rpc.laddr $RPC \\\n  --grpc.address $GRPC \\\n  --rpc.pprof_laddr $PPROF"
  },
  {
    "path": "scripts/genesis-setup.sh",
    "content": "#!/bin/sh\nset -e\n\nrm -rf \"$HOME/.sourcehub\" || true\n\nsedi() {\n  if [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    sed -i '' \"$@\"\n  else\n    sed -i \"$@\"\n  fi\n}\n\nCHAIN_ID=\"sourcehub-dev\"\nVALIDATOR=\"validator\"\nFAUCET=\"faucet\"\nNODE_NAME=\"node\"\nBIN=\"build/sourcehubd\"\nGENESIS=\"$HOME/.sourcehub/config/genesis.json\"\nFAUCET_KEY=\"$HOME/.sourcehub/config/faucet-key.json\"\nAPP_TOML=\"$HOME/.sourcehub/config/app.toml\"\nCONFIG_TOML=\"$HOME/.sourcehub/config/config.toml\"\n\n$BIN init $NODE_NAME --chain-id $CHAIN_ID --default-denom=\"uopen\"\n\n# Copy faucet key to config and add it to the keyring\nmkdir -p \"$HOME/.sourcehub/config\" && cp scripts/faucet-key.json \"$FAUCET_KEY\"\nFAUCET_MNEMONIC=$(jq -r '.mnemonic' \"$FAUCET_KEY\")\necho \"$FAUCET_MNEMONIC\" | $BIN keys add $FAUCET --recover --keyring-backend test\nFAUCET_ADDR=$($BIN keys show $FAUCET -a --keyring-backend test)\n\n$BIN keys add $VALIDATOR --keyring-backend test\nVALIDATOR_ADDR=$($BIN keys show $VALIDATOR -a --keyring-backend test)\n$BIN genesis add-genesis-account $VALIDATOR_ADDR 1000000000000000uopen # 1b open\n$BIN genesis add-genesis-account $FAUCET_ADDR 100000000000000uopen,1000000000000000ucredit # 100m open and 1b ucredit\n$BIN genesis gentx $VALIDATOR 100000000000000uopen --chain-id $CHAIN_ID --keyring-backend test # 100m open\n$BIN genesis collect-gentxs\n\n# Enable IBC\njq '.app_state.transfer.port_id = \"transfer\"' \"$GENESIS\" > tmp.json && mv tmp.json \"$GENESIS\"\njq '.app_state.transfer += {\"params\": {\"send_enabled\": true, \"receive_enabled\": true}}' \"$GENESIS\" > tmp.json && mv tmp.json \"$GENESIS\"\n\n# Enable/disable zero-fee transactions\njq '.app_state.hub.chain_config.allow_zero_fee_txs = true' \"$GENESIS\" > tmp.json && mv tmp.json \"$GENESIS\"\njq '.app_state.hub.chain_config.ignore_bearer_auth = true' \"$GENESIS\" > tmp.json && mv tmp.json \"$GENESIS\"\n\n# app.toml\nsedi 's/minimum-gas-prices = .*/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$APP_TOML\"\nsedi 's/^enabled = .*/enabled = true/' \"$APP_TOML\"\nsedi 's/^prometheus-retention-time = .*/prometheus-retention-time = 60/' \"$APP_TOML\"\nsedi 's/^enabled-unsafe-cors = .*/enabled-unsafe-cors = true/' \"$APP_TOML\"\nsedi 's/^enable = .*/enable = true/' \"$APP_TOML\"\nsedi 's/^swagger = .*/swagger = true/' \"$APP_TOML\"\nsedi 's/^enable_faucet = .*/enable_faucet = true/' \"$APP_TOML\"\n\n# config.toml\nsedi 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$CONFIG_TOML\"\nsedi 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$CONFIG_TOML\"\nsedi 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$CONFIG_TOML\"\nsedi 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$CONFIG_TOML\"\nsedi 's/^prometheus = .*/prometheus = true/' \"$CONFIG_TOML\"\nsedi 's/^cors_allowed_origins = .*/cors_allowed_origins = [\"*\"]/' \"$CONFIG_TOML\"\n\necho \"Validator Address $VALIDATOR_ADDR\"\n"
  },
  {
    "path": "scripts/hermes_config.toml",
    "content": "[global]\nlog_level = 'info'\n\n[mode]\n[mode.clients]\nenabled = true\nrefresh = true\nmisbehaviour = true\n[mode.connections]\nenabled = true\n[mode.channels]\nenabled = true\n[mode.packets]\nenabled = true\nclear_interval = 100\nclear_on_start = true\n\n[[chains]]\nid = 'sourcehub-1'\ntype = 'CosmosSdk'\nrpc_addr = 'http://127.0.0.1:26667'\ngrpc_addr = 'http://127.0.0.1:9091'\nevent_source = { mode = 'push', url = 'ws://127.0.0.1:26667/websocket', batch_delay = '500ms' }\nrpc_timeout = '10s'\ntrusted_node = false\naccount_prefix = 'source'\nkey_name = 'source'\nstore_prefix = 'ibc'\ndefault_gas = 100000\nmax_gas = 4000000\ngas_price = { price = 0.025, denom = 'uopen' }\ngas_multiplier = 1.2\nclock_drift = '10s'\ntrusting_period = '14days'\ntrust_threshold = '2/3'\naddress_type = { derivation = 'cosmos' }\n\n[[chains]]\nid = 'sourcehub-2'\ntype = 'CosmosSdk'\nrpc_addr = 'http://127.0.0.1:26670'\ngrpc_addr = 'http://127.0.0.1:9092'\nevent_source = { mode = 'push', url = 'ws://127.0.0.1:26670/websocket', batch_delay = '500ms' }\nrpc_timeout = '10s'\ntrusted_node = false\naccount_prefix = 'source'\nkey_name = 'source'\nstore_prefix = 'ibc'\ndefault_gas = 100000\nmax_gas = 4000000\ngas_price = { price = 0.025, denom = 'uopen' }\ngas_multiplier = 1.2\nclock_drift = '10s'\ntrusting_period = '14days'\ntrust_threshold = '2/3'\naddress_type = { derivation = 'cosmos' }"
  },
  {
    "path": "scripts/ignite/config-tier.yml",
    "content": "version: 1\nvalidation: sovereign\n\naccounts:\n  - name: alice\n    mnemonic: 'near smoke great nasty alley food crush nurse rubber say danger search employ under gaze today alien eager risk letter drum relief sponsor current'\n    # address: source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\n    coins:\n      - 100000000000000uopen # 100m open\n  - name: bob\n    mnemonic: 'kingdom race grab ask size settle gesture vendor certain purpose clump gauge firm kiwi muffin term hello addict laugh tornado copper all sheriff reflect'\n    # address: source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\n    coins:\n      - 100000000000000uopen # 100m open\n  - name: charlie\n    mnemonic: 'vast brand cannon priority equip comfort mixed connect belt holiday either bleak employ sauce wrong memory cover appear symptom assume faint fire bargain guide'\n    # address: source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\n    coins:\n      - 100000000000000uopen # 100m open\n  - name: frank\n    mnemonic: 'trophy space shove poverty armor trap foil siege poem keen cancel device garage item desert mention school multiply viable practice silent push flip blame'\n    # address: source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\n    coins:\n      - 100000000000000uopen # 100m open\n  - name: victor\n    mnemonic: 'divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight'\n    # address: source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\n    coins:\n      - 200000000000000uopen # 200m open\n\nfaucet:\n  name: frank\n  coins:\n    - 100000000000000uopen # 100m open\n\nvalidators:\n  - name: victor\n    # address: sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\n    bonded: 100000000000000uopen # 100m open\n\nbuild:\n  main: cmd/sourcehubd\n\ngenesis:\n  app_state:\n    crisis:\n      constant_fee:\n        amount: '1000'\n        denom: 'uopen'\n\n    gov:\n      params:\n        min_deposit:\n          - amount: '1000000000'\n            denom: 'uopen'\n        expedited_min_deposit:\n          - amount: '5000000000'\n            denom: 'uopen'\n\n    mint:\n      params:\n        blocks_per_year: '31557600'\n        goal_bonded: '0.67'\n        inflation_min: '0.02'\n        inflation_max: '0.15'\n        inflation_rate_change: '0.13'\n        mint_denom: 'uopen'\n\n    staking:\n      params:\n        bond_denom: 'uopen'\n        unbonding_time: '60s'\n\n    epochs:\n      epochs:\n        - 'identifier': 'tier'\n          'duration': '60s'\n\n    tier:\n      params:\n        epoch_duration: '60s'\n        unlocking_epochs: 2\n        developer_pool_fee: 2 # 2%\n        insurance_pool_fee: 1 # 1%\n        insurance_pool_threshold: 100000000000 # 100k open\n        process_rewards_interval: 1000 # 1000 blocks\n        reward_rates:\n          - amount: '300'\n            rate: 150\n          - amount: '200'\n            rate: 120\n          - amount: '100'\n            rate: 110\n          - amount: '0'\n            rate: 100\n"
  },
  {
    "path": "scripts/rpc-node.sh",
    "content": "#!/bin/bash\n\nset -e\n\nrm -rf ~/.sourcehub-rpc || true\n\nsedi() {\n  if [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n    sed -i '' \"$@\"\n  else\n    sed -i \"$@\"\n  fi\n}\n\nBIN=\"build/sourcehubd\"\nCHAIN_ID=\"sourcehub-dev\"\nHOME_DIR=\"$HOME/.sourcehub-rpc\"\nRPC_SERVERS=\"http://localhost:27686,http://localhost:27686\"\nTRUST_HEIGHT=50\nTRUST_HASH=$(curl -s http://localhost:27686/block?height=$TRUST_HEIGHT | jq -r '.result.block_id.hash')\nP2P=tcp://0.0.0.0:27674\nADDR=tcp://0.0.0.0:27675\nRPC=tcp://0.0.0.0:26676\nGRPC=0.0.0.0:9094\nPPROF=localhost:6064\n\necho \"Initializing new node...\"\n$BIN init rpc-node --chain-id $CHAIN_ID --home $HOME_DIR\ncp ~/.sourcehub/config/genesis.json $HOME_DIR/config/genesis.json\n\nsedi 's/^minimum-gas-prices = .*/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' ~/.sourcehub/config/app.toml\n\n# Enable API / GRPC\nsedi 's/^enable = .*/enable = true/' ~/.sourcehub/config/app.toml\n\n# Enable state sync from snapshots\nsedi \"s/^enable *=.*/enable = true/\" $HOME_DIR/config/config.toml\nsedi \"s|^rpc_servers *=.*|rpc_servers = \\\"$RPC_SERVERS\\\"|\" $HOME_DIR/config/config.toml\nsedi \"s|^trust_height *=.*|trust_height = $TRUST_HEIGHT|\" $HOME_DIR/config/config.toml\nsedi \"s|^trust_hash *=.*|trust_hash = \\\"$TRUST_HASH\\\"|\" $HOME_DIR/config/config.toml\n\n# For local setups\nsedi \"s/^allow_duplicate_ip *=.*/allow_duplicate_ip = true/\" $HOME_DIR/config/config.toml\nsedi \"s/^addr_book_strict *=.*/addr_book_strict = false/\" $HOME_DIR/config/config.toml\n\nNODE_ID=$(curl -s http://localhost:27686/status | jq -r '.result.node_info.id')\n# NODE_ID=$($BIN tendermint show-node-id --home ~/.sourcehub-full)\nsedi \"s|^#* *persistent_peers *=.*|persistent_peers = \\\"$NODE_ID@0.0.0.0:27684\\\"|\" $HOME_DIR/config/config.toml\n\necho \"Starting new node (state sync)...\"\n$BIN start \\\n  --home $HOME_DIR \\\n  --p2p.laddr $P2P \\\n  --address $ADDR \\\n  --rpc.laddr $RPC \\\n  --grpc.address $GRPC \\\n  --rpc.pprof_laddr $PPROF"
  },
  {
    "path": "scripts/run-test-matrix",
    "content": "#!/usr/bin/env bash\nset -e;\n\nIFS=$'\\n'\nfor env in $(build/test_env_generator all); do \n    echo \"Executing with $env\"\n    eval $env\n    go test ./tests/integration/... -count=1 -v\ndone\n"
  },
  {
    "path": "scripts/start-multichain-ica.sh",
    "content": "#!/bin/sh\n\nset -e\n\nBIN=\"build/sourcehubd\"\n\nCHAIN1_ID=\"sourcehub-1\"\nCHAIN2_ID=\"sourcehub-2\"\n\nC1V1_HOME=\"$HOME/.sourcehub-1-1\"\nC2V1_HOME=\"$HOME/.sourcehub-2-1\"\nHERMES_HOME=\"$HOME/.hermes\"\n\nC1V1_GRPC=localhost:9091\nC1V1_P2P=localhost:27665\nC1V1_ADDR=tcp://0.0.0.0:27666\nC1V1_RPC=tcp://127.0.0.1:26667\nC1V1_PPROF=localhost:6061\n\nC2V1_GRPC=localhost:9092\nC2V1_P2P=localhost:27668\nC2V1_ADDR=tcp://0.0.0.0:27669\nC2V1_RPC=tcp://127.0.0.1:26670\nC2V1_PPROF=localhost:6062\n\nC2V1_PPROF=localhost:6062\n\nC1V1_NAME=\"validator1-1-node\"\nC2V1_NAME=\"validator2-1-node\"\n\nC1V1=\"validator1-1\"\nC2V1=\"validator2-1\"\n\nICA_PACKET_JSON=\"scripts/ica_packet.json\"\n\nPOLICY_CONTENT=\"name: ica test policy\"\n\n# Exit if no hermes binary found\nif ! type \"hermes\" > /dev/null; then\n  echo \"Hermes binary not found\"\n  exit 0\nfi\n\n# Kill running processes\nkillall sourcehubd 2>/dev/null || true\nkillall hermes 2>/dev/null || true\n\n# Cleanup directories\nrm -rf $C1V1_HOME\nrm -rf $C2V1_HOME\nrm -rf $HERMES_HOME\nrm -rf chain_*.log\nrm -rf hermes.log\nrm -rf $ICA_PACKET_JSON\n\n# Make hermes dir and copy the config\nmkdir $HERMES_HOME\ncp scripts/hermes_config.toml \"$HERMES_HOME/config.toml\"\n\n# Build the binary\nmake build # make build-mac\n\necho \"==> Initializing sourcehub-1...\"\n$BIN init $C1V1_NAME --chain-id $CHAIN1_ID --default-denom=\"uopen\" --home=\"$C1V1_HOME\"\n$BIN keys add $C1V1 --keyring-backend=test --home=\"$C1V1_HOME\"\nVALIDATOR1_ADDR=$($BIN keys show $C1V1 -a --keyring-backend=test --home=\"$C1V1_HOME\")\n$BIN genesis add-genesis-account $VALIDATOR1_ADDR 1000000000000uopen --home=\"$C1V1_HOME\"\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" | $BIN keys add source --recover --keyring-backend=test --home=\"$C1V1_HOME\"\nSOURCE_ADDR=$($BIN keys show source -a --keyring-backend=test --home=\"$C1V1_HOME\")\n$BIN genesis add-genesis-account $SOURCE_ADDR 1000000000000uopen --home=\"$C1V1_HOME\"\n$BIN genesis gentx $C1V1 100000000uopen --chain-id $CHAIN1_ID --keyring-backend=test --home=\"$C1V1_HOME\"\n$BIN genesis collect-gentxs --home \"$C1V1_HOME\"\n$BIN genesis validate-genesis --home \"$C1V1_HOME\"\n\njq '.app_state.transfer.port_id = \"transfer\"' \"$C1V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C1V1_HOME/config/genesis.json\"\njq '.app_state.transfer += {\"params\": {\"send_enabled\": true, \"receive_enabled\": true}}' \"$C1V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C1V1_HOME/config/genesis.json\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C1V1_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C1V1_HOME/config/config.toml\"\n\nsleep 1\n\necho \"==> Initializing sourcehub-2...\"\n$BIN init $C2V1_NAME --chain-id $CHAIN2_ID --default-denom=\"uopen\" --home=\"$C2V1_HOME\"\n$BIN keys add $C2V1 --keyring-backend=test --home=\"$C2V1_HOME\"\nVALIDATOR2_ADDR=$($BIN keys show $C2V1 -a --keyring-backend=test --home=\"$C2V1_HOME\")\n$BIN genesis add-genesis-account $VALIDATOR2_ADDR 1000000000000uopen --home=\"$C2V1_HOME\"\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" | $BIN keys add source --recover --keyring-backend=test --home=\"$C2V1_HOME\"\nSOURCE2_ADDR=$($BIN keys show source -a --keyring-backend=test --home=\"$C2V1_HOME\")\n$BIN genesis add-genesis-account $SOURCE2_ADDR 1000000000000uopen --home=\"$C2V1_HOME\"\n$BIN genesis gentx $C2V1 100000000uopen --chain-id $CHAIN2_ID --keyring-backend=test --home=\"$C2V1_HOME\"\n$BIN genesis collect-gentxs --home \"$C2V1_HOME\"\n$BIN genesis validate-genesis --home \"$C2V1_HOME\"\n\njq '.app_state.transfer.port_id = \"transfer\"' \"$C2V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C2V1_HOME/config/genesis.json\"\njq '.app_state.transfer += {\"params\": {\"send_enabled\": true, \"receive_enabled\": true}}' \"$C2V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C2V1_HOME/config/genesis.json\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C2V1_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C2V1_HOME/config/config.toml\"\n\nsleep 1\n\necho \"==> Starting sourcehub-1...\"\n$BIN start \\\n  --home $C1V1_HOME \\\n  --rpc.laddr $C1V1_RPC \\\n  --rpc.pprof_laddr $C1V1_PPROF \\\n  --p2p.laddr $C1V1_P2P \\\n  --grpc.address $C1V1_GRPC \\\n  --address $C1V1_ADDR \\\n  > chain_1_1.log 2>&1 &\necho \"sourcehub-1 running\"\n\nsleep 1\n\necho \"==> Starting sourcehub-2...\"\n$BIN start \\\n  --home $C2V1_HOME \\\n  --rpc.laddr $C2V1_RPC \\\n  --rpc.pprof_laddr $C2V1_PPROF \\\n  --p2p.laddr $C2V1_P2P \\\n  --grpc.address $C2V1_GRPC \\\n  --address $C2V1_ADDR \\\n  > chain_2_1.log 2>&1 &\necho \"sourcehub-2 running\"\n\nsleep 10\n\n# Add hermes key (same for both chains)\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" > /tmp/mnemonic.txt\nhermes keys add --chain $CHAIN1_ID --mnemonic-file /tmp/mnemonic.txt\nhermes keys add --chain $CHAIN2_ID --mnemonic-file /tmp/mnemonic.txt\nrm /tmp/mnemonic.txt\n\necho \"==> Creating IBC connection...\"\nhermes create connection \\\n  --a-chain $CHAIN1_ID \\\n  --b-chain $CHAIN2_ID\n\nsleep 1\n\necho \"==> Starting Hermes...\"\nhermes start > hermes.log 2>&1 &\n\nsleep 1\n\n# Detect the actual connection IDs assigned by the chains\nCONNECTION_ID=$($BIN q ibc connection connections --node \"$C1V1_RPC\" -o json | jq -r '.connections | last | .id')\nHOST_CONNECTION_ID=$($BIN q ibc connection connections --node \"$C2V1_RPC\" -o json | jq -r '.connections | last | .id')\necho \"==> Detected connection IDs:\"\necho \"Controller connection: $CONNECTION_ID\"\necho \"Host connection: $HOST_CONNECTION_ID\"\n\nCTRL_HOME=$C1V1_HOME\nCTRL_RPC=$C1V1_RPC\nCTRL_CHAIN_ID=$CHAIN1_ID\nICA_VERSION=$(cat <<EOF\n{\n  \"version\": \"ics27-1\",\n  \"controller_connection_id\": \"$CONNECTION_ID\",\n  \"host_connection_id\": \"$HOST_CONNECTION_ID\",\n  \"address\": \"\",\n  \"encoding\": \"proto3\",\n  \"tx_type\": \"sdk_multi_msg\"\n}\nEOF\n)\n\necho \"==> Registering interchain account on $CTRL_CHAIN_ID (controller) via $CONNECTION_ID\"\necho \"Using version metadata: $ICA_VERSION\"\n$BIN tx interchain-accounts controller register \"$CONNECTION_ID\" \\\n  --from $SOURCE_ADDR \\\n  --keyring-backend test \\\n  --chain-id $CTRL_CHAIN_ID \\\n  --home \"$CTRL_HOME\" \\\n  --node \"$CTRL_RPC\" \\\n  --ordering ORDER_ORDERED \\\n  --version \"$ICA_VERSION\" \\\n  --gas auto \\\n  --fees 500uopen \\\n  --yes\n\necho \"==> Waiting for ICA handshake to complete...\"\nsleep 10\n\necho \"==> Querying host ICA address...\"\nICA_ADDR=$($BIN q interchain-accounts controller interchain-account $SOURCE_ADDR \"$CONNECTION_ID\" \\\n  --node \"$CTRL_RPC\" -o json | jq -r '.address')\necho \"Host ICA address: $ICA_ADDR\"\n\nif [ -z \"$ICA_ADDR\" ] || [ \"$ICA_ADDR\" = \"null\" ]; then\n  echo \"Failed to resolve ICA address. Check Hermes and connection IDs.\"\n  exit 1\nfi\n\necho \"==> Preparing ICA packet with ACP MsgCreatePolicy...\"\ngo run ./cmd/ica_packet_gen --creator \"$ICA_ADDR\" --policy \"$POLICY_CONTENT\" > $ICA_PACKET_JSON\n\necho \"Packet:\n$(cat $ICA_PACKET_JSON)\"\n\necho \"==> Sending ICA tx packet from controller...\"\n$BIN tx interchain-accounts controller send-tx $CONNECTION_ID $ICA_PACKET_JSON \\\n  --from $SOURCE_ADDR \\\n  --keyring-backend test \\\n  --chain-id $CTRL_CHAIN_ID \\\n  --home \"$CTRL_HOME\" \\\n  --node \"$CTRL_RPC\" \\\n  --gas auto --gas-adjustment 1.3 \\\n  --fees 500uopen \\\n  --yes\n\necho \"Waiting for host execution...\"\nsleep 5\n\necho \"==> Querying ACP policy IDs on host...\"\n$BIN q acp policy-ids --node \"$C2V1_RPC\" -o json || true\n\necho \"DONE\"\n\n\n"
  },
  {
    "path": "scripts/start-multichain.sh",
    "content": "#!/bin/sh\n\nset -e\n\nBIN=\"build/sourcehubd\"\n\nCHAIN1_ID=\"sourcehub-1\"\nCHAIN2_ID=\"sourcehub-2\"\n\nC1V1_HOME=\"$HOME/.sourcehub-1-1\"\nC2V1_HOME=\"$HOME/.sourcehub-2-1\"\nC1V2_HOME=\"$HOME/.sourcehub-1-2\"\nC2V2_HOME=\"$HOME/.sourcehub-2-2\"\nHERMES_HOME=\"$HOME/.hermes\"\n\nC1V1_GRPC=localhost:9091\nC1V1_P2P=localhost:27665\nC1V1_ADDR=tcp://0.0.0.0:27666\nC1V1_RPC=tcp://127.0.0.1:26667\nC1V1_PPROF=localhost:6061\n\nC2V1_GRPC=localhost:9092\nC2V1_P2P=localhost:27668\nC2V1_ADDR=tcp://0.0.0.0:27669\nC2V1_RPC=tcp://127.0.0.1:26670\nC2V1_PPROF=localhost:6062\n\nC1V2_GRPC=localhost:9093\nC1V2_P2P=localhost:27671\nC1V2_ADDR=tcp://0.0.0.0:27672\nC1V2_RPC=tcp://127.0.0.1:26673\nC1V2_PPROF=localhost:6063\n\nC2V2_GRPC=localhost:9094\nC2V2_P2P=localhost:27674\nC2V2_ADDR=tcp://0.0.0.0:27675\nC2V2_RPC=tcp://127.0.0.1:26676\nC2V2_PPROF=localhost:6064\n\nC1V1_NAME=\"validator1-1-node\"\nC2V1_NAME=\"validator2-1-node\"\nC1V2_NAME=\"validator1-2-node\"\nC2V2_NAME=\"validator2-2-node\"\n\nC1V1=\"validator1-1\"\nC2V1=\"validator2-1\"\nC1V2=\"validator1-2\"\nC2V2=\"validator2-2\"\n\nC1V2_JSON=\"scripts/validator1-2.json\"\nC2V2_JSON=\"scripts/validator2-2.json\"\n\n# Exit if no hermes binary found\nif ! type \"hermes\" > /dev/null; then\n  echo \"Hermes binary not found\"\n  exit 0\nfi\n\n# Kill running processes\nkillall sourcehubd 2>/dev/null || true\nkillall hermes 2>/dev/null || true\n\n# Cleanup directories\nrm -rf $C1V1_HOME\nrm -rf $C2V1_HOME\nrm -rf $HERMES_HOME\nrm -rf $C1V2_HOME\nrm -rf $C2V2_HOME\nrm -rf chain_*.log\nrm -rf hermes.log\nrm $C1V2_JSON 2>/dev/null || true\nrm $C2V2_JSON 2>/dev/null || true\n\n# Make hermes dir and copy the config\nmkdir $HERMES_HOME\ncp scripts/hermes_config.toml \"$HERMES_HOME/config.toml\"\n\n# Build the binary\nmake build # make build-mac\n\necho \"==> Initializing sourcehub-1...\"\n$BIN init $C1V1_NAME --chain-id $CHAIN1_ID --default-denom=\"uopen\" --home=\"$C1V1_HOME\"\n$BIN keys add $C1V1 --keyring-backend=test --home=\"$C1V1_HOME\"\nVALIDATOR1_ADDR=$($BIN keys show $C1V1 -a --keyring-backend=test --home=\"$C1V1_HOME\")\n$BIN genesis add-genesis-account $VALIDATOR1_ADDR 1000000000000uopen --home=\"$C1V1_HOME\"\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" | $BIN keys add source --recover --keyring-backend=test --home=\"$C1V1_HOME\"\nSOURCE_ADDR=$($BIN keys show source -a --keyring-backend=test --home=\"$C1V1_HOME\")\n$BIN genesis add-genesis-account $SOURCE_ADDR 1000000000000uopen --home=\"$C1V1_HOME\"\n$BIN genesis gentx $C1V1 100000000uopen --chain-id $CHAIN1_ID --keyring-backend=test --home=\"$C1V1_HOME\"\n$BIN genesis collect-gentxs --home \"$C1V1_HOME\"\n$BIN genesis validate-genesis --home \"$C1V1_HOME\"\n\njq '.app_state.transfer.port_id = \"transfer\"' \"$C1V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C1V1_HOME/config/genesis.json\"\njq '.app_state.transfer += {\"params\": {\"send_enabled\": true, \"receive_enabled\": true}}' \"$C1V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C1V1_HOME/config/genesis.json\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C1V1_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C1V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C1V1_HOME/config/config.toml\"\n\nsleep 1\n\necho \"==> Initializing sourcehub-2...\"\n$BIN init $C2V1_NAME --chain-id $CHAIN2_ID --default-denom=\"uopen\" --home=\"$C2V1_HOME\"\n$BIN keys add $C2V1 --keyring-backend=test --home=\"$C2V1_HOME\"\nVALIDATOR2_ADDR=$($BIN keys show $C2V1 -a --keyring-backend=test --home=\"$C2V1_HOME\")\n$BIN genesis add-genesis-account $VALIDATOR2_ADDR 1000000000000uopen --home=\"$C2V1_HOME\"\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" | $BIN keys add source --recover --keyring-backend=test --home=\"$C2V1_HOME\"\nSOURCE_ADDR=$($BIN keys show source -a --keyring-backend=test --home=\"$C2V1_HOME\")\n$BIN genesis add-genesis-account $SOURCE_ADDR 1000000000000uopen --home=\"$C2V1_HOME\"\n$BIN genesis gentx $C2V1 100000000uopen --chain-id $CHAIN2_ID --keyring-backend=test --home=\"$C2V1_HOME\"\n$BIN genesis collect-gentxs --home \"$C2V1_HOME\"\n$BIN genesis validate-genesis --home \"$C2V1_HOME\"\n\njq '.app_state.transfer.port_id = \"transfer\"' \"$C2V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C2V1_HOME/config/genesis.json\"\njq '.app_state.transfer += {\"params\": {\"send_enabled\": true, \"receive_enabled\": true}}' \"$C2V1_HOME/config/genesis.json\" > tmp.json && mv tmp.json \"$C2V1_HOME/config/genesis.json\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C2V1_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C2V1_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C2V1_HOME/config/config.toml\"\n\nsleep 1\n\necho \"==> Starting sourcehub-1...\"\n$BIN start \\\n  --home $C1V1_HOME \\\n  --rpc.laddr $C1V1_RPC \\\n  --rpc.pprof_laddr $C1V1_PPROF \\\n  --p2p.laddr $C1V1_P2P \\\n  --grpc.address $C1V1_GRPC \\\n  --address $C1V1_ADDR \\\n  > chain_1_1.log 2>&1 &\necho \"sourcehub-1 running\"\n\nsleep 1\n\necho \"==> Starting sourcehub-2...\"\n$BIN start \\\n  --home $C2V1_HOME \\\n  --rpc.laddr $C2V1_RPC \\\n  --rpc.pprof_laddr $C2V1_PPROF \\\n  --p2p.laddr $C2V1_P2P \\\n  --grpc.address $C2V1_GRPC \\\n  --address $C2V1_ADDR \\\n  > chain_2_1.log 2>&1 &\necho \"sourcehub-2 running\"\n\n# Let chains start before adding more validators\nsleep 5\n\necho \"==> Initializing second validator on sourcehub-1...\"\n$BIN init $C1V2_NAME --chain-id $CHAIN1_ID --home=\"$C1V2_HOME\"\n$BIN keys add $C1V2 --keyring-backend=test --home=\"$C1V2_HOME\"\nVAL11_ADDR=$($BIN keys show validator1-2 -a --keyring-backend=test --home=\"$C1V2_HOME\")\n\nrsync -a --exclude priv_validator_state.json ~/.sourcehub-1-1/data/ ~/.sourcehub-1-2/data/\nVAL1_ID=$($BIN tendermint show-node-id --home=\"$C1V1_HOME\")\nsed -i '' \"s|^persistent_peers = .*|persistent_peers = \\\"$VAL1_ID@$C1V1_P2P\\\"|\" \"$C1V2_HOME/config/config.toml\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C1V2_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C1V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C1V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C1V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C1V2_HOME/config/config.toml\"\n\necho \"==> Funding validator 2 account on sourcehub-1...\"\n$BIN tx bank send source $VAL11_ADDR 10000000000uopen \\\n  --from source \\\n  --keyring-backend test \\\n  --home $C1V1_HOME \\\n  --chain-id $CHAIN1_ID \\\n  --node $C1V1_RPC \\\n  --gas auto \\\n  --fees 500uopen \\\n  --yes\n\nsleep 1\n\necho \"==> Creating validator 2 on sourcehub-1...\"\nPUBKEY_JSON1=$($BIN tendermint show-validator --home=\"$C1V2_HOME\")\necho \"{\n  \\\"pubkey\\\": $PUBKEY_JSON1,\n  \\\"amount\\\": \\\"1000000000uopen\\\",\n  \\\"moniker\\\": \\\"$C1V2_NAME\\\",\n  \\\"identity\\\": \\\"\\\",\n  \\\"website\\\": \\\"\\\",\n  \\\"security\\\": \\\"\\\",\n  \\\"details\\\": \\\"\\\",\n  \\\"commission-rate\\\": \\\"0.1\\\",\n  \\\"commission-max-rate\\\": \\\"0.2\\\",\n  \\\"commission-max-change-rate\\\": \\\"0.01\\\",\n  \\\"min-self-delegation\\\": \\\"1\\\"\n}\" > $C1V2_JSON\n\n$BIN tx staking create-validator \"$C1V2_JSON\" \\\n  --from $C1V2 \\\n  --chain-id $CHAIN1_ID \\\n  --home $C1V2_HOME \\\n  --keyring-backend=test \\\n  --node $C1V1_RPC \\\n  --gas auto \\\n  --fees 500uopen \\\n  --yes\n\nsleep 1\n\necho \"==> Starting validator 2 on sourcehub-1...\"\n$BIN start \\\n  --home $C1V2_HOME \\\n  --rpc.laddr $C1V2_RPC \\\n  --rpc.pprof_laddr $C1V2_PPROF \\\n  --p2p.laddr $C1V2_P2P \\\n  --grpc.address $C1V2_GRPC \\\n  --address $C1V2_ADDR \\\n  > chain_1_2.log 2>&1 &\n\nsleep 1\n\necho \"==> Initializing validator 2 on sourcehub-2...\"\n$BIN init $C2V2_NAME --chain-id $CHAIN2_ID --home=\"$C2V2_HOME\"\n$BIN keys add $C2V2 --keyring-backend=test --home=\"$C2V2_HOME\"\nVAL22_ADDR=$($BIN keys show validator2-2 -a --keyring-backend=test --home=\"$C2V2_HOME\")\n\nrsync -a --exclude priv_validator_state.json ~/.sourcehub-2-1/data/ ~/.sourcehub-2-2/data/\nVAL2_ID=$($BIN tendermint show-node-id --home=\"$C2V1_HOME\")\nsed -i '' \"s|^persistent_peers = .*|persistent_peers = \\\"$VAL2_ID@$C2V1_P2P\\\"|\" \"$C2V2_HOME/config/config.toml\"\n\nsed -i '' 's/minimum-gas-prices = \"\"/minimum-gas-prices = \"0.001uopen,0.001ucredit\"/' \"$C2V2_HOME/config/app.toml\"\nsed -i '' 's/^timeout_propose = .*/timeout_propose = \"500ms\"/' \"$C2V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_prevote = .*/timeout_prevote = \"500ms\"/' \"$C2V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_precommit = .*/timeout_precommit = \"500ms\"/' \"$C2V2_HOME/config/config.toml\"\nsed -i '' 's/^timeout_commit = .*/timeout_commit = \"1s\"/' \"$C2V2_HOME/config/config.toml\"\n\necho \"==> Funding validator 2 account on sourcehub-2...\"\n$BIN tx bank send source $VAL22_ADDR 10000000000uopen \\\n  --from source \\\n  --keyring-backend test \\\n  --home $C2V1_HOME \\\n  --chain-id $CHAIN2_ID \\\n  --node $C2V1_RPC \\\n  --gas auto \\\n  --fees 500uopen \\\n  --yes\n\nsleep 1\n\necho \"==> Creating validator 2 on sourcehub-2...\"\nPUBKEY_JSON2=$($BIN tendermint show-validator --home=\"$C2V2_HOME\")\necho \"{\n  \\\"pubkey\\\": $PUBKEY_JSON2,\n  \\\"amount\\\": \\\"1000000000uopen\\\",\n  \\\"moniker\\\": \\\"$C2V2_NAME\\\",\n  \\\"identity\\\": \\\"\\\",\n  \\\"website\\\": \\\"\\\",\n  \\\"security\\\": \\\"\\\",\n  \\\"details\\\": \\\"\\\",\n  \\\"commission-rate\\\": \\\"0.1\\\",\n  \\\"commission-max-rate\\\": \\\"0.2\\\",\n  \\\"commission-max-change-rate\\\": \\\"0.01\\\",\n  \\\"min-self-delegation\\\": \\\"1\\\"\n}\" > $C2V2_JSON\n\n$BIN tx staking create-validator \"$C2V2_JSON\" \\\n  --from $C2V2 \\\n  --chain-id $CHAIN2_ID \\\n  --home $C2V2_HOME \\\n  --keyring-backend=test \\\n  --node $C2V1_RPC \\\n  --gas auto \\\n  --fees 500uopen \\\n  --yes\n\nsleep 1\n\necho \"==> Starting validator 2 on sourcehub-2...\"\n$BIN start \\\n  --home $C2V2_HOME \\\n  --rpc.laddr $C2V2_RPC \\\n  --rpc.pprof_laddr $C2V2_PPROF \\\n  --p2p.laddr $C2V2_P2P \\\n  --grpc.address $C2V2_GRPC \\\n  --address $C2V2_ADDR \\\n  > chain_2_2.log 2>&1 &\n\n# Let chains run for a few seconds to make sure all validators are in sync\nsleep 10\n\n# Add hermes key (same for both chains)\necho \"divert tenant reveal hire thing jar carry lonely magic oak audit fiber earth catalog cheap merry print clown portion speak daring giant weird slight\" > /tmp/mnemonic.txt\nhermes keys add --chain $CHAIN1_ID --mnemonic-file /tmp/mnemonic.txt\nhermes keys add --chain $CHAIN2_ID --mnemonic-file /tmp/mnemonic.txt\nrm /tmp/mnemonic.txt\n\necho \"==> Creating channel...\"\nhermes create channel \\\n  --a-chain $CHAIN1_ID \\\n  --b-chain $CHAIN2_ID \\\n  --a-port transfer \\\n  --b-port transfer \\\n  --new-client-connection \\\n  --yes\n\nsleep 1\n\necho \"==> Starting Hermes...\"\nhermes start > hermes.log 2>&1 &\n\nsleep 5\n\n$BIN tx ibc-transfer transfer transfer channel-0 \\\n  $SOURCE_ADDR 1000uopen \\\n  --from source \\\n  --keyring-backend test \\\n  --chain-id sourcehub-1 \\\n  --home \"$C1V1_HOME\" \\\n  --node \"$C1V1_RPC\" \\\n  --gas auto --gas-adjustment 1.3 \\\n  --fees 500uopen \\\n  --yes\n\nsleep 5\n\n$BIN q bank balances $SOURCE_ADDR --node \"$C2V1_RPC\"\n\necho \"DONE\"\n"
  },
  {
    "path": "scripts/stop-multichain.sh",
    "content": "#!/bin/sh\n\nset -e\n\nC1V1_HOME=\"$HOME/.sourcehub-1-1\"\nC2V1_HOME=\"$HOME/.sourcehub-2-1\"\nC1V2_HOME=\"$HOME/.sourcehub-1-2\"\nC2V2_HOME=\"$HOME/.sourcehub-2-2\"\nHERMES_HOME=\"$HOME/.hermes\"\n\nC1V2_JSON=\"scripts/validator1-2.json\"\nC2V2_JSON=\"scripts/validator2-2.json\"\n\nICA_PACKET_JSON=\"scripts/ica_packet.json\"\n\nps aux | grep sourcehubd\n\nkillall sourcehubd 2>/dev/null || true\nkillall hermes 2>/dev/null || true\n\nsleep 1\n\nrm -rf $C1V1_HOME\nrm -rf $C2V1_HOME\nrm -rf $HERMES_HOME\nrm -rf $C1V2_HOME\nrm -rf $C2V2_HOME\nrm -rf chain_*.log\nrm -rf hermes.log\nrm $C1V2_JSON 2>/dev/null || true\nrm $C2V2_JSON 2>/dev/null || true\nrm $ICA_PACKET_JSON 2>/dev/null || true\n\necho \"DONE\"\n"
  },
  {
    "path": "scripts/test-policy.yaml",
    "content": "name: Bulletin Policy\ndescription: Base policy that defines permissions for bulletin namespaces\nresources:\n- name: namespace\n  relations:\n  - owner:\n    types:\n    - actor\n  - name: collaborator\n    types: \n    - actor\n  permissions:\n  - name: create_post\n    expr: owner + collaborator"
  },
  {
    "path": "scripts/tier-dev.sh",
    "content": "#!/bin/bash\n\nCHAINID=sourcehub\nCMD=sourcehubd\n\n# Get account address from account name.\nsh-acc-addr() {\n    local account_name=$1\n    local address=$($CMD keys show \"$account_name\" --output json | jq -r '.address')\n\n    if [ -z \"$address\" ]; then\n        echo \"Error: Could not find address for account name '$account_name'\"\n        return 1\n    else\n        echo \"$address\"\n        return 0\n    fi\n}\n\nsh-val-addr() {\n    validator_name=$1\n    if [ -z \"$validator_name\" ]; then\n        $CMD q staking validators --output json | jq -r '.validators[0].operator_address'\n    else\n        $CMD q staking validator $validator_name --output json | jq -r '.validator.operator_address'\n    fi\n}\n\nsh-mod-addr() {\n    mod_name=$1\n    $CMD q auth module-account $mod_name -o json | jq -r .account.value.address\n}\n\nsh-balances() {\n    account_list=$*\n    if [ -z \"$account_list\" ]; then\n        account_list=`$CMD keys list --output json | jq -r '.[].name'`\n    fi\n    for account_name in $account_list; do\n        echo $account_name;\n        if [[ $account_name == mod_* ]]; then\n            mod_name=${account_name:4}\n            account_name=`sh-mod-addr $mod_name`\n        fi\n        $CMD q bank balances $account_name --output json | jq '.balances';\n    done\n}\n\nsh-send() {\n    from=$1\n    to=$2\n    amount=$3\n    $CMD tx bank send `sh-acc-addr $from` `sh-acc-addr $to` $amount -y --chain-id $CHAINID --gas auto\n}\n\nsh-stake() {\n    validator_name=$1\n    from=$2\n    amount=$3\n    $CMD tx staking delegate `sh-val-addr $validator_name` $amount --from $from -y --chain-id $CHAINID --gas auto\n}\n\nsh-lock() {\n    validator_name=$1\n    from=$2\n    amount=$3\n    $CMD tx tier lock `sh-val-addr $validator_name` $amount --from $from -y --chain-id $CHAINID --gas auto\n}\n\nsh-unlock() {\n    validator_name=$1\n    from=$2\n    amount=$3\n    $CMD tx tier unlock `sh-val-addr $validator_name` $amount --from $from -y --chain-id $CHAINID --gas auto\n}\n\nsh-cancel-unlocking() {\n    validator_name=$1\n    from=$2\n    amount=$3\n    creation_height=$4\n    $CMD tx tier cancel-unlocking `sh-val-addr $validator_name` $amount $creation_height --from $from -y --chain-id $CHAINID --gas auto\n}\n"
  },
  {
    "path": "scripts/tx-listener.sh",
    "content": "#!/usr/bin/env sh\n\necho '{ \"jsonrpc\": \"2.0\",\"method\": \"subscribe\",\"id\": 0,\"params\": {\"query\": \"tm.event='\"'Tx'\"'\"} }' | websocat -n -t ws://127.0.0.1:26657/websocket | jq\n"
  },
  {
    "path": "sdk/acp.go",
    "content": "package sdk\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// NewCmdBuilder returns a builder for PolicyCmd objects from a client.\n//\n// The client is used to fetch the latest ACP module params from SourceHub\n// and as a block height fetcher.\nfunc NewCmdBuilder(ctx context.Context, client *Client) (*signed_policy_cmd.CmdBuilder, error) {\n\tacpClient := client.ACPQueryClient()\n\tparamsResp, err := acpClient.Params(ctx, &types.QueryParamsRequest{})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to fetch params for cmd builder: %v\", err)\n\t}\n\tparams := paramsResp.Params\n\n\tclock := signed_policy_cmd.LogicalClockFromCometClient(client.cometClient)\n\n\treturn signed_policy_cmd.NewCmdBuilder(clock, params), nil\n}\n"
  },
  {
    "path": "sdk/constants.go",
    "content": "package sdk\n\nconst (\n\tTestnet1            = \"sourcehub-testnet-1\"\n\tTestnetLatest       = Testnet1\n\tDefaultChainID      = TestnetLatest\n\tDefaultGRPCAddr     = \"localhost:9090\"\n\tDefaultCometRPCAddr = \"tcp://localhost:26657\"\n\n\t// abciSocketPath specifies the endpoint which the cometrpc http client connects to\n\tabciSocketPath string = \"/websocket\"\n)\n"
  },
  {
    "path": "sdk/doc.go",
    "content": "// package sdk provides functionality to interact with SourceHub\n//\n// package sdk provides custom helpers and utility types to interact with SourceHub and\n// reexport useful and common types used to interact with SourceHub.\n// These types are used to query state across SourceHub modules (GRPC Query Clients),\n// build and broadcast Txs, listen and await for Txs and interacts with general cosmos-sdk chains.\n//\npackage sdk\n"
  },
  {
    "path": "sdk/errors.go",
    "content": "package sdk\n\nimport \"errors\"\n\nvar ErrTxFailed = errors.New(\"tx failed\")\n"
  },
  {
    "path": "sdk/listener.go",
    "content": "package sdk\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\tcometclient \"github.com/cometbft/cometbft/rpc/client\"\n\trpctypes \"github.com/cometbft/cometbft/rpc/core/types\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nconst mapperBuffSize int = 100\n\n// TxListener is a client which subscribes to Tx events in SourceHub's cometbft socket\n// and parses the received events into version with unmarshaled Msg Responses.\ntype TxListener struct {\n\trpc       cometclient.Client\n\tcleanupFn func()\n}\n\n// NewTxListener creates a new listener from a comet client\nfunc NewTxListener(client cometclient.Client) TxListener {\n\treturn TxListener{\n\t\trpc: client,\n\t}\n}\n\n// Event models a Cometbft Tx event with unmarshaled Msg responses\ntype Event struct {\n\tHeight    int64     `json:\"height\"`\n\tIndex     uint32    `json:\"index\"`\n\tTx        []byte    `json:\"tx\"`\n\tCode      uint32    `json:\"code\"`\n\tLog       string    `json:\"log\"`\n\tInfo      string    `json:\"info\"`\n\tGasWanted int64     `json:\"gas_wanted\"`\n\tGasUsed   int64     `json:\"gas_used\"`\n\tCodespace string    `json:\"codespace\"`\n\tResponses []sdk.Msg `json:\"responses\"`\n}\n\n// ListenTxs spawns a go routine which continously listens for Tx events from a cometbft connection.\n// The received events are returned into the Events channel, all errors are sent to the errors channel.\n//\n// If ListenTxs fails to connect to the comet client, returns an error and nil channels.\nfunc (l *TxListener) ListenTxs(ctx context.Context) (<-chan Event, <-chan error, error) {\n\tch, err := l.rpc.Subscribe(ctx, \"\", \"tm.event='Tx'\")\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"TxListener: subscribing to Tx event: %w\", err)\n\t}\n\n\tregistry := cdctypes.NewInterfaceRegistry()\n\tacptypes.RegisterInterfaces(registry)\n\tbulletintypes.RegisterInterfaces(registry)\n\ttiertypes.RegisterInterfaces(registry)\n\n\tmapper := func(in rpctypes.ResultEvent) (Event, error) {\n\t\tresultBytes, err := json.Marshal(in.Data)\n\t\tif err != nil {\n\t\t\treturn Event{}, fmt.Errorf(\"marshaling result data to json: %v\", err)\n\t\t}\n\n\t\ttxResult := &abcitypes.TxResult{}\n\t\terr = json.Unmarshal(resultBytes, txResult)\n\t\tif err != nil {\n\t\t\treturn Event{}, fmt.Errorf(\"unmarshaling into TxResult: %w\", err)\n\t\t}\n\n\t\tmsgData := sdk.TxMsgData{}\n\t\terr = msgData.Unmarshal(txResult.Result.Data)\n\t\tif err != nil {\n\t\t\treturn Event{}, fmt.Errorf(\"unmarshaling TxResult.ExecResultTx.Data into TxMsgData: %v\", err)\n\t\t}\n\n\t\t//unmarshals the msg results into their\n\t\t// actual response values using the registered sourcehub types\n\t\tresponses := make([]sdk.Msg, 0, len(msgData.MsgResponses))\n\t\tfor i, resp := range msgData.MsgResponses {\n\t\t\tvar msg sdk.Msg\n\t\t\terr := registry.UnpackAny(resp, &msg)\n\t\t\tif err != nil {\n\t\t\t\treturn Event{}, fmt.Errorf(\"unmarshaling response %v: %w\", i, err)\n\t\t\t}\n\t\t\tresponses = append(responses, msg)\n\t\t}\n\n\t\treturn Event{\n\t\t\tHeight:    txResult.Height,\n\t\t\tIndex:     txResult.Index,\n\t\t\tTx:        txResult.Tx,\n\t\t\tCode:      txResult.Result.Code,\n\t\t\tLog:       txResult.Result.Log,\n\t\t\tInfo:      txResult.Result.Info,\n\t\t\tGasWanted: txResult.Result.GasWanted,\n\t\t\tGasUsed:   txResult.Result.GasUsed,\n\t\t\tCodespace: txResult.Result.Codespace,\n\t\t\tResponses: responses,\n\t\t}, nil\n\t}\n\n\tresultCh, errChn, closeFn := channelMapper(ch, mapper)\n\tl.cleanupFn = closeFn\n\treturn resultCh, errChn, err\n}\n\n// ListenAsync spawns a go routine and listens for txs asynchronously,\n// until the comet client closes the connection, the context is cancelled.\n// or the listener is closed.\n// Callback is called each time an event or an error is received\n// Returns an error if connection to comet fails\nfunc (l *TxListener) ListenAsync(ctx context.Context, cb func(*Event, error)) error {\n\tevs, errs, err := l.ListenTxs(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase result := <-evs:\n\t\t\t\tcb(&result, nil)\n\t\t\tcase err := <-errs:\n\t\t\t\tcb(nil, err)\n\t\t\tcase <-l.Done():\n\t\t\t\tlog.Printf(\"Listener closed: canceling loop\")\n\t\t\t\tbreak\n\t\t\tcase <-ctx.Done():\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n\treturn nil\n}\n\n// Done returns a channel which will be closed when the connection fails\nfunc (l *TxListener) Done() <-chan struct{} {\n\treturn l.rpc.Quit()\n}\n\n// Close stops listening for events and cleans up\nfunc (l *TxListener) Close() {\n\tl.rpc.Stop()\n\tl.cleanupFn()\n}\n\n// channelMapper wraps a channel and applies a failable mapper to all incoming items.\n// Returns a value channel, an error channel and a callback to terminate the channel\nfunc channelMapper[T, U any](ch <-chan T, mapper func(T) (U, error)) (values <-chan U, errors <-chan error, closeFn func()) {\n\terrCh := make(chan error, mapperBuffSize)\n\tvalCh := make(chan U, mapperBuffSize)\n\tcloseFn = func() {\n\t\tclose(errCh)\n\t\tclose(valCh)\n\t}\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase result, ok := <-ch:\n\t\t\t\tif !ok {\n\t\t\t\t\tclose(errCh)\n\t\t\t\t\tclose(valCh)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tu, err := mapper(result)\n\t\t\t\tif err != nil {\n\t\t\t\t\terrCh <- err\n\t\t\t\t} else {\n\t\t\t\t\tvalCh <- u\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\treturn valCh, errCh, closeFn\n}\n"
  },
  {
    "path": "sdk/listener_test.go",
    "content": "package sdk\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_channelMapper_Success(t *testing.T) {\n\tch := make(chan int, 10)\n\n\tmapper := func(i int) (string, error) {\n\t\treturn fmt.Sprintf(\"%v\", i), nil\n\t}\n\tvals, errs, _ := channelMapper(ch, mapper)\n\n\tch <- 1\n\tgot := <-vals\n\trequire.Equal(t, \"1\", got)\n\n\tselect {\n\tcase <-errs:\n\t\tt.Fatalf(\"unnexpected error in errors channel\")\n\tdefault:\n\t}\n}\n\nfunc Test_channelMapper_Err(t *testing.T) {\n\tch := make(chan int, 10)\n\n\terr := errors.New(\"err\")\n\tmapper := func(_ int) (string, error) {\n\t\treturn \"\", err\n\t}\n\tvals, errs, _ := channelMapper(ch, mapper)\n\n\tch <- 1\n\n\tgotErr := <-errs\n\trequire.Equal(t, err, gotErr)\n\n\tselect {\n\tcase <-vals:\n\t\tt.Fatalf(\"unnexpected value in values channel\")\n\tdefault:\n\t}\n}\n"
  },
  {
    "path": "sdk/mapper.go",
    "content": "package sdk\n\nimport (\n\t\"fmt\"\n\n\tcomettypes \"github.com/cometbft/cometbft/rpc/core/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/gogoproto/proto\"\n)\n\n// Mapper processes a CometBFT Tx Event from a specific Tx and maps into a payload.\n// Mapper is bound to a msgIdx within the Tx\ntype Mapper[T sdk.Msg] struct {\n\tmsgIdx    int\n\tcontainer T\n}\n\nfunc newMapper[T sdk.Msg](idx int, container T) Mapper[T] {\n\treturn Mapper[T]{\n\t\tmsgIdx:    idx,\n\t\tcontainer: container,\n\t}\n}\n\n// Map receives a CometBFT Tx Event Result and maps it into a T or errors if invalid\nfunc (e *Mapper[T]) Map(msg *comettypes.ResultTx) (T, error) {\n\tvar zero T\n\n\t// pretty sure this is an sdk response\n\tdata := msg.TxResult.Data\n\tmsgData := sdk.TxMsgData{}\n\terr := msgData.Unmarshal(data)\n\tif err != nil {\n\t\treturn zero, err\n\t}\n\n\tif len(msgData.MsgResponses) < e.msgIdx+1 {\n\t\treturn zero, fmt.Errorf(\"invalid mapper: tx does not contain %v msgs\", e.msgIdx+1)\n\t}\n\n\tany := msgData.MsgResponses[e.msgIdx]\n\terr = proto.Unmarshal(any.Value, e.container)\n\tif err != nil {\n\t\treturn zero, err\n\t}\n\n\treturn e.container, nil\n}\n"
  },
  {
    "path": "sdk/msgset.go",
    "content": "package sdk\n\nimport (\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// MsgSet acts as set of Msgs to be added to a Tx\n// Each added Msg returns a Mapper which can be used to extract associated data from\n// the events emitted after Tx execution\ntype MsgSet struct {\n\tmsgs []sdk.Msg\n}\n\nfunc (b *MsgSet) GetMsgs() []sdk.Msg {\n\treturn b.msgs\n}\n\nfunc (b *MsgSet) addMsg(msg sdk.Msg) (idx int) {\n\tb.msgs = append(b.msgs, msg)\n\tidx = len(b.msgs) - 1\n\treturn\n}\n\n// WithCreatePolicy includes a MsgCreatePolicy to the Tx\nfunc (b *MsgSet) WithCreatePolicy(msg *acptypes.MsgCreatePolicy) Mapper[*acptypes.MsgCreatePolicyResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgCreatePolicyResponse{})\n}\n\n// WithEditPolicy includes a MsgEditPolicy to the Tx\nfunc (b *MsgSet) WithEditPolicy(msg *acptypes.MsgEditPolicy) Mapper[*acptypes.MsgEditPolicyResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgEditPolicyResponse{})\n}\n\n// WithCheckAccess includes a MsgCheckAccess to the Tx\nfunc (b *MsgSet) WithCheckAccess(msg *acptypes.MsgCheckAccess) Mapper[*acptypes.MsgCheckAccessResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgCheckAccessResponse{})\n}\n\n// WithSignedPolicyCmd includes a MsgSignedPolicyCmd to the Tx\nfunc (b *MsgSet) WithSignedPolicyCmd(msg *acptypes.MsgSignedPolicyCmd) Mapper[*acptypes.MsgSignedPolicyCmdResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgSignedPolicyCmdResponse{})\n}\n\n// WithCreatePost includes a MsgCreatePost to the Tx\nfunc (b *MsgSet) WithCreatePost(msg *bulletintypes.MsgCreatePost) Mapper[*bulletintypes.MsgCreatePostResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &bulletintypes.MsgCreatePostResponse{})\n}\n\nfunc (b *MsgSet) WithBearerPolicyCmd(msg *acptypes.MsgBearerPolicyCmd) Mapper[*acptypes.MsgBearerPolicyCmdResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgBearerPolicyCmdResponse{})\n}\n\nfunc (b *MsgSet) WithDirectPolicyCmd(msg *acptypes.MsgDirectPolicyCmd) Mapper[*acptypes.MsgDirectPolicyCmdResponse] {\n\tidx := b.addMsg(msg)\n\treturn newMapper(idx, &acptypes.MsgDirectPolicyCmdResponse{})\n}\n"
  },
  {
    "path": "sdk/sdk.go",
    "content": "package sdk\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\tcmtlog \"github.com/cometbft/cometbft/libs/log\"\n\tcometclient \"github.com/cometbft/cometbft/rpc/client\"\n\t\"github.com/cometbft/cometbft/rpc/client/http\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ttxtypes \"github.com/cosmos/cosmos-sdk/types/tx\"\n\txauthsigning \"github.com/cosmos/cosmos-sdk/x/auth/signing\"\n\tauthtx \"github.com/cosmos/cosmos-sdk/x/auth/tx\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\t\"github.com/ignite/cli/v28/ignite/pkg/cosmosclient\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\tbulletintypes \"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// Opt configures the construction of a Client\ntype Opt func(*Client) error\n\n// WithGRPCAddr sets the GRPC Address of a SourceHub node which the Client will connect to.\n// If not specified defaults to DefaultGRPCAddr\n// Note: Cosmos queries are not verifiable therefore only trusted RPC nodes should be used.\nfunc WithGRPCAddr(addr string) Opt {\n\treturn func(c *Client) error {\n\t\tc.grpcAddr = addr\n\t\treturn nil\n\t}\n}\n\n// WithCometRPCAddr sets the CometBFT RPC Address of a SourceHub node which the Client will connect to.\n// If not set defaults to DefaultCometHTTPAddr\nfunc WithCometRPCAddr(addr string) Opt {\n\treturn func(c *Client) error {\n\t\tc.cometRPCAddr = addr\n\t\treturn nil\n\t}\n}\n\n// WithGRPCOpts specifies the dial options which will be used to dial SourceHub's GRPC (queries) service\nfunc WithGRPCOpts(opts ...grpc.DialOption) Opt {\n\treturn func(c *Client) error {\n\t\tc.grpcOpts = opts\n\t\treturn nil\n\t}\n}\n\n// NewClient returns a new SourceHub SDK client\nfunc NewClient(opts ...Opt) (*Client, error) {\n\tclient := &Client{\n\t\tgrpcAddr:     DefaultGRPCAddr,\n\t\tcometRPCAddr: DefaultCometRPCAddr,\n\t\tlogger:       cmtlog.NewTMLogger(os.Stderr),\n\t}\n\n\tfor _, opt := range opts {\n\t\tif err := opt(client); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"applying client option: %w\", err)\n\t\t}\n\t}\n\n\tdialOpts := make([]grpc.DialOption, 0, len(client.grpcOpts)+1)\n\tdialOpts = append(dialOpts, grpc.WithTransportCredentials(insecure.NewCredentials()))\n\tdialOpts = append(dialOpts, client.grpcOpts...)\n\tconn, err := grpc.Dial(client.grpcAddr, dialOpts...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"sourcehub grpc dial: %w\", err)\n\t}\n\n\tcometClient, err := http.New(client.cometRPCAddr, abciSocketPath)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"comet rpc client: %w\", err)\n\t}\n\terr = cometClient.Start()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"starting comet rpc client: %w\", err)\n\t}\n\n\tclient.txClient = txtypes.NewServiceClient(conn)\n\tclient.listener = NewTxListener(cometClient)\n\tclient.conn = conn\n\tclient.cometClient = cometClient\n\n\treturn client, nil\n}\n\n// Client abstracts a set of connections to a SourceHub node.\n// The Client type provides access to module specific clients and functionalities to\n// interact with SourceHub such as performing module Queries (GRPC), Broadcast Txs\n// and interact with CometBFT\ntype Client struct {\n\tgrpcAddr     string\n\tcometRPCAddr string\n\tgrpcOpts     []grpc.DialOption\n\tlogger       cmtlog.Logger\n\n\tcometClient cometclient.Client\n\tconn        *grpc.ClientConn\n\ttxClient    txtypes.ServiceClient\n\tlistener    TxListener\n}\n\n// BroadcastTx broadcasts a signed Tx to a SourceHub node and returns the node's response.\n// Callers can use TxResponse.TxHash to await or listen until the Tx is accepted and executed.\nfunc (b *Client) BroadcastTx(ctx context.Context, tx xauthsigning.Tx) (*sdk.TxResponse, error) {\n\tencoder := authtx.DefaultTxEncoder()\n\ttxBytes, err := encoder(tx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"marshaling tx: %w\", err)\n\t}\n\n\tgrpcRes, err := b.txClient.BroadcastTx(\n\t\tctx,\n\t\t&txtypes.BroadcastTxRequest{\n\t\t\tMode:    txtypes.BroadcastMode_BROADCAST_MODE_SYNC,\n\t\t\tTxBytes: txBytes,\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Printf(\"broadcasting err: %v\", grpcRes)\n\t\treturn nil, err\n\t}\n\n\tresponse := grpcRes.TxResponse\n\n\tif response.Code != 0 {\n\t\treturn response, fmt.Errorf(\"tx rejected: codespace %v: code %v: %v\", response.Codespace, response.Code, response.RawLog)\n\t}\n\n\treturn response, nil\n}\n\n// Close terminates the Client, freeing up resources and connections\nfunc (b *Client) Close() {\n\tb.cometClient.Stop()\n\tb.conn.Close()\n}\n\n// ACPQueryClient returns a Query Client for the ACP module\nfunc (c *Client) ACPQueryClient() acptypes.QueryClient {\n\treturn acptypes.NewQueryClient(c.conn)\n}\n\n// BulletinQueryClient returns a Query Client for the Bulletin module\nfunc (c *Client) BulletinQueryClient() bulletintypes.QueryClient {\n\treturn bulletintypes.NewQueryClient(c.conn)\n}\n\n// BankQueryClient returns a Query Client for the Bank module\nfunc (c *Client) BankQueryClient() banktypes.QueryClient {\n\treturn banktypes.NewQueryClient(c.conn)\n}\n\n// FeegrantQueryClient returns a Query Client for the Feegrant module\nfunc (c *Client) FeeGrantQueryClient() feegrant.QueryClient {\n\treturn feegrant.NewQueryClient(c.conn)\n}\n\n// AuthQueryClient returns a Query Client for the Auth module\nfunc (c *Client) AuthQueryClient() authtypes.QueryClient {\n\treturn authtypes.NewQueryClient(c.conn)\n}\n\n// CometBFTRPCClient returns a Comet RPC Client\nfunc (c *Client) CometBFTRPCClient() cometclient.Client {\n\treturn c.cometClient\n}\n\n// TxListener returns a TxListener\nfunc (c *Client) TxListener() TxListener {\n\treturn c.listener\n}\n\nfunc (c *Client) ListenForTx(ctx context.Context, txHash string) <-chan *ListenResult {\n\tch := make(chan *ListenResult)\n\tgo func() {\n\t\tresult, err := c.AwaitTx(ctx, txHash)\n\t\tch <- newListenResult(result, err)\n\t}()\n\n\treturn ch\n}\n\nfunc (c *Client) AwaitTx(ctx context.Context, txHash string) (*TxExecResult, error) {\n\tigniteClient, err := cosmosclient.New(ctx, cosmosclient.WithRPCClient(c.cometClient))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tresult, err := igniteClient.WaitForTx(ctx, txHash)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn newTxExecResult(result), nil\n}\n\nfunc (c *Client) GetTx(ctx context.Context, txHash string) (*TxExecResult, error) {\n\tbytes, err := hex.DecodeString(txHash)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid tx hash: %v\", err)\n\t}\n\n\ttxRPC, err := c.CometBFTRPCClient().Tx(ctx, bytes, false)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get tx: %v\", err)\n\t}\n\n\treturn newTxExecResult(txRPC), nil\n}\n"
  },
  {
    "path": "sdk/tx.go",
    "content": "package sdk\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\n\tsdkmath \"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ttxtypes \"github.com/cosmos/cosmos-sdk/types/tx\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\txauthsigning \"github.com/cosmos/cosmos-sdk/x/auth/signing\"\n\tauthtx \"github.com/cosmos/cosmos-sdk/x/auth/tx\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/params\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\ntype TxBuilder struct {\n\tchainID       string\n\tgasLimit      uint64\n\tfeeGranter    sdk.AccAddress\n\tauthClient    authtypes.QueryClient\n\ttxClient      txtypes.ServiceClient\n\ttxCfg         client.TxConfig\n\tfeeTokenDenom string\n\tfeeAmt        int64\n\taccount       authtypes.BaseAccount\n\tgasAdjustment float64\n\tbearerToken   string // JWS bearer token for DID-based authorization\n}\n\nfunc NewTxBuilder(opts ...TxBuilderOpt) (TxBuilder, error) {\n\tregistry := cdctypes.NewInterfaceRegistry()\n\tcfg := authtx.NewTxConfig(\n\t\tcodec.NewProtoCodec(registry),\n\t\t[]signing.SignMode{\n\t\t\tsigning.SignMode_SIGN_MODE_DIRECT,\n\t\t},\n\t)\n\n\tbuilder := TxBuilder{\n\t\ttxCfg:         cfg,\n\t\tchainID:       DefaultChainID,\n\t\tfeeTokenDenom: appparams.DefaultBondDenom,\n\t\tfeeAmt:        200,\n\t\tgasLimit:      200000,\n\t\tgasAdjustment: 1.5,\n\t}\n\n\tfor _, opt := range opts {\n\t\terr := opt(&builder)\n\t\tif err != nil {\n\t\t\treturn TxBuilder{}, err\n\t\t}\n\t}\n\n\tif builder.authClient == nil {\n\t\treturn TxBuilder{}, fmt.Errorf(\"TxBuilder: Auth GRPC Client is required: use either WithAuthQueryClient or WithSDKClient to set it\")\n\t}\n\n\treturn builder, nil\n}\n\n// Build builds a SourceHub Tx containing msgs in MsgSet.\n// The returned Tx can then be broadcast.\nfunc (b *TxBuilder) Build(ctx context.Context, signer TxSigner, set *MsgSet) (xauthsigning.Tx, error) {\n\treturn b.BuildFromMsgs(ctx, signer, set.GetMsgs()...)\n}\n\n// BuildFromMsgs builds a SourceHub Tx containing msgs.\n// The returned Tx can then be broadcast.\nfunc (b *TxBuilder) BuildFromMsgs(ctx context.Context, signer TxSigner, msgs ...sdk.Msg) (xauthsigning.Tx, error) {\n\tbuilder, err := b.initTx(ctx, signer, msgs...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := b.evaluateTx(ctx, builder); err != nil {\n\t\treturn nil, err\n\t}\n\n\ttx, err := b.finalizeTx(ctx, signer, builder)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn tx, nil\n}\n\nfunc (b *TxBuilder) initTx(ctx context.Context, signer TxSigner, msgs ...sdk.Msg) (client.TxBuilder, error) {\n\ttxBuilder := b.txCfg.NewTxBuilder()\n\terr := txBuilder.SetMsgs(msgs...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to set msgs: %v\", err)\n\t}\n\n\t// Set JWS bearer token extension option if provided\n\tif b.bearerToken != \"\" {\n\t\tjwsOpt := &antetypes.JWSExtensionOption{\n\t\t\tBearerToken: b.bearerToken,\n\t\t}\n\t\tany, err := cdctypes.NewAnyWithValue(jwsOpt)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to pack JWS extension option: %v\", err)\n\t\t}\n\t\tif extBuilder, ok := txBuilder.(client.ExtendedTxBuilder); ok {\n\t\t\textBuilder.SetExtensionOptions(any)\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"txBuilder does not support extension options\")\n\t\t}\n\t}\n\n\ttxBuilder.SetGasLimit(b.gasLimit)\n\tfeeAmt := sdk.NewCoins(sdk.NewInt64Coin(b.feeTokenDenom, b.feeAmt))\n\ttxBuilder.SetFeeAmount(feeAmt)\n\tif b.feeGranter != nil {\n\t\ttxBuilder.SetFeeGranter(b.feeGranter)\n\t}\n\n\tacc, err := b.getAccount(ctx, signer.GetAccAddress())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tb.account = acc\n\n\t// NOTE: The following snippet was based on the Cosmos-SDK documentation and codebase\n\t// See:\n\t// https://docs.cosmos.network/v0.50/user/run-node/txs#signing-a-transaction-1\n\t// https://github.com/cosmos/cosmos-sdk/blob/v0.50.6/client/tx/tx.go#L284\n\tsigV2 := signing.SignatureV2{\n\t\tPubKey: signer.GetPrivateKey().PubKey(),\n\t\tData: &signing.SingleSignatureData{\n\t\t\tSignMode:  signing.SignMode_SIGN_MODE_DIRECT,\n\t\t\tSignature: nil,\n\t\t},\n\t\tSequence: acc.GetSequence(),\n\t}\n\n\terr = txBuilder.SetSignatures(sigV2)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"set signatures: %v\", err)\n\t}\n\n\treturn txBuilder, nil\n}\n\n// evaluateTx simulates the tx and adjusts gas and fee amounts accordingly.\nfunc (b *TxBuilder) evaluateTx(ctx context.Context, txBuilder client.TxBuilder) error {\n\tif b.txClient == nil {\n\t\treturn nil\n\t}\n\n\tencoder := b.txCfg.TxEncoder()\n\ttxBytes, err := encoder(txBuilder.GetTx())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"encode tx for simulation: %w\", err)\n\t}\n\n\tsimRes, err := b.txClient.Simulate(ctx, &txtypes.SimulateRequest{TxBytes: txBytes})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"simulate tx: %w\", err)\n\t}\n\n\tgasUsed := simRes.GetGasInfo().GetGasUsed()\n\tif gasUsed == 0 {\n\t\treturn nil\n\t}\n\n\tadjusted := uint64(math.Ceil(float64(gasUsed) * b.gasAdjustment))\n\ttxBuilder.SetGasLimit(adjusted)\n\tb.gasLimit = adjusted\n\n\tminGasPrice := sdkmath.LegacyMustNewDecFromStr(appparams.DefaultMinGasPrice)\n\tdenomMultiplier := sdkmath.LegacyNewDec(1)\n\tif b.feeTokenDenom == params.MicroCreditDenom {\n\t\tdenomMultiplier = sdkmath.LegacyNewDec(appparams.CreditFeeMultiplier)\n\t}\n\tgasInt := sdkmath.NewIntFromUint64(adjusted)\n\trequiredAmount := minGasPrice.Mul(sdkmath.LegacyNewDecFromInt(gasInt)).Mul(denomMultiplier).Ceil().RoundInt()\n\ttxBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(b.feeTokenDenom, requiredAmount)))\n\tif requiredAmount.IsInt64() {\n\t\tb.feeAmt = requiredAmount.Int64()\n\t}\n\n\tif b.feeGranter != nil {\n\t\ttxBuilder.SetFeeGranter(b.feeGranter)\n\t}\n\n\treturn nil\n}\n\nfunc (b *TxBuilder) finalizeTx(ctx context.Context, signer TxSigner, txBuilder client.TxBuilder) (xauthsigning.Tx, error) {\n\tsignerData := xauthsigning.SignerData{\n\t\tChainID:       b.chainID,\n\t\tAccountNumber: b.account.GetAccountNumber(),\n\t\tSequence:      b.account.GetSequence(),\n\t\tPubKey:        signer.GetPrivateKey().PubKey(),\n\t}\n\n\tsigV2, err := tx.SignWithPrivKey(\n\t\tctx,\n\t\tsigning.SignMode_SIGN_MODE_DIRECT,\n\t\tsignerData,\n\t\ttxBuilder,\n\t\tsigner.GetPrivateKey(),\n\t\tb.txCfg,\n\t\tb.account.GetSequence())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"sign tx: %v\", err)\n\t}\n\n\terr = txBuilder.SetSignatures(sigV2)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"set signatures: %v\", err)\n\t}\n\n\treturn txBuilder.GetTx(), nil\n}\n\nfunc (c *TxBuilder) getAccount(ctx context.Context, addr string) (authtypes.BaseAccount, error) {\n\tmsg := authtypes.QueryAccountRequest{\n\t\tAddress: addr,\n\t}\n\n\tresp, err := c.authClient.Account(ctx, &msg)\n\tif err != nil {\n\t\treturn authtypes.BaseAccount{}, fmt.Errorf(\"fetching account: %v\", err)\n\t}\n\n\tacc := authtypes.BaseAccount{}\n\terr = acc.Unmarshal(resp.Account.Value)\n\tif err != nil {\n\t\treturn acc, fmt.Errorf(\"unmarshaling account: %v\", err)\n\t}\n\n\treturn acc, nil\n}\n\n// TxBuilderOpt is a constructor option to initialize a TxBuilder\ntype TxBuilderOpt func(*TxBuilder) error\n\n// WithChainID specifies the ChainID to which the Tx will be signed to.\n// Defaults to the most recent SourceHub chain deployment\nfunc WithChainID(id string) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.chainID = id\n\t\treturn nil\n\t}\n}\n\n// WithMicroOpen configures TxBuilder to build Txs paid using open tokens\nfunc WithMicroOpen() TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.feeTokenDenom = params.MicroOpenDenom\n\t\treturn nil\n\t}\n}\n\n// WithMicroCredit configures TxBuilder to build Txs paid using credits\nfunc WithMicroCredit() TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.feeTokenDenom = params.MicroCreditDenom\n\t\treturn nil\n\t}\n}\n\n// WithTestnetChainID specifies the ChainID to be SourceHub's latest test net\nfunc WithTestnetChainID() TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.chainID = TestnetLatest\n\t\treturn nil\n\t}\n}\n\n// WithFeeToken specifies the fee value\nfunc WithFeeAmount(fee int64) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.feeAmt = fee\n\t\treturn nil\n\t}\n}\n\n// WithFeeToken specifies the token denominator to use for the fee\nfunc WithFeeToken(denom string) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.feeTokenDenom = denom\n\t\treturn nil\n\t}\n}\n\n// WithGasLimit configures the maximum\nfunc WithGasLimit(limit uint64) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.gasLimit = limit\n\t\treturn nil\n\t}\n}\n\n// WithFeeGranter sets the fee granter for the Tx.\n// The fee granter pays for the executed Tx.\n// Fee grants are configured by cosmos x/feegrant module.\n// See: https://pkg.go.dev/github.com/cosmos/cosmos-sdk/x/feegrant#section-readme\nfunc WithFeeGranter(acc string) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\taddr, err := sdk.AccAddressFromBech32(acc)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid feegrant account: %w\", err)\n\t\t}\n\t\tb.feeGranter = addr\n\n\t\treturn nil\n\t}\n}\n\n// WithGRPCConnection sets the GRPC Connection to be used in the Builder.\n// The connection should point to a trusted  SourceHub node which will be used to perform\n// Cosmos Query client queries.\n// Note: Cosmos queries are not verifiable therefore only trusted RPC nodes should be used.\nfunc WithAuthQueryClient(client authtypes.QueryClient) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.authClient = client\n\t\treturn nil\n\t}\n}\n\n// WithClient uses an SDK Client to retrieve the required connections.\nfunc WithSDKClient(client *Client) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.authClient = client.AuthQueryClient()\n\t\tb.txClient = client.txClient\n\t\treturn nil\n\t}\n}\n\n// WithBearerToken sets a JWS bearer token for DID-based authorization.\n// The bearer token will be added as an extension option to the transaction.\nfunc WithBearerToken(token string) TxBuilderOpt {\n\treturn func(b *TxBuilder) error {\n\t\tb.bearerToken = token\n\t\treturn nil\n\t}\n}\n\n// init calls app.SetConfig to configure the Cosmos SDK global config (e.g., Bech32 prefixes)\n// with sealing disabled (false). This is required for Tx signing and address encoding to work\n// correctly. The side effect is that importing the sdk package mutates global Cosmos SDK state.\n// This is a known limitation: Cosmos SDK relies on global config, and libraries that depend\n// on address encoding must initialize it early. Sealing is disabled to allow tests and\n// downstream consumers to override the config if needed.\nfunc init() {\n\tapp.SetConfig(false)\n}\n"
  },
  {
    "path": "sdk/tx_signer.go",
    "content": "package sdk\n\nimport (\n\t\"fmt\"\n\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\n\t\"github.com/sourcenetwork/sourcehub/types\"\n)\n\nvar secp256k1MsgTypeUrl = cdctypes.MsgTypeURL(&secp256k1.PubKey{})\n\n// TxSigner models an entity capable of providing signatures for a Tx.\n//\n// Effectively, it can be either a secp256k1 cosmos-sdk key or a pointer to a\n// secp256k1 key in a cosmos-sdk like keyring.\ntype TxSigner interface {\n\tGetAccAddress() string\n\tGetPrivateKey() cryptotypes.PrivKey\n}\n\n// NewTxSignerFromKeyringKey receives a cosmos keyring and a named key in the keyring\n// and returns a TxSigner capable of signing Txs.\n// In order to sign Txs, the key must be of type secp256k1, as it's the only supported\n// Tx signing key in CosmosSDK.\n// See https://docs.cosmos.network/main/learn/beginner/accounts#keys-accounts-addresses-and-signatures\n//\n// Note: The adapter does not access the private key bytes directly, instead delegating\n// the signing to the keyring itself. As such, any attempt to dump the bytes of the priv key\n// will cause a panic\nfunc NewTxSignerFromKeyringKey(keyring keyring.Keyring, name string) (TxSigner, error) {\n\trecord, err := keyring.Key(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif record == nil {\n\t\treturn nil, fmt.Errorf(\"key %v not found for keyring\", name)\n\t}\n\n\tif record.PubKey.TypeUrl != secp256k1MsgTypeUrl {\n\t\treturn nil, fmt.Errorf(\"cannot create signer from key %v: key must be of type secp256k1\", name)\n\t}\n\n\tpubKey := &secp256k1.PubKey{}\n\terr = pubKey.Unmarshal(record.PubKey.Value)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not unmarshal key %v: %v\", name, err)\n\t}\n\n\treturn &keyringTxSigner{\n\t\tkeyring: keyring,\n\t\tkeyname: name,\n\t\tpubkey:  pubKey,\n\t}, nil\n}\n\n// NewTxSignerFromAccountAddress takes a cosmos keyring and an account address\n// and returns a TxSigner capable of signing Txs.\n// If there are no keys matching the given address, returns an error.\n//\n// In order to sign Txs, the key must be of type secp256k1, as it's the only supported\n// Tx signing key in CosmosSDK.\n// See https://docs.cosmos.network/main/learn/beginner/accounts#keys-accounts-addresses-and-signatures\n//\n// Note: The adapter does not access the private key bytes directly, instead delegating\n// the signing to the keyring itself. As such, any attempt to dump the bytes of the priv key\n// will cause a panic\nfunc NewTxSignerFromAccountAddress(keyring keyring.Keyring, address string) (TxSigner, error) {\n\taccAddr, err := types.AccAddressFromBech32(address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\trecord, err := keyring.KeyByAddress(accAddr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif record == nil {\n\t\treturn nil, fmt.Errorf(\"key %v not found for keyring\", address)\n\t}\n\n\tif record.PubKey.TypeUrl != secp256k1MsgTypeUrl {\n\t\treturn nil, fmt.Errorf(\"cannot create signer from key %v: key must be of type secp256k1\", address)\n\t}\n\n\tpubKey := &secp256k1.PubKey{}\n\terr = pubKey.Unmarshal(record.PubKey.Value)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not unmarshal key %v: %v\", address, err)\n\t}\n\n\treturn &keyringTxSigner{\n\t\tkeyring: keyring,\n\t\tkeyname: address,\n\t\tpubkey:  pubKey,\n\t}, nil\n}\n\n// keyringTxSigner wraps a keyring as a TxSigner\ntype keyringTxSigner struct {\n\tkeyring keyring.Keyring\n\tkeyname string\n\tpubkey  cryptotypes.PubKey\n}\n\nfunc (s *keyringTxSigner) GetAccAddress() string {\n\taddr := s.pubkey.Address().Bytes()\n\treturn sdk.AccAddress(addr).String()\n}\n\nfunc (s *keyringTxSigner) GetPrivateKey() cryptotypes.PrivKey {\n\treturn &keyringPKAdapter{\n\t\tkeyring: s.keyring,\n\t\tkeyname: s.keyname,\n\t\tpubkey:  s.pubkey,\n\t}\n}\n\n// keyringPKAdapter adapts a keyring + pubkey into a Cosmos PrivKey\n// This type does not support the Bytes() method because it's not made to\n// represent a handle to a Private Key.\n// Calling Bytes() will cause a panic.\ntype keyringPKAdapter struct {\n\tkeyring keyring.Keyring\n\tkeyname string\n\tpubkey  cryptotypes.PubKey\n}\n\nfunc (a *keyringPKAdapter) Bytes() []byte {\n\tpanic(\"dumping bytes from PrivKey in Keyring isn't supported\")\n}\n\nfunc (a *keyringPKAdapter) Sign(msg []byte) ([]byte, error) {\n\tbytes, _, err := a.keyring.Sign(a.keyname, msg, signing.SignMode_SIGN_MODE_DIRECT)\n\treturn bytes, err\n}\n\nfunc (a *keyringPKAdapter) PubKey() cryptotypes.PubKey {\n\treturn a.pubkey\n}\n\nfunc (a *keyringPKAdapter) Equals(cryptotypes.LedgerPrivKey) bool {\n\treturn false\n}\n\nfunc (a *keyringPKAdapter) Type() string {\n\treturn secp256k1.PrivKeyName\n}\n\nfunc (a *keyringPKAdapter) Reset()         {}\nfunc (a *keyringPKAdapter) ProtoMessage()  {}\nfunc (a *keyringPKAdapter) String() string { return a.Type() }\n\n// privKeySigner implements TxSigner for a Cosmos PrivKey\ntype privKeySigner struct {\n\tkey cryptotypes.PrivKey\n}\n\n// TxSignerFromCosmosKey returns a TxSigner from a cosmos PrivKey\nfunc TxSignerFromCosmosKey(priv cryptotypes.PrivKey) TxSigner {\n\treturn &privKeySigner{\n\t\tkey: priv,\n\t}\n}\n\nfunc (s *privKeySigner) GetPrivateKey() cryptotypes.PrivKey {\n\treturn s.key\n}\n\nfunc (s *privKeySigner) GetAccAddress() string {\n\taddr := s.key.PubKey().Address().Bytes()\n\treturn sdk.AccAddress(addr).String()\n}\n"
  },
  {
    "path": "sdk/types.go",
    "content": "package sdk\n\nimport (\n\t\"fmt\"\n\n\trpctypes \"github.com/cometbft/cometbft/rpc/core/types\"\n)\n\nfunc newTxExecResult(result *rpctypes.ResultTx) *TxExecResult {\n\tvar err error\n\tif result.TxResult.Code != 0 {\n\t\terr = fmt.Errorf(\"%v: %v\", ErrTxFailed, result.TxResult.Log)\n\t\tresult = nil\n\t}\n\n\treturn &TxExecResult{\n\t\tresult: result,\n\t\terr:    err,\n\t}\n}\n\n// TxExecResult models the outcome of a Tx evaluated by SourceHub.\n// The Tx was either successfully included or an error happened while handling one of its Msgs.\ntype TxExecResult struct {\n\tresult *rpctypes.ResultTx\n\terr    error\n}\n\n// Error returns whether the error message if the Tx execution failed\nfunc (r *TxExecResult) Error() error {\n\treturn r.err\n}\n\n// TxPayload returns the payload of the executed Tx\nfunc (r *TxExecResult) TxPayload() *rpctypes.ResultTx {\n\treturn r.result\n}\n\nfunc newListenResult(result *TxExecResult, err error) *ListenResult {\n\treturn &ListenResult{\n\t\tresult: result,\n\t\terr:    err,\n\t}\n}\n\n// ListenResult represents the result of waiting for a Tx to be executed by SourceHub\n// Can either error, meaning timeout or network error, or return the Tx object queried from the chain state\ntype ListenResult struct {\n\tresult *TxExecResult\n\terr    error\n}\n\n// Error return the error of the ListenResult, returns nil if successful\nfunc (r *ListenResult) Error() error { return r.err }\n\n// GetTxResult returns the outcome of the executed Tx by SourceHub\nfunc (r *ListenResult) GetTxResult() *TxExecResult { return r.result }\n"
  },
  {
    "path": "tests/e2e/sdk/sdk_test.go",
    "content": "package sdk\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n\ttestutil \"github.com/sourcenetwork/sourcehub/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/e2e\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSDKBasic(t *testing.T) {\n\tnetwork := e2e.TestNetwork{}\n\n\tnetwork.Setup(t)\n\tt.Cleanup(network.TearDown)\n\n\tclient := network.GetSDKClient()\n\n\tbuilder, err := sdk.NewTxBuilder(\n\t\tsdk.WithSDKClient(client),\n\t\tsdk.WithChainID(network.GetChainID()),\n\t)\n\trequire.NoError(t, err)\n\n\tpolicy := `\nname: test policy\n`\n\tmsgSet := sdk.MsgSet{}\n\tmapper := msgSet.WithCreatePolicy(\n\t\ttypes.NewMsgCreatePolicy(\n\t\t\tnetwork.GetValidatorAddr(),\n\t\t\tpolicy,\n\t\t\tcoretypes.PolicyMarshalingType_YAML,\n\t\t),\n\t)\n\n\tsigner := sdk.TxSignerFromCosmosKey(network.GetValidatorKey())\n\n\tctx := context.TODO()\n\ttx, err := builder.Build(ctx, signer, &msgSet)\n\trequire.NoError(t, err)\n\n\tresponse, err := client.BroadcastTx(ctx, tx)\n\trequire.NoError(t, err)\n\n\tnetwork.Network.WaitForNextBlock()\n\n\tresult, err := network.Client.GetTx(ctx, response.TxHash)\n\trequire.NoError(t, err)\n\trequire.NoError(t, result.Error())\n\n\t_, err = mapper.Map(result.TxPayload())\n\trequire.NoError(t, err)\n}\n\nfunc TestSDKWithBearerToken(t *testing.T) {\n\tnetwork := e2e.TestNetwork{}\n\n\tnetwork.Setup(t)\n\tt.Cleanup(network.TearDown)\n\n\tclient := network.GetSDKClient()\n\n\tvalidatorAddr := network.GetValidatorAddr()\n\tbearerToken, _ := testutil.GenerateSignedJWSWithMatchingDID(t, validatorAddr)\n\n\tbuilder, err := sdk.NewTxBuilder(\n\t\tsdk.WithSDKClient(client),\n\t\tsdk.WithChainID(network.GetChainID()),\n\t\tsdk.WithBearerToken(bearerToken),\n\t)\n\trequire.NoError(t, err)\n\n\tpolicy := `\nname: test policy\n`\n\tmsgSet := sdk.MsgSet{}\n\tmapper := msgSet.WithCreatePolicy(\n\t\ttypes.NewMsgCreatePolicy(\n\t\t\tvalidatorAddr,\n\t\t\tpolicy,\n\t\t\tcoretypes.PolicyMarshalingType_YAML,\n\t\t),\n\t)\n\n\tsigner := sdk.TxSignerFromCosmosKey(network.GetValidatorKey())\n\n\tctx := context.TODO()\n\ttx, err := builder.Build(ctx, signer, &msgSet)\n\trequire.NoError(t, err)\n\n\textOptsTx, ok := tx.(interface {\n\t\tGetExtensionOptions() []*codectypes.Any\n\t})\n\trequire.True(t, ok, \"transaction should support extension options\")\n\textOpts := extOptsTx.GetExtensionOptions()\n\trequire.Len(t, extOpts, 1, \"should have exactly one extension option\")\n\n\tresponse, err := client.BroadcastTx(ctx, tx)\n\trequire.NoError(t, err)\n\n\tnetwork.Network.WaitForNextBlock()\n\n\tresult, err := network.Client.GetTx(ctx, response.TxHash)\n\trequire.NoError(t, err)\n\trequire.NoError(t, result.Error())\n\n\t_, err = mapper.Map(result.TxPayload())\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "tests/integration/acp/README.md",
    "content": ""
  },
  {
    "path": "tests/integration/acp/actions.go",
    "content": "package test\n\nimport (\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype CreatePolicyAction struct {\n\tPolicy      string\n\tExpected    *coretypes.Policy\n\tCreator     *TestActor\n\tExpectedErr error\n}\n\nfunc (a *CreatePolicyAction) Run(ctx *TestCtx) *coretypes.Policy {\n\tmsg := &types.MsgCreatePolicy{\n\t\tPolicy:      a.Policy,\n\t\tCreator:     a.Creator.SourceHubAddr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tresponse, err := ctx.Executor.CreatePolicy(ctx, msg)\n\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif a.Expected != nil {\n\t\trequire.NotNil(ctx.T, response)\n\t\tAssertValue(ctx, response.Record.Policy, a.Expected)\n\t}\n\tif response != nil {\n\t\tctx.State.PolicyCreator = a.Creator.SourceHubAddr\n\t\tctx.State.PolicyId = response.Record.Policy.Id\n\t\treturn response.Record.Policy\n\t}\n\treturn nil\n}\n\ntype EditPolicyAction struct {\n\tId          string\n\tPolicy      string\n\tCreator     *TestActor\n\tExpected    *coretypes.Policy\n\tExpectedErr error\n\tResponse    *types.MsgEditPolicyResponse\n}\n\nfunc (a *EditPolicyAction) Run(ctx *TestCtx) *coretypes.Policy {\n\tmsg := &types.MsgEditPolicy{\n\t\tPolicyId:    a.Id,\n\t\tPolicy:      a.Policy,\n\t\tCreator:     a.Creator.SourceHubAddr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tresponse, err := ctx.Executor.EditPolicy(ctx, msg)\n\ta.Response = response\n\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif a.Expected != nil {\n\t\trequire.NotNil(ctx.T, response)\n\n\t\tgetResponse, getErr := ctx.Executor.Policy(ctx, &types.QueryPolicyRequest{\n\t\t\tId: a.Id,\n\t\t})\n\t\trequire.NoError(ctx.T, getErr)\n\t\trequire.Equal(ctx.T, a.Expected, getResponse.Record.Policy)\n\t}\n\tif response != nil {\n\t\tctx.State.PolicyCreator = a.Creator.SourceHubAddr\n\t\tctx.State.PolicyId = response.Record.Policy.Id\n\t\treturn response.Record.Policy\n\t}\n\treturn nil\n}\n\ntype SetRelationshipAction struct {\n\tPolicyId     string\n\tRelationship *coretypes.Relationship\n\tActor        *TestActor\n\tExpected     *types.SetRelationshipCmdResult\n\tExpectedErr  error\n}\n\nfunc (a *SetRelationshipAction) Run(ctx *TestCtx) *types.RelationshipRecord {\n\tcmd := types.NewSetRelationshipCmd(a.Relationship)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tif a.Expected != nil {\n\t\ta.Expected.Record.Metadata = ctx.GetRecordMetadataForActor(a.Actor.Name)\n\t\twant := &types.PolicyCmdResult{\n\t\t\tResult: &types.PolicyCmdResult_SetRelationshipResult{\n\t\t\t\tSetRelationshipResult: a.Expected,\n\t\t\t},\n\t\t}\n\t\trequire.Equal(ctx.T, want, result)\n\t}\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn result.GetSetRelationshipResult().Record\n}\n\ntype RegisterObjectAction struct {\n\tPolicyId    string\n\tObject      *coretypes.Object\n\tActor       *TestActor\n\tExpected    *types.RelationshipRecord\n\tExpectedErr error\n}\n\nfunc (a *RegisterObjectAction) Run(ctx *TestCtx) *types.RelationshipRecord {\n\tcmd := types.NewRegisterObjectCmd(a.Object)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tif a.Expected != nil {\n\t\ta.Expected.Metadata = ctx.GetRecordMetadataForActor(a.Actor.Name)\n\t\twant := &types.PolicyCmdResult{\n\t\t\tResult: &types.PolicyCmdResult_RegisterObjectResult{\n\t\t\t\tRegisterObjectResult: &types.RegisterObjectCmdResult{\n\t\t\t\t\tRecord: a.Expected,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tctx.T.Logf(\"want: %v\", want)\n\t\trequire.Equal(ctx.T, want, result)\n\t}\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn result.GetRegisterObjectResult().Record\n}\n\ntype RegisterObjectsAction struct {\n\tPolicyId string\n\tObjects  []*coretypes.Object\n\tActor    *TestActor\n}\n\nfunc (a *RegisterObjectsAction) Run(ctx *TestCtx) {\n\tfor _, obj := range a.Objects {\n\t\taction := RegisterObjectAction{\n\t\t\tPolicyId: a.PolicyId,\n\t\t\tObject:   obj,\n\t\t\tActor:    a.Actor,\n\t\t}\n\t\taction.Run(ctx)\n\t}\n}\n\ntype SetRelationshipsAction struct {\n\tPolicyId      string\n\tRelationships []*coretypes.Relationship\n\tActor         *TestActor\n}\n\nfunc (a *SetRelationshipsAction) Run(ctx *TestCtx) {\n\tfor _, rel := range a.Relationships {\n\t\taction := SetRelationshipAction{\n\t\t\tPolicyId:     a.PolicyId,\n\t\t\tRelationship: rel,\n\t\t\tActor:        a.Actor,\n\t\t}\n\t\taction.Run(ctx)\n\t}\n}\n\ntype DeleteRelationshipsAction struct {\n\tPolicyId      string\n\tRelationships []*coretypes.Relationship\n\tActor         *TestActor\n}\n\nfunc (a *DeleteRelationshipsAction) Run(ctx *TestCtx) {\n\tfor _, rel := range a.Relationships {\n\t\taction := DeleteRelationshipAction{\n\t\t\tRelationship: rel,\n\t\t\tPolicyId:     a.PolicyId,\n\t\t\tActor:        a.Actor,\n\t\t}\n\t\taction.Run(ctx)\n\t}\n}\n\ntype DeleteRelationshipAction struct {\n\tPolicyId     string\n\tRelationship *coretypes.Relationship\n\tActor        *TestActor\n\tExpected     *types.DeleteRelationshipCmdResult\n\tExpectedErr  error\n}\n\nfunc (a *DeleteRelationshipAction) Run(ctx *TestCtx) *types.DeleteRelationshipCmdResult {\n\tcmd := types.NewDeleteRelationshipCmd(a.Relationship)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tgot := (*types.DeleteRelationshipCmdResult)(nil)\n\tif result != nil {\n\t\tgot = result.GetDeleteRelationshipResult()\n\t}\n\tAssertResults(ctx, got, a.Expected, err, a.ExpectedErr)\n\treturn got\n}\n\ntype ArchiveObjectAction struct {\n\tPolicyId    string\n\tObject      *coretypes.Object\n\tActor       *TestActor\n\tExpected    *types.ArchiveObjectCmdResult\n\tExpectedErr error\n}\n\nfunc (a *ArchiveObjectAction) Run(ctx *TestCtx) *types.ArchiveObjectCmdResult {\n\tcmd := types.NewArchiveObjectCmd(a.Object)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tgot := (*types.ArchiveObjectCmdResult)(nil)\n\tif result != nil {\n\t\tgot = result.GetArchiveObjectResult()\n\t}\n\tAssertResults(ctx, got, a.Expected, err, a.ExpectedErr)\n\treturn got\n}\n\ntype UnarchiveObjectAction struct {\n\tPolicyId    string\n\tObject      *coretypes.Object\n\tActor       *TestActor\n\tExpected    *types.UnarchiveObjectCmdResult\n\tExpectedErr error\n}\n\nfunc (a *UnarchiveObjectAction) Run(ctx *TestCtx) *types.UnarchiveObjectCmdResult {\n\tcmd := types.NewUnarchiveObjectCmd(a.Object)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tif a.Expected != nil {\n\t\twant := &types.PolicyCmdResult{\n\t\t\tResult: &types.PolicyCmdResult_UnarchiveObjectResult{\n\t\t\t\tUnarchiveObjectResult: a.Expected,\n\t\t\t},\n\t\t}\n\t\trequire.Equal(ctx.T, want, result)\n\t}\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn result.GetUnarchiveObjectResult()\n}\n\ntype PolicySetupAction struct {\n\tPolicy                string\n\tPolicyCreator         *TestActor\n\tObjectsPerActor       map[string][]*coretypes.Object\n\tRelationshipsPerActor map[string][]*coretypes.Relationship\n}\n\nfunc (a *PolicySetupAction) Run(ctx *TestCtx) {\n\tpolAction := CreatePolicyAction{\n\t\tPolicy:  a.Policy,\n\t\tCreator: a.PolicyCreator,\n\t}\n\tpolicy := polAction.Run(ctx)\n\n\tfor actorName, objs := range a.ObjectsPerActor {\n\t\taction := RegisterObjectsAction{\n\t\t\tPolicyId: policy.Id,\n\t\t\tObjects:  objs,\n\t\t\tActor:    ctx.GetActor(actorName),\n\t\t}\n\t\taction.Run(ctx)\n\t}\n\n\tfor actorName, rels := range a.RelationshipsPerActor {\n\t\taction := SetRelationshipsAction{\n\t\t\tPolicyId:      policy.Id,\n\t\t\tRelationships: rels,\n\t\t\tActor:         ctx.GetActor(actorName),\n\t\t}\n\t\taction.Run(ctx)\n\t}\n}\n\ntype GetPolicyAction struct {\n\tId          string\n\tExpected    *types.PolicyRecord\n\tExpectedErr error\n}\n\nfunc (a *GetPolicyAction) Run(ctx *TestCtx) {\n\tmsg := &types.QueryPolicyRequest{\n\t\tId: a.Id,\n\t}\n\tresult, err := ctx.Executor.Policy(ctx, msg)\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif result != nil {\n\t\ta.Expected.Metadata.CreationTs = result.Record.Metadata.CreationTs\n\t\tAssertValue(ctx, a.Expected, result.Record)\n\t}\n}\n\ntype CommitRegistrationsAction struct {\n\tPolicyId string\n\tObjects  []*coretypes.Object\n\tActor    *TestActor\n\tExpected *types.RegistrationsCommitment\n\t// Commitment is optional and is automatically generated if Objects is provided\n\tCommitment  []byte\n\tExpectedErr error\n}\n\nfunc (a *CommitRegistrationsAction) Run(ctx *TestCtx) *types.RegistrationsCommitment {\n\tif a.Objects != nil {\n\t\tactor := coretypes.NewActor(a.Actor.DID)\n\t\tcommitment, err := commitment.GenerateCommitmentWithoutValidation(a.PolicyId, actor, a.Objects)\n\t\trequire.NoError(ctx.T, err)\n\t\ta.Commitment = commitment\n\t}\n\tcmd := types.NewCommitRegistrationCmd(a.Commitment)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tAssertError(ctx, err, a.ExpectedErr)\n\tif a.ExpectedErr != nil {\n\t\treturn nil\n\t}\n\trequire.NotNil(ctx.T, result)\n\tcomm := result.GetCommitRegistrationsResult().RegistrationsCommitment\n\n\tif a.Expected != nil {\n\t\ta.Expected.Metadata.CreationTs = comm.Metadata.CreationTs\n\t\tAssertValue(ctx, comm, a.Expected)\n\t}\n\treturn comm\n}\n\nfunc (a *CommitRegistrationsAction) GetCommitment(ctx *TestCtx) []byte {\n\tactor := coretypes.NewActor(a.Actor.DID)\n\tcommitment, err := commitment.GenerateCommitmentWithoutValidation(a.PolicyId, actor, a.Objects)\n\trequire.NoError(ctx.T, err)\n\treturn commitment\n}\n\ntype RevealRegistrationAction struct {\n\tPolicyId     string\n\tCommitmentId uint64\n\tObjects      []*coretypes.Object\n\tIndex        int\n\tActor        *TestActor\n\tExpected     *types.RegisterObjectCmdResult\n\tExpectedErr  error\n}\n\nfunc (a *RevealRegistrationAction) Run(ctx *TestCtx) *types.RevealRegistrationCmdResult {\n\tactor := coretypes.NewActor(a.Actor.DID)\n\tproof, err := commitment.ProofForObject(a.PolicyId, actor, a.Index, a.Objects)\n\trequire.NoError(ctx.T, err)\n\tcmd := types.NewRevealRegistrationCmd(a.CommitmentId, proof)\n\tresult, err := dispatchPolicyCmd(ctx, a.PolicyId, a.Actor, cmd)\n\tgot := (*types.RevealRegistrationCmdResult)(nil)\n\tif result != nil {\n\t\tgot = result.GetRevealRegistrationResult()\n\t}\n\tAssertResults(ctx, got, a.Expected, err, a.ExpectedErr)\n\treturn got\n}\n"
  },
  {
    "path": "tests/integration/acp/actors.go",
    "content": "package test\n\nimport (\n\tstdcrypto \"crypto\"\n\t\"crypto/ed25519\"\n\n\tsdked25519 \"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\tsdksecp256k1 \"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tsdkcrypto \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/bech32\"\n\tsecp256k1 \"github.com/decred/dcrd/dcrec/secp256k1/v4\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n)\n\n// TestActor models a SourceHub actor in the test suite\n// Each actor has a keypair and a DID\n// The actor has a SourceHubAddr only if their keys are of type secp256k1\ntype TestActor struct {\n\tName          string\n\tDID           string\n\tPubKey        sdkcrypto.PubKey\n\tPrivKey       sdkcrypto.PrivKey\n\tSourceHubAddr string\n\tSigner        stdcrypto.Signer\n}\n\n// MustNewED25519ActorFromName deterministically generates a Test Actor from a string name as seed\n// The Actor carries a ed25519 key pair and has no SourceHub addr\nfunc MustNewED25519ActorFromName(name string) *TestActor {\n\tprivKey := sdked25519.GenPrivKeyFromSecret([]byte(name))\n\n\tdidStr, err := did.DIDFromPubKey(privKey.PubKey())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tstdPriv := ed25519.PrivateKey(privKey.Bytes())\n\n\treturn &TestActor{\n\t\tName:          name,\n\t\tDID:           didStr,\n\t\tPubKey:        privKey.PubKey(),\n\t\tPrivKey:       privKey,\n\t\tSourceHubAddr: \"\",\n\t\tSigner:        stdPriv,\n\t}\n}\n\n// MustNewSourceHubActorFromName deterministically generates a Test Actor from a string name as seed\n// The Actor carries a secp256k1 key pair and a SourceHub addr\nfunc MustNewSourceHubActorFromName(name string) *TestActor {\n\tkey := sdksecp256k1.GenPrivKeyFromSecret([]byte(name))\n\taddr, err := bech32.ConvertAndEncode(app.AccountAddressPrefix, key.PubKey().Address())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdidStr, err := did.DIDFromPubKey(key.PubKey())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\ts256Priv := secp256k1.PrivKeyFromBytes(key.Key)\n\tstdPrivKey := s256Priv.ToECDSA()\n\n\treturn &TestActor{\n\t\tName:          name,\n\t\tDID:           didStr,\n\t\tPubKey:        key.PubKey(),\n\t\tPrivKey:       key,\n\t\tSourceHubAddr: addr,\n\t\tSigner:        stdPrivKey,\n\t}\n}\n"
  },
  {
    "path": "tests/integration/acp/client.go",
    "content": "package test\n\nimport (\n\t\"context\"\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\thubsdk \"github.com/sourcenetwork/sourcehub/sdk\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/e2e\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/testutil\"\n\thubtestutil \"github.com/sourcenetwork/sourcehub/x/hub/testutil\"\n)\n\ntype KeeperACPClient struct {\n\tbaseCtx        sdk.Context\n\tk              types.MsgServer\n\tquerier        types.QueryServer\n\taccountCreator *testutil.AccountKeeperStub\n\tts             types.Timestamp\n}\n\nfunc (c *KeeperACPClient) Cleanup() {}\n\n// WaitBlock bumps the current keeper Ts\nfunc (c *KeeperACPClient) WaitBlock() {\n\tc.nextBlockTs()\n}\n\n// nextBlockTs increments the internal block count\nfunc (c *KeeperACPClient) nextBlockTs() {\n\tc.ts.BlockHeight++\n\tc.ts.ProtoTs.Seconds++\n}\n\n// genTx generates a random byte slice to model the comet Tx bytes\n//\n// This is done because the keeper executor doesn't receive an actual\n// cometbft signed Tx but this data is used by the code paths\nfunc (c *KeeperACPClient) genTx(ctx *TestCtx) {\n\ttx := make([]byte, 50)\n\t_, err := rand.Read(tx)\n\trequire.NoError(ctx.T, err)\n\tctx.State.PushTx(tx)\n}\n\n// getSDKCtx returns the context which must be used before executing\n// calls to the keeper.\n// it increments the current timestamp, such that every function call happens with its own block time\nfunc (c *KeeperACPClient) getSDKCtx(ctx context.Context) sdk.Context {\n\tc.nextBlockTs()\n\ttime, err := prototypes.TimestampFromProto(c.ts.ProtoTs)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\theader := cmtproto.Header{\n\t\tTime:   time.UTC(),\n\t\tHeight: int64(c.ts.BlockHeight),\n\t}\n\tsdkCtx := c.baseCtx.WithContext(ctx)\n\tsdkCtx = c.baseCtx.WithBlockHeader(header)\n\treturn sdkCtx\n}\n\nfunc (c *KeeperACPClient) BearerPolicyCmd(ctx *TestCtx, msg *types.MsgBearerPolicyCmd) (*types.MsgBearerPolicyCmdResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.k.BearerPolicyCmd(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) SignedPolicyCmd(ctx *TestCtx, msg *types.MsgSignedPolicyCmd) (*types.MsgSignedPolicyCmdResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.k.SignedPolicyCmd(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) DirectPolicyCmd(ctx *TestCtx, msg *types.MsgDirectPolicyCmd) (*types.MsgDirectPolicyCmdResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.k.DirectPolicyCmd(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) CreatePolicy(ctx *TestCtx, msg *types.MsgCreatePolicy) (*types.MsgCreatePolicyResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.k.CreatePolicy(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) EditPolicy(ctx *TestCtx, msg *types.MsgEditPolicy) (*types.MsgEditPolicyResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.k.EditPolicy(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) GetOrCreateAccountFromActor(_ *TestCtx, actor *TestActor) (sdk.AccountI, error) {\n\treturn c.accountCreator.NewAccount(actor.PubKey), nil\n}\n\nfunc (c *KeeperACPClient) Policy(ctx *TestCtx, msg *types.QueryPolicyRequest) (*types.QueryPolicyResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.querier.Policy(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) RegistrationsCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentRequest) (*types.QueryRegistrationsCommitmentResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.querier.RegistrationsCommitment(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) RegistrationsCommitmentByCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentByCommitmentRequest) (*types.QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.querier.RegistrationsCommitmentByCommitment(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) ObjectOwner(ctx *TestCtx, msg *types.QueryObjectOwnerRequest) (*types.QueryObjectOwnerResponse, error) {\n\tsdkCtx := c.getSDKCtx(ctx)\n\treturn c.querier.ObjectOwner(sdkCtx, msg)\n}\n\nfunc (c *KeeperACPClient) GetLastBlockTs(ctx *TestCtx) (*types.Timestamp, error) {\n\tts := c.ts\n\treturn &ts, nil\n}\n\nfunc (c *KeeperACPClient) GetTimestampNow(context.Context) (uint64, error) {\n\treturn c.ts.BlockHeight, nil\n}\n\nfunc NewACPClient(t *testing.T, strategy ExecutorStrategy, params types.Params) ACPClient {\n\tswitch strategy {\n\tcase Keeper:\n\t\texec, err := newKeeperExecutor(params)\n\t\trequire.NoError(t, err)\n\t\treturn exec\n\tcase SDK:\n\t\tnetwork := &e2e.TestNetwork{}\n\t\tnetwork.Setup(t)\n\t\texecutor, err := newSDKExecutor(network)\n\t\trequire.NoError(t, err)\n\t\treturn executor\n\tcase CLI:\n\t\tpanic(\"sdk executor not implemented\")\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid executor strategy: %v\", strategy))\n\t}\n}\n\nfunc newKeeperExecutor(params types.Params) (ACPClient, error) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)\n\terr := stateStore.LoadLatestVersion()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create keeper executor: %v\", err)\n\t}\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\n\taccKeeper := &testutil.AccountKeeperStub{}\n\taccKeeper.GenAccount()\n\n\tkv := runtime.NewKVStoreService(storeKey)\n\n\tk := keeper.NewKeeper(\n\t\tcdc,\n\t\tkv,\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccKeeper,\n\t\t&capabilitykeeper.ScopedKeeper{},\n\t\thubtestutil.NewHubKeeperStub(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\tctx = ctx.WithMultiStore(stateStore)\n\n\t// Initialize params\n\tk.SetParams(ctx, params)\n\n\texecutor := &KeeperACPClient{\n\t\tbaseCtx:        ctx,\n\t\tk:              &k,\n\t\tquerier:        &k,\n\t\taccountCreator: accKeeper,\n\t\tts: types.Timestamp{\n\t\t\tBlockHeight: 1,\n\t\t\tProtoTs:     prototypes.TimestampNow(),\n\t\t},\n\t}\n\treturn executor, nil\n}\n\nfunc newSDKExecutor(network *e2e.TestNetwork) (*SDKClientExecutor, error) {\n\ttxBuilder, err := hubsdk.NewTxBuilder(\n\t\thubsdk.WithSDKClient(network.Client),\n\t\thubsdk.WithChainID(network.GetChainID()),\n\t)\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &SDKClientExecutor{\n\t\tNetwork:   network,\n\t\ttxBuilder: &txBuilder,\n\t}, nil\n}\n\ntype SDKClientExecutor struct {\n\tNetwork   *e2e.TestNetwork\n\ttxBuilder *hubsdk.TxBuilder\n}\n\nfunc (e *SDKClientExecutor) BearerPolicyCmd(ctx *TestCtx, msg *types.MsgBearerPolicyCmd) (*types.MsgBearerPolicyCmdResponse, error) {\n\tset := hubsdk.MsgSet{}\n\tmapper := set.WithBearerPolicyCmd(msg)\n\tresult := e.broadcastTx(ctx, &set)\n\tif result.Error() != nil {\n\t\treturn nil, result.Error()\n\t}\n\tresponse, err := mapper.Map(result.TxPayload())\n\trequire.NoError(ctx.T, err)\n\treturn response, nil\n}\n\nfunc (e *SDKClientExecutor) SignedPolicyCmd(ctx *TestCtx, msg *types.MsgSignedPolicyCmd) (*types.MsgSignedPolicyCmdResponse, error) {\n\tset := hubsdk.MsgSet{}\n\tmapper := set.WithSignedPolicyCmd(msg)\n\tresult := e.broadcastTx(ctx, &set)\n\tif result.Error() != nil {\n\t\treturn nil, result.Error()\n\t}\n\tresponse, err := mapper.Map(result.TxPayload())\n\trequire.NoError(ctx.T, err)\n\treturn response, nil\n}\n\nfunc (e *SDKClientExecutor) DirectPolicyCmd(ctx *TestCtx, msg *types.MsgDirectPolicyCmd) (*types.MsgDirectPolicyCmdResponse, error) {\n\tset := hubsdk.MsgSet{}\n\tmapper := set.WithDirectPolicyCmd(msg)\n\tresult := e.broadcastTx(ctx, &set)\n\tif result.Error() != nil {\n\t\treturn nil, result.Error()\n\t}\n\tresponse, err := mapper.Map(result.TxPayload())\n\trequire.NoError(ctx.T, err)\n\treturn response, nil\n}\n\nfunc (e *SDKClientExecutor) CreatePolicy(ctx *TestCtx, msg *types.MsgCreatePolicy) (*types.MsgCreatePolicyResponse, error) {\n\tset := hubsdk.MsgSet{}\n\tmapper := set.WithCreatePolicy(msg)\n\tresult := e.broadcastTx(ctx, &set)\n\tif result.Error() != nil {\n\t\treturn nil, result.Error()\n\t}\n\tresponse, err := mapper.Map(result.TxPayload())\n\trequire.NoError(ctx.T, err)\n\treturn response, nil\n}\n\nfunc (e *SDKClientExecutor) EditPolicy(ctx *TestCtx, msg *types.MsgEditPolicy) (*types.MsgEditPolicyResponse, error) {\n\tset := hubsdk.MsgSet{}\n\tmapper := set.WithEditPolicy(msg)\n\tresult := e.broadcastTx(ctx, &set)\n\tif result.Error() != nil {\n\t\treturn nil, result.Error()\n\t}\n\tresponse, err := mapper.Map(result.TxPayload())\n\trequire.NoError(ctx.T, err)\n\treturn response, nil\n}\n\nfunc (e *SDKClientExecutor) GetOrCreateAccountFromActor(ctx *TestCtx, actor *TestActor) (sdk.AccountI, error) {\n\tclient := e.Network.Client\n\tresp, err := client.AuthQueryClient().AccountInfo(ctx, &authtypes.QueryAccountInfoRequest{\n\t\tAddress: actor.SourceHubAddr,\n\t})\n\tif resp != nil {\n\t\treturn resp.Info, nil\n\t}\n\t// if error was not found, means account doesnt exist\n\t// and we can create one\n\tif err != nil && status.Code(err) != codes.NotFound {\n\t\trequire.NoError(ctx.T, err)\n\t\treturn nil, err\n\t}\n\n\tvar defaultSendAmt sdk.Coins = []sdk.Coin{\n\t\t{\n\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\tAmount: math.NewInt(10000),\n\t\t},\n\t}\n\n\tmsg := banktypes.MsgSend{\n\t\tFromAddress: e.Network.GetValidatorAddr(),\n\t\tToAddress:   actor.SourceHubAddr,\n\t\tAmount:      defaultSendAmt,\n\t}\n\ttx, err := e.txBuilder.BuildFromMsgs(ctx,\n\t\thubsdk.TxSignerFromCosmosKey(e.Network.GetValidatorKey()),\n\t\t&msg,\n\t)\n\trequire.NoError(ctx.T, err)\n\n\t_, err = client.BroadcastTx(ctx, tx)\n\trequire.NoError(ctx.T, err)\n\te.Network.Network.WaitForNextBlock()\n\n\tresp, err = client.AuthQueryClient().AccountInfo(ctx, &authtypes.QueryAccountInfoRequest{\n\t\tAddress: actor.SourceHubAddr,\n\t})\n\trequire.NoError(ctx.T, err)\n\treturn resp.Info, nil\n}\n\nfunc (e *SDKClientExecutor) broadcastTx(ctx *TestCtx, msgSet *hubsdk.MsgSet) *hubsdk.TxExecResult {\n\t_, err := e.GetOrCreateAccountFromActor(ctx, ctx.TxSigner)\n\trequire.NoError(ctx.T, err)\n\n\tsigner := hubsdk.TxSignerFromCosmosKey(ctx.TxSigner.PrivKey)\n\n\ttx, err := e.txBuilder.Build(ctx, signer, msgSet)\n\trequire.NoError(ctx.T, err)\n\n\tresponse, err := e.Network.Client.BroadcastTx(ctx, tx)\n\trequire.NoError(ctx.T, err)\n\n\te.Network.Network.WaitForNextBlock()\n\tresult, err := e.Network.Client.GetTx(ctx, response.TxHash)\n\trequire.NoError(ctx.T, err)\n\n\treturn result\n}\n\nfunc (e *SDKClientExecutor) Policy(ctx *TestCtx, msg *types.QueryPolicyRequest) (*types.QueryPolicyResponse, error) {\n\treturn e.Network.Client.ACPQueryClient().Policy(ctx, msg)\n}\n\nfunc (e *SDKClientExecutor) RegistrationsCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentRequest) (*types.QueryRegistrationsCommitmentResponse, error) {\n\treturn e.Network.Client.ACPQueryClient().RegistrationsCommitment(ctx, msg)\n}\n\nfunc (e *SDKClientExecutor) RegistrationsCommitmentByCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentByCommitmentRequest) (*types.QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\treturn e.Network.Client.ACPQueryClient().RegistrationsCommitmentByCommitment(ctx, msg)\n}\n\nfunc (e *SDKClientExecutor) Cleanup() {\n\te.Network.TearDown()\n}\n\nfunc (e *SDKClientExecutor) WaitBlock() {\n\tpanic(\"not implemented\")\n}\n\nfunc (e *SDKClientExecutor) GetLastBlockTs(ctx *TestCtx) (*types.Timestamp, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (c *SDKClientExecutor) GetTimestampNow(context.Context) (uint64, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (c *SDKClientExecutor) ObjectOwner(ctx *TestCtx, req *types.QueryObjectOwnerRequest) (*types.QueryObjectOwnerResponse, error) {\n\treturn c.Network.Client.ACPQueryClient().ObjectOwner(ctx, req)\n}\n"
  },
  {
    "path": "tests/integration/acp/ctx.go",
    "content": "package test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n)\n\nvar DefaultTs = MustDateTimeToProto(\"2024-01-01 00:00:00\")\n\nvar _ context.Context = (*TestCtx)(nil)\n\ntype TestState struct {\n\tPolicyId      string\n\tPolicyCreator string\n\t// Txs is a list of bytes which contains the Txs that have been broadcast during a test\n\tTxs               [][]byte\n\tTokenIssueTs      time.Time\n\tTokenIssueProtoTs *prototypes.Timestamp\n}\n\nfunc (s *TestState) PushTx(tx []byte) {\n\ts.Txs = append(s.Txs, tx)\n}\n\nfunc (s *TestState) GetLastTx() []byte {\n\tif len(s.Txs) == 0 {\n\t\treturn nil\n\t}\n\treturn s.Txs[len(s.Txs)-1]\n}\n\nfunc NewTestCtxFromConfig(t *testing.T, config TestConfig) *TestCtx {\n\tparams := types.Params{\n\t\tPolicyCommandMaxExpirationDelta: 1,\n\t\tRegistrationsCommitmentValidity: types.NewBlockCountDuration(7),\n\t}\n\texecutor := NewACPClient(t, config.ExecutorStrategy, params)\n\n\troot := MustNewSourceHubActorFromName(\"root\")\n\tctx := &TestCtx{\n\t\tCtx:       context.TODO(),\n\t\tT:         t,\n\t\tTxSigner:  root,\n\t\tExecutor:  executor,\n\t\tStrategy:  config.AuthStrategy,\n\t\tActorType: config.ActorType,\n\t\tParams:    params,\n\t}\n\n\t_, err := executor.GetOrCreateAccountFromActor(ctx, root)\n\trequire.NoError(t, err)\n\n\treturn ctx\n}\n\ntype TestCtx struct {\n\tCtx   context.Context\n\tT     *testing.T\n\tState TestState\n\t// Signer for Txs while running tests under Bearer or Signed Auth modes\n\tTxSigner      *TestActor\n\tExecutor      ACPClient\n\tStrategy      AuthenticationStrategy\n\tAccountKeeper *testutil.AccountKeeperStub\n\tActorType     ActorKeyType\n\tParams        types.Params\n}\n\nfunc NewTestCtx(t *testing.T) *TestCtx {\n\tinitTest()\n\tconfig := MustNewTestConfigFromEnv()\n\tctx := NewTestCtxFromConfig(t, config)\n\treturn ctx\n}\n\nfunc (c *TestCtx) Deadline() (deadline time.Time, ok bool) { return c.Ctx.Deadline() }\nfunc (c *TestCtx) Done() <-chan struct{}                   { return c.Ctx.Done() }\nfunc (c *TestCtx) Err() error                              { return c.Ctx.Err() }\nfunc (c *TestCtx) Value(key any) any                       { return c.Ctx.Value(key) }\n\n// GetActor gets or create an account with the given alias\nfunc (c *TestCtx) GetActor(alias string) *TestActor {\n\tswitch c.ActorType {\n\tcase Actor_ED25519:\n\t\treturn MustNewED25519ActorFromName(alias)\n\tcase Actor_SECP256K1:\n\t\tacc := MustNewSourceHubActorFromName(alias)\n\t\t_, err := c.Executor.GetOrCreateAccountFromActor(c, acc)\n\t\trequire.NoError(c.T, err)\n\t\treturn acc\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid actor type: %v\", c.ActorType))\n\t}\n}\n\nfunc (c *TestCtx) GetSourceHubAccount(alias string) *TestActor {\n\tacc := MustNewSourceHubActorFromName(alias)\n\tc.AccountKeeper.NewAccount(acc.PubKey)\n\treturn acc\n}\n\n// GetRecordMetadataForActor, fetches actor from the actor registry\n// and builds a RecordMetadata object for the recovered DID\nfunc (c *TestCtx) GetRecordMetadataForActor(actor string) *types.RecordMetadata {\n\treturn &types.RecordMetadata{\n\t\tCreationTs: c.GetBlockTs(),\n\t\tTxHash:     utils.HashTx(c.State.GetLastTx()),\n\t\tTxSigner:   c.TxSigner.SourceHubAddr,\n\t\tOwnerDid:   c.GetActor(actor).DID,\n\t}\n}\n\n// GetSignerRecordMetadata builds RecordMetadata for the current\n// Tx Signer\nfunc (c *TestCtx) GetSignerRecordMetadata() *types.RecordMetadata {\n\treturn &types.RecordMetadata{\n\t\tCreationTs: c.GetBlockTs(),\n\t\tTxHash:     utils.HashTx(c.State.GetLastTx()),\n\t\tTxSigner:   c.TxSigner.SourceHubAddr,\n\t\tOwnerDid:   c.TxSigner.DID,\n\t}\n}\n\nfunc (c *TestCtx) GetParams() types.Params {\n\treturn c.Params\n}\n\nfunc (c *TestCtx) Cleanup() {\n\tc.Executor.Cleanup()\n}\n\n// WaitBlock waits until the underlying SourceHub node advances to the next block\nfunc (c *TestCtx) WaitBlock() {\n\tc.Executor.WaitBlock()\n}\n\n// WaitBlock waits until the underlying SourceHub node advances to the next block\nfunc (c *TestCtx) WaitBlocks(n uint64) {\n\tfor i := uint64(0); i < n; i += 1 {\n\t\tc.Executor.WaitBlock()\n\t}\n}\n\n// GetBlockTs returns the timestamp of the last processed block\nfunc (c *TestCtx) GetBlockTs() *types.Timestamp {\n\tts, err := c.Executor.GetLastBlockTs(c)\n\trequire.NoError(c.T, err)\n\treturn ts\n}\n"
  },
  {
    "path": "tests/integration/acp/dispatchers.go",
    "content": "package test\n\nimport (\n\t\"time\"\n\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/bearer_token\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc dispatchPolicyCmd(ctx *TestCtx, policyId string, actor *TestActor, policyCmd *types.PolicyCmd) (result *types.PolicyCmdResult, err error) {\n\tctx.State.TokenIssueTs = time.Now()\n\tctx.State.TokenIssueProtoTs = prototypes.TimestampNow()\n\tswitch ctx.Strategy {\n\tcase BearerToken:\n\t\tts := ctx.State.TokenIssueTs\n\t\ttoken := bearer_token.BearerToken{\n\t\t\tIssuerID:          actor.DID,\n\t\t\tAuthorizedAccount: ctx.TxSigner.SourceHubAddr,\n\t\t\tIssuedTime:        ts.Unix(),\n\t\t\tExpirationTime:    ts.Add(bearer_token.DefaultExpirationTime).Unix(),\n\t\t}\n\t\tjws, jwsErr := token.ToJWS(actor.Signer)\n\t\trequire.NoError(ctx.T, jwsErr)\n\t\tmsg := &types.MsgBearerPolicyCmd{\n\t\t\tCreator:     ctx.TxSigner.SourceHubAddr,\n\t\t\tBearerToken: jws,\n\t\t\tPolicyId:    policyId,\n\t\t\tCmd:         policyCmd,\n\t\t}\n\t\tresp, respErr := ctx.Executor.BearerPolicyCmd(ctx, msg)\n\t\tif resp != nil {\n\t\t\tresult = resp.Result\n\t\t}\n\t\terr = respErr\n\tcase SignedPayload:\n\t\tvar jws string\n\t\tbuilder := signed_policy_cmd.NewCmdBuilder(ctx.Executor, ctx.GetParams())\n\t\tbuilder.PolicyCmd(policyCmd)\n\t\tbuilder.Actor(actor.DID)\n\t\tbuilder.IssuedAt(ctx.State.TokenIssueProtoTs)\n\t\tbuilder.PolicyID(policyId)\n\t\tbuilder.SetSigner(actor.Signer)\n\t\tjws, err = builder.BuildJWS(ctx)\n\t\trequire.NoError(ctx.T, err)\n\n\t\tmsg := &types.MsgSignedPolicyCmd{\n\t\t\tCreator: ctx.TxSigner.SourceHubAddr,\n\t\t\tPayload: jws,\n\t\t\tType:    types.MsgSignedPolicyCmd_JWS,\n\t\t}\n\t\tresp, respErr := ctx.Executor.SignedPolicyCmd(ctx, msg)\n\t\tif resp != nil {\n\t\t\tresult = resp.Result\n\t\t}\n\t\terr = respErr\n\tcase Direct:\n\t\t// For Direct Authentication we use the action Actor as the signer\n\t\tctx.TxSigner = actor\n\t\tmsg := &types.MsgDirectPolicyCmd{\n\t\t\tCreator:  actor.SourceHubAddr,\n\t\t\tPolicyId: policyId,\n\t\t\tCmd:      policyCmd,\n\t\t}\n\t\tresp, respErr := ctx.Executor.DirectPolicyCmd(ctx, msg)\n\t\tif resp != nil {\n\t\t\tresult = resp.Result\n\t\t}\n\t\terr = respErr\n\t}\n\treturn result, err\n}\n"
  },
  {
    "path": "tests/integration/acp/init.go",
    "content": "package test\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nvar initialized bool = false\n\nfunc initTest() {\n\tif !initialized {\n\t\tapp.SetConfig(false)\n\t\tinitialized = true\n\t}\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/object/archive_test.go",
    "content": "package object\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar unregisterTestPol = `\nname: policy\nresources:\n- name: file\n  relations:\n  - name: reader\n    types:\n    - actor\n`\n\nfunc setupArchive(t *testing.T) *test.TestCtx {\n\tctx := test.NewTestCtx(t)\n\ta1 := test.CreatePolicyAction{\n\t\tCreator: ctx.TxSigner,\n\t\tPolicy:  unregisterTestPol,\n\t}\n\ta1.Run(ctx)\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\ta2.Run(ctx)\n\ta3 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", ctx.GetActor(\"alice\").DID),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t}\n\ta3.Run(ctx)\n\treturn ctx\n}\n\nfunc TestArchiveObject_RegisteredObjectCanBeUnregisteredByAuthor(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.ArchiveObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t\tExpected: &types.ArchiveObjectCmdResult{\n\t\t\tFound:                true,\n\t\t\tRelationshipsRemoved: 2,\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestArchiveObject_ActorCannotUnregisterObjectTheyDoNotOwn(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.ArchiveObjectAction{\n\t\tPolicyId:    ctx.State.PolicyId,\n\t\tObject:      coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_UNAUTHORIZED,\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestArchiveObject_UnregisteringAnObjectThatDoesNotExistReturnsFoundFalse(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.ArchiveObjectAction{\n\t\tPolicyId:    ctx.State.PolicyId,\n\t\tObject:      coretypes.NewObject(\"file\", \"file-isnt-registerd\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestArchiveObject_UnregisteringAnAlreadyArchivedObjectIsANoop(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.ArchiveObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\taction.Run(ctx)\n\n\taction = test.ArchiveObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t\tExpected: &types.ArchiveObjectCmdResult{\n\t\t\tFound: true,\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestArchiveObject_SendingInvalidPolicyIdErrors(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.ArchiveObjectAction{\n\t\tPolicyId:    \"abc1234\",\n\t\tObject:      coretypes.NewObject(\"file\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"alice\"),\n\t\tExpectedErr: errors.ErrorType_NOT_FOUND,\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestArchiveThenUnarchive_NoError(t *testing.T) {\n\tctx := setupArchive(t)\n\tdefer ctx.Cleanup()\n\n\ta0 := test.RegisterObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"bar\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\tresult := a0.Run(ctx)\n\n\ta1 := test.ArchiveObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"bar\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\ta1.Run(ctx)\n\n\ta2 := test.UnarchiveObjectAction{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"bar\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t\tExpected: &types.UnarchiveObjectCmdResult{\n\t\t\tRelationshipModified: true,\n\t\t\tRecord: &types.RelationshipRecord{\n\t\t\t\tPolicyId:     ctx.State.PolicyId,\n\t\t\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"bar\", \"owner\", ctx.GetActor(\"alice\").DID),\n\t\t\t\tArchived:     false,\n\t\t\t\tMetadata:     result.Metadata,\n\t\t\t},\n\t\t},\n\t}\n\ta2.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/object/commitment_register_test.go",
    "content": "package object\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nvar commitPolicy string = `\nname: policy\nresources:\n- name: resource\n`\n\nfunc TestCommitRegistration_CreatingCommitmentReturnsID(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  commitPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\t// When bob commits to foo.txt\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.GetCommitment(ctx)\n\tmetadata := ctx.GetRecordMetadataForActor(\"bob\")\n\tmetadata.CreationTs.BlockHeight++\n\ta2.Expected = &types.RegistrationsCommitment{\n\t\tId:         1,\n\t\tPolicyId:   ctx.State.PolicyId,\n\t\tCommitment: commitment,\n\t\tExpired:    false,\n\t\tValidity:   ctx.Params.RegistrationsCommitmentValidity,\n\t\tMetadata:   metadata,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestCommitRegistration_CreateAndGetCommitment(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  commitPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\n\tgot, err := ctx.Executor.RegistrationsCommitment(ctx, &types.QueryRegistrationsCommitmentRequest{\n\t\tId: commitment.Id,\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, commitment, got.RegistrationsCommitment)\n}\n\nfunc TestCommitRegistration_CommitmentsGenerateDifferentIds(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  commitPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tc1 := a2.Run(ctx)\n\n\ta3 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tc2 := a3.Run(ctx)\n\n\trequire.NotEqual(ctx.T, c1.Id, c2.Id)\n}\n\nfunc TestCommitRegistration_CommitmentWithInvalidId_Errors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  commitPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId:    pol.Id,\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tCommitment:  []byte{0x0, 0x1, 0x2},\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\ta2.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/object/query_owner_test.go",
    "content": "package object\n\n/*\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/acp_core/test\"\n)\n\nfunc setupQueryObjectOwner(t *testing.T) *test.TestCtx {\n\tctx := test.NewTestCtx(t)\n\n\tctx.SetPrincipal(\"admin\")\n\n\tpol := `\nname: policy\ndescription: ok\nresources:\n  file:\n    relations:\n      owner:\n        doc: owner owns\n        types:\n          - actor-resource\n      reader:\n      admin:\n        manages:\n          - reader\n    permissions:\n      own:\n        expr: owner\n        doc: own doc\n      read:\n        expr: owner + reader\nactor:\n  name: actor-resource\n  doc: my actor\n`\n\taction := test.CreatePolicyAction{\n\t\tPolicy: pol,\n\t}\n\tpolicy := action.Run(ctx)\n\n\tctx.SetPrincipal(\"alice\")\n\tobjAction := test.RegisterObjectsAction{\n\t\tPolicyId: policy.Id,\n\t\tObjects: []*types.Object{\n\t\t\ttypes.NewObject(\"file\", \"1\"),\n\t\t},\n\t}\n\tobjAction.Run(ctx)\n\n\treturn ctx\n}\n\nfunc TestGetObjectRegistration_ReturnsObjectOwner(t *testing.T) {\n\tctx := setupQueryObjectOwner(t)\n\n\tresp, err := ctx.Engine.GetObjectRegistration(ctx, &types.GetObjectRegistrationRequest{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   types.NewObject(\"file\", \"1\"),\n\t})\n\n\twant := &types.GetObjectRegistrationResponse{\n\t\tIsRegistered: true,\n\t\tOwnerId:      ctx.Actors.DID(\"alice\"),\n\t}\n\trequire.Equal(t, want, resp)\n\trequire.NoError(t, err)\n}\n\nfunc TestGetObjectRegistration_QueryingForObjectInNonExistingResourceReturnsError(t *testing.T) {\n\tctx := setupQueryObjectOwner(t)\n\n\tresp, err := ctx.Engine.GetObjectRegistration(ctx, &types.GetObjectRegistrationRequest{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   types.NewObject(\"missing-resource\", \"1\"),\n\t})\n\n\trequire.Nil(t, resp)\n\trequire.NotNil(t, err)\n}\nfunc TestGetObjectOwner_QueryingPolicyThatDoesNotExistReturnError(t *testing.T) {\n\tctx := setupQueryObjectOwner(t)\n\n\tresp, err := ctx.Engine.GetObjectRegistration(ctx, &types.GetObjectRegistrationRequest{\n\t\tPolicyId: \"asbcf12345\",\n\t\tObject:   types.NewObject(\"file\", \"1\"),\n\t})\n\n\trequire.Nil(t, resp)\n\trequire.ErrorIs(t, err, types.ErrPolicyNotFound)\n}\n\nfunc TestGetObjectOwner_QueryingForUnregisteredObjectReturnsEmptyOwner(t *testing.T) {\n\tctx := setupQueryObjectOwner(t)\n\n\tresp, err := ctx.Engine.GetObjectRegistration(ctx, &types.GetObjectRegistrationRequest{\n\t\tPolicyId: ctx.State.PolicyId,\n\t\tObject:   types.NewObject(\"file\", \"404\"),\n\t})\n\n\trequire.NoError(t, err)\n\twant := &types.GetObjectRegistrationResponse{\n\t\tIsRegistered: false,\n\t\tOwnerId:      \"\",\n\t}\n\trequire.Equal(t, resp, want)\n}\n\n*/\n"
  },
  {
    "path": "tests/integration/acp/suite/object/register_test.go",
    "content": "package object\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar policyDef string = `\nname: policy\nresources:\n- name: resource\n`\n\nfunc TestRegisterObject_RegisteringNewObjectIsSucessful(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\tbob := ctx.GetActor(\"bob\")\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:    bob,\n\t\tExpected: &types.RelationshipRecord{\n\t\t\tPolicyId:     ctx.State.PolicyId,\n\t\t\tRelationship: coretypes.NewActorRelationship(\"resource\", \"foo\", \"owner\", bob.DID),\n\t\t\tArchived:     false,\n\t\t},\n\t}\n\ta2.Run(ctx)\n\n\t/*\n\t\tevent := &types.EventObjectRegistered{\n\t\t\tActor:          did,\n\t\t\tPolicyId:       pol.Id,\n\t\t\tObjectId:       \"foo\",\n\t\t\tObjectResource: \"resource\",\n\t\t}\n\t\ttestutil.AssertEventEmmited(t, ctx, event)\n\t*/\n}\n\nfunc TestRegisterObject_RegisteringObjectRegisteredToAnotherUserErrors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Bob as owner of foo\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t}\n\ta2.Run(ctx)\n\n\t// when Alice tries to register foo\n\t// then she is denied\n\ta2 = test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"alice\"),\n\t\tExpectedErr: errors.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestRegisterObject_ReregisteringObjectOwnedByUser_Errors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Bob as owner of foo\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t}\n\ta2.Run(ctx)\n\n\t// when Bob tries to reregister foo\n\t// then forbidden op\n\ta2 = test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestRegisterObject_RegisteringAnotherUsersArchivedObject_Errors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Bob as previous owner of foo\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t}\n\ta2.Run(ctx)\n\n\ta3 := test.ArchiveObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t}\n\ta3.Run(ctx)\n\n\t// when Alice tries to register foo op forbidden\n\taction := test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"alice\"),\n\t\tExpectedErr: errors.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestRegisterObject_RegisteringArchivedUserObject_ReturnsOperationForbidden(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Bob as previous owner of foo\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t}\n\ta2.Run(ctx)\n\ta3 := test.ArchiveObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObject:   coretypes.NewObject(\"resource\", \"foo\"),\n\t}\n\ta3.Run(ctx)\n\n\t// when Bob tries to register the archived foo\n\taction := test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\taction.Run(ctx)\n\n\t/*\n\t\tevent := &types.EventObjectRegistered{\n\t\t\tActor:          bobDID,\n\t\t\tPolicyId:       pol.Id,\n\t\t\tObjectId:       \"foo\",\n\t\t\tObjectResource: \"resource\",\n\t\t}\n\t\ttestutil.AssertEventEmmited(t, ctx, event)\n\t*/\n}\n\nfunc TestRegisterObject_RegisteringObjectInAnUndefinedResourceErrors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Bob as previous owner of foo\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"abc\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestRegisterObject_RegisteringToUnknownPolicyReturnsError(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId:    \"abc1234\",\n\t\tObject:      coretypes.NewObject(\"resource\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_NOT_FOUND,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestRegisterObject_BlankResourceErrors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"abc\", \"foo\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\ta2.Run(ctx)\n}\n\nfunc TestRegisterObject_BlankObjectIdErrors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyDef,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId:    pol.Id,\n\t\tObject:      coretypes.NewObject(\"resource\", \"\"),\n\t\tActor:       ctx.GetActor(\"bob\"),\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\ta2.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/object/reveal_registration_test.go",
    "content": "package object\n\nimport (\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst revealPolicy string = `\nname: pol\nresources:\n- name: file\n`\n\nfunc TestRevealRegistration_UnregisteredObjectGetsRegistered_ReturnsNewRecord(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tt.Logf(\"commitment generated: %v\", commitment.Commitment)\n\tt.Logf(\"registrations commitment id: %v\", commitment.Id)\n\tctx.WaitBlock()\n\n\tt.Logf(\"reveal registration for file:foo.txt\")\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\tresult := a.Run(ctx)\n\tt.Logf(\"created relationship: %v\", result.Record)\n}\n\n// This tests documents deals with the edge case where the object owner\n// commits to the object, performs explicit registration and then reveals the same object.\n// We assert that the record timestamp invariant holds, even for this odd scenario\nfunc TestRevealRegistration_ObjectRegisteredToActor_ReturnRecordWithCommitmentTimestamp(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\t// Given commitment and object registered after commitment\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tctx.WaitBlock()\n\n\ta3 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo.txt\"),\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t}\n\ta3.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When Bob opens commitment for foo.txt\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\tresult := a.Run(ctx)\n\n\t// Then result contains relationship registered\n\t// at commit creation time\n\trequire.Equal(ctx.T, commitment.Metadata.CreationTs, result.Record.Metadata.CreationTs)\n}\n\nfunc TestRevealRegistration_ObjectRegisteredAfterCommitment_RegistrationAmended(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given a commitment by bob to foo.txt\n\t// followed by Alice's registration of foo.txt\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tctx.WaitBlock()\n\n\ta3 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo.txt\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\ta3.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When Bob reveals the commitment to foo.txt\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\tresult := a.Run(ctx)\n\n\t// Then foo.txt is transfered to bob\n\trequire.Equal(ctx.T, uint64(1), result.Event.Id)\n\trequire.Equal(ctx.T, result.Record.Metadata.OwnerDid, ctx.GetActor(\"bob\").DID)\n\trequire.Equal(ctx.T, result.Record.Relationship, coretypes.NewActorRelationship(\"file\", \"foo.txt\", \"owner\", ctx.GetActor(\"bob\").DID))\n}\n\nfunc TestRevealRegistration_ObjectRegisteredThroughNewerCommitment_RegistrationIsAmended(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\t// Given a commitment made by bob to foo.txt\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tctx.WaitBlock()\n\t// Given alice registers foo.txt through a commitment made after bob's\n\ta3 := test.CommitRegistrationsAction{\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t\tPolicyId: pol.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\taliceComm := a3.Run(ctx)\n\tctx.WaitBlock()\n\ta4 := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: aliceComm.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\ta4.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When Bob reveals foo.txt\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\tresult := a.Run(ctx)\n\n\t// Then Bob is the owner of foo.txt\n\trequire.Equal(ctx.T, uint64(1), result.Event.Id)\n\trequire.Equal(ctx.T, result.Record.Metadata.OwnerDid, ctx.GetActor(\"bob\").DID)\n\trequire.Equal(ctx.T, result.Record.Relationship, coretypes.NewActorRelationship(\"file\", \"foo.txt\", \"owner\", ctx.GetActor(\"bob\").DID))\n}\n\nfunc TestRevealRegistration_ObjectRegisteredToSomeoneElseAfterCommitment_ErrorsUnauthorized(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\t// Given alice as owner of foo.txt\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo.txt\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\ta2.Run(ctx)\n\tctx.WaitBlock()\n\t// Given a commitment made by bob to foo.txt\n\ta3 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a3.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When Bob reveals foo.txt then bob is forbidden from doing so\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t\tIndex:       0,\n\t\tExpectedErr: types.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\ta.Run(ctx)\n}\n\nfunc TestRevealRegistration_InvalidProof_ReturnsError(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\t// Given alice as owner of foo.txt\n\ta2 := test.RegisterObjectAction{\n\t\tPolicyId: pol.Id,\n\t\tObject:   coretypes.NewObject(\"file\", \"foo.txt\"),\n\t\tActor:    ctx.GetActor(\"alice\"),\n\t}\n\ta2.Run(ctx)\n\tctx.WaitBlock()\n\t// Given a commitment made by bob to foo.txt\n\ta3 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a3.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When Bob reveals foo.txt then bob is forbidden from doing so\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t\tIndex:       0,\n\t\tExpectedErr: types.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\ta.Run(ctx)\n}\n\nfunc TestRevealRegistration_ValidProofToExpiredCommitment_ReturnsProtocolError(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\t// Given Policy\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\t// Given a commitment made by bob to foo.txt\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tctx.WaitBlocks(ctx.Params.RegistrationsCommitmentValidity.GetBlockCount() + 1)\n\n\t// When Bob reveals foo.txt Bob is forbidden from doing so\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t},\n\t\tIndex:       0,\n\t\tExpectedErr: types.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\ta.Run(ctx)\n}\n\nfunc TestRevealRegistration_RevealingRegistrationTwice_Errors(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  revealPolicy,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\ta2 := test.CommitRegistrationsAction{\n\t\tPolicyId: pol.Id,\n\t\tActor:    ctx.GetActor(\"bob\"),\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t}\n\tcommitment := a2.Run(ctx)\n\tctx.WaitBlock()\n\n\ta := test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t\tIndex: 0,\n\t}\n\ta.Run(ctx)\n\tctx.WaitBlock()\n\n\t// When bob reveals the same registartion twice\n\ta = test.RevealRegistrationAction{\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tPolicyId:     pol.Id,\n\t\tCommitmentId: commitment.Id,\n\t\tObjects: []*coretypes.Object{\n\t\t\tcoretypes.NewObject(\"file\", \"foo.txt\"),\n\t\t\tcoretypes.NewObject(\"file\", \"bar.txt\"),\n\t\t},\n\t\tIndex:       0,\n\t\tExpectedErr: types.ErrorType_OPERATION_FORBIDDEN,\n\t}\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/policy/edit_test.go",
    "content": "package policy\n\nimport (\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n)\n\nfunc TestEditPolicy_CanEditPolicy(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.CreatePolicyAction{\n\t\tPolicy: `\ndescription: ok\nname: policy\nresources:\n- name: file\n  permissions:\n  - expr: (reader + writer)\n    name: read\n  - expr: writer\n    name: write\n  relations:\n  - name: reader\n  - name: writer\n`,\n\t\tCreator: ctx.TxSigner,\n\t}\n\taction.Run(ctx)\n\n\twant := &coretypes.Policy{\n\t\tId:                ctx.State.PolicyId,\n\t\tName:              \"new policy\",\n\t\tDescription:       \"new ok\",\n\t\tSpecificationType: coretypes.PolicySpecificationType_NO_SPEC,\n\t\tResources: []*coretypes.Resource{\n\t\t\t{\n\t\t\t\tName: \"file\",\n\t\t\t\tOwner: &coretypes.Relation{\n\t\t\t\t\tName: \"owner\",\n\t\t\t\t\tDoc:  \"owner relations represents the object owner\",\n\t\t\t\t\tVrTypes: []*coretypes.Restriction{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tResourceName: \"actor\",\n\t\t\t\t\t\t\tRelationName: \"\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tManages: []string{\n\t\t\t\t\t\t\"collaborator\",\n\t\t\t\t\t\t\"writer\",\n\t\t\t\t\t\t\"owner\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelations: []*coretypes.Relation{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"collaborator\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"writer\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPermissions: []*coretypes.Permission{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:                \"read\",\n\t\t\t\t\t\tExpression:          \"collaborator\",\n\t\t\t\t\t\tEffectiveExpression: \"(owner + collaborator)\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:                \"write\",\n\t\t\t\t\t\tExpression:          \"(collaborator + writer)\",\n\t\t\t\t\t\tEffectiveExpression: \"(owner + (collaborator + writer))\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManagementRules: []*coretypes.ManagementRule{\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"collaborator\",\n\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\tManagers:   []string{\"owner\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"owner\",\n\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\tManagers:   []string{\"owner\"},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"writer\",\n\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\tManagers:   []string{\"owner\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tActorResource: &coretypes.ActorResource{\n\t\t\tName: \"actor\",\n\t\t\tDoc:  \"actor resource models the set of actors defined within a policy\",\n\t\t},\n\t}\n\ta := test.EditPolicyAction{\n\t\tId:      ctx.State.PolicyId,\n\t\tCreator: ctx.TxSigner,\n\t\tPolicy: `\ndescription: new ok\nname: new policy\nresources:\n- name: file\n  permissions:\n  - expr: collaborator\n    name: read\n  - expr: (collaborator + writer)\n    name: write\n  relations:\n  - name: collaborator\n  - name: writer\n`,\n\t\tExpected: want,\n\t}\n\ta.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/policy/query_test.go",
    "content": "package policy\n\nimport (\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestQuery_Policy_ReturnsPolicyAndRaw(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\tpolicyStr := `\nname: policy\n`\n\n\ta1 := test.CreatePolicyAction{\n\t\tPolicy:  policyStr,\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := a1.Run(ctx)\n\tpol.Resources = nil\n\n\tmetadata := ctx.GetSignerRecordMetadata()\n\tmetadata.CreationTs.BlockHeight++\n\taction := test.GetPolicyAction{\n\t\tId: pol.Id,\n\t\tExpected: &acptypes.PolicyRecord{\n\t\t\tPolicy:      pol,\n\t\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t\t\tRawPolicy:   policyStr,\n\t\t\tMetadata:    metadata,\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestQuery_Policy_UnknownPolicyReturnsPolicyNotFoundErr(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.GetPolicyAction{\n\t\tId:          \"blahblahblah\",\n\t\tExpectedErr: acptypes.ErrorType_NOT_FOUND,\n\t}\n\taction.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/policy/tx_test.go",
    "content": "package policy\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n)\n\nfunc TestCreatePolicy_ValidPolicyIsCreated(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\tpolicyStr := `\ndescription: ok\nname: policy\nresources:\n- name: file\n  permissions:\n  - doc: own doc\n    name: own\n  - expr: reader\n    name: read\n  relations:\n  - manages:\n    - reader\n    name: admin\n  - name: reader\n`\n\n\twant := &coretypes.Policy{\n\t\tId:                \"199091661bdd06221eb0a8070673c76f25ca8c8dcc04d47934f0abb123daf78b\",\n\t\tName:              \"policy\",\n\t\tDescription:       \"ok\",\n\t\tSpecificationType: coretypes.PolicySpecificationType_NO_SPEC,\n\t\tResources: []*coretypes.Resource{\n\t\t\t{\n\t\t\t\tName: \"file\",\n\t\t\t\tOwner: &coretypes.Relation{\n\t\t\t\t\tName: \"owner\",\n\t\t\t\t\tDoc:  \"owner relations represents the object owner\",\n\t\t\t\t\tVrTypes: []*coretypes.Restriction{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tResourceName: \"actor\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tManages: []string{\n\t\t\t\t\t\t\"admin\",\n\t\t\t\t\t\t\"reader\",\n\t\t\t\t\t\t\"owner\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRelations: []*coretypes.Relation{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"admin\",\n\t\t\t\t\t\tManages: []string{\n\t\t\t\t\t\t\t\"reader\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVrTypes: []*coretypes.Restriction{},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:    \"reader\",\n\t\t\t\t\t\tVrTypes: []*coretypes.Restriction{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPermissions: []*coretypes.Permission{\n\t\t\t\t\t{\n\t\t\t\t\t\tName:                \"own\",\n\t\t\t\t\t\tExpression:          \"\",\n\t\t\t\t\t\tDoc:                 \"own doc\",\n\t\t\t\t\t\tEffectiveExpression: \"owner\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName:                \"read\",\n\t\t\t\t\t\tExpression:          \"reader\",\n\t\t\t\t\t\tEffectiveExpression: \"(owner + reader)\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManagementRules: []*coretypes.ManagementRule{\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"admin\",\n\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\tManagers: []string{\n\t\t\t\t\t\t\t\"owner\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"owner\",\n\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\tManagers: []string{\n\t\t\t\t\t\t\t\"owner\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tRelation:   \"reader\",\n\t\t\t\t\t\tExpression: \"(admin + owner)\",\n\t\t\t\t\t\tManagers: []string{\n\t\t\t\t\t\t\t\"admin\", \"owner\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tActorResource: &coretypes.ActorResource{\n\t\t\tName:      \"actor\",\n\t\t\tDoc:       \"actor resource models the set of actors defined within a policy\",\n\t\t\tRelations: nil,\n\t\t},\n\t}\n\n\taction := test.CreatePolicyAction{\n\t\tPolicy:   policyStr,\n\t\tExpected: want,\n\t\tCreator:  ctx.TxSigner,\n\t}\n\taction.Run(ctx)\n\n\tevent := &coretypes.EventPolicyCreated{\n\t\tPolicyId:   \"4419a8abb886c641bc794b9b3289bc2118ab177542129627b6b05d540de03e46\",\n\t\tPolicyName: \"policy\",\n\t}\n\t_ = event\n\t//.AssertEventEmmited(t, ctx, event)\n}\n\nfunc TestCreatePolicy_PolicyResources_OwnerRelationImplicitlyAdded(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.CreatePolicyAction{\n\t\tPolicy: `\ndescription: ok\nname: policy\nresources:\n- name: file\n  relations:\n  - name: reader\n- name: foo\n`,\n\n\t\tCreator: ctx.TxSigner,\n\t}\n\tpol := action.Run(ctx)\n\trequire.Equal(t, \"owner\", pol.GetResourceByName(\"file\").GetRelationByName(\"owner\").Name)\n}\n\nfunc TestCreatePolicy_ManagementReferencingUndefinedRelationReturnsError(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.CreatePolicyAction{\n\t\tPolicy: `\ndescription: ok\nname: policy\nresources:\n- name: file\n  relations:\n  - manages:\n    - deleter\n    name: admin\n`,\n\n\t\tCreator: ctx.TxSigner,\n\t\t//ExpectedErr: coretypes.ErrInvalidManagementRule, // FIXME\n\t\tExpectedErr: errors.ErrorType_BAD_INPUT,\n\t}\n\taction.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/relationship/delete_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar deletePolicy = `\nname: policy\nresources:\n- name: file\n  relations:\n  - manages:\n    - reader\n    name: admin\n    types:\n    - actor\n  - name: reader\n    types:\n    - actor\n  - name: writer\n    types:\n    - actor\n`\n\nfunc setupDelete(t *testing.T) *test.TestCtx {\n\tctx := test.NewTestCtx(t)\n\n\treader := ctx.GetActor(\"reader\")\n\twriter := ctx.GetActor(\"writer\")\n\tadmin := ctx.GetActor(\"admin\")\n\taction := test.PolicySetupAction{\n\t\tPolicy:        deletePolicy,\n\t\tPolicyCreator: ctx.TxSigner,\n\t\tObjectsPerActor: map[string][]*coretypes.Object{\n\t\t\t\"alice\": []*coretypes.Object{\n\t\t\t\tcoretypes.NewObject(\"file\", \"foo\"),\n\t\t\t},\n\t\t},\n\t\tRelationshipsPerActor: map[string][]*coretypes.Relationship{\n\t\t\t\"alice\": []*coretypes.Relationship{\n\t\t\t\tcoretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", reader.DID),\n\t\t\t\tcoretypes.NewActorRelationship(\"file\", \"foo\", \"writer\", writer.DID),\n\t\t\t\tcoretypes.NewActorRelationship(\"file\", \"foo\", \"admin\", admin.DID),\n\t\t\t},\n\t\t},\n\t}\n\taction.Run(ctx)\n\n\treturn ctx\n}\n\nfunc TestDeleteRelationship_ObjectOwnerCanRemoveRelationship(t *testing.T) {\n\tctx := setupDelete(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.DeleteRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", ctx.GetActor(\"reader\").DID),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t\tExpected: &types.DeleteRelationshipCmdResult{\n\t\t\tRecordFound: true,\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestDeleteRelationship_ObjectManagerCanRemoveRelationshipsForRelationTheyManage(t *testing.T) {\n\tctx := setupDelete(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.DeleteRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", ctx.GetActor(\"reader\").DID),\n\t\tActor:        ctx.GetActor(\"admin\"),\n\t\tExpected: &types.DeleteRelationshipCmdResult{\n\t\t\tRecordFound: true,\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestDeleteRelationship_ObjectManagerCannotRemoveRelationshipForRelationTheyDontManage(t *testing.T) {\n\tctx := setupDelete(t)\n\tdefer ctx.Cleanup()\n\n\taction := test.DeleteRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"writer\", ctx.GetActor(\"writer\").DID),\n\t\tActor:        ctx.GetActor(\"admin\"),\n\t\tExpectedErr:  errors.ErrorType_UNAUTHORIZED,\n\t}\n\taction.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/suite/relationship/filter_test.go",
    "content": "package relationship\n"
  },
  {
    "path": "tests/integration/acp/suite/relationship/set_test.go",
    "content": "package relationship\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar setPolicy string = `\nname: policy\nresources:\n- name: file\n  relations:\n  - manages:\n    - reader\n    name: admin\n    types:\n    - actor\n  - name: reader\n    types:\n    - actor\n`\n\nfunc setupSetRel(t *testing.T) *test.TestCtx {\n\tctx := test.NewTestCtx(t)\n\n\taction := test.PolicySetupAction{\n\t\tPolicy:        setPolicy,\n\t\tPolicyCreator: ctx.TxSigner,\n\t\tObjectsPerActor: map[string][]*coretypes.Object{\n\t\t\t\"alice\": {\n\t\t\t\tcoretypes.NewObject(\"file\", \"foo\"),\n\t\t\t},\n\t\t},\n\t}\n\taction.Run(ctx)\n\treturn ctx\n}\n\nfunc TestSetRelationship_OwnerCanShareObjectTheyOwn(t *testing.T) {\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\tbob := ctx.GetActor(\"bob\").DID\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", bob),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t}\n\ta1.Run(ctx)\n}\nfunc TestSetRelationship_ActorCannotSetRelationshipForUnregisteredObject(t *testing.T) {\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\tbob := ctx.GetActor(\"bob\").DID\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"404-file-not-registered\", \"reader\", bob),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t\tExpectedErr:  errors.ErrorType_NOT_FOUND,\n\t}\n\ta1.Run(ctx)\n}\n\nfunc TestSetRelationship_ActorCannotSetRelationshipForObjectTheyDoNotOwn(t *testing.T) {\n\t// Given Alice as the Owner of File Foo\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\tbob := ctx.GetActor(\"bob\")\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", bob.DID),\n\t\tActor:        bob,\n\t\tExpectedErr:  errors.ErrorType_UNAUTHORIZED,\n\t}\n\ta1.Run(ctx)\n}\n\nfunc TestSetRelationship_ManagerActorCanDelegateAccessToAnotherActor(t *testing.T) {\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\t// Given object foo and Bob as a manager\n\tbob := ctx.GetActor(\"bob\").DID\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"admin\", bob),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t}\n\ta1.Run(ctx)\n\n\t// when bob shares foo with charlie\n\tcharlie := ctx.GetActor(\"charlie\").DID\n\taction := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", charlie),\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tExpected: &types.SetRelationshipCmdResult{\n\t\t\tRecordExisted: false,\n\t\t\tRecord: &types.RelationshipRecord{\n\t\t\t\tPolicyId:     ctx.State.PolicyId,\n\t\t\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", charlie),\n\t\t\t\tArchived:     false,\n\t\t\t},\n\t\t},\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestSetRelationship_ManagerActorCannotSetRelationshipToRelationshipsTheyDoNotManage(t *testing.T) {\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\t// Given object foo and Bob as a admin\n\tbob := ctx.GetActor(\"bob\")\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"admin\", bob.DID),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t}\n\ta1.Run(ctx)\n\n\t// when bob attemps to make charlie an admin\n\t// then operation is not authorized\n\tcharlie := ctx.GetActor(\"charlie\").DID\n\taction := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"admin\", charlie),\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tExpectedErr:  errors.ErrorType_UNAUTHORIZED,\n\t}\n\taction.Run(ctx)\n}\n\nfunc TestSetRelationship_AdminIsNotAllowedToSetAnOwnerRelationship(t *testing.T) {\n\tctx := setupSetRel(t)\n\tdefer ctx.Cleanup()\n\n\t// Given object foo and Bob as a admin\n\tbob := ctx.GetActor(\"bob\").DID\n\ta1 := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"admin\", bob),\n\t\tActor:        ctx.GetActor(\"alice\"),\n\t}\n\ta1.Run(ctx)\n\n\t// when bob attemps to make himself an owner\n\t// then operation is not authorized\n\taction := test.SetRelationshipAction{\n\t\tPolicyId:     ctx.State.PolicyId,\n\t\tRelationship: coretypes.NewActorRelationship(\"file\", \"foo\", \"owner\", bob),\n\t\tActor:        ctx.GetActor(\"bob\"),\n\t\tExpectedErr:  errors.ErrorType_OPERATION_FORBIDDEN,\n\t}\n\taction.Run(ctx)\n}\n"
  },
  {
    "path": "tests/integration/acp/types.go",
    "content": "package test\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst (\n\tSourceHubAuthStratEnvVar string = \"SOURCEHUB_ACP_TEST_AUTH\"\n\tSourceHubExecutorEnvVar  string = \"SOURCEHUB_ACP_TEST_EXECUTOR\"\n\tSourceHubActorEnvVar     string = \"SOURCEHUB_ACP_TEST_ACTOR\"\n)\n\ntype AccountCreator interface {\n\t// GetOrCreateActor retrieves an account from a TestActor's address\n\t// if the account does not exist in the chain, it must be created\n\t// and given credits (if required)\n\tGetOrCreateAccountFromActor(*TestCtx, *TestActor) (sdk.AccountI, error)\n}\n\n// ACPClient represents a component which can execute an ACP Msg and produce a result\ntype ACPClient interface {\n\tAccountCreator\n\tsigned_policy_cmd.LogicalClock\n\n\tCreatePolicy(ctx *TestCtx, msg *types.MsgCreatePolicy) (*types.MsgCreatePolicyResponse, error)\n\tEditPolicy(ctx *TestCtx, msg *types.MsgEditPolicy) (*types.MsgEditPolicyResponse, error)\n\tBearerPolicyCmd(ctx *TestCtx, msg *types.MsgBearerPolicyCmd) (*types.MsgBearerPolicyCmdResponse, error)\n\tSignedPolicyCmd(ctx *TestCtx, msg *types.MsgSignedPolicyCmd) (*types.MsgSignedPolicyCmdResponse, error)\n\tDirectPolicyCmd(ctx *TestCtx, msg *types.MsgDirectPolicyCmd) (*types.MsgDirectPolicyCmdResponse, error)\n\n\tPolicy(ctx *TestCtx, msg *types.QueryPolicyRequest) (*types.QueryPolicyResponse, error)\n\tRegistrationsCommitmentByCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentByCommitmentRequest) (*types.QueryRegistrationsCommitmentByCommitmentResponse, error)\n\tRegistrationsCommitment(ctx *TestCtx, msg *types.QueryRegistrationsCommitmentRequest) (*types.QueryRegistrationsCommitmentResponse, error)\n\n\tObjectOwner(ctx *TestCtx, msg *types.QueryObjectOwnerRequest) (*types.QueryObjectOwnerResponse, error)\n\n\t// GetLastBlockTs returns an ACP Timestamp for the last accepted block in SourceHub\n\tGetLastBlockTs(ctx *TestCtx) (*types.Timestamp, error)\n\n\tCleanup()\n\t// WaitBlock waits until the Executor has advanced to the next block\n\tWaitBlock()\n}\n\n// AuthenticationStrategy is an enum representing the Authentication format\n// which should be used in the tests\ntype AuthenticationStrategy int\n\nconst (\n\t// Direct represents authentication done directly thought a Tx/Msg Signer\n\tDirect AuthenticationStrategy = iota\n\t// BearerToken auth uses a Bearer Token to authenticate the actor\n\tBearerToken\n\t// SignedPayload auth uses a SignedPolicyCmd as source of authentication\n\tSignedPayload\n)\n\nvar AuthenticationStrategyMap map[string]AuthenticationStrategy = map[string]AuthenticationStrategy{\n\t\"DIRECT\": Direct,\n\t\"BEARER\": BearerToken,\n\t\"SIGNED\": SignedPayload,\n}\n\n// ActorKeyType represents the key pair to be used by the system Actors during the test\ntype ActorKeyType int\n\nconst (\n\tActor_ED25519 ActorKeyType = iota\n\tActor_SECP256K1\n)\n\nvar ActorKeyMap map[string]ActorKeyType = map[string]ActorKeyType{\n\t\"ED25519\":   Actor_ED25519,\n\t\"SECP256K1\": Actor_SECP256K1,\n}\n\n// ExecutorStrategy represents the available executors for the test suite\ntype ExecutorStrategy int\n\nconst (\n\t// Keeper calls the ACP Keeper directly without going through a consensus engine\n\tKeeper ExecutorStrategy = iota\n\t// CLI invokes SourceHub through the CLI client and broadcasts the Msgs\n\t// to a running instance of SourceHub\n\tCLI\n\t// SDK broadcasts Msgs to a running instance of SourceHub through the SourceHub SDK Client\n\tSDK\n)\n\nvar ExecutorStrategyMap map[string]ExecutorStrategy = map[string]ExecutorStrategy{\n\t\"KEEPER\": Keeper,\n\t//\"CLI\":    CLI,\n\t//\"SDK\": SDK,\n}\n\n// TestConfig models how the tests suite will be run\ntype TestConfig struct {\n\tAuthStrategy     AuthenticationStrategy\n\tExecutorStrategy ExecutorStrategy\n\tActorType        ActorKeyType\n\t//TODO InitialState\n}\n\nfunc NewDefaultTestConfig() TestConfig {\n\treturn TestConfig{\n\t\tAuthStrategy:     BearerToken,\n\t\tExecutorStrategy: Keeper,\n\t\tActorType:        Actor_ED25519,\n\t}\n}\n\nfunc MustNewTestConfigFromEnv() TestConfig {\n\tconfig := NewDefaultTestConfig()\n\n\tactor, wasSet := os.LookupEnv(SourceHubActorEnvVar)\n\tif wasSet {\n\t\tkey, found := ActorKeyMap[actor]\n\t\tif !found {\n\t\t\tpanic(fmt.Errorf(\"ActorKey string value not defined: %v\", actor))\n\t\t}\n\t\tconfig.ActorType = key\n\t}\n\n\tauthStratStr, wasSet := os.LookupEnv(SourceHubAuthStratEnvVar)\n\tif wasSet {\n\t\tauthStrat, found := AuthenticationStrategyMap[authStratStr]\n\t\tif !found {\n\t\t\tpanic(fmt.Errorf(\"AuthenticationStrategy string value not defined: %v\", authStratStr))\n\t\t}\n\t\tconfig.AuthStrategy = authStrat\n\t}\n\n\texecutorStr, wasSet := os.LookupEnv(SourceHubExecutorEnvVar)\n\tif wasSet {\n\t\texecutor, found := ExecutorStrategyMap[executorStr]\n\t\tif !found {\n\t\t\tpanic(fmt.Errorf(\"ExecutorStrategy string value not defined: %v\", executorStr))\n\t\t}\n\t\tconfig.ExecutorStrategy = executor\n\t}\n\n\treturn config\n}\n"
  },
  {
    "path": "tests/integration/acp/utils.go",
    "content": "package test\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"time\"\n\n\tgogotypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// MustDateTimeToProto parses a time.DateTime (YYYY-MM-DD HH:MM:SS) timestamp\n// and converts into a proto Timestamp.\n// Panics if input is invalid\nfunc MustDateTimeToProto(timestamp string) *gogotypes.Timestamp {\n\tt, err := time.Parse(time.DateTime, timestamp)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tts, err := gogotypes.TimestampProto(t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn ts\n}\n\n// AssertError asserts that got and want match\n// if want is not nil.\n// If ant is nil, it asserts that got has no error\nfunc AssertError(ctx *TestCtx, got, want error) bool {\n\tif want != nil {\n\t\trequire.NotNil(ctx.T, got, \"expected an error but got none\")\n\t\tif errors.Is(got, want) {\n\t\t\treturn assert.ErrorIs(ctx.T, got, want)\n\t\t} else {\n\t\t\t// Errors returned from SDK operations (RPC communication to a SourceHub node)\n\t\t\t// no longer have the original errors wrapped, therefore we compare a string as fallback strat.\n\t\t\tgotErrStr := got.Error()\n\t\t\twantErrStr := want.Error()\n\t\t\treturn assert.Contains(ctx.T, gotErrStr, wantErrStr)\n\t\t}\n\t} else {\n\t\treturn assert.NoError(ctx.T, got)\n\t}\n}\n\n// AssertValue asserts got matches want, if want is not nil\nfunc AssertValue(ctx *TestCtx, got, want any) {\n\tif !isNil(want) {\n\t\tassert.Equal(ctx.T, want, got)\n\t}\n}\n\nfunc AssertResults(ctx *TestCtx, got, want any, gotErr, wantErr error) {\n\tAssertError(ctx, gotErr, wantErr)\n\tAssertValue(ctx, got, want)\n}\n\nfunc isNil(object interface{}) bool {\n\tif object == nil {\n\t\treturn true\n\t}\n\n\tvalue := reflect.ValueOf(object)\n\tkind := value.Kind()\n\tisNilableKind := containsKind(\n\t\t[]reflect.Kind{\n\t\t\treflect.Chan, reflect.Func,\n\t\t\treflect.Interface, reflect.Map,\n\t\t\treflect.Ptr, reflect.Slice, reflect.UnsafePointer},\n\t\tkind)\n\n\tif isNilableKind && value.IsNil() {\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// containsKind checks if a specified kind in the slice of kinds.\nfunc containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {\n\tfor i := 0; i < len(kinds); i++ {\n\t\tif kind == kinds[i] {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "tests/integration/ante/jws_test.go",
    "content": "package ante\n\nimport (\n\t\"context\"\n\t\"crypto/ed25519\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\tclienttx \"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ttxtypes \"github.com/cosmos/cosmos-sdk/types/tx\"\n\t\"github.com/cosmos/cosmos-sdk/types/tx/signing\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tjwstypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n\ttestutil \"github.com/sourcenetwork/sourcehub/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/network\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n)\n\n// TestJWSExtensionOptionWithDIDBasedFeegrant ensures that tx with JWS extension succeeds using the DID-based feegrant.\nfunc TestJWSExtensionOptionWithDIDBasedFeegrant(t *testing.T) {\n\tnet := network.NewWithOptions(t, network.NetworkOptions{EnableFaucet: true})\n\n\tval := net.Validators[0]\n\tclientCtx := val.ClientCtx\n\n\t_, err := net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\n\t// Import faucet key into validator keyring\n\tfaucetMnemonic := \"comic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\"\n\t_, err = clientCtx.Keyring.NewAccount(\"faucet\", faucetMnemonic, \"\", \"m/44'/118'/0'/0/0\", hd.Secp256k1)\n\trequire.NoError(t, err)\n\n\t// Generate DID keypair\n\tmnemonic := \"near smoke great nasty alley food crush nurse rubber say danger search employ under gaze today alien eager risk letter drum relief sponsor current\"\n\tseed, err := hd.Secp256k1.Derive()(mnemonic, \"\", \"m/44'/118'/0'/0/0\")\n\trequire.NoError(t, err)\n\n\tif len(seed) > 32 {\n\t\tseed = seed[:32]\n\t}\n\tprivKey := ed25519.NewKeyFromSeed(seed)\n\tpubKey := privKey.Public().(ed25519.PublicKey)\n\tdidKey, err := key.CreateDIDKey(crypto.Ed25519, pubKey)\n\trequire.NoError(t, err)\n\tdid := didKey.String()\n\n\t// Add DID-based allowance from validator to DID\n\tvalAddr := sdk.AccAddress(val.Address)\n\tfaucetAddr := sdk.MustAccAddressFromBech32(\"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\")\n\n\t// Create basic allowance for the DID\n\tbasicAllowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewCoin(\"uopen\", math.NewInt(1000000))),\n\t}\n\n\tmsgGrantAllowance := &feegrant.MsgGrantDIDAllowance{\n\t\tGranter:    valAddr.String(),\n\t\tGranteeDid: did,\n\t\tAllowance:  &codectypes.Any{},\n\t}\n\n\t// Pack the allowance\n\tallowanceAny, err := codectypes.NewAnyWithValue(basicAllowance)\n\trequire.NoError(t, err)\n\tmsgGrantAllowance.Allowance = allowanceAny\n\n\t// Build and send grant transaction\n\ttxBuilder := clientCtx.TxConfig.NewTxBuilder()\n\terr = txBuilder.SetMsgs(msgGrantAllowance)\n\trequire.NoError(t, err)\n\n\ttxBuilder.SetGasLimit(200000)\n\ttxBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(\"uopen\", math.NewInt(5000))))\n\n\t// Create gRPC connection\n\tgrpcAddr := net.Validators[0].AppConfig.GRPC.Address\n\tconn, err := grpc.NewClient(grpcAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))\n\trequire.NoError(t, err)\n\tdefer conn.Close()\n\n\t// Query validator account to get proper account number and sequence\n\tauthClient := authtypes.NewQueryClient(conn)\n\taccountResp, err := authClient.Account(context.Background(), &authtypes.QueryAccountRequest{\n\t\tAddress: valAddr.String(),\n\t})\n\trequire.NoError(t, err)\n\n\tvar account sdk.AccountI\n\terr = clientCtx.InterfaceRegistry.UnpackAny(accountResp.Account, &account)\n\trequire.NoError(t, err)\n\n\taccNum := account.GetAccountNumber()\n\tseq := account.GetSequence()\n\n\t// Create transaction factory with proper account info\n\ttxf := clienttx.Factory{}.\n\t\tWithTxConfig(clientCtx.TxConfig).\n\t\tWithChainID(clientCtx.ChainID).\n\t\tWithKeybase(clientCtx.Keyring).\n\t\tWithSignMode(signing.SignMode_SIGN_MODE_DIRECT).\n\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\tWithAccountNumber(accNum).\n\t\tWithSequence(seq)\n\n\terr = clienttx.Sign(context.Background(), txf, val.Moniker, txBuilder, true)\n\trequire.NoError(t, err)\n\n\ttxBytes, err := clientCtx.TxConfig.TxEncoder()(txBuilder.GetTx())\n\trequire.NoError(t, err)\n\n\tres, err := clientCtx.BroadcastTxSync(txBytes)\n\trequire.NoError(t, err)\n\trequire.Equal(t, uint32(0), res.Code, \"grant allowance check tx failed: %s\", res.RawLog)\n\n\t// Wait for transaction to be processed\n\t_, err = net.WaitForHeight(3)\n\trequire.NoError(t, err)\n\n\t// Query the transaction to verify it was actually executed successfully\n\ttxClient := txtypes.NewServiceClient(conn)\n\ttxResp, err := txClient.GetTx(context.Background(), &txtypes.GetTxRequest{\n\t\tHash: res.TxHash,\n\t})\n\trequire.NoError(t, err, \"should be able to query grant transaction\")\n\trequire.NotNil(t, txResp.TxResponse, \"tx response should not be nil\")\n\trequire.Equal(t, uint32(0), txResp.TxResponse.Code, \"grant transaction should succeed in block: %s\", txResp.TxResponse.RawLog)\n\n\t// Verify the DID allowance was created successfully via gRPC query\n\tfeegrantClient := feegrant.NewQueryClient(conn)\n\tqueryResp, err := feegrantClient.DIDAllowance(context.Background(), &feegrant.QueryDIDAllowanceRequest{\n\t\tGranter:    valAddr.String(),\n\t\tGranteeDid: did,\n\t})\n\trequire.NoError(t, err, \"DID allowance should exist\")\n\trequire.NotNil(t, queryResp.Allowance, \"DID allowance should not be nil\")\n\n\t// Create policy message with JWS extension\n\tpolicyContent := `\ndescription: Base policy that defines permissions for bulletin namespaces\nname: Bulletin Policy\nresources:\n- name: namespace\n  permissions:\n  - expr: collaborator\n    name: create_post\n  relations:\n  - name: collaborator\n    types:\n    - actor\n`\n\n\tmsg := &acptypes.MsgCreatePolicy{\n\t\tCreator:     faucetAddr.String(),\n\t\tPolicy:      policyContent,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\t// Create bearer token payload\n\tbearerToken := testutil.NewBearerTokenNow(did, faucetAddr.String())\n\tpayloadBytes, err := json.Marshal(bearerToken)\n\trequire.NoError(t, err)\n\n\t// Create and sign JWS\n\theader := testutil.CreateJWSHeader()\n\theaderBytes, err := json.Marshal(header)\n\trequire.NoError(t, err)\n\n\theaderEncoded := base64.RawURLEncoding.EncodeToString(headerBytes)\n\tpayloadEncoded := base64.RawURLEncoding.EncodeToString(payloadBytes)\n\tsigningInput := headerEncoded + \".\" + payloadEncoded\n\tsignature := ed25519.Sign(privKey, []byte(signingInput))\n\tsignatureEncoded := base64.RawURLEncoding.EncodeToString(signature)\n\tjwsString := signingInput + \".\" + signatureEncoded\n\n\t// Create extension option\n\text := &jwstypes.JWSExtensionOption{\n\t\tBearerToken: jwsString,\n\t}\n\n\textAny, err := codectypes.NewAnyWithValue(ext)\n\trequire.NoError(t, err)\n\n\t// Build transaction with JWS extension\n\ttxBuilder = clientCtx.TxConfig.NewTxBuilder()\n\terr = txBuilder.SetMsgs(msg)\n\trequire.NoError(t, err)\n\n\t// Set extension options\n\tif extBuilder, ok := txBuilder.(client.ExtendedTxBuilder); ok {\n\t\textBuilder.SetExtensionOptions(extAny)\n\t} else {\n\t\tt.Fatal(\"TxBuilder does not implement ExtendedTxBuilder\")\n\t}\n\n\ttxBuilder.SetGasLimit(200000)\n\ttxBuilder.SetFeeAmount(sdk.NewCoins(sdk.NewCoin(\"uopen\", math.NewInt(5000))))\n\ttxBuilder.SetFeeGranter(valAddr)\n\n\tfaucetAccountResp, err := authClient.Account(context.Background(), &authtypes.QueryAccountRequest{\n\t\tAddress: faucetAddr.String(),\n\t})\n\trequire.NoError(t, err)\n\n\terr = clientCtx.InterfaceRegistry.UnpackAny(faucetAccountResp.Account, &account)\n\trequire.NoError(t, err)\n\n\tfaucetAccNum := account.GetAccountNumber()\n\tfaucetSeq := account.GetSequence()\n\n\t// Sign the transaction\n\ttxf2 := clienttx.Factory{}.\n\t\tWithTxConfig(clientCtx.TxConfig).\n\t\tWithChainID(clientCtx.ChainID).\n\t\tWithKeybase(clientCtx.Keyring).\n\t\tWithSignMode(signing.SignMode_SIGN_MODE_DIRECT).\n\t\tWithAccountRetriever(clientCtx.AccountRetriever).\n\t\tWithAccountNumber(faucetAccNum).\n\t\tWithSequence(faucetSeq)\n\n\terr = clienttx.Sign(context.Background(), txf2, \"faucet\", txBuilder, true)\n\trequire.NoError(t, err)\n\n\t// Encode and broadcast\n\ttxBytes, err = clientCtx.TxConfig.TxEncoder()(txBuilder.GetTx())\n\trequire.NoError(t, err)\n\n\tres, err = clientCtx.BroadcastTxSync(txBytes)\n\trequire.NoError(t, err)\n\trequire.Equal(t, uint32(0), res.Code, \"create policy transaction with JWS failed: %s\", res.RawLog)\n}\n"
  },
  {
    "path": "tests/integration/faucet/faucet_test.go",
    "content": "package faucet\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\n\tfaucettypes \"github.com/sourcenetwork/sourcehub/app/faucet/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/network\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n)\n\nfunc TestFaucetRequest(t *testing.T) {\n\tnet := network.NewWithOptions(t, network.NetworkOptions{EnableFaucet: true})\n\n\t_, err := net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\n\tt.Run(\"FaucetInfoBeforeRequest\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int32(0), info.RequestCount, \"Initial request count should be 0\")\n\t\tassert.Equal(t, int64(100000000000000), info.Balance.Amount.Int64(), \"Faucet balance should be 100000000000000\")\n\t})\n\n\tt.Run(\"FaucetRequest\", func(t *testing.T) {\n\t\ttestAddress := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\t\trequest := &faucettypes.FaucetRequest{\n\t\t\tAddress: testAddress,\n\t\t}\n\t\tbody, _ := json.Marshal(request)\n\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Post(\n\t\t\tfmt.Sprintf(\"%s/faucet/request\", httpAddr),\n\t\t\t\"application/json\",\n\t\t\tbytes.NewBuffer(body),\n\t\t)\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar response faucettypes.FaucetResponse\n\t\tbodyBytes, _ := io.ReadAll(resp.Body)\n\t\terr = json.NewDecoder(bytes.NewReader(bodyBytes)).Decode(&response)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, response.Txhash)\n\t\tassert.Equal(t, uint32(0), response.Code)\n\t\tassert.NotEmpty(t, response.Address)\n\t\tassert.NotEmpty(t, response.Amount.Amount)\n\n\t\t_, err = net.WaitForHeight(3)\n\t\trequire.NoError(t, err)\n\n\t\ttime.Sleep(3 * time.Second)\n\n\t\tbalanceResp, err := http.Get(fmt.Sprintf(\"%s/cosmos/bank/v1beta1/balances/%s\", httpAddr, testAddress))\n\t\tassert.Equal(t, http.StatusOK, balanceResp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer balanceResp.Body.Close()\n\n\t\tvar balanceResponse map[string]any\n\t\terr = json.NewDecoder(balanceResp.Body).Decode(&balanceResponse)\n\t\trequire.NoError(t, err)\n\n\t\tassert.Contains(t, balanceResponse, \"balances\")\n\t\tbalances := balanceResponse[\"balances\"].([]any)\n\n\t\tvar uopenBalance string\n\t\tfor _, balance := range balances {\n\t\t\tbalanceMap := balance.(map[string]any)\n\t\t\tif balanceMap[\"denom\"] == appparams.MicroOpenDenom {\n\t\t\t\tuopenBalance = balanceMap[\"amount\"].(string)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tassert.Equal(t, \"1000000000\", uopenBalance, \"Account should have received exactly 1000000000uopen\")\n\t})\n\n\tt.Run(\"FaucetInfoAfterRequest\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int32(1), info.RequestCount, \"Request count should be 1\")\n\t\tassert.Equal(t, int64(99999000000000), info.Balance.Amount.Int64(), \"Faucet balance should be 99999000000000\")\n\t})\n}\n\nfunc TestFaucetInitAccount(t *testing.T) {\n\tnet := network.NewWithOptions(t, network.NetworkOptions{EnableFaucet: true})\n\n\t_, err := net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\n\tt.Run(\"FaucetInfoBeforeInitAccount\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int32(0), info.RequestCount, \"Initial request count should be 0\")\n\t\tassert.Equal(t, int64(100000000000000), info.Balance.Amount.Int64(), \"Faucet balance should be 100000000000000\")\n\t})\n\n\tt.Run(\"FaucetInitAccount\", func(t *testing.T) {\n\t\ttestAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\n\t\trequest := &faucettypes.InitAccountRequest{\n\t\t\tAddress: testAddress,\n\t\t}\n\t\tbody, _ := json.Marshal(request)\n\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Post(\n\t\t\tfmt.Sprintf(\"%s/faucet/init-account\", httpAddr),\n\t\t\t\"application/json\",\n\t\t\tbytes.NewBuffer(body),\n\t\t)\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar response faucettypes.InitAccountResponse\n\t\tbodyBytes, _ := io.ReadAll(resp.Body)\n\t\terr = json.NewDecoder(bytes.NewReader(bodyBytes)).Decode(&response)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, response.Message)\n\t\tassert.NotEmpty(t, response.Txhash)\n\t\tassert.Equal(t, uint32(0), response.Code)\n\t\tassert.NotEmpty(t, response.Address)\n\t\tassert.NotEmpty(t, response.Amount.Amount)\n\t\tassert.False(t, response.Exists)\n\n\t\t_, err = net.WaitForHeight(3)\n\t\trequire.NoError(t, err)\n\n\t\ttime.Sleep(3 * time.Second)\n\n\t\tbalanceResp, err := http.Get(fmt.Sprintf(\"%s/cosmos/bank/v1beta1/balances/%s\", httpAddr, testAddress))\n\t\tassert.Equal(t, http.StatusOK, balanceResp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer balanceResp.Body.Close()\n\n\t\tvar balanceResponse map[string]any\n\t\terr = json.NewDecoder(balanceResp.Body).Decode(&balanceResponse)\n\t\trequire.NoError(t, err)\n\n\t\tassert.Contains(t, balanceResponse, \"balances\")\n\t\tbalances := balanceResponse[\"balances\"].([]any)\n\n\t\tvar uopenBalance string\n\t\tfor _, balance := range balances {\n\t\t\tbalanceMap := balance.(map[string]any)\n\t\t\tif balanceMap[\"denom\"] == appparams.MicroOpenDenom {\n\t\t\t\tuopenBalance = balanceMap[\"amount\"].(string)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tassert.Equal(t, \"1\", uopenBalance, \"Account should have received exactly 1uopen\")\n\t})\n\n\tt.Run(\"FaucetInfoAfterInitAccount\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int32(0), info.RequestCount, \"Request count should be 0\")\n\t\tassert.Equal(t, int64(99999999999999), info.Balance.Amount.Int64(), \"Faucet balance should be 99999999999999\")\n\t})\n}\n\nfunc TestFaucetGrantAllowance(t *testing.T) {\n\tnet := network.NewWithOptions(t, network.NetworkOptions{EnableFaucet: true})\n\n\t_, err := net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\n\tt.Run(\"FaucetInfoBeforeGrantAllowance\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int64(100000000000000), info.Balance.Amount.Int64(), \"Faucet balance should be 100000000000000\")\n\t})\n\n\tt.Run(\"FaucetGrantAllowance\", func(t *testing.T) {\n\t\ttestAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\n\t\trequest := &faucettypes.GrantAllowanceRequest{\n\t\t\tAddress: testAddress,\n\t\t}\n\t\tbody, _ := json.Marshal(request)\n\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Post(\n\t\t\tfmt.Sprintf(\"%s/faucet/grant-allowance\", httpAddr),\n\t\t\t\"application/json\",\n\t\t\tbytes.NewBuffer(body),\n\t\t)\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar response faucettypes.GrantAllowanceResponse\n\t\tbodyBytes, _ := io.ReadAll(resp.Body)\n\t\terr = json.NewDecoder(bytes.NewReader(bodyBytes)).Decode(&response)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, response.Message)\n\t\tassert.NotEmpty(t, response.Txhash)\n\t\tassert.Equal(t, uint32(0), response.Code)\n\t\tassert.NotEmpty(t, response.Granter)\n\t\tassert.NotEmpty(t, response.Grantee)\n\t\tassert.NotEmpty(t, response.AmountLimit.Amount)\n\t\tassert.NotNil(t, response.Expiration, \"Expiration should be set\")\n\t\tassert.Equal(t, \"10000000000\", response.AmountLimit.Amount.String(), \"Default amount should be 10,000 $OPEN\")\n\n\t\texpectedExpiration := time.Now().AddDate(0, 0, 30)\n\t\tassert.WithinDuration(t, expectedExpiration, *response.Expiration, time.Minute, \"Expiration should be 30 days from now\")\n\n\t\t_, err = net.WaitForHeight(3)\n\t\trequire.NoError(t, err)\n\n\t\t// Check feegrant allowances instead of balance\n\t\tallowanceResp, err := http.Get(fmt.Sprintf(\"%s/sourcehub/feegrant/v1beta1/allowances/%s\", httpAddr, testAddress))\n\t\tassert.Equal(t, http.StatusOK, allowanceResp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer allowanceResp.Body.Close()\n\n\t\tvar allowanceResponse map[string]any\n\t\terr = json.NewDecoder(allowanceResp.Body).Decode(&allowanceResponse)\n\t\trequire.NoError(t, err)\n\n\t\tassert.Contains(t, allowanceResponse, \"allowances\")\n\t\tallowances := allowanceResponse[\"allowances\"].([]any)\n\t\tassert.NotEmpty(t, allowances, \"Should have at least one allowance\")\n\n\t\tallowance := allowances[0].(map[string]any)\n\t\tassert.Contains(t, allowance, \"granter\")\n\t\tassert.Contains(t, allowance, \"grantee\")\n\t\tassert.Contains(t, allowance, \"allowance\")\n\n\t\tallowanceData := allowance[\"allowance\"].(map[string]any)\n\t\tassert.Contains(t, allowanceData, \"@type\")\n\t\tassert.Contains(t, allowanceData, \"spend_limit\")\n\t\tassert.Contains(t, allowanceData, \"expiration\", \"Allowance should have expiration\")\n\n\t\tspendLimit := allowanceData[\"spend_limit\"].([]any)\n\t\tassert.NotEmpty(t, spendLimit, \"Should have spend limit\")\n\n\t\tspendLimitCoin := spendLimit[0].(map[string]any)\n\t\tassert.Equal(t, appparams.MicroOpenDenom, spendLimitCoin[\"denom\"])\n\t\tassert.Equal(t, \"10000000000\", spendLimitCoin[\"amount\"], \"Allowance should have 10,000 OPEN spend limit\")\n\t})\n\n\tt.Run(\"FaucetInfoAfterGrantAllowance\", func(t *testing.T) {\n\t\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\t\tresp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\t\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\t\trequire.NoError(t, err)\n\t\tdefer resp.Body.Close()\n\n\t\tvar info faucettypes.FaucetInfoResponse\n\t\terr = json.NewDecoder(resp.Body).Decode(&info)\n\t\trequire.NoError(t, err)\n\n\t\tassert.NotEmpty(t, info.Address)\n\t\tassert.NotEmpty(t, info.Balance.Amount)\n\t\tassert.NotEmpty(t, info.Balance.Denom)\n\t\tassert.Equal(t, int64(100000000000000), info.Balance.Amount.Int64(), \"Faucet balance should still be 100000000000000\")\n\t})\n}\n\nfunc TestFaucetGrantDIDAllowance(t *testing.T) {\n\tnet := network.NewWithOptions(t, network.NetworkOptions{EnableFaucet: true})\n\n\t_, err := net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\n\thttpAddr := network.TCPToHTTP(net.Validators[0].AppConfig.API.Address)\n\n\t// Get faucet info to know the granter address\n\tinfoResp, err := http.Get(fmt.Sprintf(\"%s/faucet/info\", httpAddr))\n\tassert.Equal(t, http.StatusOK, infoResp.StatusCode)\n\trequire.NoError(t, err)\n\tdefer infoResp.Body.Close()\n\n\tvar info faucettypes.FaucetInfoResponse\n\terr = json.NewDecoder(infoResp.Body).Decode(&info)\n\trequire.NoError(t, err)\n\n\ttestDID := \"did:key:alice\"\n\n\trequest := &faucettypes.GrantDIDAllowanceRequest{\n\t\tDid: testDID,\n\t\tAmountLimit: sdk.Coin{\n\t\t\tDenom:  appparams.MicroOpenDenom,\n\t\t\tAmount: math.NewInt(1000),\n\t\t},\n\t}\n\tbody, _ := json.Marshal(request)\n\n\tresp, err := http.Post(\n\t\tfmt.Sprintf(\"%s/faucet/grant-did-allowance\", httpAddr),\n\t\t\"application/json\",\n\t\tbytes.NewBuffer(body),\n\t)\n\tassert.Equal(t, http.StatusOK, resp.StatusCode)\n\trequire.NoError(t, err)\n\tdefer resp.Body.Close()\n\n\tvar response faucettypes.GrantDIDAllowanceResponse\n\tbodyBytes, _ := io.ReadAll(resp.Body)\n\terr = json.NewDecoder(bytes.NewReader(bodyBytes)).Decode(&response)\n\trequire.NoError(t, err)\n\n\tassert.NotEmpty(t, response.Message)\n\tassert.NotEmpty(t, response.Txhash)\n\tassert.Equal(t, uint32(0), response.Code)\n\tassert.Equal(t, info.Address, response.Granter)\n\tassert.Equal(t, testDID, response.GranteeDid)\n\tassert.NotEmpty(t, response.AmountLimit.Amount)\n\tassert.NotNil(t, response.Expiration, \"Expiration should be set\")\n\tassert.Equal(t, \"1000\", response.AmountLimit.Amount.String(), \"Amount should be 1000 uopen\")\n\n\texpectedExpiration := time.Now().AddDate(0, 0, 30)\n\tassert.WithinDuration(t, expectedExpiration, *response.Expiration, time.Minute, \"Expiration should be 30 days from now\")\n\n\t_, err = net.WaitForHeight(3)\n\trequire.NoError(t, err)\n\n\t// Verify the grant was successful by querying it via gRPC\n\tgrpcAddr := net.Validators[0].AppConfig.GRPC.Address\n\tconn, err := grpc.NewClient(grpcAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))\n\trequire.NoError(t, err)\n\tdefer conn.Close()\n\n\tfeegrantClient := feegrant.NewQueryClient(conn)\n\tqueryResp, err := feegrantClient.DIDAllowance(context.Background(), &feegrant.QueryDIDAllowanceRequest{\n\t\tGranter:    info.Address,\n\t\tGranteeDid: testDID,\n\t})\n\trequire.NoError(t, err)\n\trequire.NotNil(t, queryResp.Allowance)\n\n\t// Verify the allowance details\n\tassert.Equal(t, info.Address, queryResp.Allowance.Granter)\n\tassert.Equal(t, testDID, queryResp.Allowance.Grantee)\n\tassert.NotNil(t, queryResp.Allowance.Allowance)\n\n\t// Unpack the FeeAllowanceI from the Any type\n\tvar allowanceI feegrant.FeeAllowanceI\n\terr = net.Config.InterfaceRegistry.UnpackAny(queryResp.Allowance.Allowance, &allowanceI)\n\trequire.NoError(t, err)\n\n\t// Cast to BasicAllowance\n\tbasicAllowance, ok := allowanceI.(*feegrant.BasicAllowance)\n\trequire.True(t, ok, \"allowance should be BasicAllowance\")\n\n\t// Verify the spend limit\n\texpectedCoin := sdk.NewCoin(appparams.MicroOpenDenom, math.NewInt(1000))\n\tassert.Equal(t, sdk.NewCoins(expectedCoin), basicAllowance.SpendLimit)\n\n\trequire.NotNil(t, basicAllowance.Expiration, \"Stored allowance should have expiration\")\n\texpectedStoredExpiration := time.Now().AddDate(0, 0, 30)\n\tassert.WithinDuration(t, expectedStoredExpiration, *basicAllowance.Expiration, time.Minute, \"Stored expiration should be 30 days from now\")\n}\n"
  },
  {
    "path": "tests/integration/tier/autolock_test.go",
    "content": "package tier\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype AutoLockIntegrationTestSuite struct {\n\tsuite.Suite\n\n\tctx         sdk.Context\n\tkeeper      tierkeeper.Keeper\n\tmsgServer   tiertypes.MsgServer\n\taddrFactory *TestAddressFactory\n}\n\nfunc (suite *AutoLockIntegrationTestSuite) SetupTest() {\n\tapp.SetConfig(false)\n\n\tk, ctx := keepertest.TierKeeper(suite.T())\n\tsuite.ctx = ctx\n\tsuite.keeper = k\n\tsuite.msgServer = tierkeeper.NewMsgServerImpl(&k)\n\tsuite.addrFactory = NewTestAddressFactory()\n}\n\nfunc (suite *AutoLockIntegrationTestSuite) createTestAddresses() (developer, user, validator sdk.AccAddress) {\n\tdeveloper, user = suite.addrFactory.NextPair(suite.T(), &suite.keeper, suite.ctx)\n\tvalidator = sdk.AccAddress(TestValidatorAddr)\n\tkeepertest.CreateAccount(suite.T(), &suite.keeper, suite.ctx, validator)\n\treturn developer, user, validator\n}\n\nfunc TestAutoLockIntegrationTestSuite(t *testing.T) {\n\tsuite.Run(t, new(AutoLockIntegrationTestSuite))\n}\n\nfunc (s *AutoLockIntegrationTestSuite) TestAutoLockDisabledInsufficientCredits() {\n\tdeveloper, _, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(500))\n\n\tvalAddr := sdk.ValAddress(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1000000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    1000,\n\t\tPeriod:    3600,\n\t}\n\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"insufficient credits and auto-lock disabled\")\n}\n\nfunc (s *AutoLockIntegrationTestSuite) TestAutoLockEnabledWithLockup() {\n\tdeveloper, _, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(10000000))\n\n\tvalAddr := sdk.ValAddress(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1000000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), amount, sub.CreditAmount)\n}\n\nfunc (s *AutoLockIntegrationTestSuite) TestAutoLockEnabledWithSufficientCredits() {\n\tdeveloper, _, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2000))\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\n\t_, err = s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), amount, sub.CreditAmount)\n}\n\nfunc (s *AutoLockIntegrationTestSuite) TestAutoLockToggling() {\n\tdeveloper, _, _ := s.createTestAddresses()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.NotNil(s.T(), dev)\n\trequire.False(s.T(), dev.AutoLockEnabled)\n\n\tupdateMsg := &tiertypes.MsgUpdateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\t_, err = s.msgServer.UpdateDeveloper(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\n\tdev = s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.NotNil(s.T(), dev)\n\trequire.True(s.T(), dev.AutoLockEnabled)\n\n\tupdateMsg.AutoLockEnabled = false\n\t_, err = s.msgServer.UpdateDeveloper(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\n\tdev = s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.NotNil(s.T(), dev)\n\trequire.False(s.T(), dev.AutoLockEnabled)\n}\n"
  },
  {
    "path": "tests/integration/tier/edge_cases_test.go",
    "content": "package tier\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype EdgeCasesTestSuite struct {\n\tsuite.Suite\n\n\tctx         sdk.Context\n\tkeeper      tierkeeper.Keeper\n\tmsgServer   tiertypes.MsgServer\n\taddrFactory *TestAddressFactory\n}\n\nfunc (suite *EdgeCasesTestSuite) SetupTest() {\n\tapp.SetConfig(false)\n\n\tk, ctx := keepertest.TierKeeper(suite.T())\n\tsuite.ctx = ctx\n\tsuite.keeper = k\n\tsuite.msgServer = tierkeeper.NewMsgServerImpl(&k)\n\tsuite.addrFactory = NewTestAddressFactory()\n}\n\nfunc (suite *EdgeCasesTestSuite) createTestAddresses() (developer, user sdk.AccAddress) {\n\treturn suite.addrFactory.NextPair(suite.T(), &suite.keeper, suite.ctx)\n}\n\nfunc TestEdgeCasesTestSuite(t *testing.T) {\n\tsuite.Run(t, new(EdgeCasesTestSuite))\n}\n\nfunc (s *EdgeCasesTestSuite) TestInvalidDeveloperAddressInCreateDeveloper() {\n\tmsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       \"source1invalidaddress123456789012345678901234567890\",\n\t\tAutoLockEnabled: true,\n\t}\n\n\terr := msg.ValidateBasic()\n\trequire.Error(s.T(), err)\n}\n\nfunc (s *EdgeCasesTestSuite) TestEmptyDeveloperAddress() {\n\tmsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       \"\",\n\t\tAutoLockEnabled: true,\n\t}\n\n\terr := msg.ValidateBasic()\n\trequire.Error(s.T(), err)\n}\n\nfunc (s *EdgeCasesTestSuite) TestEmptyUserDid() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   \"\",\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\terr = addMsg.ValidateBasic()\n\trequire.Error(s.T(), err)\n}\n\nfunc (s *EdgeCasesTestSuite) TestMaximumAmountSubscription() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tmaxBalance := math.NewInt(1000000000000000000)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, maxBalance)\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, maxBalance)\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, maxBalance))\n\n\tamount := uint64(1000000000000000000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), amount, sub.CreditAmount)\n}\n\nfunc (s *EdgeCasesTestSuite) TestMaximumPeriodValue() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\tmaxPeriod := uint64(365 * 24 * 3600)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    maxPeriod,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), maxPeriod, sub.Period)\n}\n\nfunc (s *EdgeCasesTestSuite) TestMultipleSubscriptionsForSameUser() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(1_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount1 := uint64(1000)\n\taddMsg1 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount1,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg1)\n\trequire.NoError(s.T(), err)\n\n\tamount2 := uint64(2000)\n\taddMsg2 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount2,\n\t\tPeriod:    7200,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg2)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"already subscribed\")\n}\n\nfunc (s *EdgeCasesTestSuite) TestUpdateThenRemoveSubscription() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(1_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tnewAmount := uint64(2000)\n\tupdateMsg := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    newAmount,\n\t\tPeriod:    7200,\n\t}\n\t_, err = s.msgServer.UpdateUserSubscription(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\n\tremoveMsg := &tiertypes.MsgRemoveUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t}\n\t_, err = s.msgServer.RemoveUserSubscription(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.Nil(s.T(), sub)\n}\n\nfunc (s *EdgeCasesTestSuite) TestDeveloperRemovalCleansUpAllState() {\n\tdeveloper := s.addrFactory.NextDeveloper(s.T(), &s.keeper, s.ctx)\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(20_000)))\n\n\tamount := uint64(1000)\n\n\tusers := []sdk.AccAddress{\n\t\ts.addrFactory.NextUser(s.T(), &s.keeper, s.ctx),\n\t\ts.addrFactory.NextUser(s.T(), &s.keeper, s.ctx),\n\t}\n\n\tuserDids := []string{\n\t\ts.addrFactory.NextUserDid(),\n\t\ts.addrFactory.NextUserDid(),\n\t}\n\n\tfor i := range users {\n\t\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\t\tDeveloper: developer.String(),\n\t\t\tUserDid:   userDids[i],\n\t\t\tAmount:    amount,\n\t\t\tPeriod:    3600,\n\t\t}\n\t\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\t\trequire.NoError(s.T(), err)\n\t}\n\n\tfor _, did := range userDids {\n\t\tsub := s.keeper.GetUserSubscription(s.ctx, developer, did)\n\t\trequire.NotNil(s.T(), sub)\n\t}\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\t_, err = s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.Nil(s.T(), dev)\n\n\tfor _, did := range userDids {\n\t\tsub := s.keeper.GetUserSubscription(s.ctx, developer, did)\n\t\trequire.Nil(s.T(), sub)\n\t}\n}\n\nfunc (s *EdgeCasesTestSuite) TestSubscriptionAmountsAndTotalsAreConsistent() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), amount, sub.CreditAmount)\n\n\tnewAmount := uint64(3000)\n\tupdateMsg := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    newAmount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.UpdateUserSubscription(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\n\tsub = s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), newAmount, sub.CreditAmount)\n\n\tsmallerAmount := uint64(3000)\n\tupdateMsg2 := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    smallerAmount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.UpdateUserSubscription(s.ctx, updateMsg2)\n\trequire.NoError(s.T(), err)\n\n\tsub = s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), smallerAmount, sub.CreditAmount)\n}\n\nfunc (s *EdgeCasesTestSuite) TestDeveloperWithManySubscriptions() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(50_000)))\n\n\tnumUsers := 2\n\tusers := make([]sdk.AccAddress, numUsers)\n\tuserDids := make([]string, numUsers)\n\tfor i := 0; i < numUsers; i++ {\n\t\tuserAddr := s.addrFactory.NextUser(s.T(), &s.keeper, s.ctx)\n\t\tusers[i] = userAddr\n\t\tuserDids[i] = s.addrFactory.NextUserDid()\n\n\t\tamount := uint64(100)\n\t\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\t\tDeveloper: developer.String(),\n\t\t\tUserDid:   userDids[i],\n\t\t\tAmount:    amount,\n\t\t\tPeriod:    3600,\n\t\t}\n\t\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\t\trequire.NoError(s.T(), err)\n\t}\n\n\tfor _, did := range userDids {\n\t\tsub := s.keeper.GetUserSubscription(s.ctx, developer, did)\n\t\trequire.NotNil(s.T(), sub)\n\t}\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\t_, err = s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tfor _, did := range userDids {\n\t\tsub := s.keeper.GetUserSubscription(s.ctx, developer, did)\n\t\trequire.Nil(s.T(), sub)\n\t}\n}\n"
  },
  {
    "path": "tests/integration/tier/feegrant_test.go",
    "content": "package tier\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype FeegrantIntegrationTestSuite struct {\n\tsuite.Suite\n\n\tctx         sdk.Context\n\tkeeper      tierkeeper.Keeper\n\tmsgServer   tiertypes.MsgServer\n\taddrFactory *TestAddressFactory\n}\n\nfunc (suite *FeegrantIntegrationTestSuite) SetupTest() {\n\tapp.SetConfig(false)\n\n\tk, ctx := keepertest.TierKeeper(suite.T())\n\tsuite.ctx = ctx\n\tsuite.keeper = k\n\tsuite.msgServer = tierkeeper.NewMsgServerImpl(&k)\n\tsuite.addrFactory = NewTestAddressFactory()\n}\n\nfunc (suite *FeegrantIntegrationTestSuite) createTestAddresses() (developer, user sdk.AccAddress) {\n\treturn suite.addrFactory.NextPair(suite.T(), &suite.keeper, suite.ctx)\n}\n\nfunc TestFeegrantIntegrationTestSuite(t *testing.T) {\n\tsuite.Run(t, new(FeegrantIntegrationTestSuite))\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestPeriodicAllowanceCreation() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\n\tallowance, err := s.keeper.GetFeegrantKeeper().GetDIDAllowance(s.ctx, developer, userDid)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), allowance)\n\t_, ok := allowance.(*feegrant.PeriodicAllowance)\n\trequire.True(s.T(), ok, \"Expected PeriodicAllowance type\")\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestPeriodicAllowanceWithZeroPeriod() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    0,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), uint64(0), sub.Period)\n\n\tallowance, err := s.keeper.GetFeegrantKeeper().GetDIDAllowance(s.ctx, developer, userDid)\n\trequire.NoError(s.T(), err)\n\tperiodicAllowance, ok := allowance.(*feegrant.PeriodicAllowance)\n\trequire.True(s.T(), ok, \"Expected PeriodicAllowance type\")\n\tparams := s.keeper.GetParams(s.ctx)\n\texpectedPeriod := *params.EpochDuration\n\trequire.Equal(s.T(), expectedPeriod, periodicAllowance.Period)\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestAllowanceUpdateOnSubscriptionUpdate() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(5_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(5_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(20_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tnewAmount := uint64(2000)\n\tupdateMsg := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    newAmount,\n\t\tPeriod:    7200,\n\t}\n\n\tresp, err := s.msgServer.UpdateUserSubscription(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), newAmount, sub.CreditAmount)\n\trequire.Equal(s.T(), uint64(7200), sub.Period)\n\n\tallowance, err := s.keeper.GetFeegrantKeeper().GetDIDAllowance(s.ctx, developer, userDid)\n\trequire.NoError(s.T(), err)\n\tperiodicAllowance, ok := allowance.(*feegrant.PeriodicAllowance)\n\trequire.True(s.T(), ok, \"Expected PeriodicAllowance type\")\n\texpectedPeriod := time.Duration(7200) * time.Second\n\trequire.Equal(s.T(), expectedPeriod, periodicAllowance.Period)\n\trequire.Equal(s.T(), math.NewIntFromUint64(newAmount), periodicAllowance.Basic.SpendLimit.AmountOf(appparams.MicroCreditDenom))\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestAllowanceRemovalOnSubscriptionRemoval() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(2_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(10_000)))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tallowance, err := s.keeper.GetFeegrantKeeper().GetDIDAllowance(s.ctx, developer, userDid)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), allowance)\n\n\tremoveMsg := &tiertypes.MsgRemoveUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t}\n\t_, err = s.msgServer.RemoveUserSubscription(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.Nil(s.T(), sub)\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestZeroAmountValidation() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tamount := uint64(0)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\terr = addMsg.ValidateBasic()\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"invalid amount\")\n}\n\nfunc (s *FeegrantIntegrationTestSuite) TestAllowanceCleanupOnDeveloperRemoval() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\tuser2Did := \"did:key:bob\"\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, math.NewInt(5_000_000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(5_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, math.NewInt(20_000)))\n\n\tamount := uint64(1000)\n\n\taddMsg1 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg1)\n\trequire.NoError(s.T(), err)\n\n\taddMsg2 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   user2Did,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg2)\n\trequire.NoError(s.T(), err)\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\t_, err = s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tsub1 := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.Nil(s.T(), sub1)\n\tsub2 := s.keeper.GetUserSubscription(s.ctx, developer, user2Did)\n\trequire.Nil(s.T(), sub2)\n}\n"
  },
  {
    "path": "tests/integration/tier/test_helpers.go",
    "content": "package tier\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n)\n\nvar TestDeveloperAddrs = []string{\n\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\",\n\t\"source1wxyxr8h3vag0z825hexskdnc7xe72evulxlplv\",\n\t\"source1l7gwya9xrgtf5q58q9aqnahh63v99e54vrxwdg\",\n\t\"source1jx8s2hy8g74mvhy09whswxcczh22jus9y5t6vd\",\n\t\"source1s266eutknzy6vzt7pmxfukch2x93xevq0xqtce\",\n\t\"source1dte8lmpu236zmephrc35v95mhsz7ap9zzrld8a\",\n\t\"source1fxt3xht88zmtsdvj7u7y537relhehvn2n3hg6q\",\n\t\"source1fheg4eh4l9kkq8gczfx5erkrmunm2dj37yxzpx\",\n\t\"source19puvx5eypaft0y2hefj6f6s70thm8tadpzq3fe\",\n\t\"source1cjuyh88peyu2jztgw6j5523lq9ex06cgt45jmn\",\n\t\"source1rr9p6sck6ejdt07pnn0u5zeamfu3g7tz832czj\",\n}\n\nvar TestUserAddrs = []string{\n\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\"source1fa3jnszqhulqwu5amsel280une8t8r5tn92k0y\",\n\t\"source1x404mhhw9rl2vqk54eh8v2lu86qlllg5cldq0y\",\n\t\"source1577qwqy8enqhh7lqx87rpk46mnhawlceg4xzl6\",\n\t\"source1nqxutf4jvfm54j8jrhmafc62lp2pyzj5djxz8z\",\n\t\"source1g65up5twggwcv77cjfem3z2ac602qev9hshcj5\",\n\t\"source1vvt30uh7kxcdwcevstvzqkmqmzhvt4js0qv33q\",\n\t\"source1tnhv4sm4r42hacn9xqm72w0tqy4jm7k22vkcka\",\n\t\"source1l6c49y4z4vg6msuqkr37cvty4xs3gr850ypxju\",\n\t\"source1wrf55454lqpctztnt7gkm3k7sa3c06r06natzf\",\n\t\"source1kmvg2d4fv56k4jg9s76l0nzpg5psnv4l3qp5kv\",\n}\n\nconst TestValidatorAddr = \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\ntype TestAddressFactory struct {\n\tdevIdx  int\n\tuserIdx int\n}\n\nfunc NewTestAddressFactory() *TestAddressFactory {\n\treturn &TestAddressFactory{\n\t\tdevIdx:  0,\n\t\tuserIdx: 0,\n\t}\n}\n\nfunc (f *TestAddressFactory) NextUserDid() string {\n\tdid := fmt.Sprintf(\"did:key:user%d\", f.userIdx)\n\tf.userIdx++\n\treturn did\n}\n\nfunc (f *TestAddressFactory) NextDeveloper(t *testing.T, k *tierkeeper.Keeper, ctx sdk.Context) sdk.AccAddress {\n\taddr := mustAccFromBech32(TestDeveloperAddrs[f.devIdx%len(TestDeveloperAddrs)])\n\tf.devIdx++\n\tkeepertest.CreateAccount(t, k, ctx, addr)\n\treturn addr\n}\n\nfunc (f *TestAddressFactory) NextUser(t *testing.T, k *tierkeeper.Keeper, ctx sdk.Context) sdk.AccAddress {\n\taddr := mustAccFromBech32(TestUserAddrs[f.userIdx%len(TestUserAddrs)])\n\tf.userIdx++\n\tkeepertest.CreateAccount(t, k, ctx, addr)\n\treturn addr\n}\n\nfunc (f *TestAddressFactory) NextPair(t *testing.T, k *tierkeeper.Keeper, ctx sdk.Context) (sdk.AccAddress, sdk.AccAddress) {\n\treturn f.NextDeveloper(t, k, ctx), f.NextUser(t, k, ctx)\n}\n\nfunc mustAccFromBech32(s string) sdk.AccAddress {\n\taddr, err := sdk.AccAddressFromBech32(s)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn addr\n}\n"
  },
  {
    "path": "tests/integration/tier/tier_test.go",
    "content": "package tier\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\ttierkeeper \"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\ttiertypes \"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype BaseTierTestSuite struct {\n\tsuite.Suite\n\n\tctx         sdk.Context\n\tkeeper      tierkeeper.Keeper\n\tmsgServer   tiertypes.MsgServer\n\taddrFactory *TestAddressFactory\n}\n\nfunc (s *BaseTierTestSuite) SetupTest() {\n\tapp.SetConfig(false)\n\n\tk, ctx := keepertest.TierKeeper(s.T())\n\ts.ctx = ctx\n\ts.keeper = k\n\ts.msgServer = tierkeeper.NewMsgServerImpl(&k)\n\ts.addrFactory = NewTestAddressFactory()\n}\n\nfunc (s *BaseTierTestSuite) createTestAddresses() (developer, user sdk.AccAddress) {\n\treturn s.addrFactory.NextPair(s.T(), &s.keeper, s.ctx)\n}\n\nfunc (s *BaseTierTestSuite) setupDeveloperWithLockup(developer sdk.AccAddress, lockAmount math.Int) sdk.ValAddress {\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(s.T(), err)\n\n\tkeepertest.InitializeDelegator(s.T(), &s.keeper, s.ctx, developer, lockAmount.MulRaw(1000))\n\tkeepertest.InitializeValidator(s.T(), s.keeper.GetStakingKeeper().(*stakingkeeper.Keeper), s.ctx, valAddr, math.NewInt(1_000_000))\n\n\ts.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(s.T(), s.keeper.Lock(s.ctx, developer, valAddr, lockAmount))\n\n\treturn valAddr\n}\n\ntype DeveloperTestSuite struct {\n\tBaseTierTestSuite\n}\n\nfunc TestDeveloperTestSuite(t *testing.T) {\n\tsuite.Run(t, new(DeveloperTestSuite))\n}\n\nfunc (s *DeveloperTestSuite) TestCreate() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tmsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\n\tresp, err := s.msgServer.CreateDeveloper(s.ctx, msg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.NotNil(s.T(), dev)\n\trequire.Equal(s.T(), developer.String(), dev.Address)\n\trequire.True(s.T(), dev.AutoLockEnabled)\n}\n\nfunc (s *DeveloperTestSuite) TestCreateDuplicate() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tmsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, msg)\n\trequire.NoError(s.T(), err)\n\n\t_, err = s.msgServer.CreateDeveloper(s.ctx, msg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"already exists\")\n}\n\nfunc (s *DeveloperTestSuite) TestCreateInvalidAddress() {\n\tmsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       \"cosmos1invalidaddress123456789012345678901234567890\",\n\t\tAutoLockEnabled: true,\n\t}\n\n\terr := msg.ValidateBasic()\n\trequire.Error(s.T(), err)\n}\n\nfunc (s *DeveloperTestSuite) TestUpdate() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tupdateMsg := &tiertypes.MsgUpdateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\tresp, err := s.msgServer.UpdateDeveloper(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.NotNil(s.T(), dev)\n\trequire.True(s.T(), dev.AutoLockEnabled)\n}\n\nfunc (s *DeveloperTestSuite) TestUpdateNonExistent() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tupdateMsg := &tiertypes.MsgUpdateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\t_, err := s.msgServer.UpdateDeveloper(s.ctx, updateMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"does not exist\")\n}\n\nfunc (s *DeveloperTestSuite) TestRemove() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\tresp, err := s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.Nil(s.T(), dev)\n}\n\nfunc (s *DeveloperTestSuite) TestRemoveNonExistent() {\n\tdeveloper, _ := s.createTestAddresses()\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\t_, err := s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"does not exist\")\n}\n\nfunc (s *DeveloperTestSuite) TestRemoveWithSubscriptions() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\ts.setupDeveloperWithLockup(developer, math.NewInt(2000))\n\n\tamount := uint64(1000)\n\taddMsg1 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   user1Did,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err := s.msgServer.AddUserSubscription(s.ctx, addMsg1)\n\trequire.NoError(s.T(), err)\n\n\taddMsg2 := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   user2Did,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg2)\n\trequire.NoError(s.T(), err)\n\n\tsub1 := s.keeper.GetUserSubscription(s.ctx, developer, user1Did)\n\trequire.NotNil(s.T(), sub1)\n\tsub2 := s.keeper.GetUserSubscription(s.ctx, developer, user2Did)\n\trequire.NotNil(s.T(), sub2)\n\n\tremoveMsg := &tiertypes.MsgRemoveDeveloper{\n\t\tDeveloper: developer.String(),\n\t}\n\t_, err = s.msgServer.RemoveDeveloper(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\n\tdev := s.keeper.GetDeveloper(s.ctx, developer)\n\trequire.Nil(s.T(), dev)\n\tsub1 = s.keeper.GetUserSubscription(s.ctx, developer, user1Did)\n\trequire.Nil(s.T(), sub1)\n\tsub2 = s.keeper.GetUserSubscription(s.ctx, developer, user2Did)\n\trequire.Nil(s.T(), sub2)\n}\n\n// UserSubscriptionTestSuite tests user subscription operations.\ntype UserSubscriptionTestSuite struct {\n\tBaseTierTestSuite\n}\n\nfunc TestUserSubscriptionTestSuite(t *testing.T) {\n\tsuite.Run(t, new(UserSubscriptionTestSuite))\n}\n\nfunc (s *UserSubscriptionTestSuite) TestAdd() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\ts.setupDeveloperWithLockup(developer, math.NewInt(1000))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\tresp, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), developer.String(), sub.Developer)\n\trequire.Equal(s.T(), userDid, sub.UserDid)\n\trequire.Equal(s.T(), amount, sub.CreditAmount)\n\trequire.Equal(s.T(), uint64(3600), sub.Period)\n}\n\nfunc (s *UserSubscriptionTestSuite) TestAddZeroAmount() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tcreateMsg := &tiertypes.MsgCreateDeveloper{\n\t\tDeveloper:       developer.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\t_, err := s.msgServer.CreateDeveloper(s.ctx, createMsg)\n\trequire.NoError(s.T(), err)\n\n\tamount := uint64(0)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\terr = addMsg.ValidateBasic()\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"invalid amount\")\n}\n\nfunc (s *UserSubscriptionTestSuite) TestAddDuplicate() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\ts.setupDeveloperWithLockup(developer, math.NewInt(1000))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\t_, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\t_, err = s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"already subscribed\")\n}\n\nfunc (s *UserSubscriptionTestSuite) TestAddNonExistentDeveloper() {\n\tdeveloper := s.addrFactory.NextDeveloper(s.T(), &s.keeper, s.ctx)\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\t_, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"not found\")\n}\n\nfunc (s *UserSubscriptionTestSuite) TestUpdate() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\ts.setupDeveloperWithLockup(developer, math.NewInt(2000))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tnewAmount := uint64(2000)\n\tupdateMsg := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    newAmount,\n\t\tPeriod:    7200,\n\t}\n\n\tresp, err := s.msgServer.UpdateUserSubscription(s.ctx, updateMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.NotNil(s.T(), sub)\n\trequire.Equal(s.T(), newAmount, sub.CreditAmount)\n\trequire.Equal(s.T(), uint64(7200), sub.Period)\n}\n\nfunc (s *UserSubscriptionTestSuite) TestUpdateNonExistent() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tamount := uint64(1000)\n\tupdateMsg := &tiertypes.MsgUpdateUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\n\t_, err := s.msgServer.UpdateUserSubscription(s.ctx, updateMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"not subscribed\")\n}\n\nfunc (s *UserSubscriptionTestSuite) TestRemove() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\ts.setupDeveloperWithLockup(developer, math.NewInt(1000))\n\n\tamount := uint64(1000)\n\taddMsg := &tiertypes.MsgAddUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    3600,\n\t}\n\t_, err := s.msgServer.AddUserSubscription(s.ctx, addMsg)\n\trequire.NoError(s.T(), err)\n\n\tremoveMsg := &tiertypes.MsgRemoveUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t}\n\n\tresp, err := s.msgServer.RemoveUserSubscription(s.ctx, removeMsg)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\n\tsub := s.keeper.GetUserSubscription(s.ctx, developer, userDid)\n\trequire.Nil(s.T(), sub)\n}\n\nfunc (s *UserSubscriptionTestSuite) TestRemoveNonExistent() {\n\tdeveloper, _ := s.createTestAddresses()\n\tuserDid := s.addrFactory.NextUserDid()\n\n\tremoveMsg := &tiertypes.MsgRemoveUserSubscription{\n\t\tDeveloper: developer.String(),\n\t\tUserDid:   userDid,\n\t}\n\n\t_, err := s.msgServer.RemoveUserSubscription(s.ctx, removeMsg)\n\trequire.Error(s.T(), err)\n\trequire.ErrorContains(s.T(), err, \"not subscribed\")\n}\n"
  },
  {
    "path": "tests/property/acp/object_registration/constants.go",
    "content": "package object_registration\n\nconst ResourceName = \"file\"\nconst ObjectId = \"readme.txt\"\nconst Policy string = `\nname: test\nresources:\n- name: file\n`\n"
  },
  {
    "path": "tests/property/acp/object_registration/model.go",
    "content": "package object_registration\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/tests/property\"\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// preconditions validate whether op should be run given the current state\nfunc Precoditions(state State, kind OperationKind) bool {\n\tswitch kind {\n\tcase Reveal:\n\t\t// don't reveal unless there's at least one commitment registered\n\t\treturn len(state.Commitments) > 0\n\tcase Unarchive, Archive:\n\t\treturn state.Registered\n\tdefault:\n\t\t// remaining ops can happen, doesn't matter if they error\n\t\treturn true\n\t}\n}\n\n// GenerateOperation generates the request payload for some operation and state\nfunc GenerateOperation(t *testing.T, state State, kind OperationKind) Operation {\n\tactor := property.PickAny(state.Actors)\n\top := Operation{\n\t\tKind:  kind,\n\t\tActor: actor,\n\t}\n\n\tswitch kind {\n\tcase Reveal:\n\t\tid := property.PickAny(utils.MapSlice(state.Commitments, func(commitment *types.RegistrationsCommitment) uint64 { return commitment.Id }))\n\n\t\tproof, err := commitment.ProofForObject(state.PolicyId, coretypes.NewActor(actor.DID), 0, []*coretypes.Object{&state.Object})\n\t\trequire.NoError(t, err)\n\n\t\top.Request = types.PolicyCmd{\n\t\t\tCmd: &types.PolicyCmd_RevealRegistrationCmd{\n\t\t\t\tRevealRegistrationCmd: &types.RevealRegistrationCmd{\n\t\t\t\t\tRegistrationsCommitmentId: id,\n\t\t\t\t\tProof:                     proof,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\tcase Register:\n\t\top.Request = types.PolicyCmd{\n\t\t\tCmd: &types.PolicyCmd_RegisterObjectCmd{\n\t\t\t\tRegisterObjectCmd: &types.RegisterObjectCmd{\n\t\t\t\t\tObject: &state.Object,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\tcase Archive:\n\t\top.Request = types.PolicyCmd{\n\t\t\tCmd: &types.PolicyCmd_ArchiveObjectCmd{\n\t\t\t\tArchiveObjectCmd: &types.ArchiveObjectCmd{\n\t\t\t\t\tObject: &state.Object,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\tcase Commit:\n\t\tc, err := commitment.GenerateCommitmentWithoutValidation(state.PolicyId, coretypes.NewActor(actor.DID), []*coretypes.Object{&state.Object})\n\t\trequire.NoError(t, err)\n\t\top.Request = types.PolicyCmd{\n\t\t\tCmd: &types.PolicyCmd_CommitRegistrationsCmd{\n\t\t\t\tCommitRegistrationsCmd: &types.CommitRegistrationsCmd{\n\t\t\t\t\tCommitment: c,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\tcase Unarchive:\n\t\top.Request = types.PolicyCmd{\n\t\t\tCmd: &types.PolicyCmd_UnarchiveObjectCmd{\n\t\t\t\tUnarchiveObjectCmd: &types.UnarchiveObjectCmd{\n\t\t\t\t\tObject: &state.Object,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\treturn op\n}\n\n// NextState updates the state object based on the operation result\nfunc NextState(t *testing.T, state State, op Operation) State {\n\tt.Logf(\"Operation: kind=%v; actor=%v...; payload=%v\", op.Kind, op.Actor.DID[0:20], op.Request.Cmd)\n\tif op.ResultErr != nil {\n\t\tt.Logf(\"\\tfailed: err=%v\", op.ResultErr)\n\t\treturn state\n\t}\n\n\tswitch op.Kind {\n\tcase Register:\n\t\tif !state.Registered {\n\t\t\tstate.Model.RegistrationTs = *op.Result.GetRegisterObjectResult().Record.Metadata.CreationTs\n\t\t\tstate.Model.Owner = op.Actor.DID\n\t\t\tstate.Registered = true\n\t\t}\n\tcase Archive:\n\t\tif op.Actor.DID == state.Model.Owner {\n\t\t\tstate.Model.Archived = true\n\t\t}\n\tcase Commit:\n\t\tresult := op.Result.Result.(*types.PolicyCmdResult_CommitRegistrationsResult).CommitRegistrationsResult\n\t\tstate.Commitments = append(state.Commitments, result.RegistrationsCommitment)\n\tcase Unarchive:\n\t\tif op.Actor.DID == state.Model.Owner {\n\t\t\tstate.Model.Archived = false\n\t\t}\n\tcase Reveal:\n\t\tcommitId := op.Request.GetRevealRegistrationCmd().RegistrationsCommitmentId\n\t\tc := state.MustCommitmentById(commitId)\n\n\t\texpirationHeight := c.Metadata.CreationTs.BlockHeight + c.Validity.GetBlockCount()\n\t\tblockHeight := state.LastTs.BlockHeight\n\t\tisValid := blockHeight < expirationHeight\n\n\t\tisCommitmentOwner := c.Metadata.OwnerDid == op.Actor.DID\n\t\tisCommitmentOlder := c.Metadata.CreationTs.BlockHeight < state.Model.RegistrationTs.BlockHeight\n\n\t\tif isCommitmentOwner && isCommitmentOlder && isValid {\n\t\t\tstate.Model.Owner = op.Actor.DID\n\t\t\tstate.Model.RegistrationTs = *c.Metadata.CreationTs\n\t\t}\n\t}\n\treturn state\n}\n\n// Post validate whether the system invariants held after the execution of op\nfunc Post(state State, op Operation) error {\n\tif !state.Registered {\n\t\treturn nil\n\t}\n\n\t// compare model data with result record\n\tif state.Model.Owner != op.ResultRecord.Metadata.OwnerDid {\n\t\treturn fmt.Errorf(\"model missmatch: owner: expected %v, got %v\",\n\t\t\tstate.Model.Owner,\n\t\t\top.ResultRecord.Metadata.OwnerDid,\n\t\t)\n\n\t}\n\tif state.Model.Archived != op.ResultRecord.Archived {\n\t\treturn fmt.Errorf(\"model missmatch: archived: expected %v, got %v\",\n\t\t\tstate.Model.Archived,\n\t\t\top.ResultRecord.Archived,\n\t\t)\n\t}\n\tif reflect.DeepEqual(state.Model.RegistrationTs, op.ResultRecord.Metadata.CreationTs) {\n\t\treturn fmt.Errorf(\"model missmatch: ts: expected %v, got %v\",\n\t\t\tstate.Model.RegistrationTs,\n\t\t\top.ResultRecord.Metadata.CreationTs,\n\t\t)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "tests/property/acp/object_registration/params.go",
    "content": "package object_registration\n\nimport \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\n// CommitmentExpirationDuration sets the default expiration time for commitments in the test setup\nvar CommitmentExpirationDuration = types.Duration{\n\tDuration: &types.Duration_BlockCount{\n\t\tBlockCount: 5,\n\t},\n}\n\n// OperationsPerTest models the amount of operations which should be executed every test\nvar OperationsPerTest = 20\n\nvar TestCount = 10\n\nvar ActorCount = 3\n\nvar MaxTriesPerTest = 40\n"
  },
  {
    "path": "tests/property/acp/object_registration/property_test.go",
    "content": "package object_registration\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/tests/property\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestObjectRegistrationProperties(t *testing.T) {\n\tfor i := 0; i < TestCount; i++ {\n\t\tt.Run(fmt.Sprintf(\"%v\", i), func(t *testing.T) {\n\t\t\trunPropTest(t)\n\t\t})\n\t}\n}\n\nfunc runPropTest(t *testing.T) {\n\tctx := test.NewTestCtx(t)\n\tctx.Strategy = test.Direct\n\tctx.ActorType = test.Actor_SECP256K1\n\n\tresp, err := ctx.Executor.CreatePolicy(ctx, &types.MsgCreatePolicy{\n\t\tPolicy:      Policy,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t\tCreator:     ctx.TxSigner.SourceHubAddr,\n\t})\n\trequire.NoError(t, err)\n\n\tstate := InitialState(ctx, resp.Record.Policy.Id)\n\n\tops := make([]Operation, 0, OperationsPerTest)\n\tfor count, max := 0, 0; count < OperationsPerTest || max < MaxTriesPerTest; max++ {\n\t\tkind := property.PickAny(ListOperationKinds())\n\t\tok := Precoditions(state, kind)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\top := GenerateOperation(t, state, kind)\n\t\tops = append(ops, op)\n\t\tcount++\n\n\t\tresult, err := ctx.Executor.DirectPolicyCmd(ctx, &types.MsgDirectPolicyCmd{\n\t\t\tCreator:  op.Actor.SourceHubAddr,\n\t\t\tPolicyId: state.PolicyId,\n\t\t\tCmd:      &op.Request,\n\t\t})\n\n\t\top.ResultErr = err\n\t\tif result != nil {\n\t\t\top.Result = *result.Result\n\t\t}\n\n\t\tstate = NextState(t, state, op)\n\n\t\tif state.Registered {\n\t\t\townerRecord, err := ctx.Executor.ObjectOwner(ctx, &types.QueryObjectOwnerRequest{\n\t\t\t\tPolicyId: state.PolicyId,\n\t\t\t\tObject:   &state.Object,\n\t\t\t})\n\t\t\trequire.NoError(t, err, \"ObjectOwner call failed\")\n\t\t\top.ResultRecord = *ownerRecord.Record\n\t\t}\n\n\t\terr = Post(state, op)\n\n\t\tif err != nil {\n\t\t\tt.Logf(\"Post condition failed: %v\", err)\n\t\t\tt.Logf(\"State: %v\", state)\n\t\t\tt.FailNow()\n\t\t}\n\n\t\tts, err := ctx.Executor.GetLastBlockTs(ctx)\n\t\trequire.NoError(t, err)\n\t\tstate.LastTs = *ts\n\t}\n\tt.Logf(\"test concluded\")\n\tt.Logf(\"model: %v\", state.Model)\n}\n"
  },
  {
    "path": "tests/property/acp/object_registration/types.go",
    "content": "package object_registration\n\nimport (\n\t\"github.com/google/uuid\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\ttest \"github.com/sourcenetwork/sourcehub/tests/integration/acp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// ObjectModel models the status of the object under test\ntype ObjectModel struct {\n\tRegistrationTs types.Timestamp\n\tOwner          string\n\tArchived       bool\n}\n\n// State models the test state which mutates between operations\ntype State struct {\n\tModel       ObjectModel\n\tRegistered  bool\n\tPolicyId    string\n\tObject      coretypes.Object\n\tCommitments []*types.RegistrationsCommitment\n\tActors      []*test.TestActor\n\tLastTs      types.Timestamp\n}\n\n// MustCommitmentById returns one of the commitments created during the test\n// with the given id\nfunc (s *State) MustCommitmentById(id uint64) *types.RegistrationsCommitment {\n\tfor _, commitment := range s.Commitments {\n\t\tif commitment.Id == id {\n\t\t\treturn commitment\n\t\t}\n\t}\n\tpanic(\"commitment not found\")\n}\n\n// InitialState returns the initial state for the model state machine\nfunc InitialState(ctx *test.TestCtx, policyId string) State {\n\tactors := make([]*test.TestActor, 0, ActorCount)\n\tfor i := 0; i < ActorCount; i++ {\n\t\tid, err := uuid.NewUUID()\n\t\trequire.NoError(ctx.T, err)\n\n\t\tactor := ctx.GetActor(id.String())\n\t\tactors = append(actors, actor)\n\t}\n\n\treturn State{\n\t\tModel:       ObjectModel{},\n\t\tRegistered:  false,\n\t\tPolicyId:    policyId,\n\t\tObject:      *coretypes.NewObject(ResourceName, ObjectId),\n\t\tCommitments: nil,\n\t\tActors:      actors,\n\t}\n}\n\n// OperationKind models the set of supported operations which transition the model\n// to a new state\ntype OperationKind int\n\nconst (\n\tRegister OperationKind = iota\n\tArchive\n\tCommit\n\tReveal\n\tUnarchive\n)\n\nfunc (k OperationKind) String() string {\n\tswitch k {\n\tcase Register:\n\t\treturn \"Register\"\n\tcase Archive:\n\t\treturn \"Archive\"\n\tcase Commit:\n\t\treturn \"Commit\"\n\tcase Reveal:\n\t\treturn \"Reveal\"\n\tcase Unarchive:\n\t\treturn \"Unarchive\"\n\tdefault:\n\t\treturn \"UNKNOWN\"\n\t}\n}\n\n// GetOperations returns all available OperationKinds\nfunc ListOperationKinds() []OperationKind {\n\treturn []OperationKind{\n\t\tRegister,\n\t\tArchive,\n\t\tCommit,\n\t\tReveal,\n\t\tUnarchive,\n\t}\n\n}\n\n// Operation models an operation that has been or will be executed against the\n// reference implementation\ntype Operation struct {\n\tKind         OperationKind\n\tActor        *test.TestActor\n\tRequest      types.PolicyCmd\n\tResult       types.PolicyCmdResult\n\tResultErr    error\n\tResultRecord types.RelationshipRecord\n}\n"
  },
  {
    "path": "tests/property/gen.go",
    "content": "package property\n\nimport \"math/rand\"\n\n// PickAny returns a random element from ts\n// ts must be non empty\nfunc PickAny[T any](ts []T) T {\n\ti := rand.Int() % len(ts)\n\treturn ts[i]\n}\n"
  },
  {
    "path": "testutil/e2e/e2e.go",
    "content": "package e2e\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/network\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/sdk\"\n)\n\ntype TestNetwork struct {\n\tNetwork      *network.Network\n\tConfig       network.Config\n\tClient       *sdk.Client\n\tValidatorKey cryptotypes.PrivKey\n}\n\nfunc (n *TestNetwork) Setup(t *testing.T) {\n\tinjectConfig := app.AppConfig()\n\n\tcfg, err := network.DefaultConfigWithAppConfig(injectConfig)\n\trequire.NoError(t, err)\n\n\tcfg.NumValidators = 1\n\tcfg.BondDenom = appparams.DefaultBondDenom\n\tcfg.MinGasPrices = fmt.Sprintf(\n\t\t\"%s%s,%s%s\",\n\t\tappparams.DefaultMinGasPrice,\n\t\tappparams.MicroOpenDenom,\n\t\tappparams.DefaultMinGasPrice,\n\t\tappparams.MicroCreditDenom,\n\t)\n\n\tcfg.AppConstructor = func(val network.ValidatorI) servertypes.Application {\n\t\tappInstance, err := app.New(\n\t\t\tval.GetCtx().Logger,\n\t\t\tdbm.NewMemDB(),\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tsims.EmptyAppOptions{},\n\t\t\tbaseapp.SetChainID(cfg.ChainID),\n\t\t)\n\t\trequire.NoError(t, err)\n\n\t\treturn appInstance\n\t}\n\n\tnetwork, err := network.New(t, t.TempDir(), cfg)\n\trequire.NoError(t, err)\n\n\tn.Config = cfg\n\tn.Network = network\n\n\tclient, err := sdk.NewClient(\n\t\tsdk.WithCometRPCAddr(n.GetCometRPCAddr()),\n\t\tsdk.WithGRPCAddr(n.GetGRPCAddr()),\n\t)\n\trequire.NoError(t, err)\n\tn.Client = client\n\n\tkeyring := n.Network.Validators[0].ClientCtx.Keyring\n\trecord, err := keyring.Key(\"node0\")\n\trequire.NoError(t, err)\n\n\tany := record.GetLocal().PrivKey\n\tpkey := &secp256k1.PrivKey{}\n\terr = pkey.Unmarshal(any.Value)\n\trequire.NoError(t, err)\n\tn.ValidatorKey = pkey\n}\n\nfunc (n *TestNetwork) TearDown() {\n\tn.Network.Cleanup()\n}\n\nfunc (n *TestNetwork) GetValidatorAddr() string {\n\treturn n.Network.Validators[0].Address.String()\n}\n\nfunc (n *TestNetwork) GetGRPCAddr() string {\n\treturn n.Network.Validators[0].AppConfig.GRPC.Address\n}\n\nfunc (n *TestNetwork) GetCometRPCAddr() string {\n\treturn n.Network.Validators[0].RPCAddress\n}\n\nfunc (n *TestNetwork) GetSDKClient() *sdk.Client {\n\treturn n.Client\n}\n\nfunc (n *TestNetwork) GetValidatorKey() cryptotypes.PrivKey {\n\treturn n.ValidatorKey\n}\n\nfunc (n *TestNetwork) GetChainID() string {\n\treturn n.Network.Config.ChainID\n}\n"
  },
  {
    "path": "testutil/jws.go",
    "content": "package test\n\nimport (\n\t\"crypto/ed25519\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\t\"github.com/stretchr/testify/require\"\n\n\tantetypes \"github.com/sourcenetwork/sourcehub/app/ante/types\"\n)\n\n// NewBearerTokenNow creates a new BearerToken with current time and default expiration\nfunc NewBearerTokenNow(actorID string, authorizedAccount string) antetypes.BearerToken {\n\tnow := time.Now()\n\texpires := now.Add(antetypes.DefaultExpirationTime)\n\n\treturn antetypes.BearerToken{\n\t\tIssuerID:          actorID,\n\t\tAuthorizedAccount: authorizedAccount,\n\t\tIssuedTime:        now.Unix(),\n\t\tExpirationTime:    expires.Unix(),\n\t}\n}\n\n// CreateJWSHeader creates the standard JWS header for EdDSA JWT tokens\nfunc CreateJWSHeader() map[string]any {\n\treturn map[string]any{\n\t\t\"alg\": \"EdDSA\",\n\t\t\"typ\": \"JWT\",\n\t}\n}\n\n// GenerateSignedJWSWithMatchingDID creates a JWS bearer token with specified authorized account.\n// Returns the JWS string and the DID.\nfunc GenerateSignedJWSWithMatchingDID(t *testing.T, authorizedAccount string) (string, string) {\n\t// Derive seed from mnemonic\n\tmnemonic := \"near smoke great nasty alley food crush nurse rubber say danger search employ under gaze today alien eager risk letter drum relief sponsor current\"\n\tseed, err := hd.Secp256k1.Derive()(mnemonic, \"\", \"m/44'/118'/0'/0/0\")\n\trequire.NoError(t, err)\n\n\t// Generate Ed25519 key pair from the derived seed\n\tif len(seed) > 32 {\n\t\tseed = seed[:32]\n\t}\n\tprivKey := ed25519.NewKeyFromSeed(seed)\n\tpubKey := privKey.Public().(ed25519.PublicKey)\n\n\t// Create DID from public key\n\tdidKey, err := key.CreateDIDKey(crypto.Ed25519, pubKey)\n\trequire.NoError(t, err)\n\tuserDID := didKey.String()\n\n\t// Create bearer token with the matching DID\n\tbearerToken := NewBearerTokenNow(userDID, authorizedAccount)\n\tpayloadBytes, err := json.Marshal(bearerToken)\n\trequire.NoError(t, err)\n\n\t// Create and sign the JWS\n\theader := CreateJWSHeader()\n\theaderBytes, err := json.Marshal(header)\n\trequire.NoError(t, err)\n\n\theaderEncoded := base64.RawURLEncoding.EncodeToString(headerBytes)\n\tpayloadEncoded := base64.RawURLEncoding.EncodeToString(payloadBytes)\n\n\tsigningInput := headerEncoded + \".\" + payloadEncoded\n\tsignature := ed25519.Sign(privKey, []byte(signingInput))\n\tsignatureEncoded := base64.RawURLEncoding.EncodeToString(signature)\n\n\tjws := signingInput + \".\" + signatureEncoded\n\treturn jws, userDID\n}\n"
  },
  {
    "path": "testutil/keeper/account_keeper.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ types.AccountKeeper = (*AccountKeeperStub)(nil)\n\ntype AccountKeeperStub struct{}\n\nfunc (s *AccountKeeperStub) GetAccount(ctx context.Context, address sdk.AccAddress) sdk.AccountI {\n\treturn &authtypes.BaseAccount{\n\t\tAddress:  string(address),\n\t\tSequence: 1,\n\t}\n}\n"
  },
  {
    "path": "testutil/keeper/acp.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\thubtestutil \"github.com/sourcenetwork/sourcehub/x/hub/testutil\"\n)\n\nfunc AcpKeeper(t testing.TB) (keeper.Keeper, sdk.Context) {\n\tacpStoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tcapabilityStoreKey := storetypes.NewKVStoreKey(\"capkeeper\")\n\tcapabilityMemStoreKey := storetypes.NewKVStoreKey(\"capkeepermem\")\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\t// mount stores\n\tstateStore.MountStoreWithDB(acpStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityMemStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\n\tcapKeeper := capabilitykeeper.NewKeeper(cdc, capabilityStoreKey, capabilityMemStoreKey)\n\tacpCapKeeper := capKeeper.ScopeToModule(types.ModuleName)\n\n\tk := keeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(acpStoreKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\t&AccountKeeperStub{},\n\t\t&acpCapKeeper,\n\t\thubtestutil.NewHubKeeperStub(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\t// Initialize params\n\tk.SetParams(ctx, types.DefaultParams())\n\n\treturn k, ctx\n}\n"
  },
  {
    "path": "testutil/keeper/bulletin.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocodec \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthcodec \"github.com/cosmos/cosmos-sdk/x/auth/codec\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\thubtestutil \"github.com/sourcenetwork/sourcehub/x/hub/testutil\"\n)\n\nfunc BulletinKeeper(t testing.TB) (keeper.Keeper, sdk.Context) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tauthStoreKey := storetypes.NewKVStoreKey(authtypes.StoreKey)\n\tcapabilityStoreKey := storetypes.NewKVStoreKey(\"capkeeper\")\n\tcapabilityMemStoreKey := storetypes.NewKVStoreKey(\"capkeepermem\")\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(authStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityMemStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tauthtypes.RegisterInterfaces(registry)\n\tcryptocodec.RegisterInterfaces(registry)\n\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tbech32Prefix := \"source\"\n\taddressCodec := authcodec.NewBech32Codec(bech32Prefix)\n\n\tmaccPerms := map[string][]string{\n\t\tauthtypes.FeeCollectorName: nil,\n\t\ttypes.ModuleName:           nil,\n\t}\n\n\taccountKeeper := authkeeper.NewAccountKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(authStoreKey),\n\t\tauthtypes.ProtoBaseAccount,\n\t\tmaccPerms,\n\t\taddressCodec,\n\t\tbech32Prefix,\n\t\tauthority.String(),\n\t)\n\n\tcapKeeper := capabilitykeeper.NewKeeper(cdc, capabilityStoreKey, capabilityMemStoreKey)\n\tacpCapKeeper := capKeeper.ScopeToModule(acptypes.ModuleName)\n\tbulletinCapKeeper := capKeeper.ScopeToModule(types.ModuleName)\n\n\tacpKeeper := acpkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccountKeeper,\n\t\t&acpCapKeeper,\n\t\thubtestutil.NewHubKeeperStub(),\n\t)\n\n\tk := keeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccountKeeper,\n\t\t&acpKeeper,\n\t\t&bulletinCapKeeper,\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\t// Initialize params\n\tk.SetParams(ctx, types.DefaultParams())\n\n\treturn k, ctx\n}\n"
  },
  {
    "path": "testutil/keeper/hub.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc HubKeeper(t testing.TB) (keeper.Keeper, sdk.Context) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\n\tsdkConfig := sdk.GetConfig()\n\tsdkConfig.SetBech32PrefixForAccount(\"source\", \"sourcepub\")\n\n\tk := keeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\t// Initialize params\n\tif err := k.SetParams(ctx, types.DefaultParams()); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn k, ctx\n}\n"
  },
  {
    "path": "testutil/keeper/tier.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tcryptocdc \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\tcosmosed25519 \"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthcodec \"github.com/cosmos/cosmos-sdk/x/auth/codec\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbankkeeper \"github.com/cosmos/cosmos-sdk/x/bank/keeper\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tdistrkeeper \"github.com/cosmos/cosmos-sdk/x/distribution/keeper\"\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttestutil \"github.com/sourcenetwork/sourcehub/testutil\"\n\tepochskeeper \"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\tfeegrantkeeper \"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// initializeValidator creates a validator and verifies that it was set correctly.\nfunc InitializeValidator(t *testing.T, k *stakingkeeper.Keeper, ctx sdk.Context, valAddr sdk.ValAddress, initialTokens math.Int) {\n\tvalidator := testutil.CreateTestValidator(t, ctx, k, valAddr, cosmosed25519.GenPrivKey().PubKey(), initialTokens)\n\tgotValidator, err := k.GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, validator.OperatorAddress, gotValidator.OperatorAddress)\n}\n\n// initializeDelegator initializes a delegator with balance.\nfunc InitializeDelegator(t *testing.T, k *keeper.Keeper, ctx sdk.Context, delAddr sdk.AccAddress, initialBalance math.Int) {\n\tinitialDelegatorBalance := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, initialBalance))\n\terr := k.GetBankKeeper().MintCoins(ctx, types.ModuleName, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().SendCoinsFromModuleToAccount(ctx, types.ModuleName, delAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n}\n\n// CreateAccount creates an account with no balance.\nfunc CreateAccount(t *testing.T, k *keeper.Keeper, ctx sdk.Context, addr sdk.AccAddress) {\n\ttempCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(1))\n\ttempCoins := sdk.NewCoins(tempCoin)\n\n\terr := k.GetBankKeeper().MintCoins(ctx, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().SendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, tempCoins)\n\trequire.NoError(t, err)\n\n\terr = k.GetBankKeeper().SendCoinsFromAccountToModule(ctx, addr, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().BurnCoins(ctx, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n}\n\nfunc TierKeeper(t testing.TB) (keeper.Keeper, sdk.Context) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tauthStoreKey := storetypes.NewKVStoreKey(authtypes.StoreKey)\n\tbankStoreKey := storetypes.NewKVStoreKey(banktypes.StoreKey)\n\tstakingStoreKey := storetypes.NewKVStoreKey(stakingtypes.StoreKey)\n\tdistrStoreKey := storetypes.NewKVStoreKey(distrtypes.StoreKey)\n\tepochsStoreKey := storetypes.NewKVStoreKey(epochstypes.StoreKey)\n\tmintStoreKey := storetypes.NewKVStoreKey(minttypes.StoreKey)\n\tfeegrantStoreKey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(authStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(bankStoreKey, storetypes.StoreTypeIAVL, db)\n\tstateStore.MountStoreWithDB(stakingStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(distrStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(epochsStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(mintStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(feegrantStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcryptocdc.RegisterInterfaces(registry)\n\tauthtypes.RegisterInterfaces(registry)\n\tbanktypes.RegisterInterfaces(registry)\n\tstakingtypes.RegisterInterfaces(registry)\n\tdistrtypes.RegisterInterfaces(registry)\n\tminttypes.RegisterInterfaces(registry)\n\tfeegrant.RegisterInterfaces(registry)\n\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tbech32Prefix := \"source\"\n\taddressCodec := authcodec.NewBech32Codec(bech32Prefix)\n\tvalOperCodec := authcodec.NewBech32Codec(bech32Prefix + \"valoper\")\n\tvalConsCodec := authcodec.NewBech32Codec(bech32Prefix + \"valcons\")\n\n\tmaccPerms := map[string][]string{\n\t\tauthtypes.FeeCollectorName:     nil,\n\t\tstakingtypes.BondedPoolName:    {authtypes.Burner, authtypes.Staking},\n\t\tstakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},\n\t\tdistrtypes.ModuleName:          {authtypes.Minter, authtypes.Burner},\n\t\tminttypes.ModuleName:           {authtypes.Minter, authtypes.Burner},\n\t\ttypes.ModuleName:               {authtypes.Minter, authtypes.Burner, authtypes.Staking},\n\t\ttypes.InsurancePoolName:        nil,\n\t\ttypes.DeveloperPoolName:        nil,\n\t}\n\n\tauthKeeper := authkeeper.NewAccountKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(authStoreKey),\n\t\tauthtypes.ProtoBaseAccount,\n\t\tmaccPerms,\n\t\taddressCodec,\n\t\tbech32Prefix,\n\t\tauthority.String(),\n\t)\n\n\tblockedAddrs := make(map[string]bool)\n\tfor acc := range maccPerms {\n\t\tblockedAddrs[authtypes.NewModuleAddress(acc).String()] = true\n\t}\n\tbankKeeper := bankkeeper.NewBaseKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(bankStoreKey),\n\t\tauthKeeper,\n\t\tblockedAddrs,\n\t\tauthority.String(),\n\t\tlog.NewNopLogger(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\tctx = ctx.WithBlockHeight(1).WithChainID(\"sourcehub\").WithBlockTime(time.Unix(1000000000, 0))\n\n\tbondedPool := authtypes.NewEmptyModuleAccount(stakingtypes.BondedPoolName, authtypes.Burner, authtypes.Staking)\n\tnotBondedPool := authtypes.NewEmptyModuleAccount(stakingtypes.NotBondedPoolName, authtypes.Burner, authtypes.Staking)\n\tdistrPool := authtypes.NewEmptyModuleAccount(distrtypes.ModuleName)\n\tmintAcc := authtypes.NewEmptyModuleAccount(minttypes.ModuleName)\n\ttierPool := authtypes.NewEmptyModuleAccount(types.ModuleName, authtypes.Minter, authtypes.Burner, authtypes.Staking)\n\tinsurancePool := authtypes.NewEmptyModuleAccount(types.InsurancePoolName)\n\tdeveloperPool := authtypes.NewEmptyModuleAccount(types.DeveloperPoolName)\n\n\tif authKeeper.GetModuleAccount(ctx, stakingtypes.BondedPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, bondedPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, stakingtypes.NotBondedPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, notBondedPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, tierPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, distrtypes.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, distrPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, minttypes.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, mintAcc)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.InsurancePoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, insurancePool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.DeveloperPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, developerPool)\n\t}\n\n\tstakingKeeper := stakingkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(stakingStoreKey),\n\t\tauthKeeper,\n\t\tbankKeeper,\n\t\tauthority.String(),\n\t\tvalOperCodec,\n\t\tvalConsCodec,\n\t)\n\n\tstakingParams := stakingtypes.DefaultParams()\n\tstakingParams.BondDenom = appparams.DefaultBondDenom\n\trequire.NoError(t, stakingKeeper.SetParams(ctx, stakingParams))\n\n\tdistributionKeeper := distrkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(distrStoreKey),\n\t\tauthKeeper,\n\t\tbankKeeper,\n\t\tstakingKeeper,\n\t\tauthtypes.FeeCollectorName,\n\t\tauthority.String(),\n\t)\n\n\tepochsKeeper := epochskeeper.NewKeeper(\n\t\truntime.NewKVStoreService(epochsStoreKey),\n\t\tlog.NewNopLogger(),\n\t)\n\n\tepochInfo := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: ctx.BlockTime(),\n\t\tDuration:              time.Hour * 24 * 30,\n\t}\n\tepochsKeeper.SetEpochInfo(ctx, epochInfo)\n\n\tfeegrantKeeper := feegrantkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(feegrantStoreKey),\n\t\tauthKeeper,\n\t)\n\n\tk := keeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\tbankKeeper,\n\t\tstakingKeeper,\n\t\tepochsKeeper,\n\t\tdistributionKeeper,\n\t\tfeegrantKeeper,\n\t\tnil,\n\t)\n\n\t// Initialize params\n\tif err := k.SetParams(ctx, types.DefaultParams()); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn k, ctx\n}\n"
  },
  {
    "path": "testutil/mocks.go",
    "content": "package test\n\nimport (\n\t\"context\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/golang/mock/gomock\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n)\n\n// Mock bank keeper\ntype MockBankKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockBankKeeperMockRecorder\n}\n\ntype MockBankKeeperMockRecorder struct {\n\tmock *MockBankKeeper\n}\n\nfunc NewMockBankKeeper(ctrl *gomock.Controller) *MockBankKeeper {\n\tmock := &MockBankKeeper{ctrl: ctrl}\n\tmock.recorder = &MockBankKeeperMockRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockBankKeeper) EXPECT() *MockBankKeeperMockRecorder {\n\treturn m.recorder\n}\n\nfunc (m *MockBankKeeper) GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetBalance\", ctx, addr, denom)\n\tret0 := ret[0].(sdk.Coin)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) GetBalance(ctx, addr, denom interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetBalance\", reflect.TypeOf((*MockBankKeeper)(nil).GetBalance), ctx, addr, denom)\n}\n\nfunc (m *MockBankKeeper) SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"SendCoins\", ctx, fromAddr, toAddr, amt)\n\treturn nil\n}\n\nfunc (mr *MockBankKeeperMockRecorder) SendCoins(ctx, fromAddr, toAddr, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SendCoins\", reflect.TypeOf((*MockBankKeeper)(nil).SendCoins), ctx, fromAddr, toAddr, amt)\n}\n\nfunc (m *MockBankKeeper) BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"BurnCoins\", ctx, moduleName, amt)\n\treturn nil\n}\n\nfunc (mr *MockBankKeeperMockRecorder) BurnCoins(ctx, moduleName, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"BurnCoins\", reflect.TypeOf((*MockBankKeeper)(nil).BurnCoins), ctx, moduleName, amt)\n}\n\nfunc (m *MockBankKeeper) MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"MintCoins\", ctx, moduleName, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) MintCoins(ctx, moduleName, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"MintCoins\", reflect.TypeOf((*MockBankKeeper)(nil).MintCoins), ctx, moduleName, amt)\n}\n\nfunc (m *MockBankKeeper) SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SendCoinsFromModuleToAccount\", ctx, senderModule, recipientAddr, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) SendCoinsFromModuleToAccount(ctx, senderModule, recipientAddr, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SendCoinsFromModuleToAccount\", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromModuleToAccount), ctx, senderModule, recipientAddr, amt)\n}\n\nfunc (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SendCoinsFromAccountToModule\", ctx, senderAddr, recipientModule, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) SendCoinsFromAccountToModule(ctx, senderAddr, recipientModule, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SendCoinsFromAccountToModule\", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromAccountToModule), ctx, senderAddr, recipientModule, amt)\n}\n\nfunc (m *MockBankKeeper) SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SendCoinsFromModuleToModule\", ctx, senderModule, recipientModule, amt)\n\n\tvar err error\n\tif len(ret) > 0 && ret[0] != nil {\n\t\terr = ret[0].(error)\n\t}\n\treturn err\n}\n\nfunc (mr *MockBankKeeperMockRecorder) SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SendCoinsFromModuleToModule\", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromModuleToModule), ctx, senderModule, recipientModule, amt)\n}\n\nfunc (m *MockBankKeeper) DelegateCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"DelegateCoinsFromAccountToModule\", ctx, senderAddr, recipientModule, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) DelegateCoinsFromAccountToModule(ctx, senderAddr, recipientModule, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"DelegateCoinsFromAccountToModule\", reflect.TypeOf((*MockBankKeeper)(nil).DelegateCoinsFromAccountToModule), ctx, senderAddr, recipientModule, amt)\n}\n\nfunc (m *MockBankKeeper) UndelegateCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UndelegateCoinsFromModuleToAccount\", ctx, senderModule, recipientAddr, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockBankKeeperMockRecorder) UndelegateCoinsFromModuleToAccount(ctx, senderModule, recipientAddr, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UndelegateCoinsFromModuleToAccount\", reflect.TypeOf((*MockBankKeeper)(nil).UndelegateCoinsFromModuleToAccount), ctx, senderModule, recipientAddr, amt)\n}\n\nfunc (m *MockBankKeeper) IterateAllBalances(ctx context.Context, cb func(addr sdk.AccAddress, coin sdk.Coin) bool) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"IterateAllBalances\", ctx, cb)\n}\n\nfunc (mr *MockBankKeeperMockRecorder) IterateAllBalances(ctx, cb interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IterateAllBalances\", reflect.TypeOf((*MockBankKeeper)(nil).IterateAllBalances), ctx, cb)\n}\n\n// Mock distribution keeper\ntype MockDistributionKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockDistributionKeeperRecorder\n}\n\ntype MockDistributionKeeperRecorder struct {\n\tmock *MockDistributionKeeper\n}\n\nfunc NewMockDistributionKeeper(ctrl *gomock.Controller) *MockDistributionKeeper {\n\tmock := &MockDistributionKeeper{ctrl: ctrl}\n\tmock.recorder = &MockDistributionKeeperRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockDistributionKeeper) EXPECT() *MockDistributionKeeperRecorder {\n\treturn m.recorder\n}\n\nfunc (m *MockDistributionKeeper) GetPreviousProposerConsAddr(ctx context.Context) (sdk.ConsAddress, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetPreviousProposerConsAddr\", ctx)\n\tret0 := ret[0].(sdk.ConsAddress)\n\treturn ret0, nil\n}\n\nfunc (mr *MockDistributionKeeperRecorder) GetPreviousProposerConsAddr(ctx any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetPreviousProposerConsAddr\", reflect.TypeOf((*MockDistributionKeeper)(nil).GetPreviousProposerConsAddr), ctx)\n}\n\nfunc (m *MockDistributionKeeper) AllocateTokensToValidator(ctx context.Context, val stakingtypes.ValidatorI, tokens sdk.DecCoins) error {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"AllocateTokensToValidator\", ctx, val, tokens)\n\treturn nil\n}\n\nfunc (mr *MockDistributionKeeperRecorder) AllocateTokensToValidator(ctx, val, tokens any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AllocateTokensToValidator\", reflect.TypeOf((*MockDistributionKeeper)(nil).AllocateTokensToValidator), ctx, val, tokens)\n}\n\nfunc (m *MockDistributionKeeper) AllocateTokens(ctx context.Context, totalReward int64, bondedValidators []abcitypes.VoteInfo) error {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"AllocateTokens\", ctx, totalReward, bondedValidators)\n\treturn nil\n}\n\nfunc (mr *MockDistributionKeeperRecorder) AllocateTokens(ctx, totalReward, bondedValidators any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AllocateTokens\", reflect.TypeOf((*MockDistributionKeeper)(nil).AllocateTokens), ctx, totalReward, bondedValidators)\n}\n\nfunc (m *MockDistributionKeeper) GetValidatorOutstandingRewards(ctx context.Context, valAddr sdk.ValAddress) (distrtypes.ValidatorOutstandingRewards, error) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"GetValidatorOutstandingRewards\", ctx, valAddr)\n\treturn distrtypes.ValidatorOutstandingRewards{}, nil\n}\n\nfunc (mr *MockDistributionKeeperRecorder) GetValidatorOutstandingRewards(ctx, valAddr any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetValidatorOutstandingRewards\", reflect.TypeOf((*MockDistributionKeeper)(nil).GetValidatorOutstandingRewards), ctx, valAddr)\n}\n\nfunc (m *MockDistributionKeeper) WithdrawDelegationRewards(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Coins, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"WithdrawDelegationRewards\", ctx, delAddr, valAddr)\n\tvar coins sdk.Coins\n\tif len(ret) > 0 {\n\t\tif ret[0] != nil {\n\t\t\tcoins = ret[0].(sdk.Coins)\n\t\t} else {\n\t\t\tcoins = sdk.NewCoins()\n\t\t}\n\t}\n\tvar err error\n\tif len(ret) > 1 {\n\t\tif ret[1] != nil {\n\t\t\terr = ret[1].(error)\n\t\t}\n\t}\n\treturn coins, err\n}\n\nfunc (mr *MockDistributionKeeperRecorder) WithdrawDelegationRewards(ctx, delAddr, valAddr any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"WithdrawDelegationRewards\", reflect.TypeOf((*MockDistributionKeeper)(nil).WithdrawDelegationRewards), ctx, delAddr, valAddr)\n}\n\n// Mock staking keeper\ntype MockStakingKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockStakingKeeperRecorder\n}\n\ntype MockStakingKeeperRecorder struct {\n\tmock *MockStakingKeeper\n}\n\nfunc NewMockStakingKeeper(ctrl *gomock.Controller) *MockStakingKeeper {\n\tmock := &MockStakingKeeper{ctrl: ctrl}\n\tmock.recorder = &MockStakingKeeperRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockStakingKeeper) EXPECT() *MockStakingKeeperRecorder {\n\treturn m.recorder\n}\n\nfunc (m *MockStakingKeeper) GetValidatorByConsAddr(ctx context.Context, consAddr sdk.ConsAddress) (stakingtypes.Validator, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetValidatorByConsAddr\", ctx, consAddr)\n\tret0 := ret[0].(stakingtypes.Validator)\n\treturn ret0, nil\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetValidatorByConsAddr(ctx, consAddr any) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetValidatorByConsAddr\", reflect.TypeOf((*MockStakingKeeper)(nil).GetValidatorByConsAddr), ctx, consAddr)\n}\n\nfunc (m *MockStakingKeeper) GetValidator(ctx context.Context, addr sdk.ValAddress) (stakingtypes.Validator, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetValidator\", ctx, addr)\n\tret0, _ := ret[0].(stakingtypes.Validator)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetValidator(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetValidator\", reflect.TypeOf((*MockStakingKeeper)(nil).GetValidator), ctx, addr)\n}\n\nfunc (m *MockStakingKeeper) IterateValidators(ctx context.Context, fn func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"IterateValidators\", ctx, fn)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) IterateValidators(ctx, fn interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IterateValidators\", reflect.TypeOf((*MockStakingKeeper)(nil).IterateValidators), ctx, fn)\n}\n\nfunc (m *MockStakingKeeper) IterateDelegations(ctx context.Context, delAddr sdk.AccAddress, fn func(index int64, delegation stakingtypes.DelegationI) (stop bool)) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"IterateDelegations\", ctx, delAddr, fn)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) IterateDelegations(ctx, delAddr, fn interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IterateDelegations\", reflect.TypeOf((*MockStakingKeeper)(nil).IterateDelegations), ctx, delAddr, fn)\n}\n\nfunc (m *MockStakingKeeper) TotalBondedTokens(ctx context.Context) (math.Int, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"TotalBondedTokens\", ctx)\n\tret0, _ := ret[0].(math.Int)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) TotalBondedTokens(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"TotalBondedTokens\", reflect.TypeOf((*MockStakingKeeper)(nil).TotalBondedTokens), ctx)\n}\n\nfunc (m *MockStakingKeeper) Delegate(ctx context.Context, delAddr sdk.AccAddress, bondAmt math.Int, tokenSrc stakingtypes.BondStatus, validator stakingtypes.Validator, subtractAccount bool) (math.LegacyDec, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Delegate\", ctx, delAddr, bondAmt, tokenSrc, validator, subtractAccount)\n\tret0, _ := ret[0].(math.LegacyDec)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) Delegate(ctx, delAddr, bondAmt, tokenSrc, validator, subtractAccount interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Delegate\", reflect.TypeOf((*MockStakingKeeper)(nil).Delegate), ctx, delAddr, bondAmt, tokenSrc, validator, subtractAccount)\n}\n\nfunc (m *MockStakingKeeper) BeginRedelegation(ctx context.Context, delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress,\n\tsharesAmount math.LegacyDec) (completionTime time.Time, err error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"BeginRedelegation\", ctx, delAddr, valSrcAddr, valDstAddr, sharesAmount)\n\tret0, _ := ret[0].(time.Time)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) BeginRedelegation(ctx, delAddr, valSrcAddr, valDstAddr, sharesAmount interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"BeginRedelegation\", reflect.TypeOf((*MockStakingKeeper)(nil).BeginRedelegation), ctx, delAddr, valSrcAddr, valDstAddr, sharesAmount)\n}\n\nfunc (m *MockStakingKeeper) BondDenom(ctx context.Context) (string, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"BondDenom\", ctx)\n\tret0, _ := ret[0].(string)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) BondDenom(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"BondDenom\", reflect.TypeOf((*MockStakingKeeper)(nil).BondDenom), ctx)\n}\n\nfunc (m *MockStakingKeeper) CompleteUnbonding(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Coins, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"CompleteUnbonding\", ctx, delAddr, valAddr)\n\tret0, _ := ret[0].(sdk.Coins)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) CompleteUnbonding(ctx, delAddr, valAddr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"CompleteUnbonding\", reflect.TypeOf((*MockStakingKeeper)(nil).CompleteUnbonding), ctx, delAddr, valAddr)\n}\n\nfunc (m *MockStakingKeeper) GetUnbondingDelegation(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (\n\tubd stakingtypes.UnbondingDelegation, err error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetUnbondingDelegation\", ctx, delAddr, valAddr)\n\tret0, _ := ret[0].(stakingtypes.UnbondingDelegation)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetUnbondingDelegation(ctx, delAddr, valAddr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetUnbondingDelegation\", reflect.TypeOf((*MockStakingKeeper)(nil).GetUnbondingDelegation), ctx, delAddr, valAddr)\n}\n\nfunc (m *MockStakingKeeper) RemoveUnbondingDelegation(ctx context.Context, ubd stakingtypes.UnbondingDelegation) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"RemoveUnbondingDelegation\", ctx, ubd)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) RemoveUnbondingDelegation(ctx, ubd interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"RemoveUnbondingDelegation\", reflect.TypeOf((*MockStakingKeeper)(nil).RemoveUnbondingDelegation), ctx, ubd)\n}\n\nfunc (m *MockStakingKeeper) SetUnbondingDelegation(ctx context.Context, ubd stakingtypes.UnbondingDelegation) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SetUnbondingDelegation\", ctx, ubd)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) SetUnbondingDelegation(ctx, ubd interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetUnbondingDelegation\", reflect.TypeOf((*MockStakingKeeper)(nil).SetUnbondingDelegation), ctx, ubd)\n}\n\nfunc (m *MockStakingKeeper) SetValidator(ctx context.Context, addr stakingtypes.Validator) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SetValidator\", ctx, addr)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) SetValidator(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetValidator\", reflect.TypeOf((*MockStakingKeeper)(nil).SetValidator), ctx, addr)\n}\n\nfunc (m *MockStakingKeeper) SetValidatorByConsAddr(ctx context.Context, addr stakingtypes.Validator) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SetValidatorByConsAddr\", ctx, addr)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockStakingKeeperRecorder) SetValidatorByConsAddr(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetValidatorByConsAddr\", reflect.TypeOf((*MockStakingKeeper)(nil).SetValidatorByConsAddr), ctx, addr)\n}\n\nfunc (m *MockStakingKeeper) Undelegate(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, sharesAmount math.LegacyDec) (\n\ttime.Time, math.Int, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Undelegate\", ctx, delAddr, valAddr, sharesAmount)\n\tret0, _ := ret[0].(time.Time)\n\tret1, _ := ret[1].(math.Int)\n\tret2, _ := ret[2].(error)\n\treturn ret0, ret1, ret2\n}\n\nfunc (mr *MockStakingKeeperRecorder) Undelegate(ctx, delAddr, valAddr, sharesAmount interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Undelegate\", reflect.TypeOf((*MockStakingKeeper)(nil).Undelegate), ctx, delAddr, valAddr, sharesAmount)\n}\n\nfunc (m *MockStakingKeeper) ValidateUnbondAmount(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt math.Int) (\n\tshares math.LegacyDec, err error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"ValidateUnbondAmount\", ctx, delAddr, valAddr, amt)\n\tret0, _ := ret[0].(math.LegacyDec)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) ValidateUnbondAmount(ctx, delAddr, valAddr, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"ValidateUnbondAmount\", reflect.TypeOf((*MockStakingKeeper)(nil).ValidateUnbondAmount), ctx, delAddr, valAddr, amt)\n}\n\nfunc (m *MockStakingKeeper) BondedRatio(ctx context.Context) (math.LegacyDec, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"BondedRatio\", ctx)\n\tret0, _ := ret[0].(math.LegacyDec)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) BondedRatio(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"BondedRatio\", reflect.TypeOf((*MockStakingKeeper)(nil).BondedRatio), ctx)\n}\n\nfunc (m *MockStakingKeeper) StakingTokenSupply(ctx context.Context) (math.Int, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"StakingTokenSupply\", ctx)\n\tret0, _ := ret[0].(math.Int)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) StakingTokenSupply(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"StakingTokenSupply\", reflect.TypeOf((*MockStakingKeeper)(nil).StakingTokenSupply), ctx)\n}\n\nfunc (m *MockStakingKeeper) GetValidatorDelegations(ctx context.Context, valAddr sdk.ValAddress) ([]stakingtypes.Delegation, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetValidatorDelegations\", ctx, valAddr)\n\tret0, _ := ret[0].([]stakingtypes.Delegation)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetValidatorDelegations(ctx, valAddr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetValidatorDelegations\", reflect.TypeOf((*MockStakingKeeper)(nil).GetValidatorDelegations), ctx, valAddr)\n}\n\nfunc (m *MockStakingKeeper) GetAllValidators(ctx context.Context) ([]stakingtypes.Validator, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetAllValidators\", ctx)\n\tret0, _ := ret[0].([]stakingtypes.Validator)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetAllValidators(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetAllValidators\", reflect.TypeOf((*MockStakingKeeper)(nil).GetAllValidators), ctx)\n}\n\nfunc (m *MockStakingKeeper) GetDelegation(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (stakingtypes.Delegation, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDelegation\", ctx, delAddr, valAddr)\n\tret0, _ := ret[0].(stakingtypes.Delegation)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockStakingKeeperRecorder) GetDelegation(ctx, delAddr, valAddr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDelegation\", reflect.TypeOf((*MockStakingKeeper)(nil).GetDelegation), ctx, delAddr, valAddr)\n}\n\n// Mock epochs keeper\ntype MockEpochsKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockEpochsKeeperMockRecorder\n}\n\ntype MockEpochsKeeperMockRecorder struct {\n\tmock *MockEpochsKeeper\n}\n\nfunc NewMockEpochsKeeper(ctrl *gomock.Controller) *MockEpochsKeeper {\n\tmock := &MockEpochsKeeper{ctrl: ctrl}\n\tmock.recorder = &MockEpochsKeeperMockRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockEpochsKeeper) EXPECT() *MockEpochsKeeperMockRecorder {\n\treturn m.recorder\n}\n\nfunc (m *MockEpochsKeeper) GetEpochInfo(ctx context.Context, identifier string) epochstypes.EpochInfo {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetEpochInfo\", ctx, identifier)\n\tret0, _ := ret[0].(epochstypes.EpochInfo)\n\treturn ret0\n}\n\nfunc (mr *MockEpochsKeeperMockRecorder) GetEpochInfo(ctx, identifier interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetEpochInfo\", reflect.TypeOf((*MockEpochsKeeper)(nil).GetEpochInfo), ctx, identifier)\n}\n\nfunc (m *MockEpochsKeeper) SetEpochInfo(ctx context.Context, info epochstypes.EpochInfo) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"SetEpochInfo\", ctx, info)\n}\n\nfunc (mr *MockEpochsKeeperMockRecorder) SetEpochInfo(ctx, info interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(\n\t\tmr.mock, \"SetEpochInfo\",\n\t\treflect.TypeOf((*MockEpochsKeeper)(nil).SetEpochInfo),\n\t\tctx, info,\n\t)\n}\n\n// Mock feegrant keeper\ntype MockFeegrantKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockFeegrantKeeperRecorder\n}\n\ntype MockFeegrantKeeperRecorder struct {\n\tmock *MockFeegrantKeeper\n}\n\nfunc NewMockFeegrantKeeper(ctrl *gomock.Controller) *MockFeegrantKeeper {\n\tmock := &MockFeegrantKeeper{ctrl: ctrl}\n\tmock.recorder = &MockFeegrantKeeperRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockFeegrantKeeper) EXPECT() *MockFeegrantKeeperRecorder {\n\treturn m.recorder\n}\n\nfunc (m *MockFeegrantKeeper) GetAllowance(ctx context.Context, granter, grantee sdk.AccAddress) (feegrant.FeeAllowanceI, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetAllowance\", ctx, granter, grantee)\n\tret0, _ := ret[0].(feegrant.FeeAllowanceI)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) GetAllowance(ctx, granter, grantee interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).GetAllowance), ctx, granter, grantee)\n}\n\nfunc (m *MockFeegrantKeeper) GrantAllowance(ctx context.Context, granter, grantee sdk.AccAddress, allowance feegrant.FeeAllowanceI) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GrantAllowance\", ctx, granter, grantee, allowance)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) GrantAllowance(ctx, granter, grantee, allowance interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GrantAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).GrantAllowance), ctx, granter, grantee, allowance)\n}\n\nfunc (m *MockFeegrantKeeper) UpdateAllowance(ctx context.Context, granter, grantee sdk.AccAddress, feeAllowance feegrant.FeeAllowanceI) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UpdateAllowance\", ctx, granter, grantee, feeAllowance)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) UpdateAllowance(ctx, granter, grantee, feeAllowance interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UpdateAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).UpdateAllowance), ctx, granter, grantee, feeAllowance)\n}\n\n// DID-based feegrant methods\nfunc (m *MockFeegrantKeeper) GrantDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string, allowance feegrant.FeeAllowanceI) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GrantDIDAllowance\", ctx, granter, granteeDID, allowance)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) GrantDIDAllowance(ctx, granter, granteeDID, allowance interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GrantDIDAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).GrantDIDAllowance), ctx, granter, granteeDID, allowance)\n}\n\nfunc (m *MockFeegrantKeeper) UpdateDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string, feeAllowance feegrant.FeeAllowanceI) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UpdateDIDAllowance\", ctx, granter, granteeDID, feeAllowance)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) UpdateDIDAllowance(ctx, granter, granteeDID, feeAllowance interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UpdateDIDAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).UpdateDIDAllowance), ctx, granter, granteeDID, feeAllowance)\n}\n\nfunc (m *MockFeegrantKeeper) ExpireDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"ExpireDIDAllowance\", ctx, granter, granteeDID)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) ExpireDIDAllowance(ctx, granter, granteeDID interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"ExpireDIDAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).ExpireDIDAllowance), ctx, granter, granteeDID)\n}\n\nfunc (m *MockFeegrantKeeper) GetDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) (feegrant.FeeAllowanceI, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDIDAllowance\", ctx, granter, granteeDID)\n\tret0, _ := ret[0].(feegrant.FeeAllowanceI)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockFeegrantKeeperRecorder) GetDIDAllowance(ctx, granter, granteeDID interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDIDAllowance\", reflect.TypeOf((*MockFeegrantKeeper)(nil).GetDIDAllowance), ctx, granter, granteeDID)\n}\n\n// Mock DID feegrant keeper\ntype MockDIDFeegrantKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockDIDFeegrantKeeperMockRecorder\n}\n\ntype MockDIDFeegrantKeeperMockRecorder struct {\n\tmock *MockDIDFeegrantKeeper\n}\n\nfunc NewMockDIDFeegrantKeeper(ctrl *gomock.Controller) *MockDIDFeegrantKeeper {\n\tmock := &MockDIDFeegrantKeeper{ctrl: ctrl}\n\tmock.recorder = &MockDIDFeegrantKeeperMockRecorder{mock}\n\treturn mock\n}\n\nfunc (m *MockDIDFeegrantKeeper) EXPECT() *MockDIDFeegrantKeeperMockRecorder {\n\treturn m.recorder\n}\n\n// UseGrantedFees implements ante.FeegrantKeeper interface\nfunc (m *MockDIDFeegrantKeeper) UseGrantedFees(ctx context.Context, granter, grantee sdk.AccAddress, fee sdk.Coins, msgs []sdk.Msg) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UseGrantedFees\", ctx, granter, grantee, fee, msgs)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockDIDFeegrantKeeperMockRecorder) UseGrantedFees(ctx, granter, grantee, fee, msgs interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UseGrantedFees\", reflect.TypeOf((*MockDIDFeegrantKeeper)(nil).UseGrantedFees), ctx, granter, grantee, fee, msgs)\n}\n\n// UseGrantedFeesByDID implements DID-based feegrant functionality\nfunc (m *MockDIDFeegrantKeeper) UseGrantedFeesByDID(ctx context.Context, granter sdk.AccAddress, granteeDID string, fee sdk.Coins, msgs []sdk.Msg) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UseGrantedFeesByDID\", ctx, granter, granteeDID, fee, msgs)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\nfunc (mr *MockDIDFeegrantKeeperMockRecorder) UseGrantedFeesByDID(ctx, granter, granteeDID, fee, msgs interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UseGrantedFeesByDID\", reflect.TypeOf((*MockDIDFeegrantKeeper)(nil).UseGrantedFeesByDID), ctx, granter, granteeDID, fee, msgs)\n}\n\n// UseFirstAvailableDIDGrant implements DID-based feegrant functionality to find and use the first available grant\nfunc (m *MockDIDFeegrantKeeper) UseFirstAvailableDIDGrant(ctx context.Context, granteeDID string, fee sdk.Coins, msgs []sdk.Msg) (sdk.AccAddress, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UseFirstAvailableDIDGrant\", ctx, granteeDID, fee, msgs)\n\tret0, _ := ret[0].(sdk.AccAddress)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockDIDFeegrantKeeperMockRecorder) UseFirstAvailableDIDGrant(ctx, granteeDID, fee, msgs interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UseFirstAvailableDIDGrant\", reflect.TypeOf((*MockDIDFeegrantKeeper)(nil).UseFirstAvailableDIDGrant), ctx, granteeDID, fee, msgs)\n}\n\n// GetDIDAllowance implements DID-based feegrant functionality\nfunc (m *MockDIDFeegrantKeeper) GetDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) (feegrant.FeeAllowanceI, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDIDAllowance\", ctx, granter, granteeDID)\n\tret0, _ := ret[0].(feegrant.FeeAllowanceI)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\nfunc (mr *MockDIDFeegrantKeeperMockRecorder) GetDIDAllowance(ctx, granter, granteeDID interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDIDAllowance\", reflect.TypeOf((*MockDIDFeegrantKeeper)(nil).GetDIDAllowance), ctx, granter, granteeDID)\n}\n"
  },
  {
    "path": "testutil/network/faucet.go",
    "content": "package network\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/network\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\t\"github.com/sourcenetwork/sourcehub/app/params\"\n\thubtypes \"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nconst (\n\tfaucetAddress    = \"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\"\n\tfaucetBalance    = 100000000000000 // 100m open\n\tfaucetKeyContent = `{\n  \"mnemonic\": \"comic very pond victory suit tube ginger antique life then core warm loyal deliver iron fashion erupt husband weekend monster sunny artist empty uphold\",\n  \"name\": \"faucet\",\n  \"address\": \"source12d9hjf0639k995venpv675sju9ltsvf8u5c9jt\"\n}`\n\tdefaultDirPerm  = 0755\n\tdefaultFilePerm = 0644\n\tfaucetKeyFile   = \"faucet-key.json\"\n\tconfigDir       = \"config\"\n)\n\n// setupFaucetKeyFiles creates the faucet key files in the required locations.\nfunc setupFaucetKeyFiles(val network.ValidatorI) error {\n\tfaucetKeyPath := filepath.Join(val.GetCtx().Config.RootDir, configDir, faucetKeyFile)\n\tif err := os.MkdirAll(filepath.Dir(faucetKeyPath), defaultDirPerm); err != nil {\n\t\treturn fmt.Errorf(\"failed to create faucet key directory: %w\", err)\n\t}\n\tif err := os.WriteFile(faucetKeyPath, []byte(faucetKeyContent), defaultFilePerm); err != nil {\n\t\treturn fmt.Errorf(\"failed to write faucet key file: %w\", err)\n\t}\n\tuserHomeDir, err := os.UserHomeDir()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to get user home directory: %w\", err)\n\t}\n\tdefaultNodeHome := filepath.Join(userHomeDir, \".sourcehub\")\n\tdefaultFaucetKeyPath := filepath.Join(defaultNodeHome, configDir, faucetKeyFile)\n\tif err := os.MkdirAll(filepath.Dir(defaultFaucetKeyPath), defaultDirPerm); err != nil {\n\t\treturn fmt.Errorf(\"failed to create default faucet key directory: %w\", err)\n\t}\n\tif err := os.WriteFile(defaultFaucetKeyPath, []byte(faucetKeyContent), defaultFilePerm); err != nil {\n\t\treturn fmt.Errorf(\"failed to write default faucet key file: %w\", err)\n\t}\n\treturn nil\n}\n\n// setupFaucetInGenesis sets up the faucet account and balance in the genesis state.\nfunc setupFaucetInGenesis(cfg *network.Config) error {\n\thubGenesis := hubtypes.DefaultGenesis()\n\thubGenesis.ChainConfig.AllowZeroFeeTxs = true\n\tbz, err := json.Marshal(&hubGenesis)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not marshal x/hub/ChainConfig: %w\", err)\n\t}\n\tcfg.GenesisState[hubtypes.ModuleName] = bz\n\n\tif err := addFaucetAccountToGenesis(cfg); err != nil {\n\t\treturn fmt.Errorf(\"failed to add faucet account to genesis: %w\", err)\n\t}\n\tif err := addFaucetBalanceToGenesis(cfg); err != nil {\n\t\treturn fmt.Errorf(\"failed to add faucet balance to genesis: %w\", err)\n\t}\n\treturn nil\n}\n\n// addFaucetAccountToGenesis adds the faucet account to the auth genesis state.\nfunc addFaucetAccountToGenesis(cfg *network.Config) error {\n\tvar authGenState authtypes.GenesisState\n\tif authGenStateBytes, exists := cfg.GenesisState[authtypes.ModuleName]; exists {\n\t\tif err := json.Unmarshal(authGenStateBytes, &authGenState); err != nil {\n\t\t\tauthGenState = *authtypes.DefaultGenesisState()\n\t\t}\n\t} else {\n\t\tauthGenState = *authtypes.DefaultGenesisState()\n\t}\n\tfaucetAccAddr, err := sdk.AccAddressFromBech32(faucetAddress)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid faucet address: %w\", err)\n\t}\n\tfaucetAccount := authtypes.NewBaseAccount(faucetAccAddr, nil, 0, 0)\n\taccounts, err := authtypes.PackAccounts([]authtypes.GenesisAccount{faucetAccount})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to pack accounts: %w\", err)\n\t}\n\tauthGenState.Accounts = append(authGenState.Accounts, accounts...)\n\ttempApp, err := app.New(log.NewNopLogger(), dbm.NewMemDB(), nil, true, sims.EmptyAppOptions{})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create temp app: %w\", err)\n\t}\n\tappCodec := tempApp.AppCodec()\n\tcfg.GenesisState[authtypes.ModuleName] = appCodec.MustMarshalJSON(&authGenState)\n\treturn nil\n}\n\n// addFaucetBalanceToGenesis adds the faucet balance to the bank genesis state.\nfunc addFaucetBalanceToGenesis(cfg *network.Config) error {\n\tvar bankGenState banktypes.GenesisState\n\tif bankGenStateBytes, exists := cfg.GenesisState[banktypes.ModuleName]; exists {\n\t\tif err := json.Unmarshal(bankGenStateBytes, &bankGenState); err != nil {\n\t\t\tbankGenState = *banktypes.DefaultGenesisState()\n\t\t}\n\t} else {\n\t\tbankGenState = *banktypes.DefaultGenesisState()\n\t}\n\tfaucetCoins := sdk.NewCoins(sdk.NewCoin(params.DefaultBondDenom, math.NewInt(faucetBalance)))\n\tbankGenState.Balances = append(bankGenState.Balances, banktypes.Balance{\n\t\tAddress: faucetAddress,\n\t\tCoins:   faucetCoins,\n\t})\n\ttempApp, err := app.New(log.NewNopLogger(), dbm.NewMemDB(), nil, true, sims.EmptyAppOptions{})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create temp app: %w\", err)\n\t}\n\tappCodec := tempApp.AppCodec()\n\tcfg.GenesisState[banktypes.ModuleName] = appCodec.MustMarshalJSON(&bankGenState)\n\treturn nil\n}\n"
  },
  {
    "path": "testutil/network/network.go",
    "content": "package network\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tservertypes \"github.com/cosmos/cosmos-sdk/server/types\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/network\"\n\t\"github.com/spf13/viper\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\t\"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\ntype (\n\tNetwork = network.Network\n\tConfig  = network.Config\n)\n\n// NetworkOptions contains options for configuring the network.\ntype NetworkOptions struct {\n\tEnableFaucet bool\n}\n\n// testAppOptions creates app options for testing with optional faucet configuration.\ntype testAppOptions struct {\n\tenableFaucet bool\n\tv            *viper.Viper\n}\n\n// NewTestAppOptions creates test app options with faucet configuration.\nfunc NewTestAppOptions(enableFaucet bool) *testAppOptions {\n\tv := viper.New()\n\tv.Set(\"faucet.enable_faucet\", enableFaucet)\n\treturn &testAppOptions{\n\t\tenableFaucet: enableFaucet,\n\t\tv:            v,\n\t}\n}\n\n// Get implements servertypes.AppOptions interface.\nfunc (opts *testAppOptions) Get(key string) interface{} {\n\treturn opts.v.Get(key)\n}\n\n// New creates instance with fully configured cosmos network.\n// Accepts optional config, that will be used in place of the DefaultConfig() if provided.\nfunc New(t *testing.T, configs ...Config) *Network {\n\treturn NewWithOptions(t, NetworkOptions{EnableFaucet: false}, configs...)\n}\n\n// NewWithOptions creates instance with fully configured cosmos network and custom options.\n// Accepts optional config and options, that will be used in place of the DefaultConfig() if provided.\nfunc NewWithOptions(t *testing.T, options NetworkOptions, configs ...Config) *Network {\n\tt.Helper()\n\tif len(configs) > 1 {\n\t\tpanic(\"at most one config should be provided\")\n\t}\n\tvar cfg network.Config\n\tif len(configs) == 0 {\n\t\tcfg = DefaultConfigWithOptions(options)\n\t} else {\n\t\tcfg = configs[0]\n\t}\n\tbaseDir, err := os.MkdirTemp(\"\", t.Name())\n\trequire.NoError(t, err)\n\tnet, err := network.New(t, baseDir, cfg)\n\trequire.NoError(t, err)\n\tval := net.Validators[0]\n\tif options.EnableFaucet {\n\t\terr = setupFaucetKeyFiles(val)\n\t\trequire.NoError(t, err)\n\t}\n\t_, err = net.WaitForHeight(1)\n\trequire.NoError(t, err)\n\tt.Cleanup(func() {\n\t\tnet.Cleanup()\n\t\tos.RemoveAll(baseDir)\n\t})\n\treturn net\n}\n\n// DefaultConfig will initialize config for the network with custom application,\n// genesis and single validator. All other parameters are inherited from cosmos-sdk/testutil/network.DefaultConfig.\nfunc DefaultConfig() network.Config {\n\treturn DefaultConfigWithOptions(NetworkOptions{EnableFaucet: false})\n}\n\n// DefaultConfigWithOptions will initialize config for the network with custom application,\n// genesis and single validator, with optional faucet configuration.\nfunc DefaultConfigWithOptions(options NetworkOptions) network.Config {\n\tapp.SetConfig(false)\n\tcfg, err := network.DefaultConfigWithAppConfig(app.AppConfig())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tports, err := freePorts(3)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tif cfg.APIAddress == \"\" {\n\t\tcfg.APIAddress = fmt.Sprintf(\"tcp://0.0.0.0:%s\", ports[0])\n\t}\n\tif cfg.RPCAddress == \"\" {\n\t\tcfg.RPCAddress = fmt.Sprintf(\"tcp://0.0.0.0:%s\", ports[1])\n\t}\n\tif cfg.GRPCAddress == \"\" {\n\t\tcfg.GRPCAddress = fmt.Sprintf(\"0.0.0.0:%s\", ports[2])\n\t}\n\tcfg.BondDenom = params.DefaultBondDenom\n\tif options.EnableFaucet {\n\t\tif err := setupFaucetInGenesis(&cfg); err != nil {\n\t\t\tpanic(fmt.Sprintf(\"failed to setup faucet in genesis: %v\", err))\n\t\t}\n\t}\n\tcfg.AppConstructor = func(val network.ValidatorI) servertypes.Application {\n\t\tappOpts := NewTestAppOptions(options.EnableFaucet)\n\t\tappInstance, err := app.New(\n\t\t\tval.GetCtx().Logger,\n\t\t\tdbm.NewMemDB(),\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tappOpts,\n\t\t\tbaseapp.SetChainID(cfg.ChainID),\n\t\t)\n\t\tif err != nil {\n\t\t\tpanic(fmt.Sprintf(\"failed to create app: %v\", err))\n\t\t}\n\t\treturn appInstance\n\t}\n\treturn cfg\n}\n\n// freePorts return the available ports based on the number of requested ports.\nfunc freePorts(n int) ([]string, error) {\n\tcloseFns := make([]func() error, n)\n\tports := make([]string, n)\n\tfor i := 0; i < n; i++ {\n\t\t_, port, closeFn, err := network.FreeTCPAddr()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tports[i] = port\n\t\tcloseFns[i] = closeFn\n\t}\n\tfor _, closeFn := range closeFns {\n\t\tif err := closeFn(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn ports, nil\n}\n\n// TCPToHTTP converts a TCP address to HTTP address.\nfunc TCPToHTTP(tcpAddr string) string {\n\treturn strings.Replace(tcpAddr, \"tcp://\", \"http://\", 1)\n}\n"
  },
  {
    "path": "testutil/nullify/nullify.go",
    "content": "// Package nullify provides methods to init nil values structs for test assertion.\npackage nullify\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar (\n\tcoinType  = reflect.TypeOf(sdk.Coin{})\n\tcoinsType = reflect.TypeOf(sdk.Coins{})\n)\n\n// Fill analyze all struct fields and slices with\n// reflection and initialize the nil and empty slices,\n// structs, and pointers.\nfunc Fill(x interface{}) interface{} {\n\tv := reflect.Indirect(reflect.ValueOf(x))\n\tswitch v.Kind() {\n\tcase reflect.Slice:\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tobj := v.Index(i)\n\t\t\tobjPt := reflect.NewAt(obj.Type(), unsafe.Pointer(obj.UnsafeAddr())).Interface()\n\t\t\tobjPt = Fill(objPt)\n\t\t\tobj.Set(reflect.ValueOf(objPt))\n\t\t}\n\tcase reflect.Struct:\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tf := reflect.Indirect(v.Field(i))\n\t\t\tif !f.CanSet() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tswitch f.Kind() {\n\t\t\tcase reflect.Slice:\n\t\t\t\tf.Set(reflect.MakeSlice(f.Type(), 0, 0))\n\t\t\tcase reflect.Struct:\n\t\t\t\tswitch f.Type() {\n\t\t\t\tcase coinType:\n\t\t\t\t\tcoin := reflect.New(coinType).Interface()\n\t\t\t\t\ts := reflect.ValueOf(coin).Elem()\n\t\t\t\t\tf.Set(s)\n\t\t\t\tcase coinsType:\n\t\t\t\t\tcoins := reflect.New(coinsType).Interface()\n\t\t\t\t\ts := reflect.ValueOf(coins).Elem()\n\t\t\t\t\tf.Set(s)\n\t\t\t\tdefault:\n\t\t\t\t\tobjPt := reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Interface()\n\t\t\t\t\ts := Fill(objPt)\n\t\t\t\t\tf.Set(reflect.ValueOf(s))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn reflect.Indirect(v).Interface()\n}\n"
  },
  {
    "path": "testutil/sample/sample.go",
    "content": "package sample\n\nimport (\n\t\"github.com/cometbft/cometbft/crypto/secp256k1\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// AccAddress returns a sample account address\nfunc AccAddress() string {\n\tpk := ed25519.GenPrivKey().PubKey()\n\taddr := pk.Address()\n\treturn sdk.AccAddress(addr).String()\n}\n\n// RandomAccAddress returns a sample account address\nfunc RandomAccAddress() sdk.AccAddress {\n\tpk := ed25519.GenPrivKey().PubKey()\n\tpkAddr := pk.Address()\n\taccAddr := sdk.AccAddress(pkAddr)\n\treturn accAddr\n}\n\n// RandomValAddress generates a random ValidatorAddress for simulation\nfunc RandomValAddress() sdk.ValAddress {\n\tvalPub := secp256k1.GenPrivKey().PubKey()\n\treturn sdk.ValAddress(valPub.Address())\n}\n"
  },
  {
    "path": "testutil/utils.go",
    "content": "package test\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/math\"\n\ttxsigning \"cosmossdk.io/x/tx/signing\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\taddresscodec \"github.com/cosmos/cosmos-sdk/codec/address\"\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocodec \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/tx\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/cosmos/gogoproto/proto\"\n\t\"github.com/stretchr/testify/require\"\n\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\ntype EncodingConfig struct {\n\tInterfaceRegistry types.InterfaceRegistry\n\tCodec             codec.Codec\n\tTxConfig          client.TxConfig\n\tAmino             *codec.LegacyAmino\n}\n\n// CreateTestValidator creates a validator for testing purposes.\nfunc CreateTestValidator(\n\tt *testing.T,\n\tctx sdk.Context,\n\tstakingKeeper *stakingkeeper.Keeper,\n\toperatorAddress sdk.ValAddress,\n\tpubKey cryptotypes.PubKey,\n\tbondAmount math.Int,\n) stakingtypes.Validator {\n\n\tdescription := stakingtypes.NewDescription(\n\t\t\"TestSourceValidator\",\n\t\t\"mysterious_identity\",\n\t\t\"unknown_website\",\n\t\t\"suspicious_security_contact\",\n\t\t\"missing_details\",\n\t)\n\n\tcommission := stakingtypes.NewCommission(\n\t\tmath.LegacyMustNewDecFromStr(\"0.1\"),  // commission rate\n\t\tmath.LegacyMustNewDecFromStr(\"0.2\"),  // max commission rate\n\t\tmath.LegacyMustNewDecFromStr(\"0.01\"), // max change rate\n\t)\n\n\tvalidator, err := stakingtypes.NewValidator(operatorAddress.String(), pubKey, description)\n\trequire.NoError(t, err)\n\n\tvalidator.Commission = commission\n\tvalidator.Status = stakingtypes.Bonded\n\tvalidator.Tokens = bondAmount\n\tstakingKeeper.SetValidator(ctx, validator)\n\n\treturn validator\n}\n\n// CreateTestEncodingConfig creates encoding configuration for testing purposes.\nfunc CreateTestEncodingConfig() EncodingConfig {\n\tinterfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{\n\t\tProtoFiles: proto.HybridResolver,\n\t\tSigningOptions: txsigning.Options{\n\t\t\tAddressCodec:          addresscodec.NewBech32Codec(\"source\"),\n\t\t\tValidatorAddressCodec: addresscodec.NewBech32Codec(\"sourcevaloper\"),\n\t\t},\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tbanktypes.RegisterInterfaces(interfaceRegistry)\n\tcryptocodec.RegisterInterfaces(interfaceRegistry)\n\tstakingtypes.RegisterInterfaces(interfaceRegistry)\n\tauthtypes.RegisterInterfaces(interfaceRegistry)\n\tdistrtypes.RegisterInterfaces(interfaceRegistry)\n\n\tprotoCodec := codec.NewProtoCodec(interfaceRegistry)\n\n\treturn EncodingConfig{\n\t\tInterfaceRegistry: interfaceRegistry,\n\t\tCodec:             protoCodec,\n\t\tTxConfig:          tx.NewTxConfig(protoCodec, tx.DefaultSignModes),\n\t\tAmino:             codec.NewLegacyAmino(),\n\t}\n}\n"
  },
  {
    "path": "tools/tools.go",
    "content": "//go:build tools\n\npackage tools\n\nimport (\n\t_ \"github.com/bufbuild/buf/cmd/buf\"\n\t_ \"github.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar\"\n\t_ \"github.com/cosmos/gogoproto/protoc-gen-gocosmos\"\n\t_ \"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway\"\n\t_ \"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2\"\n\t_ \"golang.org/x/tools/cmd/goimports\"\n\t_ \"google.golang.org/grpc/cmd/protoc-gen-go-grpc\"\n\t_ \"google.golang.org/protobuf/cmd/protoc-gen-go\"\n)\n"
  },
  {
    "path": "types/constants.go",
    "content": "package types\n\nconst AccountAddrPrefix = \"source\"\n"
  },
  {
    "path": "types/utils.go",
    "content": "package types\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// IsValidSourceHubAddr verifies whether addr is a valid bech32 prefixed by\n// SourceHub's prefix\nfunc IsValidSourceHubAddr(addr string) error {\n\tbz, err := sdk.GetFromBech32(addr, AccountAddrPrefix)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = sdk.VerifyAddressFormat(bz)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// AccAddressFromBech32 returns an AccAddress from a Bech32 SourceHub address string\nfunc AccAddressFromBech32(address string) (addr sdk.AccAddress, err error) {\n\tif len(strings.TrimSpace(address)) == 0 {\n\t\treturn sdk.AccAddress{}, errors.New(\"empty address string is not allowed\")\n\t}\n\n\tbz, err := sdk.GetFromBech32(address, AccountAddrPrefix)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = sdk.VerifyAddressFormat(bz)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sdk.AccAddress(bz), nil\n}\n"
  },
  {
    "path": "utils/functional.go",
    "content": "package utils\n\nimport \"fmt\"\n\n// MapSlice produces a new slice from a slice of elements and a mapping function\nfunc MapSlice[T any, U any](ts []T, mapper func(T) U) []U {\n\tus := make([]U, 0, len(ts))\n\n\tfor _, t := range ts {\n\t\tu := mapper(t)\n\t\tus = append(us, u)\n\t}\n\n\treturn us\n}\n\n// MapFailableSlice maps a slice using a mapping function which may fail.\n// Returns upon all elements are mapped or terminates upon the first mapping error.\nfunc MapFailableSlice[T any, U any](ts []T, mapper func(T) (U, error)) ([]U, error) {\n\tus := make([]U, 0, len(ts))\n\n\tfor i, t := range ts {\n\t\tu, err := mapper(t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"slice elem %v: %w\", i, err)\n\t\t}\n\t\tus = append(us, u)\n\t}\n\n\treturn us, nil\n}\n\n// MapNullableSlice produces a new slice of elements from a slice of pointers, excluding 'nil' elements.\nfunc MapNullableSlice[T any, U any](ts []*T, mapper func(*T) U) []U {\n\tus := make([]U, 0, len(ts))\n\n\tfor _, t := range ts {\n\t\tif t != nil {\n\t\t\tu := mapper(t)\n\t\t\tus = append(us, u)\n\t\t}\n\t}\n\n\treturn us\n}\n"
  },
  {
    "path": "utils/glob.go",
    "content": "package utils\n\n// credit: https://github.com/ryanuber/go-glob/blob/master/glob.go\nimport \"strings\"\n\n// The character which is treated like a glob\nconst GLOB = \"*\"\n\n// Glob will test a string pattern, potentially containing globs, against a\n// subject string. The result is a simple true/false, determining whether or\n// not the glob pattern matched the subject text.\nfunc Glob(pattern, subj string) bool {\n\t// Empty pattern can only match empty subject\n\tif pattern == \"\" {\n\t\treturn subj == pattern\n\t}\n\n\t// If the pattern _is_ a glob, it matches everything\n\tif pattern == GLOB {\n\t\treturn true\n\t}\n\n\tparts := strings.Split(pattern, GLOB)\n\n\tif len(parts) == 1 {\n\t\t// No globs in pattern, so test for equality\n\t\treturn subj == pattern\n\t}\n\n\tleadingGlob := strings.HasPrefix(pattern, GLOB)\n\ttrailingGlob := strings.HasSuffix(pattern, GLOB)\n\tend := len(parts) - 1\n\n\t// Go over the leading parts and ensure they match.\n\tfor i := 0; i < end; i++ {\n\t\tidx := strings.Index(subj, parts[i])\n\n\t\tswitch i {\n\t\tcase 0:\n\t\t\t// Check the first section. Requires special handling.\n\t\t\tif !leadingGlob && idx != 0 {\n\t\t\t\treturn false\n\t\t\t}\n\t\tdefault:\n\t\t\t// Check that the middle parts match.\n\t\t\tif idx < 0 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\t// Trim evaluated text from subj as we loop over the pattern.\n\t\tsubj = subj[idx+len(parts[i]):]\n\t}\n\n\t// Reached the last section. Requires special handling.\n\treturn trailingGlob || strings.HasSuffix(subj, parts[end])\n}\n"
  },
  {
    "path": "utils/sort.go",
    "content": "package utils\n\nimport (\n\t\"sort\"\n)\n\nvar _ sort.Interface = (*Sortable[any])(nil)\n\ntype Ordered interface {\n\t~int | ~int8 | ~int16 | ~int32 | ~int64 | ~float32 | ~float64 | ~string | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr\n}\n\n// Sortable wraps a slice of values with a type that implements sort.Interface.\ntype Sortable[T any] struct {\n\tts         []T\n\tcomparator Comparator[T]\n}\n\n// Extractor extracts an Ordered value from a type T\ntype Extractor[T any, K Ordered] func(T) K\n\n// Comparator is a function which compares whether left is less than right\n// returns true if it is else false\ntype Comparator[T any] func(left, right T) bool\n\n// FromExtractor builds a Sortable from a slice of values and an extractor function.\n// The extractor function extracts an Ordered value from the slice elements which is used as the comparassion value.\n//\n// eg. suppose T represents a Person, the extractor function:\n// func (p *Person) string { return p.Name }\n// would be used to sort all Persons in the slice by their Name.\nfunc FromExtractor[T any, K Ordered](vals []T, extractor Extractor[T, K]) Sortable[T] {\n\tcomparator := func(left, right T) bool {\n\t\treturn extractor(left) < extractor(right)\n\t}\n\n\treturn Sortable[T]{\n\t\tts:         vals,\n\t\tcomparator: comparator,\n\t}\n}\n\n// FromComparator creates a Sortable from a comparator function which takes two instances of T and returns\n// whether left is less than right\nfunc FromComparator[T any](vals []T, comparator Comparator[T]) Sortable[T] {\n\treturn Sortable[T]{\n\t\tts:         vals,\n\t\tcomparator: comparator,\n\t}\n}\n\nfunc (s *Sortable[T]) Len() int {\n\treturn len(s.ts)\n}\n\nfunc (s *Sortable[T]) Swap(i, j int) {\n\ts.ts[i], s.ts[j] = s.ts[j], s.ts[i]\n}\n\nfunc (s *Sortable[T]) Less(i, j int) bool {\n\tti, tj := s.ts[i], s.ts[j]\n\treturn s.comparator(ti, tj)\n}\n\n// SortInPlace sorts the original slice supplied when the Sortable was initialized\nfunc (s Sortable[T]) SortInPlace() {\n\tsort.Stable(&s)\n}\n\n// Sort returns a sorted slice of the elements given originally\nfunc (s Sortable[T]) Sort() []T {\n\tvals := make([]T, 0, len(s.ts))\n\tcopy(vals, s.ts)\n\tsortable := Sortable[T]{\n\t\tts:         vals,\n\t\tcomparator: s.comparator,\n\t}\n\tsortable.SortInPlace()\n\treturn vals\n}\n\n// SortSlice performs an inplace sort of a Slice of Ordered elements\nfunc SortSlice[T Ordered](elems []T) {\n\tsortable := Sortable[T]{\n\t\tts: elems,\n\t\t//comparator: comparator,\n\t\tcomparator: func(left T, right T) bool { return left < right },\n\t}\n\tsortable.SortInPlace()\n}\n"
  },
  {
    "path": "utils/span.go",
    "content": "package utils\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nconst spanEventType = \"msg_span\"\n\ntype spanCtxKeyType struct{}\n\nvar spanCtxKey spanCtxKeyType = struct{}{}\n\n// MsgSpan is a container for execution data generated during the processing of a Msg\n// MsgSpan is used as tracing data and must not be relied upon by users, it's an introspection tool only.\n// Attributes are not guaranteed to be stable or deterministic\ntype MsgSpan struct {\n\tstart    time.Time\n\tduration time.Duration\n\n\tmessage    string\n\tattributes map[string]string\n}\n\nfunc NewSpan() *MsgSpan {\n\treturn &MsgSpan{\n\t\tstart:      time.Now(),\n\t\tattributes: make(map[string]string),\n\t}\n}\n\nfunc (s *MsgSpan) End() {\n\ts.duration = time.Since(s.start)\n}\n\nfunc (s *MsgSpan) SetMessage(msg string) {\n\ts.message = msg\n}\n\nfunc (s *MsgSpan) Attr(key, value string) {\n\ts.attributes[key] = value\n}\n\nfunc (s *MsgSpan) ToEvent() sdk.Event {\n\tvar attrs []sdk.Attribute\n\tattrs = append(attrs, sdk.NewAttribute(\"start\", s.start.String()))\n\tattrs = append(attrs, sdk.NewAttribute(\"duration\", s.duration.String()))\n\tif s.message != \"\" {\n\t\tattrs = append(attrs, sdk.NewAttribute(\"message\", s.message))\n\t}\n\n\tfor key, value := range s.attributes {\n\t\tattrs = append(attrs, sdk.NewAttribute(key, value))\n\t}\n\n\treturn sdk.NewEvent(spanEventType, attrs...)\n}\n\n// WithMsgSpan returns a new Context with an initialized MsgSpan\nfunc WithMsgSpan(ctx sdk.Context) sdk.Context {\n\tgoCtx := ctx.Context()\n\tgoCtx = context.WithValue(goCtx, spanCtxKey, NewSpan())\n\treturn ctx.WithContext(goCtx)\n}\n\nfunc GetMsgSpan(ctx sdk.Context) *MsgSpan {\n\treturn ctx.Context().Value(spanCtxKey).(*MsgSpan)\n}\n\n// FinalizeSpan ends the span duration frame, transforms it into an SDK Event and emits it using the event manager\nfunc FinalizeSpan(ctx sdk.Context) {\n\tevent := GetMsgSpan(ctx).ToEvent()\n\tctx.EventManager().EmitEvent(event)\n}\n"
  },
  {
    "path": "x/acp/BSL.txt",
    "content": "Business Source License 1.1\n\n\nParameters\n\n\nLicensor:                   Democratized Data (D2) Foundation\n\n\nLicensed Work:              SourceHub ACP Module v0.1.0\n                            The Licensed Work is (c) 2024 D2 Foundation.\n\n\nAdditional Use Grant:       You may only use the Licensed Work for the \n                            following conditions\n                            \n                            For an application that is connected  to the \n                            SourceHub network (mainnet or testnet) or \n                            another protocol connected  to the SourceHub \n                            by way of the Inter-Blockchain Communication \n                            (IBC) protocol. \n\n                            A non-profit project in both a production and\n                            pre-production state.\n\n                            A for-profit project in a pre-production state\n                            only.\n\n                            \n\n\nChange Date:                2028-01-10\n\n\nChange License:             Apache License, Version 2.0\n\n\nFor information about alternative licensing arrangements for the Software,\nplease contact us: license@source.network\n\n\nNotice\n\n\nThe Business Source License (this document, or the “License”) is not an Open\nSource license. However, the Licensed Work will eventually be made available\nunder an Open Source License, as stated in this License.\n\n\nLicense text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.\n“Business Source License” is a trademark of MariaDB Corporation Ab.\n\n\n-----------------------------------------------------------------------------\n\n\nBusiness Source License 1.1\n\n\nTerms\n\n\nThe Licensor hereby grants you the right to copy, modify, create derivative\nworks, redistribute, and make non-production use of the Licensed Work. The\nLicensor may make an Additional Use Grant, above, permitting limited\nproduction use.\n\n\nEffective on the Change Date, or the fourth anniversary of the first publicly\navailable distribution of a specific version of the Licensed Work under this\nLicense, whichever comes first, the Licensor hereby grants you rights under\nthe terms of the Change License, and the rights granted in the paragraph\nabove terminate.\n\n\nIf your use of the Licensed Work does not comply with the requirements\ncurrently in effect as described in this License, you must purchase a\ncommercial license from the Licensor, its affiliated entities, or authorized\nresellers, or you must refrain from using the Licensed Work.\n\n\nAll copies of the original and modified Licensed Work, and derivative works\nof the Licensed Work, are subject to this License. This License applies\nseparately for each version of the Licensed Work and the Change Date may vary\nfor each version of the Licensed Work released by Licensor.\n\n\nYou must conspicuously display this License on each original or modified copy\nof the Licensed Work. If you receive the Licensed Work in original or\nmodified form from a third party, the terms and conditions set forth in this\nLicense apply to your use of that work.\n\n\nAny use of the Licensed Work in violation of this License will automatically\nterminate your rights under this License for the current and all other\nversions of the Licensed Work.\n\n\nThis License does not grant you any right in any trademark or logo of\nLicensor or its affiliates (provided that you may use a trademark or logo of\nLicensor as expressly required by this License).\n\n\nTO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON \nAN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, \nEXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF \nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND \nTITLE.\n\n\nMariaDB hereby grants you permission to use this License’s text to license\nyour works, and to refer to it using the trademark “Business Source License”,\nas long as you comply with the Covenants of Licensor below.\n\n\nCovenants of Licensor\n\n\nIn consideration of the right to use this License’s text and the “Business\nSource License” name and trademark, Licensor covenants to MariaDB, and to all \nother recipients of the licensed work to be provided by Licensor:\n\n\n1. To specify as the Change License the GPL Version 2.0 or any later version, \nor a license that is compatible with GPL Version 2.0 or a later version, \nwhere “compatible” means that software provided under the Change License can \nbe included in a program with software provided under GPL Version 2.0 or a \nlater version. Licensor may specify additional Change Licenses without \nlimitation.\n\n\n2. To either: (a) specify an additional grant of rights to use that does not \nimpose any additional restriction on the right granted in this License, as \nthe Additional Use Grant; or (b) insert the text “None”.\n\n\n3. To specify a Change Date.\n\n\n4. Not to modify this License in any other way.\n\n-----------------------------------------------------------------------------\n\n"
  },
  {
    "path": "x/acp/abci/abci_service.go",
    "content": "package access_ticket\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\t\"github.com/cometbft/cometbft/rpc/client\"\n\t\"github.com/cometbft/cometbft/rpc/client/http\"\n\tbfttypes \"github.com/cometbft/cometbft/types\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst (\n\tabciSocketPath string = \"/websocket\"\n)\n\n// IAVL Store Queries expect the query to contain \"key\" as suffix to the Path\nconst iavlQuerySuffix = \"key\"\n\nfunc NewABCIService(addr string) (ABCIService, error) {\n\tclient, err := http.New(addr, abciSocketPath)\n\tif err != nil {\n\t\treturn ABCIService{}, err\n\t}\n\n\treturn ABCIService{\n\t\taddr:       addr,\n\t\tclient:     client,\n\t\tkeyBuilder: keyBuilder{},\n\t}, nil\n}\n\n// ABCIService performs an ABCI calls over a trusted node\ntype ABCIService struct {\n\taddr       string\n\tclient     *http.HTTP\n\tkeyBuilder keyBuilder\n}\n\n// Query a CometBFT node through the ABCI query method for an AccessDecision with decisionId.\n// set prove true to return a query proof\n// height corresponds to the height of the block at which the proof is required, set 0 to use the latest block\nfunc (s *ABCIService) QueryDecision(ctx context.Context, decisionId string, prove bool, height int64) (*abcitypes.ResponseQuery, error) {\n\topts := client.ABCIQueryOptions{\n\t\tHeight: height,\n\t\tProve:  prove,\n\t}\n\tpath := s.keyBuilder.ABCIQueryPath()\n\tkey := s.keyBuilder.ABCIQueryKey(decisionId)\n\tres, err := s.client.ABCIQueryWithOptions(ctx, path, key, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif res.Response.Value == nil {\n\t\treturn nil, fmt.Errorf(\"decision %v: %w\", decisionId, ErrDecisionNotFound)\n\t}\n\n\treturn &res.Response, nil\n}\n\n// GetCurrentHeight returns the current height of a node\nfunc (s *ABCIService) GetCurrentHeight(ctx context.Context) (uint64, error) {\n\tresp, err := s.client.ABCIInfo(ctx)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"%w: %v\", ErrExternal, err)\n\t}\n\n\treturn uint64(resp.Response.LastBlockHeight), nil\n}\n\n// GetBlockHeader returns the block header at the given height\nfunc (s *ABCIService) GetBlockHeader(ctx context.Context, height int64) (bfttypes.Header, error) {\n\tresp, err := s.client.Block(ctx, &height)\n\tif err != nil {\n\t\treturn bfttypes.Header{}, fmt.Errorf(\"%w: %v\", ErrExternal, err)\n\t}\n\n\treturn resp.Block.Header, nil\n}\n\n// keyBuilder builds keys to execute ABCI queries for AccessDecisions\ntype keyBuilder struct{}\n\n// ABCIQueryKey returns the Key part to be used in an ABCIQuery\nfunc (b *keyBuilder) ABCIQueryKey(decisionId string) []byte {\n\treturn []byte(types.AccessDecisionRepositoryKeyPrefix + decisionId)\n}\n\n// KVKey returns the actual key used in the Cosmos app store.\n// note this key contains the prefix from the root commit multistore and the IAVL store with prefixes\nfunc (b *keyBuilder) KVKey(decisionId string) []byte {\n\treturn []byte(\"/\" + types.ModuleName + \"/\" + types.AccessDecisionRepositoryKeyPrefix + decisionId)\n}\n\n// ABCIQueryPath returns the Query Path for a query issued to the ACP module\nfunc (b *keyBuilder) ABCIQueryPath() string {\n\t// Figuring out how to issue an ABCI query to a Cosmos app is a mess.\n\t// The request goes through to Tendermint and is sent straight to the application (ie cosmos base app),\n\t// it then goes through a multiple store layers, each with requirements for the key and none of which are documented.\n\t//\n\t// The entrypoint in baseapp itself.\n\t// The BaseApp can accept a set of prefixes and do different things with it,\n\t// for store state proofs it expects a \"/store\" prefix.\n\t// see cosmos/cosmos-sdk/baseapp/abci.go\n\t//\n\t// The request is then dispatched to the commit multi store.\n\t// The CMS dispatches the request to one of the substores using the substore name.\n\t// In our case the ACP module name.\n\t// see cosmos/cosmos-sdk/store/rootmulti/store.go\n\t//\n\t// It then goes to a IAVL store, the IAVL store expects keys to have a\n\t// \"/key\" suffix as part of the ABCI query path.\n\t// see cosmos/cosmos-sdk/store/iavl/store.go\n\t// IAVL is the last layer to process the Key field in the request. Now it's only the Data part.\n\t//\n\t// For the Data part it's necessary to figure out which prefix stores have been added to the mix but that's more straight forward.\n\n\treturn \"/\" + baseapp.QueryPathStore + \"/\" + types.ModuleName + \"/\" + iavlQuerySuffix\n}\n"
  },
  {
    "path": "x/acp/abci/errors.go",
    "content": "package access_ticket\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\nvar (\n\t// ErrExternal represents an error in an external system,\n\t// which means the validation procedure can be retried\n\tErrExternal error = errors.New(\"external error\")\n\n\tErrInvalidInput     = errors.New(\"invalid input\")\n\tErrDecisionNotFound = fmt.Errorf(\"decision not found: %w\", ErrInvalidInput)\n)\n"
  },
  {
    "path": "x/acp/access_decision/commands.go",
    "content": "package access_decision\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdktypes \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// DefaultExpirationDelta sets the number of blocks a Decision is valid for\nconst DefaultExpirationDelta uint64 = 100\n\ntype EvaluateAccessRequestsCommand struct {\n\tPolicy     *coretypes.Policy\n\tOperations []*coretypes.Operation\n\tActor      string\n\n\tCreationTime *types.Timestamp\n\n\t// Creator is the same as the Tx signer\n\tCreator sdktypes.AccountI\n\n\t// Current block height\n\tCurrentHeight uint64\n\n\tparams *types.DecisionParams\n}\n\nfunc (c *EvaluateAccessRequestsCommand) Execute(ctx context.Context, engine coretypes.ACPEngineServer, repository Repository, paramsRepo ParamsRepository) (*types.AccessDecision, error) {\n\terr := c.validate()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EvaluateAccessRequest: %w\", err)\n\t}\n\n\terr = c.evaluateRequest(ctx, engine)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EvaluateAccessRequest: %w\", err)\n\t}\n\n\tc.params, err = paramsRepo.GetDefaults(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EvaluateAccessRequest: %w\", err)\n\t}\n\n\tdecision := c.buildDecision()\n\n\terr = repository.Set(ctx, decision)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EvaluateAccessRequest: %w\", err)\n\t}\n\n\treturn decision, nil\n}\n\nfunc (c *EvaluateAccessRequestsCommand) validate() error {\n\tif c.Policy == nil {\n\t\treturn errors.New(\"policy cannot be nil\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\tif c.Operations == nil {\n\t\treturn errors.New(\"access request cannot be nil\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\tif c.CurrentHeight == 0 {\n\t\treturn errors.New(\"invalid height: must be nonzero positive number\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\treturn nil\n}\n\nfunc (c *EvaluateAccessRequestsCommand) evaluateRequest(ctx context.Context, engine coretypes.ACPEngineServer) error {\n\toperations := utils.MapSlice(c.Operations, func(op *coretypes.Operation) *coretypes.Operation {\n\t\treturn &coretypes.Operation{\n\t\t\tObject:     op.Object,\n\t\t\tPermission: op.Permission,\n\t\t}\n\t})\n\tresp, err := engine.VerifyAccessRequest(ctx, &coretypes.VerifyAccessRequestRequest{\n\t\tPolicyId: c.Policy.Id,\n\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\tOperations: operations,\n\t\t\tActor: &coretypes.Actor{\n\t\t\t\tId: c.Actor,\n\t\t\t},\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !resp.Valid {\n\t\treturn errors.ErrorType_UNAUTHORIZED\n\t}\n\n\treturn nil\n}\n\nfunc (c *EvaluateAccessRequestsCommand) buildDecision() *types.AccessDecision {\n\tdecision := &types.AccessDecision{\n\t\tPolicyId:           c.Policy.Id,\n\t\tParams:             c.params,\n\t\tCreationTime:       c.CreationTime,\n\t\tOperations:         c.Operations,\n\t\tIssuedHeight:       c.CurrentHeight,\n\t\tActor:              c.Actor,\n\t\tCreator:            c.Creator.GetAddress().String(),\n\t\tCreatorAccSequence: c.Creator.GetSequence(),\n\t}\n\tdecision.Id = decision.ProduceId()\n\treturn decision\n}\n"
  },
  {
    "path": "x/acp/access_decision/commands_test.go",
    "content": "package access_decision\n\n/*\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/auth_engine\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/policy\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar timestamp = testutil.MustDateTimeToProto(\"2023-07-26 14:08:30\")\n\nfunc setupEvaluateAccessRequest(t *testing.T) (context.Context, auth_engine.AuthEngine, Repository, ParamsRepository, *types.Policy) {\n\tpolStr := `\n    id: unregister-pol\n    resources:\n      file:\n        permissions:\n          read:\n            expr: owner + reader + admin\n        relations:\n          owner:\n            types:\n              - actor\n          reader:\n            types:\n              - actor\n              - file->reader\n          admin:\n            manages:\n              - reader\n            types:\n              - actor\n\n    actor:\n      name: actor\n    `\n\tpolIR, err := policy.Unmarshal(polStr, types.PolicyMarshalingType_YAML)\n\trequire.Nil(t, err)\n\n\tengine, _, ctx := testutil.GetTestAuthEngine(t)\n\n\tcreateCmd := policy.CreatePolicyCommand{\n\t\tPolicy:       polIR,\n\t\tCreator:      \"cosmos1gue5de6a8fdff0jut08vw5sg9pk6rr00cstakj\",\n\t\tCreationTime: timestamp,\n\t}\n\tdb := dbm.NewMemDB()\n\tpol, err := createCmd.Execute(ctx, db, engine)\n\trequire.Nil(t, err)\n\n\t_, err = engine.SetRelationship(ctx, pol, &types.RelationshipRecord{\n\t\tRelationship: types.NewActorRelationship(\"file\", \"readme.txt\", \"owner\", \"alice\"),\n\t\tArchived:     false,\n\t\tCreator:      \"alice\",\n\t})\n\trequire.Nil(t, err)\n\n\t_, err = engine.SetRelationship(ctx, pol, &types.RelationshipRecord{\n\t\tRelationship: types.NewActorRelationship(\"file\", \"alice.txt\", \"owner\", \"alice\"),\n\t\tArchived:     false,\n\t\tCreator:      \"alice\",\n\t})\n\trequire.Nil(t, err)\n\n\t_, err = engine.SetRelationship(ctx, pol, &types.RelationshipRecord{\n\t\tRelationship: types.NewActorRelationship(\"file\", \"readme.txt\", \"reader\", \"bob\"),\n\t\tArchived:     false,\n\t\tCreator:      \"alice\",\n\t})\n\trequire.Nil(t, err)\n\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tdb = dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\tkv := stateStore.GetCommitKVStore(storeKey)\n\trequire.NotNil(t, kv)\n\trepository := NewAccessDecisionRepository(kv)\n\n\tparamRepo := &StaticParamsRepository{}\n\treturn ctx, engine, repository, paramRepo, pol\n}\n\n\nfunc TestEvaluateAccessRequest_GeneratesAccessDecisionWhenActorIsAuthorized(t *testing.T) {\n\tctx, engine, repo, paramRepo, pol := setupEvaluateAccessRequest(t)\n\n\tcmd := EvaluateAccessRequestsCommand{\n\t\tPolicy: pol,\n        Operations: []*types.Operation{\n            &types.Operation{\n                Object:     types.NewObject(\"file\", \"readme.txt\"),\n                Permission: \"read\",\n            },\n        },\n        Actor: &types.Actor{\n            Id: \"bob\",\n        },\n\t\tCreationTime:  timestamp,\n\t\tCreator:       \"creator\",\n\t\tCurrentHeight: 1,\n\t}\n\tdecision, err := cmd.Execute(ctx, engine, repo, paramRepo)\n\n\twant := &types.AccessDecision{\n\t\tId:            \"837adcadec6abc793fea5819330d54c568a1d2f7989c7363b2ecb3fd88636756\",\n\t\tAccessRequest: cmd.AccessRequest,\n\t\tParams: &types.DecisionParams{\n\t\t\tExpirationHeightDelta: 100,\n\t\t},\n\t\tCreationTime: timestamp,\n\t\tIssuedHeight: 1,\n\t\tCreator:      \"creator\",\n\t}\n\trequire.Nil(t, err)\n\trequire.Equal(t, decision, want)\n}\n\nfunc TestEvaluateAccessRequest_ReturnsUnauthorizedErrorWhenActorIsNotAllowedSomeOperation(t *testing.T) {\n\tctx, engine, repo, paramRepo, pol := setupEvaluateAccessRequest(t)\n\n\tcmd := EvaluateAccessRequestsCommand{\n\t\tPolicy: pol,\n\t\tAccessRequest: &types.AccessRequest{\n\t\t\tOperations: []*types.Operation{\n\t\t\t\t&types.Operation{\n\t\t\t\t\tObject:     types.NewObject(\"file\", \"readme.txt\"),\n\t\t\t\t\tPermission: \"read\",\n\t\t\t\t},\n\t\t\t\t&types.Operation{\n\t\t\t\t\tObject:     types.NewObject(\"file\", \"alice.txt\"),\n\t\t\t\t\tPermission: \"read\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tActor: &types.Actor{\n\t\t\t\tId: \"bob\",\n\t\t\t},\n\t\t},\n\t\tCreationTime:  timestamp,\n\t\tCreator:       \"creator\",\n\t\tCurrentHeight: 1,\n\t}\n\tdecision, err := cmd.Execute(ctx, engine, repo, paramRepo)\n\n\trequire.Nil(t, decision)\n\trequire.ErrorIs(t, err, types.ErrNotAuthorized)\n}\n\n*/\n"
  },
  {
    "path": "x/acp/access_decision/params_repository.go",
    "content": "package access_decision\n\nimport (\n\t\"context\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ ParamsRepository = (*StaticParamsRepository)(nil)\n\n// defaultExpirationDelta sets the number of blocks a Decision is valid for\nconst defaultExpirationDelta uint64 = 100\nconst defaultProofExpirationDelta uint64 = 50\n\ntype StaticParamsRepository struct{}\n\nfunc (r *StaticParamsRepository) GetDefaults(ctx context.Context) (*types.DecisionParams, error) {\n\treturn &types.DecisionParams{\n\t\tDecisionExpirationDelta: defaultExpirationDelta,\n\t\tTicketExpirationDelta:   defaultExpirationDelta,\n\t\tProofExpirationDelta:    defaultProofExpirationDelta,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/access_decision/repository.go",
    "content": "package access_decision\n\nimport (\n\t\"context\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\traccoon \"github.com/sourcenetwork/raccoondb\"\n\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/stores\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype AccessDecisionRepository struct {\n\tkv storetypes.KVStore\n}\n\nfunc NewAccessDecisionRepository(store storetypes.KVStore) *AccessDecisionRepository {\n\treturn &AccessDecisionRepository{\n\t\tkv: store,\n\t}\n}\n\nfunc (r *AccessDecisionRepository) getStore(_ context.Context) raccoon.ObjectStore[*types.AccessDecision] {\n\trcKV := stores.RaccoonKVFromCosmos(r.kv)\n\tmarshaler := stores.NewGogoProtoMarshaler(func() *types.AccessDecision { return &types.AccessDecision{} })\n\tider := &decisionIder{}\n\treturn raccoon.NewObjStore(rcKV, marshaler, ider)\n}\n\nfunc (r *AccessDecisionRepository) wrapErr(err error) error {\n\tif err == nil {\n\t\treturn err\n\t}\n\n\treturn errors.New(err.Error(), errors.ErrorType_INTERNAL)\n}\n\nfunc (r *AccessDecisionRepository) Set(ctx context.Context, decision *types.AccessDecision) error {\n\tstore := r.getStore(ctx)\n\terr := store.SetObject(decision)\n\treturn r.wrapErr(err)\n}\n\nfunc (r *AccessDecisionRepository) Get(ctx context.Context, id string) (*types.AccessDecision, error) {\n\tstore := r.getStore(ctx)\n\topt, err := store.GetObject([]byte(id))\n\tvar obj *types.AccessDecision\n\tif !opt.IsEmpty() {\n\t\tobj = opt.Value()\n\t}\n\treturn obj, r.wrapErr(err)\n}\n\nfunc (r *AccessDecisionRepository) Delete(ctx context.Context, id string) error {\n\tstore := r.getStore(ctx)\n\terr := store.DeleteById([]byte(id))\n\treturn r.wrapErr(err)\n}\n\nfunc (r *AccessDecisionRepository) ListIds(ctx context.Context) ([]string, error) {\n\tstore := r.getStore(ctx)\n\tbytesIds, err := store.ListIds()\n\tids := utils.MapSlice(bytesIds, func(bytes []byte) string { return string(bytes) })\n\treturn ids, r.wrapErr(err)\n}\n\nfunc (r *AccessDecisionRepository) List(ctx context.Context) ([]*types.AccessDecision, error) {\n\tstore := r.getStore(ctx)\n\tobjs, err := store.List()\n\treturn objs, r.wrapErr(err)\n}\n\ntype decisionIder struct{}\n\nfunc (i *decisionIder) Id(decision *types.AccessDecision) []byte {\n\treturn []byte(decision.Id)\n}\n"
  },
  {
    "path": "x/acp/access_decision/types.go",
    "content": "package access_decision\n\nimport (\n\t\"context\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype Repository interface {\n\tSet(ctx context.Context, decision *types.AccessDecision) error\n\n\tGet(ctx context.Context, id string) (*types.AccessDecision, error)\n\n\tDelete(ctx context.Context, id string) error\n\n\t// List of Ids of all Decisions\n\tListIds(ctx context.Context) ([]string, error)\n\n\tList(ctx context.Context) ([]*types.AccessDecision, error)\n}\n\ntype ParamsRepository interface {\n\tGetDefaults(context.Context) (*types.DecisionParams, error)\n}\n"
  },
  {
    "path": "x/acp/access_ticket/abci_service.go",
    "content": "package access_ticket\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\t\"github.com/cometbft/cometbft/rpc/client\"\n\t\"github.com/cometbft/cometbft/rpc/client/http\"\n\tbfttypes \"github.com/cometbft/cometbft/types\"\n)\n\nconst (\n\tabciSocketPath string = \"/websocket\"\n)\n\nfunc NewABCIService(addr string) (abciService, error) {\n\tclient, err := http.New(addr, abciSocketPath)\n\tif err != nil {\n\t\treturn abciService{}, fmt.Errorf(\"%w: %v\", ErrExternal, err)\n\t}\n\n\treturn abciService{\n\t\taddr:       addr,\n\t\tclient:     client,\n\t\tkeyBuilder: keyBuilder{},\n\t}, nil\n}\n\n// abciService performs an ABCI calls over a trusted node\ntype abciService struct {\n\taddr       string\n\tclient     *http.HTTP\n\tkeyBuilder keyBuilder\n}\n\n// Query a CometBFT node through the ABCI query method for an AccessDecision with decisionId.\n// set prove true to return a query proof\n// height corresponds to the height of the block at which the proof is required, set 0 to use the latest block\nfunc (s *abciService) QueryDecision(ctx context.Context, decisionId string, prove bool, height int64) (*abcitypes.ResponseQuery, error) {\n\topts := client.ABCIQueryOptions{\n\t\tHeight: height,\n\t\tProve:  prove,\n\t}\n\tpath := s.keyBuilder.ABCIQueryPath()\n\tkey := s.keyBuilder.ABCIQueryKey(decisionId)\n\tres, err := s.client.ABCIQueryWithOptions(ctx, path, key, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif res.Response.Value == nil {\n\t\treturn nil, fmt.Errorf(\"decision %v: %w\", decisionId, ErrDecisionNotFound)\n\t}\n\n\treturn &res.Response, nil\n}\n\n// GetCurrentHeight returns the current height of a node\nfunc (s *abciService) GetCurrentHeight(ctx context.Context) (int64, error) {\n\tresp, err := s.client.ABCIInfo(ctx)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"%w: %v\", ErrExternal, err)\n\t}\n\n\treturn resp.Response.LastBlockHeight, nil\n}\n\n// GetBlockHeader returns the block header at the given height\nfunc (s *abciService) GetBlockHeader(ctx context.Context, height int64) (bfttypes.Header, error) {\n\tresp, err := s.client.Block(ctx, &height)\n\tif err != nil {\n\t\treturn bfttypes.Header{}, fmt.Errorf(\"%w: %v\", ErrExternal, err)\n\t}\n\n\treturn resp.Block.Header, nil\n}\n"
  },
  {
    "path": "x/acp/access_ticket/errors.go",
    "content": "package access_ticket\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\nvar (\n\t// ErrExternal represents an error in an external system,\n\t// which means the validation procedure can be retried\n\tErrExternal error = errors.New(\"external error\")\n\n\tErrInvalidInput     = errors.New(\"invalid input\")\n\tErrDecisionNotFound = fmt.Errorf(\"decision not found: %w\", ErrInvalidInput)\n\n\t// ErrInvalidTicket flags that the provided AccessTicket is\n\t// invalid and will never be valid.\n\tErrInvalidTicket   error = errors.New(\"invalid AccessTicket\")\n\tErrExpiredDecision       = fmt.Errorf(\"expired decision: %w\", ErrInvalidTicket)\n\tErrExpiredProof          = fmt.Errorf(\"expired proof: %w\", ErrInvalidTicket)\n\tErrExpiredTicket         = fmt.Errorf(\"expired ticket: %w\", ErrInvalidTicket)\n\n\tErrInvalidDecisionProof = fmt.Errorf(\"invalid DecisionProof bytes: %w\", ErrInvalidTicket)\n\tErrdDecisionProofDenied = fmt.Errorf(\"DecisionProof denied: %w\", ErrInvalidTicket)\n\tErrInvalidSignature     = fmt.Errorf(\"invalid signature for ticket: %w\", ErrInvalidTicket)\n\tErrDecisionTampered     = fmt.Errorf(\"AccessDecision fingerprint different from DecisionId: %w\", ErrInvalidTicket)\n)\n"
  },
  {
    "path": "x/acp/access_ticket/issuer_v1.go",
    "content": "package access_ticket\n\nimport (\n\t\"context\"\n\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// TicketIssuer is a responsible for generating Access Tickets\ntype TicketIssuer struct {\n\tabciService *abciService\n\tmarshaler   Marshaler\n\tsigner      signer\n}\n\nfunc NewTicketIssuer(abciService *abciService) TicketIssuer {\n\treturn TicketIssuer{\n\t\tabciService: abciService,\n\t\tmarshaler:   Marshaler{},\n\t\tsigner:      signer{},\n\t}\n}\n\n// Issue fetches an Access Decision from its Id and generates an Access Ticket from it.\nfunc (b *TicketIssuer) IssueRaw(ctx context.Context, decisionId string, privKey cryptotypes.PrivKey) (*types.AccessTicket, error) {\n\tdecision, err := b.retrieveDecision(ctx, decisionId)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tproof, err := b.buildProof(ctx, decisionId)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tticket := &types.AccessTicket{\n\t\tVersionDenominator: types.AccessTicketV1,\n\t\tDecisionId:         decisionId,\n\t\tDecision:           &decision,\n\t\tDecisionProof:      proof,\n\t\tSignature:          nil,\n\t}\n\n\tsignature, err := b.signer.Sign(privKey, ticket)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tticket.Signature = signature\n\n\treturn ticket, nil\n}\n\nfunc (b *TicketIssuer) Issue(ctx context.Context, decisionId string, privKey cryptotypes.PrivKey) (string, error) {\n\tticket, err := b.IssueRaw(ctx, decisionId, privKey)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn b.marshaler.Marshal(ticket)\n}\n\nfunc (b *TicketIssuer) buildProof(ctx context.Context, decisionId string) ([]byte, error) {\n\tdecision, err := b.abciService.QueryDecision(ctx, decisionId, true, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tbytes, err := decision.Marshal()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn bytes, nil\n}\n\n// retrieveDecision uses an ABCI query to get the target decision object\nfunc (b *TicketIssuer) retrieveDecision(ctx context.Context, decisionId string) (types.AccessDecision, error) {\n\tvar decision types.AccessDecision\n\n\t// retrieve a decision without a proof at the latest height\n\tresponse, err := b.abciService.QueryDecision(ctx, decisionId, false, 0)\n\tif err != nil {\n\t\treturn decision, err\n\t}\n\n\terr = decision.Unmarshal(response.Value)\n\tif err != nil {\n\t\treturn decision, err\n\t}\n\n\treturn decision, nil\n}\n"
  },
  {
    "path": "x/acp/access_ticket/signer.go",
    "content": "package access_ticket\n\nimport (\n\t\"crypto/sha256\"\n\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// signer is responsible for generating a Ticket signature and verifying it\ntype signer struct{}\n\nfunc (s *signer) Sign(key cryptotypes.PrivKey, ticket *types.AccessTicket) ([]byte, error) {\n\tdigest := s.hashTicket(ticket)\n\treturn key.Sign(digest)\n}\n\nfunc (s *signer) Verify(key cryptotypes.PubKey, ticket *types.AccessTicket) error {\n\tdigest := s.hashTicket(ticket)\n\tok := key.VerifySignature(digest, ticket.Signature)\n\tif !ok {\n\t\treturn ErrInvalidSignature\n\t}\n\treturn nil\n}\n\n// hashTicket produces a sha256 which uniquely identifies a Ticket.\nfunc (b *signer) hashTicket(ticket *types.AccessTicket) []byte {\n\thasher := sha256.New()\n\n\thasher.Write([]byte(ticket.VersionDenominator))\n\t// NOTE the Decision ID is produced as a Hash of all fields in it.\n\t// It's paramount that this invariant is not violated to ensure the\n\t// safety of the protocol\n\thasher.Write([]byte(ticket.DecisionId))\n\thasher.Write(ticket.DecisionProof)\n\n\treturn hasher.Sum(nil)\n}\n"
  },
  {
    "path": "x/acp/access_ticket/spec.go",
    "content": "package access_ticket\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\t\"github.com/cometbft/cometbft/crypto/merkle\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc NewAccessTicketSpec(serv *abciService, resolver did.Resolver) AccessTicketSpec {\n\treturn AccessTicketSpec{\n\t\tabciService: serv,\n\t\tresolver:    resolver,\n\t\tmarshaler:   Marshaler{},\n\t}\n}\n\ntype AccessTicketSpec struct {\n\tabciService *abciService\n\tresolver    did.Resolver\n\tkeyBuilder  keyBuilder\n\tsigner      signer\n\tmarshaler   Marshaler\n}\n\nfunc (s *AccessTicketSpec) Satisfies(ctx context.Context, ticket string) error {\n\ttkt, err := s.marshaler.Unmarshal(ticket)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.SatisfiesRaw(ctx, tkt)\n}\n\n// Satisfies inspects an AccessTicket and verifies whether it meets specification and is valid.\n// Returns a non-nil error if the Ticket is invalid\nfunc (s *AccessTicketSpec) SatisfiesRaw(ctx context.Context, ticket *types.AccessTicket) error {\n\terr := s.verifyProof(ctx, ticket.DecisionId, ticket.DecisionProof)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdidStr := ticket.Decision.Actor\n\n\tdid := key.DIDKey(didStr)\n\tpubBytes, _, keytype, err := did.Decode()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif keytype != crypto.SECP256k1 {\n\t\treturn fmt.Errorf(\"unsupported key type: expected SECP256k1: got %v\", keytype)\n\t}\n\tpkey := &secp256k1.PubKey{\n\t\tKey: pubBytes,\n\t}\n\n\terr = s.signer.Verify(pkey, ticket)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = s.validateDecision(ticket)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\theightInt, err := s.abciService.GetCurrentHeight(ctx)\n\theight := uint64(heightInt)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdecisionExpiration := s.computeDecisionExpiration(ticket.Decision)\n\tproofExpiration := s.computeProofExpiration(ticket.Decision)\n\tticketExpiration := s.computeTicketExpiration(ticket.Decision)\n\n\tif height > decisionExpiration {\n\t\treturn ErrExpiredDecision\n\t}\n\tif height > proofExpiration {\n\t\treturn ErrExpiredDecision\n\t}\n\tif height > ticketExpiration {\n\t\treturn ErrExpiredTicket\n\t}\n\n\treturn nil\n}\n\nfunc (s *AccessTicketSpec) computeDecisionExpiration(decision *types.AccessDecision) uint64 {\n\treturn decision.IssuedHeight + decision.Params.DecisionExpirationDelta\n}\n\nfunc (s *AccessTicketSpec) computeTicketExpiration(decision *types.AccessDecision) uint64 {\n\treturn decision.IssuedHeight + decision.Params.TicketExpirationDelta\n}\n\nfunc (s *AccessTicketSpec) computeProofExpiration(decision *types.AccessDecision) uint64 {\n\treturn decision.IssuedHeight + decision.Params.ProofExpirationDelta\n}\n\nfunc (s *AccessTicketSpec) verifyProof(ctx context.Context, decisionId string, decisionProof []byte) error {\n\tabciQuery := &abcitypes.ResponseQuery{}\n\terr := abciQuery.Unmarshal(decisionProof)\n\tif err != nil {\n\t\treturn ErrInvalidDecisionProof\n\t}\n\n\theight := abciQuery.Height + 1\n\theader, err := s.abciService.GetBlockHeader(ctx, height)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\troot := header.AppHash.Bytes()\n\tkey := string(s.keyBuilder.KVKey(decisionId))\n\n\truntime := merkle.NewProofRuntime()\n\truntime.RegisterOpDecoder(storetypes.ProofOpIAVLCommitment, storetypes.CommitmentOpDecoder)\n\truntime.RegisterOpDecoder(storetypes.ProofOpSimpleMerkleCommitment, storetypes.CommitmentOpDecoder)\n\terr = runtime.VerifyValue(abciQuery.ProofOps, root, key, abciQuery.Value)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"%w: %v\", ErrInvalidDecisionProof, err)\n\t}\n\n\treturn nil\n}\n\nfunc (s *AccessTicketSpec) validateDecision(ticket *types.AccessTicket) error {\n\tdecisionHash := ticket.Decision.ProduceId()\n\n\tif decisionHash != ticket.DecisionId {\n\t\treturn fmt.Errorf(\"expected %v got %v: %w\", ticket.DecisionId, decisionHash, ErrDecisionTampered)\n\t}\n\n\tif decisionHash != ticket.Decision.Id {\n\t\treturn fmt.Errorf(\"expected %v got %v: %w\", ticket.DecisionId, decisionHash, ErrDecisionTampered)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/access_ticket/types.go",
    "content": "package access_ticket\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst separator = \".\"\n\n// IAVL Store Queries expect the query to contain \"key\" as suffix to the Path\nconst iavlQuerySuffix = \"key\"\n\n// Marshaler is responsible for marshaling and unmarshaling an AccessTicket to and from a string representation\ntype Marshaler struct{}\n\nfunc (m *Marshaler) Marshal(ticket *types.AccessTicket) (string, error) {\n\tversion := ticket.VersionDenominator\n\tticketBytes, err := ticket.Marshal()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tticketEncoded := base64.URLEncoding.EncodeToString(ticketBytes)\n\treturn version + separator + ticketEncoded, nil\n}\n\nfunc (m *Marshaler) Unmarshal(ticket string) (*types.AccessTicket, error) {\n\n\tversion, encodedTicket, found := strings.Cut(ticket, separator)\n\tif !found {\n\t\treturn nil, fmt.Errorf(\"invalid ticket: separator not found\")\n\t}\n\n\tif version != types.AccessTicketV1 {\n\t\treturn nil, fmt.Errorf(\"invalid ticket: invalid version\")\n\t}\n\n\tticketBytes, err := base64.URLEncoding.DecodeString(encodedTicket)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid ticket: encoded ticket: %v\", err)\n\n\t}\n\n\ttkt := &types.AccessTicket{}\n\terr = tkt.Unmarshal(ticketBytes)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid ticket: encoded ticket: %v\", err)\n\t}\n\n\treturn tkt, nil\n}\n\n// keyBuilder builds keys to execute ABCI queries for AccessDecisions\ntype keyBuilder struct{}\n\n// ABCIQueryKey returns the Key part to be used in an ABCIQuery\nfunc (b *keyBuilder) ABCIQueryKey(decisionId string) []byte {\n\treturn []byte(types.AccessDecisionRepositoryKeyPrefix + decisionId)\n}\n\n// KVKey returns the actual key used in the Cosmos app store.\n// note this key contains the prefix from the root commit multistore and the IAVL store with prefixes\nfunc (b *keyBuilder) KVKey(decisionId string) []byte {\n\treturn []byte(\"/\" + types.ModuleName + \"/\" + types.AccessDecisionRepositoryKeyPrefix + decisionId)\n}\n\n// ABCIQueryPath returns the Query Path for a query issued to the ACP module\nfunc (b *keyBuilder) ABCIQueryPath() string {\n\t// Figuring out how to issue an ABCI query to a Cosmos app is a mess.\n\t// The request goes through to Tendermint and is sent straight to the application (ie cosmos base app),\n\t// it then goes through a multiple store layers, each with requirements for the key and none of which are documented.\n\t//\n\t// The entrypoint in baseapp itself.\n\t// The BaseApp can accept a set of prefixes and do different things with it,\n\t// for store state proofs it expects a \"/store\" prefix.\n\t// see cosmos/cosmos-sdk/baseapp/abci.go\n\t//\n\t// The request is then dispatched to the commit multi store.\n\t// The CMS dispatches the request to one of the substores using the substore name.\n\t// In our case the ACP module name.\n\t// see cosmos/cosmos-sdk/store/rootmulti/store.go\n\t//\n\t// It then goes to a IAVL store, the IAVL store expects keys to have a\n\t// \"/key\" suffix as part of the ABCI query path.\n\t// see cosmos/cosmos-sdk/store/iavl/store.go\n\t// IAVL is the last layer to process the Key field in the request. Now it's only the Data part.\n\t//\n\t// For the Data part it's necessary to figure out which prefix stores have been added to the mix but that's more straight forward.\n\n\treturn \"/\" + baseapp.QueryPathStore + \"/\" + types.ModuleName + \"/\" + iavlQuerySuffix\n}\n\nfunc UnmarshalAndVerify(ctx context.Context, trustedNodeAddr string, ticketStr string) (*types.AccessTicket, error) {\n\tmarshaler := Marshaler{}\n\tservice, err := NewABCIService(trustedNodeAddr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tticketSpec := NewAccessTicketSpec(&service, &did.KeyResolver{})\n\n\tticket, err := marshaler.Unmarshal(ticketStr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = ticketSpec.SatisfiesRaw(ctx, ticket)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn ticket, nil\n}\n"
  },
  {
    "path": "x/acp/bearer_token/bearer_token.go",
    "content": "// package bearer_token defines an authentication method for Policy operations using a self issued JWS\npackage bearer_token\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// AuthorizeMsg verifies whether the given MsgBearerPolicyCmd should be authorized\n// to execute.\n// If the validation is successful, returns the authenticated Actor DID or an error\n//\n// Note: an Authorized Msg means that the msg's Bearer token is well formed and valid (actor authentication)\n// and that the token is bound to the account that signed the Tx (msg authorization).\nfunc AuthorizeMsg(ctx context.Context, resolver did.Resolver, msg *types.MsgBearerPolicyCmd, currentTime time.Time) (string, error) {\n\ttoken, err := parseValidateJWS(ctx, resolver, msg.BearerToken)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\terr = validateBearerToken(&token, &currentTime)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif msg.Creator != token.AuthorizedAccount {\n\t\treturn \"\", fmt.Errorf(\"msg creator %v: expected creator %v: %w\", msg.Creator, token.AuthorizedAccount, ErrMsgUnauthorized)\n\t}\n\n\treturn token.IssuerID, nil\n}\n"
  },
  {
    "path": "x/acp/bearer_token/bearer_token_test.go",
    "content": "package bearer_token\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"testing\"\n\t\"time\"\n\n\tacpdid \"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nconst validSourceHubAddr = \"source19djduggm345yf2dn0y0jqqgkr5q0pt234dkyvd\"\nconst msgCreator = validSourceHubAddr\n\n// bearerValidationTestVector models a test case which generates a JWS from the BearerToken definition\n// and verifies whether the Token is valid or not\ntype bearerValidationTestVector struct {\n\tDescription   string\n\tToken         BearerToken\n\tExpectedError error\n\tSigner        crypto.Signer\n\tServerTime    time.Time\n}\n\nfunc Test_AuthorizeMsg_Errors(t *testing.T) {\n\tvalidDID, signer, err := acpdid.ProduceDID()\n\trequire.NoError(t, err)\n\n\tjwsTestVectors := []bearerValidationTestVector{\n\t\t{\n\t\t\tDescription: \"payload without issuer rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          \"\",\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tAuthorizedAccount: validSourceHubAddr,\n\t\t\t},\n\t\t\tExpectedError: ErrMissingClaim,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"payload without authorization_account rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tAuthorizedAccount: \"\",\n\t\t\t},\n\t\t\tExpectedError: ErrMissingClaim,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"payload without isa rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tIssuedTime:        0,\n\t\t\t\tAuthorizedAccount: validSourceHubAddr,\n\t\t\t},\n\t\t\tExpectedError: ErrMissingClaim,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"payload without exp rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tExpirationTime:    0,\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tAuthorizedAccount: validSourceHubAddr,\n\t\t\t},\n\t\t\tExpectedError: ErrMissingClaim,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"iss as invalid did rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          \"did:invalid\",\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tAuthorizedAccount: validSourceHubAddr,\n\t\t\t},\n\t\t\tExpectedError: ErrInvalidIssuer,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"authorization_account invalid sourcehub addr rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tAuthorizedAccount: \"notsource123456z\",\n\t\t\t},\n\t\t\tExpectedError: ErrInvalidAuhtorizedAccount,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"expired token rejected\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tAuthorizedAccount: validSourceHubAddr,\n\t\t\t},\n\t\t\tExpectedError: ErrTokenExpired,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:30:00\"),\n\t\t},\n\t\t{\n\t\t\tDescription: \"tx signer different from authorized_account\",\n\t\t\tToken: BearerToken{\n\t\t\t\tIssuerID:          validDID,\n\t\t\t\tIssuedTime:        mustUnixTime(\"2024-06-17 14:00:00\"),\n\t\t\t\tExpirationTime:    mustUnixTime(\"2024-06-17 14:20:00\"),\n\t\t\t\tAuthorizedAccount: \"source1dsc8ah9rytxrzhq0suj994anwuhvq7yjeh67dp\",\n\t\t\t},\n\t\t\tExpectedError: ErrMsgUnauthorized,\n\t\t\tSigner:        signer,\n\t\t\tServerTime:    mustTime(\"2024-06-17 14:10:00\"),\n\t\t},\n\t}\n\n\tfor _, test := range jwsTestVectors {\n\t\tt.Run(test.Description, func(t *testing.T) {\n\t\t\tjws, err := test.Token.ToJWS(test.Signer)\n\t\t\trequire.NoError(t, err)\n\t\t\ttestAuthorizeMsg(t, jws, test.ServerTime, test.ExpectedError)\n\t\t})\n\t}\n}\n\nfunc Test_JWS_InvalidSignatureIsRejected(t *testing.T) {\n\tjws := \"eyJhbGciOiJFZERTQSJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWt0VHdhdFZtQ3d6YzJuYlpiTUt5YmNpdGlMaXFVZ21Kb2FOWTdmdm9YQzVpRCIsImF1dGhvcml6ZWRfYWNjb3VudCI6InNvdXJjZTE5ZGpkdWdnbTM0NXlmMmRuMHkwanFxZ2tyNXEwcHQyMzRka3l2ZCIsImlhdCI6MTcxODYzMjgwMCwiZXhwIjoxNzE4NjM0MDAwfQ.cIis7b8ctEctoSUrxvk5_X2jUC9-nmNCey2D0d1NrbtWKaPSnahJrj54CaLLCEiogc_NkqTjazrvF_Kp1y1-BQ\"\n\n\ttestAuthorizeMsg(t, jws, mustTime(\"2024-06-17 14:10:00\"), ErrInvalidBearerToken)\n}\n\nfunc Test_JWS_WithTamperedHeaderIsRejected(t *testing.T) {\n\t// Original JWS:\n\t// eyJhbGciOiJFZERTQSJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnM1lnM2I2TU5zeU10aXJyZlh2NUdaM2p1TTJtNkhiVTZWbnN4ZjFtcEVleSIsImF1dGhvcml6ZWRfYWNjb3VudCI6InNvdXJjZTE5ZGpkdWdnbTM0NXlmMmRuMHkwanFxZ2tyNXEwcHQyMzRka3l2ZCIsImlhdCI6MTcxODYzMjgwMCwiZXhwIjoxNzE4NjM0MDAwfQ.X2T5KpLjH1IGDCxYJ5Hp2CvScwWjLwqtleEHg0PZiYDCpIWh-tgxzfEFPHoHyYjnvcHS8FQk4arlJQaJuW3IBA\n\n\tjws := \"eyJhbbciOiJFZERTQSJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWtnM1lnM2I2TU5zeU10aXJyZlh2NUdaM2p1TTJtNkhiVTZWbnN4ZjFtcEVleSIsImF1dGhvcml6ZWRfYWNjb3VudCI6InNvdXJjZTE5ZGpkdWdnbTM0NXlmMmRuMHkwanFxZ2tyNXEwcHQyMzRka3l2ZCIsImlhdCI6MTcxODYzMjgwMCwiZXhwIjoxNzE4NjM0MDAwfQ.X2T5KpLjH1IGDCxYJ5Hp2CvScwWjLwqtleEHg0PZiYDCpIWh-tgxzfEFPHoHyYjnvcHS8FQk4arlJQaJuW3IBA\"\n\n\ttestAuthorizeMsg(t, jws, mustTime(\"2024-06-17 14:10:00\"), ErrInvalidBearerToken)\n}\n\nfunc Test_JWS_JSONSerializationIsRejected(t *testing.T) {\n\tjsonSerializedToken := `\n\t{\n\t\t\"payload\":\"eyJpc3MiOiJkaWQ6a2V5Ono2TWtxUTNhY2J0NWdVaHV1QnFSZUtTanpEcWNIZlREa0hMb3dhWFY2YURIREw4RCIsImF1dGhvcml6ZWRfYWNjb3VudCI6InNvdXJjZTE5ZGpkdWdnbTM0NXlmMmRuMHkwanFxZ2tyNXEwcHQyMzRka3l2ZCIsImlhdCI6MTcxODcyNzk4NCwiZXhwIjoxNzE4NzI4ODg0fQ\",\n\t\t\"protected\":\"eyJhbGciOiJFZERTQSJ9\",\n\t\t\"signature\":\"DuwXmY3pRMSIejK7mK4lSEzrMCP4PhI7etLncuRlGI3QhRjrbcWaQnEC3fcziAsQZ1cLgtCiffgX9zCTSg8iBg\"\n\t}`\n\n\ttestAuthorizeMsg(t, jsonSerializedToken, mustTime(\"2024-06-17 14:10:00\"), ErrJSONSerializationUnsupported)\n}\n\nfunc testAuthorizeMsg(t *testing.T, jws string, serverTime time.Time, expectedErr error) {\n\tctx := context.TODO()\n\tresolver := acpdid.KeyResolver{}\n\tmsg := types.MsgBearerPolicyCmd{\n\t\tCreator:     msgCreator,\n\t\tBearerToken: jws,\n\t}\n\n\tactorId, err := AuthorizeMsg(ctx, &resolver, &msg, serverTime)\n\n\trequire.Empty(t, actorId)\n\trequire.ErrorIs(t, err, expectedErr)\n}\n\nfunc mustUnixTime(ts string) int64 {\n\treturn mustTime(ts).Unix()\n}\n\nfunc mustTime(ts string) time.Time {\n\tt, err := time.Parse(time.DateTime, ts)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n"
  },
  {
    "path": "x/acp/bearer_token/errors.go",
    "content": "package bearer_token\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n)\n\nvar ErrInvalidBearerToken = errors.Wrap(\"invalid bearer token\", errors.ErrorType_BAD_INPUT)\nvar ErrMsgUnauthorized = errors.Wrap(\"bearer policy msg: authorized_account doesn't match\", errors.ErrorType_UNAUTHORIZED)\n\nvar ErrInvalidIssuer = errors.Wrap(\"invalid issuer: expected did\", ErrInvalidBearerToken)\nvar ErrInvalidAuhtorizedAccount = errors.Wrap(\"invalid authorized_account: expects SourceHub address\", ErrInvalidBearerToken)\nvar ErrTokenExpired = errors.Wrap(\"token expired\", ErrInvalidBearerToken)\nvar ErrMissingClaim = errors.Wrap(\"required claim not found\", ErrInvalidBearerToken)\nvar ErrJSONSerializationUnsupported = errors.Wrap(\"JWS JSON Serialization not supported\", ErrInvalidBearerToken)\n\nfunc newErrTokenExpired(expiresUnix int64, nowUnix int64) error {\n\texpires := time.Unix(expiresUnix, 0).Format(time.DateTime)\n\tnow := time.Unix(nowUnix, 0).Format(time.DateTime)\n\n\treturn fmt.Errorf(\"expired %v: now %v: %w\", expires, now, ErrTokenExpired)\n}\n\nfunc newErrMissingClaim(claim string) error {\n\treturn fmt.Errorf(\"claim %v: %w\", claim, ErrMissingClaim)\n}\n"
  },
  {
    "path": "x/acp/bearer_token/parser.go",
    "content": "package bearer_token\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\tsecp \"github.com/decred/dcrd/dcrec/secp256k1/v4\"\n\t\"github.com/go-jose/go-jose/v3\"\n\t\"github.com/lestrrat-go/jwx/v2/jwa\"\n\tjwxjws \"github.com/lestrrat-go/jwx/v2/jws\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n)\n\nvar requiredClaims = []string{\n\tIssuedAtClaim,\n\tIssuerClaim,\n\tAuthorizedAccountClaim,\n\tExpiresClaim,\n}\n\n// parseValidateJWS processes a JWS Bearer token by unmarshaling it and verifying its signature.\n// Returns a BearerToken is the JWS is valid and the signature matches the IssuerID\n//\n// Note: the JWS must be compact serialized, JSON serialization will be rejected as a conservative\n// security measure against unprotected header attacks.\nfunc parseValidateJWS(ctx context.Context, resolver did.Resolver, bearerJWS string) (BearerToken, error) {\n\tbearerJWS = strings.TrimLeft(bearerJWS, \" \\n\\t\\r\")\n\tif strings.HasPrefix(bearerJWS, \"{\") {\n\t\treturn BearerToken{}, ErrJSONSerializationUnsupported\n\t}\n\n\tjws, err := jose.ParseSigned(bearerJWS)\n\tif err != nil {\n\t\treturn BearerToken{}, fmt.Errorf(\"failed parsing jws: %v: %w\", err, ErrInvalidBearerToken)\n\t}\n\n\tpayloadBytes := jws.UnsafePayloadWithoutVerification()\n\tbearer, err := unmarshalJWSPayload(payloadBytes)\n\tif err != nil {\n\t\treturn BearerToken{}, err\n\t}\n\n\terr = validateBearerTokenValues(&bearer)\n\tif err != nil {\n\t\treturn BearerToken{}, err\n\t}\n\n\t// currently the ssi-sdk key resolver does not support secp256k1\n\t// therefore we skip using the did pkg resolver and decode it directly,\n\t// as that does not error.\n\tdid := bearer.IssuerID\n\tdidKey := key.DIDKey(did)\n\tpubBytes, _, keytype, err := didKey.Decode()\n\tif err != nil {\n\t\treturn BearerToken{}, fmt.Errorf(\"failed to resolve actor did: %v: %w\", err, ErrInvalidBearerToken)\n\t}\n\n\tpubKey, err := crypto.BytesToPubKey(pubBytes, keytype)\n\tif err != nil {\n\t\treturn BearerToken{}, fmt.Errorf(\"failed to retrieve pub key: %v: %w\", err, ErrInvalidBearerToken)\n\t}\n\tvar algs []jwa.SignatureAlgorithm\n\tif secpKey, ok := pubKey.(secp.PublicKey); ok {\n\t\t// https://www.rfc-editor.org/rfc/rfc8812\n\t\talgs = []jwa.SignatureAlgorithm{jwa.ES256K}\n\t\tpubKey = secpKey.ToECDSA()\n\t} else {\n\t\talgs, err = jwxjws.AlgorithmsForKey(pubKey)\n\t\tif err != nil {\n\t\t\treturn BearerToken{}, fmt.Errorf(\"failed to retrieve algs for pub key: %v: %w\", err, ErrInvalidBearerToken)\n\t\t}\n\t}\n\n\t_, err = jwxjws.Verify([]byte(bearerJWS), jwxjws.WithKey(algs[0], pubKey))\n\tif err != nil {\n\t\treturn BearerToken{}, fmt.Errorf(\"could not verify actor signature for jwk: %v: %w\", err, ErrInvalidBearerToken)\n\t}\n\n\treturn bearer, nil\n}\n\n// unmarshalJWSPayload unmarshals the JWS bytes into a BearerToken.\n//\n// The unmarshaling is strict, meaning that if the json object did not contain *all*\n// required claims, it returns an error.\nfunc unmarshalJWSPayload(payload []byte) (BearerToken, error) {\n\tobj := make(map[string]any)\n\terr := json.Unmarshal(payload, &obj)\n\tif err != nil {\n\t\treturn BearerToken{}, err\n\t}\n\n\tfor _, claim := range requiredClaims {\n\t\t_, ok := obj[claim]\n\t\tif !ok {\n\t\t\treturn BearerToken{}, newErrMissingClaim(claim)\n\t\t}\n\t}\n\n\ttoken := BearerToken{}\n\terr = json.Unmarshal(payload, &token)\n\tif err != nil {\n\t\treturn BearerToken{}, fmt.Errorf(\"could not unmarshal payload: %v: %w\", err, ErrInvalidBearerToken)\n\t}\n\treturn token, nil\n}\n"
  },
  {
    "path": "x/acp/bearer_token/spec.go",
    "content": "package bearer_token\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\thubtypes \"github.com/sourcenetwork/sourcehub/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n)\n\nfunc validateBearerTokenValues(token *BearerToken) error {\n\tif did.IsValidDID(token.IssuerID) != nil {\n\t\treturn ErrInvalidIssuer\n\t}\n\n\tif err := hubtypes.IsValidSourceHubAddr(token.AuthorizedAccount); err != nil {\n\t\treturn fmt.Errorf(\"%v: %w\", err, ErrInvalidAuhtorizedAccount)\n\t}\n\n\tif token.ExpirationTime < token.IssuedTime {\n\t\treturn fmt.Errorf(\"issue time cannot be after expiration time: %w\", ErrInvalidBearerToken)\n\t}\n\n\treturn nil\n}\n\nfunc validateBearerToken(token *BearerToken, currentTime *time.Time) error {\n\terr := validateBearerTokenValues(token)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnow := currentTime.Unix()\n\n\tif now > token.ExpirationTime {\n\t\treturn newErrTokenExpired(token.ExpirationTime, now)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/bearer_token/types.go",
    "content": "package bearer_token\n\nimport (\n\t\"crypto\"\n\t\"encoding/json\"\n\t\"time\"\n\n\t\"github.com/go-jose/go-jose/v3\"\n\t\"github.com/go-jose/go-jose/v3/cryptosigner\"\n)\n\nconst (\n\tIssuedAtClaim = \"iat\"\n\tExpiresClaim  = \"exp\"\n\tIssuerClaim   = \"iss\"\n\t// AuthorizedAccountClaim is the name of the expected field in the JWS\n\t// which authorizes a SourceHub account to produce Txs on behalf of the\n\t// token issuer\n\tAuthorizedAccountClaim = \"authorized_account\"\n)\n\nconst DefaultExpirationTime = time.Minute * 15\n\n// BearerToken contains the structured fields included in the JWS Bearer Token\ntype BearerToken struct {\n\t// IssuerID is the Actor ID for the Token signer\n\tIssuerID string `json:\"iss,omitempty\"`\n\t// AuthorizedAccount is the SourceHub account address which is allowed to use this token\n\tAuthorizedAccount string `json:\"authorized_account,omitempty\"`\n\t// IssuedTime is the timestamp at which the token was generated\n\tIssuedTime int64 `json:\"iat,omitempty\"`\n\t// ExpirationTime is the timestamp at which the token will expire\n\tExpirationTime int64 `json:\"exp,omitempty\"`\n}\n\n// ToJWS serializes the Token payload, signs it and marshals the result\n// to a JWS using the compact serialization mode\nfunc (t *BearerToken) ToJWS(signer crypto.Signer) (string, error) {\n\tbytes, err := json.Marshal(t)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tpayload := string(bytes)\n\n\topaque := cryptosigner.Opaque(signer)\n\tkey := jose.SigningKey{\n\t\tAlgorithm: opaque.Algs()[0],\n\t\tKey:       opaque,\n\t}\n\tvar opts *jose.SignerOptions\n\tjoseSigner, err := jose.NewSigner(key, opts)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tobj, err := joseSigner.Sign([]byte(payload))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn obj.CompactSerialize()\n}\n\n// NewBearerTokenNow issues a BearerToken using the current time and the default expiration delta\nfunc NewBearerTokenNow(actorID string, authorizedAccount string) BearerToken {\n\tnow := time.Now()\n\texpires := now.Add(DefaultExpirationTime)\n\n\treturn BearerToken{\n\t\tIssuerID:          actorID,\n\t\tAuthorizedAccount: authorizedAccount,\n\t\tIssuedTime:        now.Unix(),\n\t\tExpirationTime:    expires.Unix(),\n\t}\n}\n\n// NewBearerTokenFromTime constructs a BearerToken from timestamps\nfunc NewBearerTokenFromTime(actorID string, authorizedAcc string, issuedAt time.Time, expires time.Time) BearerToken {\n\treturn BearerToken{\n\t\tIssuerID:          actorID,\n\t\tAuthorizedAccount: authorizedAcc,\n\t\tIssuedTime:        issuedAt.Unix(),\n\t\tExpirationTime:    expires.Unix(),\n\t}\n}\n"
  },
  {
    "path": "x/acp/capability/doc.go",
    "content": "// package capability provides types that manage capabilities tied to acp policies.\n//\n// Example usage:\n// Calling modules may create a new Policy using acp keeper's `CreateModulePolicy` method,\n// which returns a capability.\n// The returned capability represents an object which, if presented to the keeper,\n// grants the caller unrestricted access to the policy bound to the capability.\n//\n// Callers which receive a capability are required to Claim this capability,\n// using either cosmos-sdk capability keeper directly or the CapabilityManager abstraction.\n// Claiming a capability allows it to be subsequently recovered at a later instant of time.\n//\n// In order to operate over a Policy registered by the module, it must present the Claimed\n// capability, which can be fetch with the `Fetch` method of the manager.\npackage capability\n"
  },
  {
    "path": "x/acp/capability/error.go",
    "content": "package capability\n\nimport \"github.com/sourcenetwork/acp_core/pkg/errors\"\n\nvar ErrInvalidCapability error = errors.New(\"invalid capability\", errors.ErrorType_UNAUTHORIZED)\n"
  },
  {
    "path": "x/acp/capability/manager.go",
    "content": "package capability\n\nimport (\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/raccoondb/v2/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// Overall this would work and is a nice abstraction wrt to the capability name,\n// however it's not great because this wrapper essentially requires that acp\n// code has access to an external module's capability keeper -\n// consequently any capability that acp knows the name of -\n// which callers may not like.\n\n// NewPolicyCapabilityManager returns a PolicyCapabilityManager scoped to the calling module.\n//\n// Requires a scoped capability keeper, which authenticates the caller and limits\n// the capabilities they have access to.\nfunc NewPolicyCapabilityManager(keeper *capabilitykeeper.ScopedKeeper) *PolicyCapabilityManager {\n\treturn &PolicyCapabilityManager{\n\t\tscopedKeeper: keeper,\n\t}\n}\n\n// PolicyCapabilityManager models a manager for PolicyCapabilities.\n//\n// The manager provides methods to claim and fetch capabilities returned by the acp keeper.\ntype PolicyCapabilityManager struct {\n\tscopedKeeper *capabilitykeeper.ScopedKeeper\n}\n\n// Fetch looks up a PolicyCapability based on a policyId.\n// This capability will be an exact replica of the capability returned by the acp keeper,\n// upon policy registration.\n//\n// The capability will only be returned if it was previously registered with `Claim`.\nfunc (m *PolicyCapabilityManager) Fetch(ctx sdk.Context, policyId string) (*PolicyCapability, error) {\n\tcap := &PolicyCapability{\n\t\tpolicyId: policyId,\n\t}\n\n\tsdkCap, ok := m.scopedKeeper.GetCapability(ctx, cap.GetCapabilityName())\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"fetching capability for policy %v\", policyId)\n\t}\n\tcap.capability = sdkCap\n\n\treturn cap, nil\n}\n\n// Claim registers the current module as one of the owners of capability.\n// Callers which have received a capability are responsible for Claiming it.\n//\n// The registration is bound to the module's scoped capability keeper,\n// which binds the capability to the caller module.\n//\n// This step is necessary in order to retrieve the capability in the future.\nfunc (m *PolicyCapabilityManager) Claim(ctx sdk.Context, capability *PolicyCapability) error {\n\treturn m.scopedKeeper.ClaimCapability(ctx, capability.capability, capability.GetCapabilityName())\n}\n\n// Issue creates a new PolicyCapability from a policyId.\n// The created capability is bound to the calling module's name.\nfunc (m *PolicyCapabilityManager) Issue(ctx sdk.Context, policyId string) (*PolicyCapability, error) {\n\tpolCap := &PolicyCapability{\n\t\tpolicyId: policyId,\n\t}\n\tcap, err := m.scopedKeeper.NewCapability(ctx, polCap.GetCapabilityName())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpolCap.capability = cap\n\treturn polCap, nil\n}\n\n// Validate verifies whether the given capability is valid.\nfunc (m *PolicyCapabilityManager) Validate(ctx sdk.Context, capability *PolicyCapability) error {\n\tok := m.scopedKeeper.AuthenticateCapability(ctx, capability.capability, capability.GetCapabilityName())\n\tif !ok {\n\t\treturn errors.Wrap(\"authentication failed\", ErrInvalidCapability)\n\t}\n\n\t// check if the capability is also owned by acp module.\n\t// this prevents a malicious module from creating a capability using a known policy id,\n\t// which would give the module full control over the policy.\n\t//\n\t// By verifying that a PolicyCapability is owned by the ACP module, we implicitly verify\n\t// that the Policy was created through the CreateModulePolicy call,\n\t// as opposed to the regular user flow.\n\t//\n\t// This verification depends on the invariant that the acp keeper\n\t// never claims any capability, it only issues them.\n\townedByAcp, err := m.isOwnedByAcpModule(ctx, capability)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !ownedByAcp {\n\t\treturn errors.Wrap(\"capability not issued by acp module\", ErrInvalidCapability)\n\t}\n\n\treturn nil\n}\n\n// GetOwnerModule returns the co-owner of a PolicyCapability.\n// ie. the module which received the capability from the ACP module and claimed it.\nfunc (m *PolicyCapabilityManager) GetOwnerModule(ctx sdk.Context, capability *PolicyCapability) (string, error) {\n\tmods, _, err := m.scopedKeeper.LookupModules(ctx, capability.GetCapabilityName())\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"looking up capability owner: %v\", err) //TODO\n\t}\n\n\tmods = utils.FilterSlice(mods, func(name string) bool {\n\t\treturn name != types.ModuleName\n\t})\n\n\tif len(mods) == 0 {\n\t\treturn \"\", errors.Wrap(\"capability not claimed by any module\", ErrInvalidCapability)\n\t}\n\treturn mods[0], nil\n}\n\n// isOwnedByAcpModule returns true if the acp module is an owner of the given PolicyCapability.\nfunc (m *PolicyCapabilityManager) isOwnedByAcpModule(ctx sdk.Context, capability *PolicyCapability) (bool, error) {\n\tmods, _, err := m.scopedKeeper.LookupModules(ctx, capability.GetCapabilityName())\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"looking up capability owner: %v\", err)\n\t}\n\n\tmods = utils.FilterSlice(mods, func(name string) bool {\n\t\treturn name != types.ModuleName\n\t})\n\n\tif len(mods) == 0 {\n\t\treturn false, nil\n\t}\n\treturn true, nil\n}\n"
  },
  {
    "path": "x/acp/capability/types.go",
    "content": "package capability\n\nimport (\n\tcapabilitytypes \"github.com/cosmos/ibc-go/modules/capability/types\"\n)\n\n// PolicyCapability models a capability which grants\n// irrevocable access to any command within a policy\ntype PolicyCapability struct {\n\tpolicyId   string\n\tcapability *capabilitytypes.Capability\n}\n\n// GetCapabilityName returns the name of the given PolicyCapability\nfunc (c *PolicyCapability) GetCapabilityName() string {\n\treturn \"/acp/module_policies/\" + c.policyId\n}\n\n// GetPolicyId returns the Id of the policy which this capability is bound to\nfunc (c *PolicyCapability) GetPolicyId() string {\n\treturn c.policyId\n}\n\n// GetCosmosCapability returns the underlying cosmos Capability\nfunc (c *PolicyCapability) GetCosmosCapability() *capabilitytypes.Capability {\n\treturn c.capability\n}\n"
  },
  {
    "path": "x/acp/client/cli/policy_cmd.go",
    "content": "package cli\n\nimport (\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/gogoproto/jsonpb\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype dispatcher = func(*cobra.Command, string, *types.PolicyCmd) error\n\nfunc CmdSetRelationship(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"set-relationship policy-id resource objectId relation [subject resource] subjectId [subjRel]\",\n\t\tShort: \"Issue a SetRelationship PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.MinimumNArgs(5),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId, polCmd, err := parseSetRelationshipArgs(args)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdDeleteRelationship(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"delete-relationship policy-id resource objectId relation [subject resource] subjectId [subjRel]\",\n\t\tShort: \"Issues a DeleteRelationship PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.MinimumNArgs(5),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId, polCmd, err := parseDeleteRelationshipArgs(args)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdRegisterObject(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"register-object policy-id resource objectId\",\n\t\tShort: \"Issue RegisterObject PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId, polCmd, err := parseRegisterObjectArgs(args)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdArchiveObject(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"archive-object policy-id resource objectId\",\n\t\tShort: \"Issue ArchiveObject PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId, polCmd, err := parseArchiveObjectArgs(args)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdRevealRegistration(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"reveal-registration commitment-id json-proof\",\n\t\tShort: \"Reveal an Object Registration for a Commitment\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(2),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tcommitId, err := strconv.ParseUint(args[0], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid commitId: %w\", err)\n\t\t\t}\n\t\t\tproofJson := args[1]\n\n\t\t\tproof := &types.RegistrationProof{}\n\t\t\terr = jsonpb.UnmarshalString(proofJson, proof)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unmarshaling proof: %v\", err)\n\t\t\t}\n\n\t\t\tpolCmd := types.NewRevealRegistrationCmd(commitId, proof)\n\n\t\t\terr = dispatcher(cmd, \"\", polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdCreateCommitment(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"create-commitment policy-id hex-commitment\",\n\t\tShort: \"Create a new Registration Commitment on SourceHub\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(2),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId := args[0]\n\t\t\tcommitment, err := hex.DecodeString(args[1])\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"decoding commitment: %v\", err)\n\t\t\t}\n\t\t\tpolCmd := types.NewCommitRegistrationCmd(commitment)\n\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdFlagHijack(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"flag-hijack policy-id event-id\",\n\t\tShort: \"Issue UnregisterObject PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId := args[0]\n\t\t\teventId, err := strconv.ParseUint(args[1], 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid event id: %w\", err)\n\t\t\t}\n\n\t\t\tpolCmd := types.NewFlagHijackAttemptCmd(eventId)\n\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\nfunc CmdUnarchiveObject(dispatcher dispatcher) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"unarchive-object policy-id resource objectId\",\n\t\tShort: \"Issue UnarchiveObject PolicyCmd\",\n\t\tLong:  ``,\n\t\tArgs:  cobra.ExactArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolId := args[0]\n\t\t\tobj := coretypes.NewObject(args[1], args[2])\n\t\t\tpolCmd := types.NewUnarchiveObjectCmd(obj)\n\t\t\terr = dispatcher(cmd, polId, polCmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tflags.AddTxFlagsToCmd(cmd)\n\treturn cmd\n}\n\n// parseSetRelationshipArgs parses a SetRelationship from cli args\n// format: policy-id resource objectId relation [subject resource] subjectId [subjRel]\nfunc parseSetRelationshipArgs(args []string) (string, *types.PolicyCmd, error) {\n\tpolId := args[0]\n\tresource := args[1]\n\tobjId := args[2]\n\trelation := args[3]\n\tvar relationship *coretypes.Relationship\n\tif len(args) == 5 {\n\t\tsubjectId := args[4]\n\t\trelationship = coretypes.NewActorRelationship(resource, objId, relation, subjectId)\n\t} else if len(args) == 6 {\n\t\tsubjResource := args[4]\n\t\tsubjectId := args[5]\n\t\trelationship = coretypes.NewRelationship(resource, objId, relation, subjResource, subjectId)\n\t} else if len(args) == 7 {\n\t\tsubjResource := args[4]\n\t\tsubjectId := args[5]\n\t\tsubjRel := args[6]\n\t\trelationship = coretypes.NewActorSetRelationship(resource, objId, relation, subjResource, subjectId, subjRel)\n\t} else {\n\t\treturn \"\", nil, fmt.Errorf(\"invalid number of arguments: Set Relationship expects [5,7] cli args\")\n\t}\n\tcmd := types.NewSetRelationshipCmd(relationship)\n\treturn polId, cmd, nil\n}\n\n// parseDeleteRelationshipArgs parses a DeleteRelationship from cli args\n// format: policy-id resource objectId relation [subject resource] subjectId [subjRel]\nfunc parseDeleteRelationshipArgs(args []string) (string, *types.PolicyCmd, error) {\n\tpolId := args[0]\n\tresource := args[1]\n\tobjId := args[2]\n\trelation := args[3]\n\tvar relationship *coretypes.Relationship\n\tif len(args) == 5 {\n\t\tsubjectId := args[4]\n\t\trelationship = coretypes.NewActorRelationship(resource, objId, relation, subjectId)\n\t} else if len(args) == 6 {\n\t\tsubjResource := args[4]\n\t\tsubjectId := args[5]\n\t\trelationship = coretypes.NewRelationship(resource, objId, relation, subjResource, subjectId)\n\t} else if len(args) == 7 {\n\t\tsubjResource := args[4]\n\t\tsubjectId := args[5]\n\t\tsubjRel := args[6]\n\t\trelationship = coretypes.NewActorSetRelationship(resource, objId, relation, subjResource, subjectId, subjRel)\n\t} else {\n\t\treturn \"\", nil, fmt.Errorf(\"invalid number of arguments: Delete Relationship expects [5,7] cli args\")\n\t}\n\tcmd := types.NewDeleteRelationshipCmd(relationship)\n\treturn polId, cmd, nil\n}\n\n// parseRegisterObjectArgs parses a RegisterObject from cli args\n// format: policy-id resource objectId\nfunc parseRegisterObjectArgs(args []string) (string, *types.PolicyCmd, error) {\n\tif len(args) != 3 {\n\t\treturn \"\", nil, fmt.Errorf(\"RegisterObject: invalid number of arguments: policy-id resource objectId\")\n\t}\n\tpolId := args[0]\n\tresource := args[1]\n\tobjId := args[2]\n\treturn polId, types.NewRegisterObjectCmd(coretypes.NewObject(resource, objId)), nil\n}\n\nfunc parseArchiveObjectArgs(args []string) (string, *types.PolicyCmd, error) {\n\tif len(args) != 3 {\n\t\treturn \"\", nil, fmt.Errorf(\"ArchiveObject: invalid number of arguments: policy-id resource objectId\")\n\t}\n\tpolId := args[0]\n\tresource := args[1]\n\tobjId := args[2]\n\treturn polId, types.NewArchiveObjectCmd(coretypes.NewObject(resource, objId)), nil\n}\n"
  },
  {
    "path": "x/acp/client/cli/query.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t// \"strings\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t// \"github.com/cosmos/cosmos-sdk/client/flags\"\n\t// sdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// GetQueryCmd returns the cli query commands for this module\nfunc GetQueryCmd(queryRoute string) *cobra.Command {\n\t// Group acp queries under a subcommand\n\tcmd := &cobra.Command{\n\t\tUse:                        types.ModuleName,\n\t\tShort:                      fmt.Sprintf(\"Querying commands for the %s module\", types.ModuleName),\n\t\tDisableFlagParsing:         true,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\tcmd.AddCommand(CmdQueryFilterRelationships())\n\tcmd.AddCommand(CmdQueryVerifyAccessRequest())\n\tcmd.AddCommand(CmdQueryOjectOwner())\n\tcmd.AddCommand(CmdQueryGenerateCommitment())\n\n\t// this line is used by starport scaffolding # 1\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/query_filter_relationships.go",
    "content": "package cli\n\nimport (\n\t\"strings\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/spf13/cobra\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc CmdQueryFilterRelationships() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"filter-relationships [policy-id] [object] [relation] [subject]\",\n\t\tShort: \"Filters through relationships in a policy\",\n\t\tLong: `Filters thourgh all relationships in a Policy. \n\t\tPerforms a lookup using the object, relation and subject filters.\n\t\tUses a mini grammar as describe:\n\t\tobject := resource:id | *\n\t\trelation := name | *\n\t\tsubject := id | *\n\t\tReturns`,\n\t\tArgs:    cobra.ExactArgs(4),\n\t\tAliases: []string{\"relationships\"},\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tclientCtx, err := client.GetClientQueryContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpolId := args[0]\n\t\t\tobject := args[1]\n\t\t\trelation := args[2]\n\t\t\tsubject := args[3]\n\n\t\t\tqueryClient := types.NewQueryClient(clientCtx)\n\t\t\treq := types.QueryFilterRelationshipsRequest{\n\t\t\t\tPolicyId: polId,\n\t\t\t\tSelector: buildSelector(object, relation, subject),\n\t\t\t}\n\n\t\t\tres, err := queryClient.FilterRelationships(cmd.Context(), &req)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn clientCtx.PrintProto(res)\n\t\t},\n\t}\n\n\tflags.AddQueryFlagsToCmd(cmd)\n\n\treturn cmd\n}\n\nfunc buildSelector(object, relation, subject string) *coretypes.RelationshipSelector {\n\tobjSelector := &coretypes.ObjectSelector{}\n\trelSelector := &coretypes.RelationSelector{}\n\tsubjSelector := &coretypes.SubjectSelector{}\n\n\tif object == \"*\" {\n\t\tobjSelector.Selector = &coretypes.ObjectSelector_Wildcard{\n\t\t\tWildcard: &coretypes.WildcardSelector{},\n\t\t}\n\t} else {\n\t\tres, id, _ := strings.Cut(object, \":\")\n\t\tobjSelector.Selector = &coretypes.ObjectSelector_Object{\n\t\t\tObject: &coretypes.Object{\n\t\t\t\tResource: res,\n\t\t\t\tId:       id,\n\t\t\t},\n\t\t}\n\t}\n\n\tif relation == \"*\" {\n\t\trelSelector.Selector = &coretypes.RelationSelector_Wildcard{\n\t\t\tWildcard: &coretypes.WildcardSelector{},\n\t\t}\n\t} else {\n\t\trelSelector.Selector = &coretypes.RelationSelector_Relation{\n\t\t\tRelation: relation,\n\t\t}\n\t}\n\n\tif subject == \"*\" {\n\t\tsubjSelector.Selector = &coretypes.SubjectSelector_Wildcard{\n\t\t\tWildcard: &coretypes.WildcardSelector{},\n\t\t}\n\t} else {\n\t\tsubjSelector.Selector = &coretypes.SubjectSelector_Subject{\n\t\t\tSubject: &coretypes.Subject{\n\t\t\t\tSubject: &coretypes.Subject_Actor{\n\t\t\t\t\tActor: &coretypes.Actor{\n\t\t\t\t\t\tId: subject,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\n\treturn &coretypes.RelationshipSelector{\n\t\tObjectSelector:   objSelector,\n\t\tRelationSelector: relSelector,\n\t\tSubjectSelector:  subjSelector,\n\t}\n}\n"
  },
  {
    "path": "x/acp/client/cli/query_generate_commitment.go",
    "content": "package cli\n\nimport (\n\t\"strings\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc CmdQueryGenerateCommitment() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"generate-commitment policyId actorId [resource:object]+\",\n\t\tShort: \"Generates a hex encoded commitment for the given objects\",\n\t\tLong:  ` `,\n\t\tArgs:  cobra.MinimumNArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tclientCtx, err := client.GetClientQueryContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpolicyId := args[0]\n\t\t\tactorId := args[1]\n\t\t\tvar objs []*coretypes.Object\n\t\t\tfor _, operationStr := range args[2:] {\n\t\t\t\tresource, object, _ := strings.Cut(operationStr, \":\")\n\t\t\t\tobj := coretypes.NewObject(resource, object)\n\t\t\t\tobjs = append(objs, obj)\n\t\t\t}\n\t\t\tqueryClient := acptypes.NewQueryClient(clientCtx)\n\t\t\treq := acptypes.QueryGenerateCommitmentRequest{\n\t\t\t\tPolicyId: policyId,\n\t\t\t\tObjects:  objs,\n\t\t\t\tActor:    coretypes.NewActor(actorId),\n\t\t\t}\n\t\t\tresp, err := queryClient.GenerateCommitment(cmd.Context(), &req)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn clientCtx.PrintProto(resp)\n\t\t},\n\t}\n\n\tflags.AddQueryFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/query_object_owner.go",
    "content": "package cli\n\nimport (\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/spf13/cobra\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc CmdQueryOjectOwner() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"object-owner [policy-id] [resource] [object-id]\",\n\t\tShort: \"Queries an object for its owner\",\n\t\tArgs:  cobra.ExactArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tpolId := args[0]\n\t\t\tresource := args[1]\n\t\t\tobjId := args[2]\n\n\t\t\tclientCtx, err := client.GetClientQueryContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tqueryClient := types.NewQueryClient(clientCtx)\n\n\t\t\treq := types.QueryObjectOwnerRequest{\n\t\t\t\tPolicyId: polId,\n\t\t\t\tObject:   coretypes.NewObject(resource, objId),\n\t\t\t}\n\n\t\t\tres, err := queryClient.ObjectOwner(cmd.Context(), &req)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn clientCtx.PrintProto(res)\n\t\t},\n\t}\n\n\tflags.AddQueryFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/query_verify_access_request.go",
    "content": "package cli\n\nimport (\n\t\"strings\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc CmdQueryVerifyAccessRequest() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"verify-access-request [policyId] [actor] {resource:object#relation}\",\n\t\tShort: \"Verifies an access request against a policy and its relationships\",\n\t\tLong: `\n\t\tBuilds an AccessRequest for from policyId, actor and the set of Operations\n\t\t(ie. object, relation pairs).\n\t\tThe AccessRequest is evaluated and returns true iff all Operations were authorized\n\t\tby the authorization engine.\n\t\t`,\n\t\tArgs: cobra.MinimumNArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tclientCtx, err := client.GetClientQueryContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpolicyId := args[0]\n\t\t\tactorId := args[1]\n\t\t\tvar operations []*coretypes.Operation\n\t\t\tfor _, operationStr := range args[2:] {\n\t\t\t\tresource, operationStr, _ := strings.Cut(operationStr, \":\")\n\t\t\t\tobjId, relation, _ := strings.Cut(operationStr, \"#\")\n\t\t\t\toperation := &coretypes.Operation{\n\t\t\t\t\tObject:     coretypes.NewObject(resource, objId),\n\t\t\t\t\tPermission: relation,\n\t\t\t\t}\n\t\t\t\toperations = append(operations, operation)\n\t\t\t}\n\t\t\tqueryClient := acptypes.NewQueryClient(clientCtx)\n\t\t\treq := acptypes.QueryVerifyAccessRequestRequest{\n\t\t\t\tPolicyId: policyId,\n\t\t\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\t\t\tOperations: operations,\n\t\t\t\t\tActor:      &coretypes.Actor{Id: actorId},\n\t\t\t\t},\n\t\t\t}\n\t\t\tresp, err := queryClient.VerifyAccessRequest(cmd.Context(), &req)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn clientCtx.PrintProto(resp)\n\t\t},\n\t}\n\n\tflags.AddQueryFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t// \"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar (\n\tDefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds())\n)\n\nconst (\n\tflagPacketTimeoutTimestamp = \"packet-timeout-timestamp\"\n\tlistSeparator              = \",\"\n)\n\n// GetTxCmd returns the transaction commands for this module\nfunc GetTxCmd() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:                        types.ModuleName,\n\t\tShort:                      fmt.Sprintf(\"%s transactions subcommands\", types.ModuleName),\n\t\tDisableFlagParsing:         true,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\tcmd.AddCommand(CmdCreatePolicy())\n\tcmd.AddCommand(CmdEditPolicy())\n\tcmd.AddCommand(CmdCheckAccess())\n\tcmd.AddCommand(CmdBearerPolicyCmd())\n\tcmd.AddCommand(CmdDirectPolicyCmd())\n\tcmd.AddCommand(CmdSignedPolicyCmd())\n\t// this line is used by starport scaffolding # 1\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_bearer_policy_cmd.go",
    "content": "package cli\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nconst BearerFlag = \"bearer-token\"\n\nfunc bearerDispatcher(cmd *cobra.Command, polId string, polCmd *types.PolicyCmd) error {\n\tclientCtx, err := client.GetClientTxContext(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tflag := cmd.Flag(BearerFlag)\n\ttoken := flag.Value.String()\n\n\tcreator := clientCtx.GetFromAddress().String()\n\tmsg := types.NewMsgBearerPolicyCmd(creator, token, polId, polCmd)\n\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n}\n\nfunc CmdBearerPolicyCmd() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"bearer-policy-cmd\",\n\t\tShort: \"Broadcast a BearerPolicyCommand msg\",\n\t}\n\n\tflags := cmd.PersistentFlags()\n\tflags.String(BearerFlag, \"\", \"specifies the bearer token to be broadcast with the command\")\n\n\tcmd.AddCommand(CmdRegisterObject(bearerDispatcher))\n\tcmd.AddCommand(CmdArchiveObject(bearerDispatcher))\n\tcmd.AddCommand(CmdSetRelationship(bearerDispatcher))\n\tcmd.AddCommand(CmdDeleteRelationship(bearerDispatcher))\n\tcmd.AddCommand(CmdCreateCommitment(bearerDispatcher))\n\tcmd.AddCommand(CmdRevealRegistration(bearerDispatcher))\n\tcmd.AddCommand(CmdFlagHijack(bearerDispatcher))\n\tcmd.AddCommand(CmdUnarchiveObject(bearerDispatcher))\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_check_access.go",
    "content": "package cli\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nfunc CmdCheckAccess() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"check-access [policy-id] [subject] {resource:objId#permission}\",\n\t\tShort: \"Broadcast message CheckAccess\",\n\t\tArgs:  cobra.MinimumNArgs(3),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolicyId := args[0]\n\t\t\tsubject := args[1]\n\n\t\t\tvar operations []*coretypes.Operation\n\t\t\tfor _, operationStr := range args[2:] {\n\t\t\t\tresource, operationStr, _ := strings.Cut(operationStr, \":\")\n\t\t\t\tobjId, relation, _ := strings.Cut(operationStr, \"#\")\n\t\t\t\toperation := &coretypes.Operation{\n\t\t\t\t\tObject:     coretypes.NewObject(resource, objId),\n\t\t\t\t\tPermission: relation,\n\t\t\t\t}\n\t\t\t\toperations = append(operations, operation)\n\t\t\t}\n\n\t\t\taccessRequest := &coretypes.AccessRequest{\n\t\t\t\tOperations: operations,\n\t\t\t\tActor: &coretypes.Actor{\n\t\t\t\t\tId: subject,\n\t\t\t\t},\n\t\t\t}\n\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tmsg := &types.MsgCheckAccess{\n\t\t\t\tCreator:       clientCtx.GetFromAddress().String(),\n\t\t\t\tPolicyId:      policyId,\n\t\t\t\tAccessRequest: accessRequest,\n\t\t\t}\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_create_policy.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nfunc CmdCreatePolicy() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"create-policy [marshaling_type] {policy_file | -}\",\n\t\tShort: \"Broadcast message CreatePolicy\",\n\t\tLong: `\n\t\tBroadcast message CreatePolicy.\n\n\t\tmarshaling_type specifies the marshaling format for the policy.\n\t\tDefaults to SHORT_YAML.\n\t\tSee PolicyMarshalingType for accepted values.\n\n\t\tpolicy_file specifies a file whose contents is the policy.\n\t\t- to read from stdin.\n\t\tNote: if reading from stdin make sure flag --yes is set.`,\n\t\tArgs: cobra.MinimumNArgs(1),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tvar policyFile string\n\t\t\tvar marshalingType coretypes.PolicyMarshalingType\n\n\t\t\tif len(args) == 2 {\n\t\t\t\tmarshalingType = coretypes.PolicyMarshalingType_UNKNOWN\n\t\t\t\tpolicyFile = args[1]\n\n\t\t\t\tmarshalingTypeCode, ok := coretypes.PolicyMarshalingType_value[args[0]]\n\t\t\t\tif ok {\n\t\t\t\t\tmarshalingType = coretypes.PolicyMarshalingType(marshalingTypeCode)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpolicyFile = args[0]\n\t\t\t\tmarshalingType = coretypes.PolicyMarshalingType_YAML\n\t\t\t}\n\n\t\t\tvar file io.Reader\n\t\t\tif policyFile != \"-\" {\n\t\t\t\tsysFile, err := os.Open(policyFile)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"could not open policy file: %w\", err)\n\t\t\t\t}\n\t\t\t\tdefer sysFile.Close()\n\t\t\t\tfile = sysFile\n\t\t\t} else {\n\t\t\t\tfile = os.Stdin\n\t\t\t}\n\n\t\t\tpolicy, err := io.ReadAll(file)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"could not read policy file: %w\", err)\n\t\t\t}\n\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tmsg := &types.MsgCreatePolicy{\n\t\t\t\tCreator:     clientCtx.GetFromAddress().String(),\n\t\t\t\tPolicy:      string(policy),\n\t\t\t\tMarshalType: marshalingType,\n\t\t\t}\n\t\t\tif err := msg.ValidateBasic(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_direct_policy_cmd.go",
    "content": "package cli\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nfunc directDispatcher(cmd *cobra.Command, polId string, polCmd *types.PolicyCmd) error {\n\tclientCtx, err := client.GetClientTxContext(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcreator := clientCtx.GetFromAddress().String()\n\tmsg := types.NewMsgDirectPolicyCmd(creator, polId, polCmd)\n\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n}\n\nfunc CmdDirectPolicyCmd() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"direct-policy-cmd\",\n\t\tShort: \"Broadcast a DirectPolicyCommand msg\",\n\t}\n\n\tcmd.AddCommand(CmdRegisterObject(directDispatcher))\n\tcmd.AddCommand(CmdArchiveObject(directDispatcher))\n\tcmd.AddCommand(CmdSetRelationship(directDispatcher))\n\tcmd.AddCommand(CmdDeleteRelationship(directDispatcher))\n\tcmd.AddCommand(CmdCreateCommitment(directDispatcher))\n\tcmd.AddCommand(CmdRevealRegistration(directDispatcher))\n\tcmd.AddCommand(CmdFlagHijack(directDispatcher))\n\tcmd.AddCommand(CmdUnarchiveObject(directDispatcher))\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_edit_policy.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nfunc CmdEditPolicy() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"edit-policy policy_id {policy_file | -}\",\n\t\tShort: \"Broadcast message EditPolicy\",\n\t\tLong: `\n\t\tBroadcast message EditPolicy.\n\n\t\tpolicy_id is the id of the policy that is going to be edited.\n\n\t\tpolicy_file specifies a file whose contents is the policy.\n\t\t- to read from stdin.\n\t\tNote: if reading from stdin make sure flag --yes is set.`,\n\t\tArgs: cobra.ExactArgs(2),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tpolicyId := args[0]\n\t\t\tpolicyFile := args[1]\n\n\t\t\tvar file io.Reader\n\t\t\tif policyFile != \"-\" {\n\t\t\t\tsysFile, err := os.Open(policyFile)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"could not open policy file: %w\", err)\n\t\t\t\t}\n\t\t\t\tdefer sysFile.Close()\n\t\t\t\tfile = sysFile\n\t\t\t} else {\n\t\t\t\tfile = os.Stdin\n\t\t\t}\n\n\t\t\tpolicy, err := io.ReadAll(file)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"could not read policy file: %w\", err)\n\t\t\t}\n\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tmsg := &types.MsgEditPolicy{\n\t\t\t\tCreator:     clientCtx.GetFromAddress().String(),\n\t\t\t\tPolicy:      string(policy),\n\t\t\t\tPolicyId:    policyId,\n\t\t\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t\t\t}\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/client/cli/tx_signed_policy_cmd.go",
    "content": "package cli\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\t\"github.com/spf13/cobra\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ = strconv.Itoa(0)\n\nfunc CmdSignedPolicyCmd() *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:   \"signed-policy-cmd jws-payload\",\n\t\tShort: \"Broadcast a SignedPolicyCmd msg from a JWS\",\n\t\tArgs:  cobra.ExactArgs(1),\n\t\tRunE: func(cmd *cobra.Command, args []string) (err error) {\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcreator := clientCtx.GetFromAddress().String()\n\t\t\tmsg := types.NewMsgSignedPolicyCmdFromJWS(creator, args[0])\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/acp/commitment/commitment.go",
    "content": "package commitment\n\nimport (\n\t\"crypto/sha256\"\n\t\"slices\"\n\n\t\"github.com/tendermint/tendermint/crypto/merkle\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst leafPrefix byte = 0x00\nconst nodePrefix byte = 0x01\n\n// VerifyProof consumes a root hash of a merkle tree, policy id, actor and an opening proof\n// and verify whether the proof is a valid merkle tree proof.\n//\n// Returns true if the proof is valid, false if it's not or an error if the opening is malformed\nfunc VerifyProof(root []byte, policyId string, actor *coretypes.Actor, opening *types.RegistrationProof) (bool, error) {\n\tif actor == nil || actor.Id == \"\" {\n\t\treturn false, errors.Wrap(\"invalid actor\", errors.ErrorType_BAD_INPUT)\n\t}\n\tif len(root) != sha256.Size {\n\t\treturn false, errors.Wrap(\"invalid root commitment\", errors.ErrorType_BAD_INPUT)\n\t}\n\tif opening == nil || opening.Object == nil || opening.Object.Id == \"\" ||\n\t\topening.Object.Resource == \"\" {\n\t\treturn false, errors.Wrap(\"invalid opening\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\tproof := merkle.Proof{\n\t\tTotal:    int64(opening.LeafCount),\n\t\tIndex:    int64(opening.LeafIndex),\n\t\tLeafHash: produceLeafHash(policyId, actor, opening.Object),\n\t\tAunts:    opening.MerkleProof,\n\t}\n\terr := proof.Verify(root, GenerateLeafValue(policyId, actor, opening.Object))\n\tif err != nil {\n\t\treturn false, nil\n\t}\n\treturn true, nil\n}\n\n// GenerateCommitmentWithoutValidation generates a byte commitment (merkle root) of the given\n// set of objects.\n// It does not verify whether the given objects are registered or valid against the given policy.\nfunc GenerateCommitmentWithoutValidation(policyId string, actor *coretypes.Actor, objs []*coretypes.Object) ([]byte, error) {\n\tt, err := NewObjectCommitmentTree(policyId, actor, objs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn t.GetCommitment(), nil\n}\n\n// ProofForObject generated an opening Proof for the given objects, actor and policy id\nfunc ProofForObject(policyId string, actor *coretypes.Actor, idx int, objs []*coretypes.Object) (*types.RegistrationProof, error) {\n\tt, err := NewObjectCommitmentTree(policyId, actor, objs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn t.GetProofForIdx(idx)\n}\n\n// GenerateLeafValue produces a byte slice representing an individual object registration\n// which will be committed to.\n//\n// The leaf value is the concatenation of PolicyId, object resource, object id and actor Id\nfunc GenerateLeafValue(policyId string, actor *coretypes.Actor, o *coretypes.Object) []byte {\n\treturn []byte(policyId + o.Resource + o.Id + actor.Id)\n}\n\n// produceLeafHash hashes a Merkle Tree leaf as per RFC 6962\n// https://www.rfc-editor.org/rfc/rfc6962#section-2.1\nfunc produceLeafHash(policyId string, actor *coretypes.Actor, o *coretypes.Object) []byte {\n\tmerkleVal := GenerateLeafValue(policyId, actor, o)\n\thasher := sha256.New()\n\thasher.Write([]byte{leafPrefix})\n\thasher.Write(merkleVal)\n\treturn hasher.Sum(nil)\n}\n\n// NewObjectCommitmentTree returns a RegistrationCommitmentTree for the given objects\nfunc NewObjectCommitmentTree(policyId string, actor *coretypes.Actor, objs []*coretypes.Object) (*RegistrationCommitmentTree, error) {\n\tif len(objs) == 0 {\n\t\treturn nil, errors.Wrap(\"cannot generate commitment to empty object set\", errors.ErrorType_BAD_INPUT)\n\t}\n\ttree := &RegistrationCommitmentTree{\n\t\tpolicyId: policyId,\n\t\tactor:    actor,\n\t\tobjs:     objs,\n\t}\n\ttree.genCommitment()\n\treturn tree, nil\n}\n\n// RegistrationCommitmentTree is a helper to generate openings and roots for a set of objects\ntype RegistrationCommitmentTree struct {\n\tpolicyId   string\n\tactor      *coretypes.Actor\n\tobjs       []*coretypes.Object\n\tcommitment []byte\n\tleaves     [][]byte\n}\n\n// genCommitment computes the merkle root\nfunc (t *RegistrationCommitmentTree) genCommitment() {\n\tt.leaves = utils.MapSlice(t.objs, func(o *coretypes.Object) []byte {\n\t\treturn GenerateLeafValue(t.policyId, t.actor, o)\n\t})\n\tt.commitment = merkle.HashFromByteSlices(t.leaves)\n}\n\n// GetCommitment returns the merkle tree for the tree\nfunc (t *RegistrationCommitmentTree) GetCommitment() []byte {\n\treturn t.commitment\n}\n\n// GetProofForObject returns an opening proof for the given object\n// If the object was not included in the tree, errors\nfunc (t *RegistrationCommitmentTree) GetProofForObj(obj *coretypes.Object) (*types.RegistrationProof, error) {\n\tidx, err := t.findIdx(obj)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn t.proofForIdx(idx)\n}\n\n// GetProofForIdx returns an opening proof for the i-th object\nfunc (t *RegistrationCommitmentTree) GetProofForIdx(i int) (*types.RegistrationProof, error) {\n\treturn t.proofForIdx(i)\n}\n\n// proofForIdx returns the RegistrationProof for object at idx\nfunc (t *RegistrationCommitmentTree) proofForIdx(idx int) (*types.RegistrationProof, error) {\n\tif idx >= len(t.objs) || idx < 0 {\n\t\treturn nil, errors.Wrap(\"index out of bounds:\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\t_, proofs := merkle.ProofsFromByteSlices(t.leaves)\n\treturn &types.RegistrationProof{\n\t\tMerkleProof: proofs[idx].Aunts,\n\t\tObject:      t.objs[idx],\n\t\tLeafCount:   uint64(len(t.objs)),\n\t\tLeafIndex:   uint64(idx),\n\t}, nil\n}\n\n// findIdx looks up the idx of obj in the current tree\nfunc (t *RegistrationCommitmentTree) findIdx(obj *coretypes.Object) (int, error) {\n\ti := slices.IndexFunc(t.objs, func(o *coretypes.Object) bool {\n\t\treturn objEq(obj, o)\n\t})\n\tif i == -1 {\n\t\treturn 0, errors.Wrap(\"proof does not contain object\", errors.ErrorType_BAD_INPUT)\n\t}\n\n\treturn i, nil\n}\n\nfunc objEq(a, b *coretypes.Object) bool {\n\treturn a.Id == b.Id && a.Resource == b.Resource\n}\n"
  },
  {
    "path": "x/acp/commitment/commitment_test.go",
    "content": "package commitment\n\nimport (\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nconst testPolicyID = \"095d86e559a22cef11c7aa7240560b9fd3acf8657fc3743fb16c271a854171e3\"\n\n// testCorrectness is a minimal test case which given setup data,\n// asserts that generating a commitment, a proof for an object within it\n// and finally verifying the proof is a valid operation.\nfunc testCorrectness(t *testing.T, policyId string, idx int, objs []*coretypes.Object, actor *coretypes.Actor) {\n\tcommitment, err := GenerateCommitmentWithoutValidation(policyId, actor, objs)\n\trequire.NoError(t, err)\n\n\tproof, err := ProofForObject(policyId, actor, idx, objs)\n\trequire.NoError(t, err)\n\n\tok, err := VerifyProof(commitment, policyId, actor, proof)\n\trequire.NoError(t, err)\n\trequire.True(t, ok)\n}\n\nfunc TestCommitmentEvenObjects(t *testing.T) {\n\tactor := coretypes.NewActor(\"did:example:bob\")\n\tobjs := []*coretypes.Object{\n\t\tcoretypes.NewObject(\"file\", \"foo\"),\n\t\tcoretypes.NewObject(\"file\", \"tester\"),\n\t}\n\tfor idx, obj := range objs {\n\t\tt.Run(obj.String(), func(t *testing.T) {\n\t\t\ttestCorrectness(t, testPolicyID, idx, objs, actor)\n\t\t})\n\t}\n}\n\nfunc TestCommitmentOddObjects(t *testing.T) {\n\tactor := coretypes.NewActor(\"did:example:bob\")\n\tobjs := []*coretypes.Object{\n\t\tcoretypes.NewObject(\"file\", \"bar\"),\n\t\tcoretypes.NewObject(\"file\", \"deez\"),\n\t\tcoretypes.NewObject(\"file\", \"zaz\"),\n\t}\n\tfor idx, obj := range objs {\n\t\tt.Run(obj.String(), func(t *testing.T) {\n\t\t\ttestCorrectness(t, testPolicyID, idx, objs, actor)\n\t\t})\n\t}\n}\n\nfunc TestCommitmentSingleObject(t *testing.T) {\n\tactor := coretypes.NewActor(\"did:example:bob\")\n\tobjs := []*coretypes.Object{\n\t\tcoretypes.NewObject(\"file\", \"foo\"),\n\t}\n\ttestCorrectness(t, testPolicyID, 0, objs, actor)\n}\n"
  },
  {
    "path": "x/acp/commitment/constants.go",
    "content": "package commitment\n\n// commitmentBytes is a Sha256 Hash, meaning we expect 32 bytes\nconst commitmentBytes int = 32\n"
  },
  {
    "path": "x/acp/commitment/errors.go",
    "content": "package commitment\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc errInvalidCommitment(policy string, commitment []byte) error {\n\treturn types.New(fmt.Sprintf(\"invalid commitment size : got %v, want %v bytes\", len(commitment), commitmentBytes),\n\t\ttypes.ErrorType_BAD_INPUT,\n\t\terrors.Pair(\"policy\", policy))\n}\n"
  },
  {
    "path": "x/acp/commitment/repository.go",
    "content": "package commitment\n\nimport (\n\t\"context\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/raccoondb/v2/iterator\"\n\t\"github.com/sourcenetwork/raccoondb/v2/marshal\"\n\t\"github.com/sourcenetwork/raccoondb/v2/store\"\n\t\"github.com/sourcenetwork/raccoondb/v2/table\"\n\trctypes \"github.com/sourcenetwork/raccoondb/v2/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/stores\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nconst commitmentObjsPrefix = \"/objs\"\nconst commitmentCounterPrefix = \"/counter\"\n\n// NewCommitmentRepository returns a CommitmentRepository from a kv\nfunc NewCommitmentRepository(kv store.KVStore) (*CommitmentRepository, error) {\n\tmarshaler := stores.NewGogoProtoMarshaler(func() *types.RegistrationsCommitment {\n\t\treturn &types.RegistrationsCommitment{}\n\t})\n\tt := table.NewTable(kv, marshaler)\n\n\ttsExtractor := func(rec **types.RegistrationsCommitment) bool {\n\t\treturn (*rec).Expired\n\t}\n\texpiredIdx, err := table.NewIndex(t, \"expired\", tsExtractor, marshal.BoolMarshaler{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcommExtractor := func(rec **types.RegistrationsCommitment) []byte {\n\t\treturn (*rec).Commitment\n\t}\n\tcommIdx, err := table.NewIndex(t, \"commitment\", commExtractor, marshal.BytesMarshaler{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tgetter := func(rec **types.RegistrationsCommitment) uint64 {\n\t\treturn (*rec).Id\n\t}\n\tsetter := func(rec **types.RegistrationsCommitment, id uint64) {\n\t\t(*rec).Id = id\n\t}\n\tincrementer := table.NewAutoIncrementer(t, getter, setter)\n\n\treturn &CommitmentRepository{\n\t\ttable:       t,\n\t\tincrementer: incrementer,\n\t\tcommIndex:   commIdx,\n\t\texpiredIdx:  expiredIdx,\n\t}, nil\n}\n\n// CommitmentRepository exposes an interface to manipulate RegistrationsCommitment records\ntype CommitmentRepository struct {\n\ttable       *table.Table[*types.RegistrationsCommitment]\n\tincrementer *table.Autoincrementer[*types.RegistrationsCommitment]\n\tcommIndex   table.IndexReader[*types.RegistrationsCommitment, []byte]\n\texpiredIdx  table.IndexReader[*types.RegistrationsCommitment, bool]\n}\n\nfunc (r *CommitmentRepository) wrapErr(err error) error {\n\tif err == nil {\n\t\treturn err\n\t}\n\treturn errors.NewWithCause(\"commitment repository\", err, errors.ErrorType_INTERNAL)\n}\n\n// update stores the updated RegistrationCommitment record\nfunc (r *CommitmentRepository) update(ctx context.Context, reg *types.RegistrationsCommitment) error {\n\terr := r.incrementer.Update(ctx, &reg)\n\treturn r.wrapErr(err)\n}\n\n// create sets a new RegistrationCommitment using the next free up id.\n// Sets reg.Id with the effective record Id used.\nfunc (r *CommitmentRepository) create(ctx context.Context, reg *types.RegistrationsCommitment) error {\n\terr := r.incrementer.Insert(ctx, &reg)\n\treturn r.wrapErr(err)\n}\n\n// GetById returns a RegistrationCommitment with the given id\nfunc (r *CommitmentRepository) GetById(ctx context.Context, id uint64) (rctypes.Option[*types.RegistrationsCommitment], error) {\n\tcomm := &types.RegistrationsCommitment{Id: id}\n\topt, err := r.incrementer.GetByRecordID(ctx, &comm)\n\tif err != nil {\n\t\treturn rctypes.None[*types.RegistrationsCommitment](), r.wrapErr(err)\n\t}\n\treturn opt, nil\n}\n\n// FilterByCommitment returns all RegistrationCommitment records with the given commitment\nfunc (r *CommitmentRepository) FilterByCommitment(ctx context.Context, commitment []byte) (iterator.Iterator[*types.RegistrationsCommitment], error) {\n\tkeyIter, err := r.commIndex.IterateKeys(ctx, &commitment, store.NewOpenIterator())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\titer := table.MaterializeObjects(ctx, r.table, keyIter)\n\treturn iter, nil\n}\n\n// GetNonExpiredCommitments returns all commitments whose expiration flag is false\nfunc (r *CommitmentRepository) GetNonExpiredCommitments(ctx context.Context) (iterator.Iterator[*types.RegistrationsCommitment], error) {\n\tbkt := false\n\tkeyIter, err := r.expiredIdx.IterateKeys(ctx, &bkt, store.NewOpenIterator())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\titer := table.MaterializeObjects(ctx, r.table, keyIter)\n\treturn iter, nil\n}\n"
  },
  {
    "path": "x/acp/commitment/service.go",
    "content": "package commitment\n\nimport (\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc NewCommitmentService(engine coretypes.ACPEngineServer, repository *CommitmentRepository) *CommitmentService {\n\treturn &CommitmentService{\n\t\tengine:     engine,\n\t\trepository: repository,\n\t}\n}\n\n// CommitmentService abstracts registration commitment operations\ntype CommitmentService struct {\n\tengine     coretypes.ACPEngineServer\n\trepository *CommitmentRepository\n}\n\n// BuildCommitment produces a byte commitment for actor and objects.\n// The commitment is guaranteed to be valid, as we verify that no object has been registered yet.\nfunc (s *CommitmentService) BuildCommitment(ctx sdk.Context, policyId string, actor *coretypes.Actor, objects []*coretypes.Object) ([]byte, error) {\n\trec, err := s.engine.GetPolicy(ctx, &coretypes.GetPolicyRequest{\n\t\tId: policyId,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif rec == nil {\n\t\treturn nil, errors.ErrPolicyNotFound(policyId)\n\t}\n\n\tfor _, obj := range objects {\n\t\tstatus, err := s.engine.GetObjectRegistration(ctx, &coretypes.GetObjectRegistrationRequest{\n\t\t\tPolicyId: policyId,\n\t\t\tObject:   obj,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif status.IsRegistered {\n\t\t\treturn nil, errors.Wrap(\"object already registered\", errors.ErrorType_BAD_INPUT,\n\t\t\t\terrors.Pair(\"policy\", policyId),\n\t\t\t\terrors.Pair(\"resource\", obj.Resource),\n\t\t\t\terrors.Pair(\"object\", obj.Id),\n\t\t\t)\n\t\t}\n\t}\n\n\treturn GenerateCommitmentWithoutValidation(policyId, actor, objects)\n}\n\n// FlagExpiredCommitments iterates over stored commitments,\n// filters for expired commitments wrt the current block time,\n// flags them as expired and returns the newly expired commitments\nfunc (s *CommitmentService) FlagExpiredCommitments(ctx sdk.Context) ([]*types.RegistrationsCommitment, error) {\n\tnow, err := types.TimestampFromCtx(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\titer, err := s.repository.GetNonExpiredCommitments(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer iter.Close()\n\n\tvar processed []*types.RegistrationsCommitment\n\tfor !iter.Finished() {\n\t\tcommitment, err := iter.Value()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\texpired, err := commitment.IsExpiredAgainst(now)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif expired {\n\t\t\tcommitment.Expired = true\n\t\t\tprocessed = append(processed, commitment)\n\t\t}\n\n\t\terr = iter.Next(ctx)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tfor _, commitment := range processed {\n\t\terr := s.repository.update(ctx, commitment)\n\t\tif err != nil {\n\t\t\treturn nil, errors.Wrap(\"expiring commitment\", err, errors.Pair(\"commitment\", fmt.Sprintf(\"%v\", commitment.Id)))\n\t\t}\n\t}\n\n\treturn processed, nil\n}\n\n// SetNewCommitment sets a new RegistrationCommitment\nfunc (s *CommitmentService) SetNewCommitment(ctx sdk.Context, policyId string, commitment []byte, actor *coretypes.Actor, params *types.Params, msgCreator string) (*types.RegistrationsCommitment, error) {\n\trec, err := s.engine.GetPolicy(ctx, &coretypes.GetPolicyRequest{\n\t\tId: policyId,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif rec == nil {\n\t\treturn nil, errors.ErrPolicyNotFound(policyId)\n\t}\n\n\tif len(commitment) != commitmentBytes {\n\t\treturn nil, errInvalidCommitment(policyId, commitment)\n\t}\n\n\tmetadata, err := types.BuildRecordMetadata(ctx, actor.Id, msgCreator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tregistration := &types.RegistrationsCommitment{\n\t\tId:         0, // doesn't matter since it will be auto-generated\n\t\tPolicyId:   policyId,\n\t\tCommitment: commitment,\n\t\tExpired:    false,\n\t\tValidity:   params.RegistrationsCommitmentValidity,\n\t\tMetadata:   metadata,\n\t}\n\n\terr = s.repository.create(ctx, registration)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn registration, nil\n}\n\n// ValidateOpening verifies whether the given opening proof is valid for the authenticated actor and\n// the objects\n// returns true if opening is valid\nfunc (s *CommitmentService) ValidateOpening(ctx sdk.Context, commitmentId uint64, proof *types.RegistrationProof, actor *coretypes.Actor) (*types.RegistrationsCommitment, bool, error) {\n\topt, err := s.repository.GetById(ctx, commitmentId)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\tif opt.Empty() {\n\t\treturn nil, false, errors.Wrap(\"RegistrationsCommitment\", errors.ErrorType_NOT_FOUND,\n\t\t\terrors.Pair(\"id\", fmt.Sprintf(\"%v\", commitmentId)))\n\t}\n\n\tcommitment := opt.GetValue()\n\tnow, err := types.TimestampFromCtx(ctx)\n\tif err != nil {\n\t\treturn commitment, false, errors.NewWithCause(\"failed determining current timestamp\", err, errors.ErrorType_INTERNAL)\n\t}\n\tafter, err := commitment.Metadata.CreationTs.IsAfter(commitment.Validity, now)\n\tif err != nil {\n\t\treturn commitment, false, errors.NewWithCause(\"invalid timestamp format\", err, errors.ErrorType_INTERNAL)\n\t}\n\tif after {\n\t\treturn commitment, false, errors.Wrap(\"commitment expired\", errors.ErrorType_OPERATION_FORBIDDEN,\n\t\t\terrors.Pair(\"commitment\", fmt.Sprintf(\"%v\", commitmentId)))\n\t}\n\n\tok, err := VerifyProof(commitment.Commitment, commitment.PolicyId, actor, proof)\n\tif err != nil {\n\t\treturn commitment, false, errors.Wrap(\"invalid registration opening\", err)\n\t}\n\treturn commitment, ok, nil\n}\n"
  },
  {
    "path": "x/acp/did/did.go",
    "content": "package did\n\nimport (\n\tstdcrypto \"crypto\"\n\t\"crypto/ed25519\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n)\n\nfunc ProduceDID() (string, stdcrypto.Signer, error) {\n\tpkey, skey, err := ed25519.GenerateKey(nil)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\tkeyType := crypto.Ed25519\n\tdid, err := key.CreateDIDKey(keyType, []byte(pkey))\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn did.String(), skey, nil\n}\n"
  },
  {
    "path": "x/acp/did/key.go",
    "content": "package did\n\nimport (\n\t\"context\"\n\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n)\n\nvar _ Resolver = (*KeyResolver)(nil)\n\ntype KeyResolver struct {\n}\n\nfunc (r *KeyResolver) Resolve(ctx context.Context, did string) (DIDDocument, error) {\n\tdidkey := key.DIDKey(did)\n\tdoc, err := didkey.Expand()\n\tif err != nil {\n\t\treturn DIDDocument{}, err\n\t}\n\n\treturn DIDDocument{\n\t\tDocument: doc,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/did/key_test.go",
    "content": "package did\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSECP256K1ToDIDThenResolve(t *testing.T) {\n\tpriv := secp256k1.GenPrivKey()\n\tpub := priv.PubKey()\n\n\tdid, err := DIDFromPubKey(pub)\n\trequire.NoError(t, err)\n\n\tresolver := KeyResolver{}\n\t_, err = resolver.Resolve(context.Background(), did)\n\trequire.NoError(t, err)\n}\n\nfunc TestSECP256R1ToDIDThenResolve(t *testing.T) {\n\tpriv, err := secp256r1.GenPrivKey()\n\trequire.NoError(t, err)\n\n\tpub := priv.PubKey()\n\n\tdid, err := DIDFromPubKey(pub)\n\trequire.NoError(t, err)\n\n\tresolver := KeyResolver{}\n\t_, err = resolver.Resolve(context.Background(), did)\n\trequire.NoError(t, err)\n}\n\nfunc TestED25519ToDIDThenResolve(t *testing.T) {\n\tpriv := ed25519.GenPrivKey()\n\tpub := priv.PubKey()\n\n\tdid, err := DIDFromPubKey(pub)\n\trequire.NoError(t, err)\n\n\tresolver := KeyResolver{}\n\t_, err = resolver.Resolve(context.Background(), did)\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "x/acp/did/types.go",
    "content": "package did\n\nimport (\n\t\"context\"\n\t\"crypto/ecdsa\"\n\t\"crypto/elliptic\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\t\"github.com/TBD54566975/ssi-sdk/did/resolution\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n)\n\ntype DIDDocument struct {\n\t*did.Document\n}\n\ntype Resolver interface {\n\tResolve(ctx context.Context, did string) (DIDDocument, error)\n}\n\n// IsValidDID verifies the validity of the specified did string.\nfunc IsValidDID(didStr string) error {\n\t_, err := resolution.GetMethodForDID(didStr)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// IssueDID produces a DID for a SourceHub account.\nfunc IssueDID(acc sdk.AccountI) (string, error) {\n\treturn DIDFromPubKey(acc.GetPubKey())\n}\n\n// DIDFromPubKey constructs and returns a DID from a public key.\nfunc DIDFromPubKey(pk cryptotypes.PubKey) (string, error) {\n\tvar keyType crypto.KeyType\n\tswitch t := pk.(type) {\n\tcase *secp256k1.PubKey:\n\t\tkeyType = crypto.SECP256k1\n\tcase *secp256r1.PubKey:\n\t\tkeyType = crypto.P256\n\tcase *ed25519.PubKey:\n\t\tkeyType = crypto.Ed25519\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\n\t\t\t\"failed to issue did for key %v: account key type must be secp256k1, secp256r1, or ed25519, got %v\",\n\t\t\tpk.Bytes(), t,\n\t\t)\n\t}\n\n\tpkBytes := pk.Bytes()\n\n\tif keyType == crypto.P256 {\n\t\tsdkPubKey := pk.(*secp256r1.PubKey)\n\t\tecdsaPubKey := &ecdsa.PublicKey{Curve: elliptic.P256(), X: sdkPubKey.Key.X, Y: sdkPubKey.Key.Y}\n\t\tecdhPubKey, err := ecdsaPubKey.ECDH()\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to create ecdh public key: %w\", err)\n\t\t}\n\t\tpkBytes = ecdhPubKey.Bytes()\n\t}\n\n\tdid, err := key.CreateDIDKey(keyType, pkBytes)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"failed to generated did for %v: %v\", pk.Bytes(), err)\n\t}\n\n\treturn did.String(), nil\n}\n\n// IssueModuleDID produces a DID for a SourceHub module, based on its name.\n//\n// The issued did uses a pseudo-method named \"module\", which simply appends the module name.\nfunc IssueModuleDID(moduleName string) string {\n\treturn \"did:module:\" + moduleName\n}\n\n// IssueInterchainAccountDID produces a DID based on the ICA account address.\n//\n// The issued did uses a pseudo-method named \"ica\", which appends the ICA address.\nfunc IssueInterchainAccountDID(icaAddr string) string {\n\treturn \"did:ica:\" + icaAddr\n}\n"
  },
  {
    "path": "x/acp/docs/README.md",
    "content": "---\ndate: 2024-03-07\n---\n\n# About\n\nDocs directory contains ADRs and Design Docs for ACP module features"
  },
  {
    "path": "x/acp/docs/adr-001-polcy-cmd.md",
    "content": "---\ndate: 2024-03-07\n---\n\nThis ADR registers design decisions regarding the MsgPolicyCmd transaction.\nMsgPolicyCmd enables the ACP module to accept Commands to a Policy from users that do not have a SourceHub account.\nThis feature works by introducing a payload which contains the command, the actor's DID, metadata and a signature issued by the Actor.\nTo execute the command the payload's signature is validated using the DID's `VerificationMethod` and a series of checks are performed, iff the payload is valid the ACP module extracts the command and executes it.\n\n\nIntro\n=====\n\nThis ADR registers design decisions regarding the MsgPolicyCmd transaction.\nMsgPolicyCmd enables the ACP module to accept Commands to a Policy from users that do not have a SourceHub account.\nThis feature works by introducing a payload which contains the command, the actor's DID, metadata and a signature issued by the Actor.\nTo execute the command the payload's signature is validated using the DID's `VerificationMethod` and a series of checks are performed, iff the payload is valid the ACP module extracts the command and executes it.\n\n\n\nBody\n====\n\n## Removing the need for SourceHub accounts\n\nPrior to this message, any operation done under a Policy required the Actor to issue a Tx signed from a SourceHub account.\nThe ACP Module messages would issue each SourceHub address a DID which would be used as the Subject for the Relationships.\nThis system imposed a great limitation upon the identifiers a Policy was able to accept, since effectively only SourceHub accounts could be Actors under a Policy.\n\nThe MsgPolicyCmd solves this problem by decoupling the Tx signer from the Msg issuer by introducing a signed payload to the system.\nThis signed payload was designed to accept any DID Actor, so long as the DID is resolvable to a DID Document which contains some VerificationMethod / public key.\n\nA related question is why dids as opposed to an arbitrary actor registration system?\nDIDs were simple and convenient in that they're a self contained identifier which can be easily resolved to key material for authentication.\nAn alternative to DIDs would be self signed certificates, however they're often quite bulky in comparasion and often times the additional data is not needed for an application.\nAs such, this system was designed to support DIDs as first class citzens.\n\nNote that the restriction to DIDs now does not prohibits the use of arbitrary string IDs in the future.\nIt would be possible to add a mapping layer which could take an arbitrary string and associate it to a DID.\n\n## Signed Payload\n\nThs signed payload is simply a data-signature pair which contains a Command for the ACP module to execute.\nThe signature is used to guarantee integrity and authenticate the issuer at the same time.\nThe nature of DIDs means they are resolved to a Public Key which is used to verify the signature - thus verifying integrity and authenticating all at once.\n\nThe signed payload is by design a single use entity which is sent only once, from an Actor to SourceHub.\nUpon accepting a payload, the ACP module must not process it again, otherwise the system is vulnerable to replay attacks.\nSee section on preventing attacks for an overview of the protection systems in place.\n\n### Payload Fields\n\n- id: id MUST be an UUID v4 identifier to uniquely identify the payload. v4 is chosen to preserve user privacy\n- actor: actor MUST be a valid did string which contains a \"VerificationMethod\".\n- issued_height: issued_height acts as metadata for users indicating the SourceHub block height for which the payload was generated\n- expiration_height: expiration_height defines an upperbound at which the payload will be accepted. If SourceHub's current height is greater than expiration_height, the payload MUST be rejected.\n- command: command is an oneof field containing the command the ACP module will execute.\n\nA related question might be: why not JWT fields?\nThere are two lines of thought to this: a desire (perhaps unjustified) to not tie the payload to JWS only and certain semantics wouldn't translate 1-1, most notably iat, nbf, exp which specifies timestamps (NumericDate) as opposed to block heights.\n\n## Signed Payload Format and Validation\n\nThe Signed Payload was designed to support multiple formats.\n\n## JWS\n\n- ignore any field other than alg in header\n- only accept web encoded jws\n\n### Security Notes\n\nTLDR: Ignore ALL JOSE headers while verifying a JWS in the ACP module. Verification MUST use the DID specificied in the `actor` field of the payload.\n\nThe JOSE standard is infamous for being easily exploitable and difficult to make secure.\nOver the years some clever attacks have been executed, such as changing the header alg from a signature algorithm to a MAC.\nThe issue always boiled down to trusting the JWS when it shouldn't be trusted.\nThe payload and header are somewhat malleable, despite the signature.\nThe current best practice is to restrict the JWS to only be validated for a set of previously configured algorithms.\n\nTo further complicate matters, JWS JSON Serialization supports a \"JWS Unprotected Header\" option which opens yet another can of worms.\nWith all the challenges and nuances, correctly verifying a JWS can be tricky.\n\nIn the case of the ACP module there's one additional detail which must be kept in mind.\nThe Adversary model for ACP is different than the usual Adversary for JWSs out in the wild.\n\nThe common use case for JWS is to share a signed and verified payload between applications.\nThe payload is generated by some trusted party and the verification address the question of \"was this payload generated with a key I trust?\".\nAs such, most attacks such as kid trickery or changing from Sign to MAC attempts to trick the code into saying \"yes, this JWS was issued with this key\".\nThe assumption is that if the JWS was verified it meant that it was issue by a trusted party and therefore the payload can be trusted.\n\nOn the other hand, the ACP module does not care who issued the JWS.\nThere is no previously known set of trusted parties that could've issued that JWS, they are all self issued / signed.\nThe JWS serves as an authentication mechanism, proving that the issuer controls the private key matching the public key in the JWS.\nAn ACP Adversary is playing a completely different game from regulary Adversaries, there is no challenge in making ACP accept a JWS token, any adversary can issue a valid JWS.\nThe game the Adversary is playing is that of impersonation, an Adversary would succeed if it is able to generate a verifiable JWS (easy) which tricks the ACP module into thinking it was generated by someone else (must be hard), which is quite different from the regular case.\nIn the regular case the Adversary doesn't care about who the Server thinks the issuer is, it just has to accept the JWS; the ACP adversary can easily make the server accept a JWS, but their challenge is trickying the server into thinking the JWS was issued by another Actor.\n\nSince the JWS header can be used to inject verification information (eg embedding a JWK, kid, x509 urls) it MUST be ignored while validating an ACP JWS, otherwise libraries or incorrect code might use the header data to verify the JWS as though it was issued by the `actor` in the payload.\nThe JOSE Header can be exploited by the Adversary so they can win the game.\n\n\n\n## Replay Attack Protection\n\n- expiration_height\n- cache id until expiration_height\n\n\n## Verification Steps\n- extract did from payload\n- resolve did \n- extract did's verification method\n- verify signature using did's verification method\n- verify expeiration_height is less than current height\n- verify that id is not in cache of payloads\n- accept\n\n\nConclusion\n=========="
  },
  {
    "path": "x/acp/keeper/abci.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// EndBlocker is a function which should be called after processing a proposal and before finalizing a block,\n// as specified by the ABCI spec.\n//\n// Currently EndBlocker iterates over valid (non-expired) RegistrationCommitments and checks whether\n// they are still valid, otherwise flags them as expired.\nfunc (k *Keeper) EndBlocker(goCtx context.Context) ([]*types.RegistrationsCommitment, error) {\n\tdefer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker)\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\trepo := k.getRegistrationsCommitmentRepository(ctx)\n\tservice := commitment.NewCommitmentService(engine, repo)\n\n\tcommitments, err := service.FlagExpiredCommitments(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn commitments, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/abci_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n)\n\nfunc TestEndBlocker(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\tparams := &types.Params{\n\t\tRegistrationsCommitmentValidity: &types.Duration{\n\t\t\tDuration: &types.Duration_ProtoDuration{\n\t\t\t\tProtoDuration: &prototypes.Duration{\n\t\t\t\t\tNanos: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\tengine := k.getACPEngine(ctx)\n\tctx, err := utils.InjectPrincipal(ctx, \"did:example:bob\")\n\trequire.NoError(t, err)\n\tresp, err := engine.CreatePolicy(ctx, &coretypes.CreatePolicyRequest{\n\t\tPolicy: `\nname: test\n`,\n\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t})\n\trequire.NoError(t, err)\n\n\trepo := k.getRegistrationsCommitmentRepository(ctx)\n\tservice := commitment.NewCommitmentService(k.getACPEngine(ctx), repo)\n\tcommitment := make([]byte, 32)\n\tcomm, err := service.SetNewCommitment(ctx, resp.Record.Policy.Id, commitment, coretypes.NewActor(\"test\"), params, \"source1234\")\n\trequire.NoError(t, err)\n\n\t// no expired commitments at this point\n\texpired, err := k.EndBlocker(ctx)\n\trequire.NoError(t, err)\n\trequire.Nil(t, expired)\n\n\t// set commitment to expire\n\tctx = ctx.WithBlockTime(time.Now().Add(time.Nanosecond * 2))\n\n\t// should return exactly one expired commitment\n\texpired, err = k.EndBlocker(ctx)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, expired)\n\trequire.Len(t, expired, 1)\n\n\twant := comm\n\twant.Expired = true\n\trequire.Equal(t, want, expired[0])\n}\n"
  },
  {
    "path": "x/acp/keeper/acp_core.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/runtime\"\n)\n\nvar _ runtime.TimeService = (*SourceHubTimeProvider)(nil)\n\n// SourceHubTimeProvider implements acp_core's TimeService\n// in order to synchronize the block time with acp_core's engine time.\ntype SourceHubTimeProvider struct{}\n\n// GetNow implements TimeService\nfunc (p *SourceHubTimeProvider) GetNow(goCtx context.Context) (*prototypes.Timestamp, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\ttime := ctx.BlockTime()\n\tts, err := prototypes.TimestampProto(time)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn ts, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/actor.go",
    "content": "package keeper\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\n// GetActorDID returns the actor DID for the current transaction.\n// It prioritizes the DID extracted from the extension option bearer token if present,\n// otherwise falls back to issuing a DID from the provided account address.\nfunc (k *Keeper) GetActorDID(ctx sdk.Context, accountAddr string) (string, error) {\n\t// Check if a DID was extracted from the extension option bearer token\n\tif extractedDID, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok && extractedDID != \"\" {\n\t\treturn extractedDID, nil\n\t}\n\n\t// Fall back to issuing DID from account address\n\treturn k.IssueDIDFromAccountAddr(ctx, accountAddr)\n}\n"
  },
  {
    "path": "x/acp/keeper/actor_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestGetActorDID_WithExtractedDID(t *testing.T) {\n\tctx, k, accK := setupKeeper(t)\n\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\textractedDID := \"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK\"\n\n\t// Inject extracted DID into context\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, extractedDID)\n\n\t// GetActorDID should return the extracted DID\n\tactorDID, err := k.GetActorDID(ctx, testAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, extractedDID, actorDID, \"Should use extracted DID from context\")\n}\n\nfunc TestGetActorDID_WithoutExtractedDID(t *testing.T) {\n\tctx, k, accK := setupKeeper(t)\n\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\n\t// GetActorDID should issue DID from account address (no extracted DID in context)\n\tactorDID, err := k.GetActorDID(ctx, testAddr)\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, actorDID, \"Should issue DID from account address\")\n\trequire.Contains(t, actorDID, \"did:key:\", \"Should be a valid DID\")\n}\n\nfunc TestGetActorDID_WithEmptyExtractedDID(t *testing.T) {\n\tctx, k, accK := setupKeeper(t)\n\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, \"\")\n\n\t// GetActorDID should fall back to issuing DID from account address\n\tactorDID, err := k.GetActorDID(ctx, testAddr)\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, actorDID, \"Should issue DID from account address when extracted DID is empty\")\n\trequire.Contains(t, actorDID, \"did:key:\", \"Should be a valid DID\")\n}\n\nfunc TestCreatePolicy_WithExtractedDID(t *testing.T) {\n\tctx, msgServer, accK := setupMsgServer(t)\n\n\t// Create an account and extract DID from bearer token\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\textractedDID := \"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK\"\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, extractedDID)\n\n\t// Create a policy\n\tmsg := &types.MsgCreatePolicy{\n\t\tCreator:     testAddr,\n\t\tPolicy:      \"name: test\\nresources:\\n- name: file\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresp, err := msgServer.CreatePolicy(ctx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\trequire.NotNil(t, resp.Record)\n\trequire.NotNil(t, resp.Record.Metadata)\n\n\t// The policy owner should be the extracted DID\n\trequire.Equal(t, extractedDID, resp.Record.Metadata.OwnerDid, \"Policy owner DID should be the extracted DID\")\n}\n\nfunc TestCreatePolicy_WithoutExtractedDID(t *testing.T) {\n\tctx, msgServer, accK := setupMsgServer(t)\n\n\t// Create an account (no extracted DID)\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\n\t// Create a policy\n\tmsg := &types.MsgCreatePolicy{\n\t\tCreator:     testAddr,\n\t\tPolicy:      \"name: test\\nresources:\\n- name: file\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresp, err := msgServer.CreatePolicy(ctx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\trequire.NotNil(t, resp.Record)\n\trequire.NotNil(t, resp.Record.Metadata)\n\n\t// The policy owner should be a DID issued from the creator address\n\trequire.Contains(t, resp.Record.Metadata.OwnerDid, \"did:key:\", \"Policy owner DID should be a valid DID\")\n\trequire.NotEmpty(t, resp.Record.Metadata.OwnerDid, \"Policy owner DID should not be empty\")\n}\n\nfunc TestEditPolicy_WithExtractedDID(t *testing.T) {\n\tctx, msgServer, accK := setupMsgServer(t)\n\n\t// Create an account and extract DID from bearer token\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\textractedDID := \"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK\"\n\n\t// Inject extracted DID before creating the policy so it becomes the policy owner\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, extractedDID)\n\n\tcreateMsg := &types.MsgCreatePolicy{\n\t\tCreator: testAddr,\n\t\tPolicy: `\nname: test\nresources:\n- name: file\n`,\n\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tcreateResp, err := msgServer.CreatePolicy(ctx, createMsg)\n\trequire.NoError(t, err)\n\tpolicyID := createResp.Record.Policy.Id\n\n\t// Verify the policy was created with the extracted DID as owner\n\trequire.Equal(t, extractedDID, createResp.Record.Metadata.OwnerDid)\n\n\t// Edit the policy with the same extracted DID\n\teditMsg := &types.MsgEditPolicy{\n\t\tCreator:  testAddr,\n\t\tPolicyId: policyID,\n\t\tPolicy: `\nname: test 2\nresources:\n- name: file\n`,\n\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\teditResp, err := msgServer.EditPolicy(ctx, editMsg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, editResp)\n\trequire.NotNil(t, editResp.Record)\n\trequire.NotNil(t, editResp.Record.Policy)\n\n\t// Verify the policy owner didn't change\n\trequire.Equal(t, extractedDID, editResp.Record.Metadata.OwnerDid)\n}\n\nfunc TestDirectPolicyCmd_WithExtractedDID(t *testing.T) {\n\tctx, msgServer, accK := setupMsgServer(t)\n\n\t// Setup: Create an account and extract DID from bearer token\n\ttestAddr := accK.GenAccount().GetAddress().String()\n\textractedDID := \"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK\"\n\n\t// Inject extracted DID into context before creating policy\n\tctx = ctx.WithValue(appparams.ExtractedDIDContextKey, extractedDID)\n\n\tcreateMsg := &types.MsgCreatePolicy{\n\t\tCreator: testAddr,\n\t\tPolicy: `\nname: test\nresources:\n- name: file\n`,\n\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tcreateResp, err := msgServer.CreatePolicy(ctx, createMsg)\n\trequire.NoError(t, err)\n\tpolicyID := createResp.Record.Policy.Id\n\n\t// Verify the policy was created with the extracted DID as owner\n\trequire.Equal(t, extractedDID, createResp.Record.Metadata.OwnerDid)\n\n\t// Execute a policy command to register an object (extracted DID still in context)\n\tcmdMsg := &types.MsgDirectPolicyCmd{\n\t\tCreator:  testAddr,\n\t\tPolicyId: policyID,\n\t\tCmd: types.NewRegisterObjectCmd(&coretypes.Object{\n\t\t\tResource: \"file\",\n\t\t\tId:       \"file1\",\n\t\t}),\n\t}\n\n\tcmdResp, err := msgServer.DirectPolicyCmd(ctx, cmdMsg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, cmdResp)\n\trequire.NotEmpty(t, cmdResp.Result)\n}\n"
  },
  {
    "path": "x/acp/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ types.QueryServer = &Keeper{}\n"
  },
  {
    "path": "x/acp/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store/prefix\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tacpruntime \"github.com/sourcenetwork/acp_core/pkg/runtime\"\n\t\"github.com/sourcenetwork/acp_core/pkg/services\"\n\t\"github.com/sourcenetwork/raccoondb/v2/primitives\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\tcosmosadapter \"github.com/sourcenetwork/sourcehub/x/acp/stores/cosmos\"\n\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/access_decision\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper/policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/registration\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/stores\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype (\n\tKeeper struct {\n\t\tcdc          codec.BinaryCodec\n\t\tstoreService store.KVStoreService\n\t\tlogger       log.Logger\n\n\t\t// the address capable of executing a MsgUpdateParams message. Typically, this\n\t\t// should be the x/gov module account.\n\t\tauthority string\n\n\t\taccountKeeper types.AccountKeeper\n\t\tcapKeeper     *capabilitykeeper.ScopedKeeper\n\t\thubKeeper     types.HubKeeper\n\t}\n)\n\nfunc NewKeeper(\n\tcdc codec.BinaryCodec,\n\tstoreService store.KVStoreService,\n\tlogger log.Logger,\n\tauthority string,\n\taccountKeeper types.AccountKeeper,\n\tcapKeeper *capabilitykeeper.ScopedKeeper,\n\thubKeeper types.HubKeeper,\n) Keeper {\n\tif _, err := sdk.AccAddressFromBech32(authority); err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid authority address: %s\", authority))\n\t}\n\n\treturn Keeper{\n\t\tcdc:           cdc,\n\t\tstoreService:  storeService,\n\t\tauthority:     authority,\n\t\tlogger:        logger,\n\t\taccountKeeper: accountKeeper,\n\t\tcapKeeper:     capKeeper,\n\t\thubKeeper:     hubKeeper,\n\t}\n}\n\n// GetAuthority returns the module's authority.\nfunc (k *Keeper) GetAuthority() string {\n\treturn k.authority\n}\n\n// Logger returns a module-specific logger.\nfunc (k *Keeper) Logger() log.Logger {\n\treturn k.logger.With(\"module\", fmt.Sprintf(\"x/%s\", types.ModuleName))\n}\n\n// getAccessDecisionRepository returns the module's default access decision repository.\nfunc (k *Keeper) getAccessDecisionRepository(ctx sdk.Context) access_decision.Repository {\n\tkv := k.storeService.OpenKVStore(ctx)\n\tprefixKey := []byte(types.AccessDecisionRepositoryKeyPrefix)\n\tadapted := runtime.KVStoreAdapter(kv)\n\tadapted = prefix.NewStore(adapted, prefixKey)\n\treturn access_decision.NewAccessDecisionRepository(adapted)\n}\n\n// getACPEngine returns the module's default ACP Core Engine.\nfunc (k *Keeper) getACPEngine(ctx sdk.Context) *services.EngineService {\n\tkv := k.storeService.OpenKVStore(ctx)\n\tadapted := runtime.KVStoreAdapter(kv)\n\traccoonAdapted := stores.RaccoonKVFromCosmos(adapted)\n\truntime, err := acpruntime.NewRuntimeManager(\n\t\tacpruntime.WithKVStore(raccoonAdapted),\n\t\tacpruntime.WithTimeService(&SourceHubTimeProvider{}),\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn services.NewACPEngine(runtime)\n}\n\n// getRegistrationsCommitmentRepository returns the module's default Registration Commitment Repository.\nfunc (k *Keeper) getRegistrationsCommitmentRepository(ctx sdk.Context) *commitment.CommitmentRepository {\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.RegistrationsCommitmentKeyPrefix))\n\trepo, err := commitment.NewCommitmentRepository(kv)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn repo\n}\n\n// getAmendmentEventRepository returns the module's default AmendmentEventRepository.\nfunc (k *Keeper) getAmendmentEventRepository(ctx sdk.Context) *registration.AmendmentEventRepository {\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.AmendmentEventKeyPrefix))\n\trepo, err := registration.NewAmendmentEventRepository(kv)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn repo\n}\n\n// GetComitmentService returns the module's default CommitmentService instance.\nfunc (k *Keeper) getCommitmentService(ctx sdk.Context) *commitment.CommitmentService {\n\treturn commitment.NewCommitmentService(\n\t\tk.getACPEngine(ctx),\n\t\tk.getRegistrationsCommitmentRepository(ctx),\n\t)\n}\n\n// getRegistrationService returns the module's default RegistrationService instance.\nfunc (k *Keeper) getRegistrationService(ctx sdk.Context) *registration.RegistrationService {\n\treturn registration.NewRegistrationService(\n\t\tk.getACPEngine(ctx),\n\t\tk.getAmendmentEventRepository(ctx),\n\t\tk.getCommitmentService(ctx),\n\t)\n}\n\n// getPolicyCmdHandler returns the module's default PolicyCmd Handler instance.\nfunc (k *Keeper) getPolicyCmdHandler(ctx sdk.Context) *policy_cmd.Handler {\n\treturn policy_cmd.NewPolicyCmdHandler(\n\t\tk.getACPEngine(ctx),\n\t\tk.getRegistrationService(ctx),\n\t\tk.getCommitmentService(ctx),\n\t)\n}\n\n// hasSeenSignedPolicyCmd checks the replay cache for the given payload id.\nfunc (k *Keeper) hasSeenSignedPolicyCmd(ctx sdk.Context, payloadID []byte, currentHeight uint64) bool {\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\topt, err := kv.Get(ctx, payloadID)\n\tif err != nil {\n\t\treturn false\n\t}\n\tif opt.Empty() {\n\t\treturn false\n\t}\n\tbz := opt.GetValue()\n\tif len(bz) != 8 {\n\t\tkv.Delete(ctx, payloadID)\n\t\treturn false\n\t}\n\texp := binary.BigEndian.Uint64(bz)\n\tif exp < currentHeight {\n\t\tkv.Delete(ctx, payloadID)\n\t\treturn false\n\t}\n\treturn true\n}\n\n// markSignedPolicyCmdSeen stores the payload id with its expiration height if not already present.\nfunc (k *Keeper) markSignedPolicyCmdSeen(ctx sdk.Context, payloadID []byte, expireHeight uint64) error {\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\thas, err := kv.Has(ctx, payloadID)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to check if signed policy cmd exists: %w\", err)\n\t}\n\tif has {\n\t\treturn fmt.Errorf(\"signed policy cmd already processed\")\n\t}\n\tvar bz [8]byte\n\tbinary.BigEndian.PutUint64(bz[:], expireHeight)\n\t_, err = kv.Set(ctx, payloadID, bz[:])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to store signed policy cmd: %w\", err)\n\t}\n\treturn nil\n}\n\n// getPolicyCapabilityManager returns the module's default Capability Manager instance.\nfunc (k *Keeper) getPolicyCapabilityManager(ctx sdk.Context) *capability.PolicyCapabilityManager {\n\treturn capability.NewPolicyCapabilityManager(k.capKeeper)\n}\n\n// InitializeCapabilityKeeper allows app to set the capability keeper after the moment of creation.\n//\n// This is supported since currently the capability module\n// does not integrate with the new module dependency injection system.\n//\n// Panics if the keeper was previously initialized (ie inner pointer != nil).\nfunc (k *Keeper) InitializeCapabilityKeeper(keeper *capabilitykeeper.ScopedKeeper) {\n\tif k.capKeeper != nil {\n\t\tpanic(\"capability keeper already initialized\")\n\t}\n\tk.capKeeper = keeper\n}\n"
  },
  {
    "path": "x/acp/keeper/keeper_common_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/testutil\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\thubtestutil \"github.com/sourcenetwork/sourcehub/x/hub/testutil\"\n)\n\nvar timestamp, _ = prototypes.TimestampProto(time.Date(2024, time.January, 1, 0, 0, 0, 0, time.UTC))\n\nfunc setupMsgServer(t *testing.T) (sdk.Context, types.MsgServer, *testutil.AccountKeeperStub) {\n\tctx, k, accK := setupKeeper(t)\n\treturn ctx, &k, accK\n}\n\nfunc setupKeeperWithCapability(t *testing.T) (sdk.Context, Keeper, *testutil.AccountKeeperStub, *capabilitykeeper.Keeper) {\n\tacpStoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tcapabilityStoreKey := storetypes.NewKVStoreKey(\"capkeeper\")\n\tcapabilityMemStoreKey := storetypes.NewKVStoreKey(\"capkeepermem\")\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\t// mount stores\n\tstateStore.MountStoreWithDB(acpStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityMemStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\n\tcapKeeper := capabilitykeeper.NewKeeper(cdc, capabilityStoreKey, capabilityMemStoreKey)\n\tacpCapKeeper := capKeeper.ScopeToModule(types.ModuleName)\n\n\taccKeeper := &testutil.AccountKeeperStub{}\n\taccKeeper.GenAccount()\n\n\tacpKeeper := NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(acpStoreKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccKeeper,\n\t\t&acpCapKeeper,\n\t\thubtestutil.NewHubKeeperStub(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\n\t// Initialize params\n\tacpKeeper.SetParams(ctx, types.DefaultParams())\n\n\treturn ctx, acpKeeper, accKeeper, capKeeper\n}\n\nfunc setupKeeper(t *testing.T) (sdk.Context, Keeper, *testutil.AccountKeeperStub) {\n\tctx, k, accK, _ := setupKeeperWithCapability(t)\n\treturn ctx, k, accK\n}\n\nfunc mustGenerateActor() (string, crypto.Signer) {\n\tbob, bobSigner, err := did.ProduceDID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn bob, bobSigner\n}\n\nvar _ signed_policy_cmd.LogicalClock = (*logicalClockImpl)(nil)\n\ntype logicalClockImpl struct{}\n\nfunc (c *logicalClockImpl) GetTimestampNow(context.Context) (uint64, error) {\n\treturn 1, nil\n}\n\nvar logicalClock logicalClockImpl\n\nvar params types.Params = types.DefaultParams()\n"
  },
  {
    "path": "x/acp/keeper/keeper_test.go",
    "content": "package keeper\n\nimport (\n\t\"encoding/binary\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/raccoondb/v2/primitives\"\n\t\"github.com/stretchr/testify/require\"\n\n\tcosmosadapter \"github.com/sourcenetwork/sourcehub/x/acp/stores/cosmos\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// Test that an expired replay key is lazily removed and does not block resubmission.\nfunc TestHasSeenSignedPolicyCmd_ExpiredKeyIsPruned(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\tctx = ctx.WithBlockHeight(10)\n\n\tpayloadID := []byte(\"test-id\")\n\tcurrent := uint64(ctx.BlockHeight())\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\n\tvar bz [8]byte\n\tbinary.BigEndian.PutUint64(bz[:], uint64(current-1))\n\tkv.Set(ctx, payloadID, bz[:])\n\n\tseen := k.hasSeenSignedPolicyCmd(ctx, payloadID, uint64(ctx.BlockHeight()))\n\trequire.False(t, seen)\n\n\thas, err := kv.Has(ctx, payloadID)\n\trequire.NoError(t, err)\n\trequire.False(t, has)\n}\n\n// Test that malformed stored values are deleted and treated as unseen.\nfunc TestHasSeenSignedPolicyCmd_MalformedValueDeleted(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\tpayloadID := []byte(\"test-id\")\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\tkv.Set(ctx, payloadID, []byte{0x01})\n\n\tseen := k.hasSeenSignedPolicyCmd(ctx, payloadID, uint64(ctx.BlockHeight()))\n\trequire.False(t, seen)\n\n\thas, err := kv.Has(ctx, payloadID)\n\trequire.NoError(t, err)\n\trequire.False(t, has)\n}\n\n// Test that markSignedPolicyCmdSeen stores the expiration and prevents duplicate marks.\nfunc TestMarkSignedPolicyCmdSeen_StoresAndBlocksReplay(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\tctx = ctx.WithBlockHeight(10)\n\n\tpayloadID := []byte(\"test-id\")\n\texpire := uint64(25)\n\n\terr := k.markSignedPolicyCmdSeen(ctx, payloadID, expire)\n\trequire.NoError(t, err)\n\n\tseen := k.hasSeenSignedPolicyCmd(ctx, payloadID, uint64(ctx.BlockHeight()))\n\trequire.True(t, seen)\n\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\topt, _ := kv.Get(ctx, payloadID)\n\trequire.False(t, opt.Empty())\n\n\tbz := opt.GetValue()\n\trequire.Len(t, bz, 8)\n\n\tgot := binary.BigEndian.Uint64(bz)\n\trequire.Equal(t, expire, got)\n\n\terr = k.markSignedPolicyCmdSeen(ctx, payloadID, expire)\n\trequire.Error(t, err)\n}\n\n// Test that marking with an already expired height results in immediate prune on check.\nfunc TestMarkSignedPolicyCmdSeen_ExpiredImmediatelyPruned(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\tctx = ctx.WithBlockHeight(10)\n\n\tpayloadID := []byte(\"test-id\")\n\texpire := uint64(ctx.BlockHeight() - 1)\n\terr := k.markSignedPolicyCmdSeen(ctx, payloadID, expire)\n\trequire.NoError(t, err)\n\n\tseen := k.hasSeenSignedPolicyCmd(ctx, payloadID, uint64(ctx.BlockHeight()))\n\trequire.False(t, seen)\n\n\tcmtkv := k.storeService.OpenKVStore(ctx)\n\tkv := cosmosadapter.NewFromCoreKVStore(cmtkv)\n\tkv = primitives.NewPrefixedKV(kv, []byte(types.SignedPolicyCmdSeenKeyPrefix))\n\thas, err := kv.Has(ctx, payloadID)\n\trequire.NoError(t, err)\n\trequire.False(t, has)\n}\n"
  },
  {
    "path": "x/acp/keeper/main_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nfunc TestMain(m *testing.M) {\n\tapp.SetConfig(true)\n\tos.Exit(m.Run())\n}\n"
  },
  {
    "path": "x/acp/keeper/module_acp.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper/policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n)\n\n// CreateModulePolicy creates a new Policy within the ACP module, bound to some calling module.\n// Returns the created Policy and a Capability, which authorizes the presenter to operate over this policy.\n//\n// Callers must Claim the capability, as it is a unique instance which cannot be recreated after dropped.\n// Claiming can be done using the callers capability keeper directly or the policy capability manager provided in the capability package.\nfunc (k *Keeper) CreateModulePolicy(goCtx context.Context, policy string, marshalType coretypes.PolicyMarshalingType, module string) (*types.PolicyRecord, *capability.PolicyCapability, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\n\tmoduleDID := did.IssueModuleDID(module)\n\tmetadata, err := types.BuildACPSuppliedMetadata(ctx, moduleDID, module)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(\"CreateModulePolicy\", err)\n\t}\n\n\tctx, err = utils.InjectPrincipal(ctx, moduleDID)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(\"CreateModulePolicy\", err)\n\t}\n\n\tcoreResult, err := engine.CreatePolicy(ctx, &coretypes.CreatePolicyRequest{\n\t\tPolicy:      policy,\n\t\tMarshalType: marshalType,\n\t\tMetadata:    metadata,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(\"CreateModulePolicy\", err)\n\t}\n\n\trec, err := types.MapPolicy(coreResult.Record)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(\"CreateModulePolicy\", err)\n\t}\n\n\tcapMananager := k.getPolicyCapabilityManager(ctx)\n\tcap, err := capMananager.Issue(ctx, rec.Policy.Id)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(\"CreateModulePolicy\", err)\n\t}\n\n\treturn rec, cap, nil\n}\n\n// EditModulePolicy updates the policy definition attached to the given PolicyCapability\n// Returns the new policy record, the number of removed relationships and an error\nfunc (k *Keeper) EditModulePolicy(goCtx context.Context, cap *capability.PolicyCapability, policy string, marshalType coretypes.PolicyMarshalingType) (*types.PolicyRecord, uint64, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\n\tcapManager := k.getPolicyCapabilityManager(ctx)\n\n\terr := capManager.Validate(ctx, cap)\n\tif err != nil {\n\t\treturn nil, 0, errors.Wrap(\"EditModulePolicy\", err)\n\t}\n\n\tmodule, err := capManager.GetOwnerModule(ctx, cap)\n\tif err != nil {\n\t\treturn nil, 0, errors.Wrap(\"EditModulePolicy\", err)\n\t}\n\n\tmoduleDID := did.IssueModuleDID(module)\n\n\tctx, err = utils.InjectPrincipal(ctx, moduleDID)\n\tif err != nil {\n\t\treturn nil, 0, errors.Wrap(\"EditModulePolicy\", err)\n\t}\n\n\tcoreResult, err := engine.EditPolicy(ctx, &coretypes.EditPolicyRequest{\n\t\tPolicyId:    cap.GetPolicyId(),\n\t\tPolicy:      policy,\n\t\tMarshalType: marshalType,\n\t})\n\tif err != nil {\n\t\treturn nil, 0, errors.Wrap(\"EditModulePolicy\", err)\n\t}\n\n\trec, err := types.MapPolicy(coreResult.Record)\n\tif err != nil {\n\t\treturn nil, 0, errors.Wrap(\"EditModulePolicy\", err)\n\t}\n\n\treturn rec, coreResult.RelatinshipsRemoved, nil\n}\n\n// ModulePolicyCmdForActorAccount issues a policy command for the policy bound to the provided capability.\n// The command skips authentication and is assumed to be issued by actorAcc, which must be a valid sourcehub account address.\nfunc (k *Keeper) ModulePolicyCmdForActorAccount(goCtx context.Context, cap *capability.PolicyCapability, cmd *types.PolicyCmd, actorAcc string, txSigner string) (*types.PolicyCmdResult, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tactorDID, err := k.IssueDIDFromAccountAddr(ctx, actorAcc)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(\"ModulePolicyCmdForActorAccount: could not issue did to creator\",\n\t\t\terr, errors.Pair(\"address\", actorAcc))\n\t}\n\n\tresult, err := k.dispatchModulePolicyCmd(goCtx, cap, cmd, actorDID, txSigner)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(\"ModulePolicyCmdForActorAccount\", err)\n\t}\n\n\treturn result, nil\n}\n\n// ModulePolicyCmdForActorDID issues a policy command for the policy bound to the provided capability.\n// The command skips authentication and is assumed to be issued by the actor given by actorID, which must be a valid DID.\nfunc (k *Keeper) ModulePolicyCmdForActorDID(goCtx context.Context, capability *capability.PolicyCapability, cmd *types.PolicyCmd, actorDID string, txSigner string) (*types.PolicyCmdResult, error) {\n\tresult, err := k.dispatchModulePolicyCmd(goCtx, capability, cmd, actorDID, txSigner)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(\"ModulePolicyCmdForActorDID\", err)\n\t}\n\treturn result, nil\n}\n\nfunc (k *Keeper) dispatchModulePolicyCmd(goCtx context.Context, capability *capability.PolicyCapability, cmd *types.PolicyCmd, actorDID string, txSigner string) (*types.PolicyCmdResult, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\terr := k.getPolicyCapabilityManager(ctx).Validate(ctx, capability)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tpolId := capability.GetPolicyId()\n\tcmdCtx, err := policy_cmd.NewPolicyCmdCtx(ctx, polId, actorDID, txSigner, k.GetParams(ctx))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thandler := k.getPolicyCmdHandler(ctx)\n\tresult, err := handler.Dispatch(&cmdCtx, cmd)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/module_acp_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Test_CreateModulePolicy_ModuleCanCreatePolicy(t *testing.T) {\n\tctx, k, _, _ := setupKeeperWithCapability(t)\n\n\tpol := \"name: test\"\n\trecord, capability, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, \"external\")\n\n\trequire.NoError(t, err)\n\trequire.Equal(t, pol, record.RawPolicy)\n\trequire.Equal(t, record.Policy.Id, capability.GetPolicyId())\n\trequire.Equal(t, \"/acp/module_policies/\"+record.Policy.Id, capability.GetCapabilityName())\n\trequire.NotNil(t, capability.GetCosmosCapability())\n}\n\nfunc Test_EditModulePolicy_CannotEditWithoutClaimingCapability(t *testing.T) {\n\tctx, k, _, _ := setupKeeperWithCapability(t)\n\n\t// Given Policy created by module without a claimed capability\n\tpol := \"name: test\"\n\t_, cap, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, \"external\")\n\trequire.NoError(t, err)\n\n\t// When the module attempts to edit the policy\n\tpol = \"name: new-name\"\n\tresult, _, err := k.EditModulePolicy(ctx, cap, pol, coretypes.PolicyMarshalingType_YAML)\n\n\t// Then cmd is reject due to invalid capability\n\trequire.Nil(t, result)\n\trequire.ErrorIs(t, err, capability.ErrInvalidCapability)\n}\n\nfunc Test_EditModulePolicy_ModuleCanEditPolicyTiedToClaimedCapability(t *testing.T) {\n\tctx, k, _, capK := setupKeeperWithCapability(t)\n\n\tmoduleName := \"test_module\"\n\tscopedKeeper := capK.ScopeToModule(moduleName)\n\n\t// Given policy create by test_module\n\tpol := \"name: test\"\n\t_, cap, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, moduleName)\n\trequire.NoError(t, err)\n\t// And capability claimed by the module\n\tmanager := capability.NewPolicyCapabilityManager(&scopedKeeper)\n\terr = manager.Claim(ctx, cap)\n\trequire.NoError(t, err)\n\n\t// When the module edits the policy\n\tpol = \"name: new-name\"\n\trecord, _, err := k.EditModulePolicy(ctx, cap, pol, coretypes.PolicyMarshalingType_YAML)\n\n\t// Then policy record was edited with no error\n\trequire.NoError(t, err)\n\trequire.Equal(t, pol, record.RawPolicy)\n}\n\nfunc Test_ModulePolicyCmdForActorDID_ModuleCanAddRelationshipsToTheirPolicy(t *testing.T) {\n\tctx, k, _, capK := setupKeeperWithCapability(t)\n\n\t// Given policy created\n\tpol := `\nname: test\nresources:\n- name: file\n`\n\tmoduleName := \"mod1\"\n\t_, cap, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, moduleName)\n\trequire.NoError(t, err)\n\t// And claimed by mod1\n\tscopedKeeper := capK.ScopeToModule(moduleName)\n\tmanager := capability.NewPolicyCapabilityManager(&scopedKeeper)\n\terr = manager.Claim(ctx, cap)\n\trequire.NoError(t, err)\n\n\t// When module issues a policy cmd\n\tcmd := types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"foo\"))\n\tsigner := \"source1twjwexwrsvflt9nv9xwk27e0f2defa9fdjaeus\"\n\tresult, err := k.ModulePolicyCmdForActorDID(ctx, cap, cmd, \"did:example:bob\", signer)\n\n\t// Then it is accepted\n\trequire.NoError(t, err)\n\tresultCmd := result.GetRegisterObjectResult()\n\trequire.Equal(t, \"did:example:bob\", resultCmd.Record.Metadata.OwnerDid)\n\trequire.Equal(t, signer, resultCmd.Record.Metadata.TxSigner)\n}\n\nfunc Test_ModulePolicyCmdForActorAccount_ModuleCanAddRelationshipsToTheirPolicy(t *testing.T) {\n\tctx, k, accKeep, capK := setupKeeperWithCapability(t)\n\n\t// Given policy created\n\tpol := `\nname: test\nresources:\n- name: file\n`\n\tmoduleName := \"mod1\"\n\t_, cap, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, moduleName)\n\trequire.NoError(t, err)\n\t// And claimed by mod1\n\tscopedKeeper := capK.ScopeToModule(moduleName)\n\tmanager := capability.NewPolicyCapabilityManager(&scopedKeeper)\n\terr = manager.Claim(ctx, cap)\n\trequire.NoError(t, err)\n\n\t// When module issues a policy cmd to an actor acc\n\tcmd := types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"foo\"))\n\tsigner := \"source1twjwexwrsvflt9nv9xwk27e0f2defa9fdjaeus\"\n\taccAddr := accKeep.FirstAcc().GetAddress().String()\n\tresult, err := k.ModulePolicyCmdForActorAccount(ctx, cap, cmd, accAddr, signer)\n\n\t// Then it is accepted\n\trequire.NoError(t, err)\n\tresultCmd := result.GetRegisterObjectResult()\n\taccDID, err := did.IssueDID(accKeep.FirstAcc())\n\trequire.NoError(t, err)\n\trequire.Equal(t, accDID, resultCmd.Record.Metadata.OwnerDid)\n\trequire.Equal(t, signer, resultCmd.Record.Metadata.TxSigner)\n}\n\nfunc Test_ModulePolicyCmdForActorAccount_ModuleCannotUsePolicyWithoutClaimingCapability(t *testing.T) {\n\tctx, k, accKeep, _ := setupKeeperWithCapability(t)\n\n\t// Given Policy created by module without a claimed capability\n\tpol := \"name: test\"\n\t_, cap, err := k.CreateModulePolicy(ctx, pol, coretypes.PolicyMarshalingType_YAML, \"external\")\n\trequire.NoError(t, err)\n\n\t// When module issues a policy cmd to an actor acc\n\tcmd := types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"foo\"))\n\tsigner := \"source1twjwexwrsvflt9nv9xwk27e0f2defa9fdjaeus\"\n\taccAddr := accKeep.FirstAcc().GetAddress().String()\n\tresult, err := k.ModulePolicyCmdForActorAccount(ctx, cap, cmd, accAddr, signer)\n\n\t// Then cmd is reject due to invalid capability\n\trequire.Nil(t, result)\n\trequire.ErrorIs(t, err, capability.ErrInvalidCapability)\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server.go",
    "content": "package keeper\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ types.MsgServer = &Keeper{}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_bearer_policy_cmd.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/bearer_token\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper/policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) BearerPolicyCmd(goCtx context.Context, msg *types.MsgBearerPolicyCmd) (*types.MsgBearerPolicyCmdResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tresolver := &did.KeyResolver{}\n\tactorID, err := bearer_token.AuthorizeMsg(ctx, resolver, msg, ctx.BlockTime())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcmdCtx, err := policy_cmd.NewPolicyCmdCtx(ctx, msg.PolicyId, actorID, msg.Creator, k.GetParams(ctx))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thandler := k.getPolicyCmdHandler(ctx)\n\tresult, err := handler.Dispatch(&cmdCtx, msg.Cmd)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"PolicyCmd failed: %w\", err)\n\t}\n\n\treturn &types.MsgBearerPolicyCmdResponse{\n\t\tResult: result,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_check_access.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/access_decision\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) CheckAccess(goCtx context.Context, msg *types.MsgCheckAccess) (*types.MsgCheckAccessResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\trepository := k.getAccessDecisionRepository(ctx)\n\tparamsRepository := access_decision.StaticParamsRepository{}\n\tengine := k.getACPEngine(ctx)\n\n\trecord, err := engine.GetPolicy(goCtx, &coretypes.GetPolicyRequest{Id: msg.PolicyId})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif record == nil {\n\t\treturn nil, errors.ErrPolicyNotFound(msg.PolicyId)\n\t}\n\n\tcreatorAddr, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn nil, types.NewErrInvalidAccAddrErr(err, msg.Creator)\n\t}\n\tcreatorAcc := k.accountKeeper.GetAccount(ctx, creatorAddr)\n\tif creatorAcc == nil {\n\t\treturn nil, types.NewAccNotFoundErr(msg.Creator)\n\t}\n\n\tts, err := types.TimestampFromCtx(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcmd := access_decision.EvaluateAccessRequestsCommand{\n\t\tPolicy:        record.Record.Policy,\n\t\tOperations:    msg.AccessRequest.Operations,\n\t\tActor:         msg.AccessRequest.Actor.Id,\n\t\tCreationTime:  ts,\n\t\tCreator:       creatorAcc,\n\t\tCurrentHeight: uint64(ctx.BlockHeight()),\n\t}\n\tdecision, err := cmd.Execute(goCtx, engine, repository, &paramsRepository)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = ctx.EventManager().EmitTypedEvent(&coretypes.EventAccessDecisionCreated{\n\t\tCreator:    msg.Creator,\n\t\tPolicyId:   msg.PolicyId,\n\t\tDecisionId: decision.Id,\n\t\tActor:      decision.Actor,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgCheckAccessResponse{\n\t\tDecision: decision,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_create_policy.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) CreatePolicy(goCtx context.Context, msg *types.MsgCreatePolicy) (*types.MsgCreatePolicyResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\tactorID, err := k.GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"CreatePolicy: %w\", err)\n\t}\n\n\tmetadata, err := types.BuildACPSuppliedMetadata(ctx, actorID, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx, err = utils.InjectPrincipal(ctx, actorID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcoreResult, err := engine.CreatePolicy(ctx, &coretypes.CreatePolicyRequest{\n\t\tPolicy:      msg.Policy,\n\t\tMarshalType: msg.MarshalType,\n\t\tMetadata:    metadata,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"CreatePolicy: %w\", err)\n\t}\n\n\trec, err := types.MapPolicy(coreResult.Record)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"CreatePolicy: %w\", err)\n\t}\n\n\terr = ctx.EventManager().EmitTypedEvent(&coretypes.EventPolicyCreated{\n\t\tPolicyId:   rec.Policy.Id,\n\t\tPolicyName: msg.Policy,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgCreatePolicyResponse{\n\t\tRecord: rec,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_direct_policy_cmd.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper/policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) DirectPolicyCmd(goCtx context.Context, msg *types.MsgDirectPolicyCmd) (*types.MsgDirectPolicyCmdResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tactorID, err := k.GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"DirectPolicyCmd: %w\", err)\n\t}\n\n\tcmdCtx, err := policy_cmd.NewPolicyCmdCtx(ctx, msg.PolicyId, actorID, msg.Creator, k.GetParams(ctx))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thandler := k.getPolicyCmdHandler(ctx)\n\tresult, err := handler.Dispatch(&cmdCtx, msg.Cmd)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgDirectPolicyCmdResponse{\n\t\tResult: result,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_edit_policy.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) EditPolicy(goCtx context.Context, msg *types.MsgEditPolicy) (*types.MsgEditPolicyResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\tactorID, err := k.GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EditPolicy: %w\", err)\n\t}\n\n\tctx, err = utils.InjectPrincipal(ctx, actorID)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EditPolicy: %w\", err)\n\t}\n\n\tresponse, err := engine.EditPolicy(ctx, &coretypes.EditPolicyRequest{\n\t\tPolicyId:    msg.PolicyId,\n\t\tPolicy:      msg.Policy,\n\t\tMarshalType: msg.MarshalType,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EditPolicy: %w\", err)\n\t}\n\n\trec, err := types.MapPolicy(response.Record)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"EditPolicy: %w\", err)\n\t}\n\n\terr = ctx.EventManager().EmitTypedEvent(&coretypes.EventPolicyEdited{\n\t\tPolicyId:             rec.Policy.Id,\n\t\tPolicyName:           msg.Policy,\n\t\tRelationshipsRemoved: response.RelatinshipsRemoved,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgEditPolicyResponse{\n\t\tRelationshipsRemoved: response.RelatinshipsRemoved,\n\t\tRecord:               rec,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_signed_policy_cmd.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper/policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) SignedPolicyCmd(goCtx context.Context, msg *types.MsgSignedPolicyCmd) (*types.MsgSignedPolicyCmdResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tresolver := &did.KeyResolver{}\n\tparams := k.GetParams(ctx)\n\n\tpayload, err := signed_policy_cmd.ValidateAndExtractCmd(ctx, params, resolver, msg.Payload, msg.Type, uint64(ctx.BlockHeight()))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"PolicyCmd: %w\", err)\n\t}\n\n\tcmdCtx, err := policy_cmd.NewPolicyCmdCtx(ctx, payload.PolicyId, payload.Actor, msg.Creator, k.GetParams(ctx))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tid := signed_policy_cmd.ComputePayloadID(msg.Payload)\n\texpireHeight := payload.IssuedHeight + payload.ExpirationDelta\n\tif k.hasSeenSignedPolicyCmd(ctx, id, uint64(ctx.BlockHeight())) {\n\t\treturn nil, fmt.Errorf(\"PolicyCmd: %w\", signed_policy_cmd.ErrPayloadAlreadyProcessed)\n\t}\n\tif err := k.markSignedPolicyCmdSeen(ctx, id, expireHeight); err != nil {\n\t\treturn nil, fmt.Errorf(\"PolicyCmd: %w\", err)\n\t}\n\n\thandler := k.getPolicyCmdHandler(ctx)\n\tresult, err := handler.Dispatch(&cmdCtx, payload.Cmd)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgSignedPolicyCmdResponse{\n\t\tResult: result,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_server_signed_policy_cmd_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/signed_policy_cmd\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestSignedPolicyCmd_ReplayProtection(t *testing.T) {\n\tctx, k, accK := setupKeeper(t)\n\tcreator := accK.GenAccount().GetAddress().String()\n\n\tpolicyStr := `\ndescription: ok\nname: policy\nresources:\n- name: file\n  permissions:\n  - doc: own doc\n    name: own\n  - expr: reader\n    name: read\n  relations:\n  - name: reader\n    types:\n    - actor\n`\n\n\tmsg := types.MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policyStr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\tresp, err := k.CreatePolicy(ctx, &msg)\n\trequire.Nil(t, err)\n\n\tactor, signer := mustGenerateActor()\n\n\tregisterCmd := types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"foo\"))\n\tbuilder := signed_policy_cmd.NewCmdBuilder(&logicalClock, params)\n\tbuilder.Actor(actor)\n\tbuilder.PolicyID(resp.Record.Policy.Id)\n\tbuilder.PolicyCmd(registerCmd)\n\tbuilder.SetSigner(signer)\n\tregisterJWS, err := builder.BuildJWS(context.Background())\n\trequire.NoError(t, err)\n\n\t// First command should succeed\n\t_, err = k.SignedPolicyCmd(ctx, types.NewMsgSignedPolicyCmdFromJWS(creator, registerJWS))\n\trequire.NoError(t, err)\n\n\t// Submitting the same command again should fail\n\t_, err = k.SignedPolicyCmd(ctx, types.NewMsgSignedPolicyCmdFromJWS(creator, registerJWS))\n\trequire.Error(t, err)\n\trequire.ErrorIs(t, err, signed_policy_cmd.ErrPayloadAlreadyProcessed)\n\n\tctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)\n\n\t// Submitting the same command with a different block height should fail\n\t_, err = k.SignedPolicyCmd(ctx, types.NewMsgSignedPolicyCmdFromJWS(creator, registerJWS))\n\trequire.Error(t, err)\n\trequire.ErrorIs(t, err, signed_policy_cmd.ErrPayloadAlreadyProcessed)\n\n\trelationship := coretypes.NewActorRelationship(\"file\", \"foo\", \"reader\", \"did:key:alice\")\n\tcmd := types.NewSetRelationshipCmd(relationship)\n\tbuilder.PolicyCmd(cmd)\n\trelationshipJWS, err := builder.BuildJWS(context.Background())\n\trequire.NoError(t, err)\n\n\t// Submitting a different command should succeed\n\t_, err = k.SignedPolicyCmd(ctx, types.NewMsgSignedPolicyCmdFromJWS(creator, relationshipJWS))\n\trequire.NoError(t, err)\n\n\t// Submitting the same command again should fail\n\t_, err = k.SignedPolicyCmd(ctx, types.NewMsgSignedPolicyCmdFromJWS(creator, relationshipJWS))\n\trequire.Error(t, err)\n\trequire.ErrorIs(t, err, signed_policy_cmd.ErrPayloadAlreadyProcessed)\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_update_params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {\n\tif k.GetAuthority() != req.Authority {\n\t\treturn nil, errorsmod.Wrapf(types.ErrInvalidSigner, \"invalid authority; expected %s, got %s\", k.GetAuthority(), req.Authority)\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tif err := k.SetParams(ctx, req.Params); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgUpdateParamsResponse{}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/msg_update_params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestMsgUpdateParams(t *testing.T) {\n\tk, ctx := keepertest.AcpKeeper(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, params))\n\twctx := sdk.UnwrapSDKContext(ctx)\n\n\t// default params\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateParams\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"invalid authority\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: \"invalid\",\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid authority\",\n\t\t},\n\t\t{\n\t\t\tname: \"send enabled param\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    types.Params{},\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"all good\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, err := k.UpdateParams(wctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/acp/keeper/params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// GetParams get all parameters as types.Params\nfunc (k *Keeper) GetParams(ctx context.Context) (params types.Params) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.ParamsKey)\n\tif bz == nil {\n\t\treturn params\n\t}\n\n\tk.cdc.MustUnmarshal(bz, &params)\n\treturn params\n}\n\n// SetParams set the params\nfunc (k *Keeper) SetParams(ctx context.Context, params types.Params) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := k.cdc.Marshal(&params)\n\tif err != nil {\n\t\treturn err\n\t}\n\tstore.Set(types.ParamsKey, bz)\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/keeper/params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestGetParams(t *testing.T) {\n\tk, ctx := keepertest.AcpKeeper(t)\n\tparams := types.DefaultParams()\n\n\trequire.NoError(t, k.SetParams(ctx, params))\n\trequire.EqualValues(t, params, k.GetParams(ctx))\n}\n"
  },
  {
    "path": "x/acp/keeper/policy_cmd/doc.go",
    "content": "// package policy_cmd provides common handlers for PolicyCmd messages\npackage policy_cmd\n"
  },
  {
    "path": "x/acp/keeper/policy_cmd/handler.go",
    "content": "package policy_cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/registration\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n)\n\n// Handler acts as a common entrypoint to handle PolicyCmd objects.\n// Handler can be used for direct, bearer and signed PolicyCmds\ntype Handler struct {\n\tengine              coretypes.ACPEngineServer\n\tregistrationService *registration.RegistrationService\n\tcommitmentService   *commitment.CommitmentService\n}\n\n// NewPolicyCmdHandler returns a handler for PolicyCmds\nfunc NewPolicyCmdHandler(engine coretypes.ACPEngineServer,\n\tregistrationService *registration.RegistrationService,\n\tcommitmentService *commitment.CommitmentService,\n) *Handler {\n\treturn &Handler{\n\t\tengine:              engine,\n\t\tregistrationService: registrationService,\n\t\tcommitmentService:   commitmentService,\n\t}\n}\n\n// Dispatch consumes a PolicyCmd and returns its result\nfunc (h *Handler) Dispatch(ctx *PolicyCmdCtx, cmd *types.PolicyCmd) (*types.PolicyCmdResult, error) {\n\tvar err error\n\tctx.Ctx, err = utils.InjectPrincipal(ctx.Ctx, ctx.PrincipalDID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch c := cmd.Cmd.(type) {\n\tcase *types.PolicyCmd_SetRelationshipCmd:\n\t\treturn h.setRelationship(ctx, c.SetRelationshipCmd)\n\tcase *types.PolicyCmd_DeleteRelationshipCmd:\n\t\treturn h.deleteRelationship(ctx, c.DeleteRelationshipCmd)\n\tcase *types.PolicyCmd_RegisterObjectCmd:\n\t\treturn h.registerObject(ctx, c.RegisterObjectCmd)\n\tcase *types.PolicyCmd_ArchiveObjectCmd:\n\t\treturn h.archiveObject(ctx, c.ArchiveObjectCmd)\n\tcase *types.PolicyCmd_CommitRegistrationsCmd:\n\t\treturn h.commitRegistrations(ctx, c.CommitRegistrationsCmd)\n\tcase *types.PolicyCmd_FlagHijackAttemptCmd:\n\t\treturn h.flagHijackAttempt(ctx, c.FlagHijackAttemptCmd)\n\tcase *types.PolicyCmd_RevealRegistrationCmd:\n\t\treturn h.revealRegistration(ctx, c.RevealRegistrationCmd)\n\tcase *types.PolicyCmd_UnarchiveObjectCmd:\n\t\treturn h.unarchiveObject(ctx, c.UnarchiveObjectCmd)\n\tdefault:\n\t\treturn nil, errors.Wrap(\"unsuported command\", errors.ErrUnknownVariant)\n\t}\n}\n\nfunc (h *Handler) setRelationship(ctx *PolicyCmdCtx, cmd *types.SetRelationshipCmd) (*types.PolicyCmdResult, error) {\n\tmetadata, err := types.BuildACPSuppliedMetadata(ctx.Ctx, ctx.PrincipalDID, ctx.Signer)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"marshaling metadata: %w\", err)\n\t}\n\n\tresp, err := h.engine.SetRelationship(ctx.Ctx, &coretypes.SetRelationshipRequest{\n\t\tPolicyId:     ctx.PolicyId,\n\t\tRelationship: cmd.Relationship,\n\t\tMetadata:     metadata,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trec, err := types.MapRelationshipRecord(resp.Record)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"mapping relationship record: %w\", err)\n\n\t}\n\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_SetRelationshipResult{\n\t\t\tSetRelationshipResult: &types.SetRelationshipCmdResult{\n\t\t\t\tRecordExisted: resp.RecordExisted,\n\t\t\t\tRecord:        rec,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) deleteRelationship(ctx *PolicyCmdCtx, cmd *types.DeleteRelationshipCmd) (*types.PolicyCmdResult, error) {\n\tresp, err := h.engine.DeleteRelationship(ctx.Ctx, &coretypes.DeleteRelationshipRequest{\n\t\tPolicyId:     ctx.PolicyId,\n\t\tRelationship: cmd.Relationship,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_DeleteRelationshipResult{\n\t\t\tDeleteRelationshipResult: &types.DeleteRelationshipCmdResult{\n\t\t\t\tRecordFound: resp.RecordFound,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) registerObject(ctx *PolicyCmdCtx, cmd *types.RegisterObjectCmd) (*types.PolicyCmdResult, error) {\n\tactor := coretypes.NewActor(ctx.PrincipalDID)\n\tresp, err := h.registrationService.RegisterObject(ctx.Ctx, ctx.PolicyId, cmd.Object, actor, ctx.Signer)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tr, err := types.MapRelationshipRecord(resp.Record)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_RegisterObjectResult{\n\t\t\tRegisterObjectResult: &types.RegisterObjectCmdResult{\n\t\t\t\tRecord: r,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) archiveObject(ctx *PolicyCmdCtx, cmd *types.ArchiveObjectCmd) (*types.PolicyCmdResult, error) {\n\tresponse, err := h.registrationService.ArchiveObject(ctx.Ctx, ctx.PolicyId, cmd.Object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_ArchiveObjectResult{\n\t\t\tArchiveObjectResult: &types.ArchiveObjectCmdResult{\n\t\t\t\tFound:                true,\n\t\t\t\tRelationshipsRemoved: response.RelationshipsRemoved,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) commitRegistrations(ctx *PolicyCmdCtx, cmd *types.CommitRegistrationsCmd) (*types.PolicyCmdResult, error) {\n\tactor := coretypes.NewActor(ctx.PrincipalDID)\n\tcommitment, err := h.commitmentService.SetNewCommitment(ctx.Ctx, ctx.PolicyId, cmd.Commitment, actor, &ctx.Params, ctx.Signer)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_CommitRegistrationsResult{\n\t\t\tCommitRegistrationsResult: &types.CommitRegistrationsCmdResult{\n\t\t\t\tRegistrationsCommitment: commitment,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) revealRegistration(ctx *PolicyCmdCtx, cmd *types.RevealRegistrationCmd) (*types.PolicyCmdResult, error) {\n\tactor := coretypes.NewActor(ctx.PrincipalDID)\n\n\trec, ev, err := h.registrationService.RevealRegistration(ctx.Ctx, cmd.RegistrationsCommitmentId, cmd.Proof, actor, ctx.Signer)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tr, err := types.MapRelationshipRecord(rec)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_RevealRegistrationResult{\n\t\t\tRevealRegistrationResult: &types.RevealRegistrationCmdResult{\n\t\t\t\tRecord: r,\n\t\t\t\tEvent:  ev,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) flagHijackAttempt(ctx *PolicyCmdCtx, cmd *types.FlagHijackAttemptCmd) (*types.PolicyCmdResult, error) {\n\tactor := coretypes.NewActor(ctx.PrincipalDID)\n\tevent, err := h.registrationService.FlagHijackEvent(ctx.Ctx, cmd.EventId, actor)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_FlagHijackAttemptResult{\n\t\t\tFlagHijackAttemptResult: &types.FlagHijackAttemptCmdResult{\n\t\t\t\tEvent: event,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (h *Handler) unarchiveObject(ctx *PolicyCmdCtx, cmd *types.UnarchiveObjectCmd) (*types.PolicyCmdResult, error) {\n\tresp, err := h.registrationService.UnarchiveObject(ctx.Ctx, ctx.PolicyId, cmd.Object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tr, err := types.MapRelationshipRecord(resp.Record)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.PolicyCmdResult{\n\t\tResult: &types.PolicyCmdResult_UnarchiveObjectResult{\n\t\t\tUnarchiveObjectResult: &types.UnarchiveObjectCmdResult{\n\t\t\t\tRecord:               r,\n\t\t\t\tRelationshipModified: resp.RecordModified,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/policy_cmd/types.go",
    "content": "package policy_cmd\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc NewPolicyCmdCtx(ctx sdk.Context, policyId string, actorDID string, signer string, params types.Params) (PolicyCmdCtx, error) {\n\tts, err := types.TimestampFromCtx(ctx)\n\tif err != nil {\n\t\treturn PolicyCmdCtx{}, err\n\t}\n\n\treturn PolicyCmdCtx{\n\t\tCtx:          ctx,\n\t\tPolicyId:     policyId,\n\t\tPrincipalDID: actorDID,\n\t\tNow:          ts,\n\t\tParams:       params,\n\t\tSigner:       signer,\n\t}, nil\n}\n\n// PolicyCmdCtx bundles actor and time data bound to a PolicyCmd\ntype PolicyCmdCtx struct {\n\tCtx          sdk.Context\n\tPolicyId     string\n\tPrincipalDID string\n\tNow          *types.Timestamp\n\tParams       types.Params\n\tSigner       string\n}\n"
  },
  {
    "path": "x/acp/keeper/query_access_decision.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) AccessDecision(\n\tgoCtx context.Context,\n\treq *types.QueryAccessDecisionRequest,\n) (*types.QueryAccessDecisionResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\trepository := k.getAccessDecisionRepository(ctx)\n\n\tdecision, err := repository.Get(goCtx, req.Id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryAccessDecisionResponse{\n\t\tDecision: decision,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_access_decision_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryAccessDecisionSuite struct {\n\tsuite.Suite\n\n\ttestDecision *types.AccessDecision\n}\n\nfunc TestAccessDecision(t *testing.T) {\n\tsuite.Run(t, &queryAccessDecisionSuite{})\n}\n\nfunc (s *queryAccessDecisionSuite) setup(t *testing.T) (context.Context, Keeper) {\n\tctx, k, _ := setupKeeper(t)\n\n\tdecision := &types.AccessDecision{\n\t\tId:                 \"decision-1\",\n\t\tPolicyId:           \"policy-1\",\n\t\tCreator:            \"creator-1\",\n\t\tCreatorAccSequence: 12345,\n\t\tOperations: []*coretypes.Operation{\n\t\t\t{\n\t\t\t\tObject: &coretypes.Object{\n\t\t\t\t\tResource: \"file\",\n\t\t\t\t\tId:       \"file-1\",\n\t\t\t\t},\n\t\t\t\tPermission: \"read\",\n\t\t\t},\n\t\t},\n\t\tActor: \"collaborator\",\n\t\tParams: &types.DecisionParams{\n\t\t\tDecisionExpirationDelta: 3600,\n\t\t\tProofExpirationDelta:    7200,\n\t\t\tTicketExpirationDelta:   86400,\n\t\t},\n\t\tCreationTime: &types.Timestamp{\n\t\t\tProtoTs:     &prototypes.Timestamp{},\n\t\t\tBlockHeight: 0,\n\t\t},\n\t\tIssuedHeight: 100,\n\t}\n\n\trepo := k.getAccessDecisionRepository(ctx)\n\terr := repo.Set(ctx, decision)\n\trequire.NoError(t, err)\n\n\ts.testDecision = decision\n\treturn ctx, k\n}\n\nfunc (s *queryAccessDecisionSuite) TestQueryAccessDecision_ValidRequest() {\n\tctx, k := s.setup(s.T())\n\n\tresp, err := k.AccessDecision(ctx, &types.QueryAccessDecisionRequest{\n\t\tId: s.testDecision.Id,\n\t})\n\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Equal(s.T(), s.testDecision, resp.Decision)\n}\n\nfunc (s *queryAccessDecisionSuite) TestQueryAccessDecision_InvalidRequest() {\n\tctx, k := s.setup(s.T())\n\n\tresp, err := k.AccessDecision(ctx, nil)\n\n\trequire.Error(s.T(), err)\n\trequire.Nil(s.T(), resp)\n\trequire.Equal(s.T(), codes.InvalidArgument, status.Code(err))\n}\n\nfunc (s *queryAccessDecisionSuite) TestQueryAccessDecision_InvalidId() {\n\tctx, k := s.setup(s.T())\n\n\tresp, err := k.AccessDecision(ctx, &types.QueryAccessDecisionRequest{\n\t\tId: \"\",\n\t})\n\n\trequire.NoError(s.T(), err)\n\trequire.Equal(s.T(), &types.QueryAccessDecisionResponse{}, resp)\n\trequire.Equal(s.T(), codes.OK, status.Code(err))\n}\n"
  },
  {
    "path": "x/acp/keeper/query_filter_relationships.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) FilterRelationships(\n\tgoCtx context.Context,\n\treq *types.QueryFilterRelationshipsRequest,\n) (*types.QueryFilterRelationshipsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\trecords, err := engine.FilterRelationships(goCtx, &coretypes.FilterRelationshipsRequest{\n\t\tPolicyId: req.PolicyId,\n\t\tSelector: req.Selector,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmappedRecs, err := utils.MapFailableSlice(records.Records, types.MapRelationshipRecord)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryFilterRelationshipsResponse{\n\t\tRecords: mappedRecs,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_generate_commitment.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/gogoproto/jsonpb\"\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc (k *Keeper) GenerateCommitment(\n\tgoCtx context.Context,\n\treq *types.QueryGenerateCommitmentRequest,\n) (*types.QueryGenerateCommitmentResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\tcommitRepo := k.getRegistrationsCommitmentRepository(ctx)\n\tcommitmentService := commitment.NewCommitmentService(engine, commitRepo)\n\n\tcomm, err := commitmentService.BuildCommitment(ctx, req.PolicyId, req.Actor, req.Objects)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tproofs := make([]*types.RegistrationProof, 0, len(req.Objects))\n\tfor i := range req.Objects {\n\t\tproof, err := commitment.ProofForObject(req.PolicyId, req.Actor, i, req.Objects)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"generating proof for obj %v: %v\", i, err)\n\t\t}\n\t\tproofs = append(proofs, proof)\n\t}\n\tproofsJson, err := utils.MapFailableSlice(proofs, func(p *types.RegistrationProof) (string, error) {\n\t\tmarshaler := jsonpb.Marshaler{}\n\t\treturn marshaler.MarshalToString(p)\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryGenerateCommitmentResponse{\n\t\tCommitment:    comm,\n\t\tHexCommitment: hex.EncodeToString(comm),\n\t\tProofs:        proofs,\n\t\tProofsJson:    proofsJson,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_hijack_attempts_by_policy.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/raccoondb/v2/iterator\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc (k *Keeper) HijackAttemptsByPolicy(\n\tgoCtx context.Context,\n\treq *types.QueryHijackAttemptsByPolicyRequest,\n) (*types.QueryHijackAttemptsByPolicyResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\trepo := k.getAmendmentEventRepository(ctx)\n\titer, err := repo.ListHijackEventsByPolicy(ctx, req.PolicyId)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tevs, err := iterator.Consume(ctx, iter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryHijackAttemptsByPolicyResponse{\n\t\tEvents: evs,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_object_owner.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) ObjectOwner(goCtx context.Context, req *types.QueryObjectOwnerRequest) (*types.QueryObjectOwnerResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\tresult, err := engine.GetObjectRegistration(ctx, &coretypes.GetObjectRegistrationRequest{\n\t\tPolicyId: req.PolicyId,\n\t\tObject:   req.Object,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar record *types.RelationshipRecord\n\tif result.IsRegistered {\n\t\trecord, err = types.MapRelationshipRecord(result.Record)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn &types.QueryObjectOwnerResponse{\n\t\tIsRegistered: result.IsRegistered,\n\t\tRecord:       record,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_object_owner_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryObjectOwnerSuite struct {\n\tsuite.Suite\n\n\tobj *coretypes.Object\n}\n\nfunc TestObjectOwner(t *testing.T) {\n\tsuite.Run(t, &queryObjectOwnerSuite{})\n}\n\nfunc (s *queryObjectOwnerSuite) setup(t *testing.T) (context.Context, Keeper, sdk.AccountI, string, string) {\n\ts.obj = coretypes.NewObject(\"file\", \"1\")\n\n\tpolicyStr := `\ndescription: ok\nname: policy\nresources:\n- name: file\n  permissions:\n  - doc: own doc\n    name: own\n  - expr: reader\n    name: read\n  relations:\n  - manages:\n    - reader\n    name: admin\n  - name: reader\n`\n\n\tctx, k, accKeep := setupKeeper(t)\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\tmsg := types.MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policyStr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresp, err := k.CreatePolicy(ctx, &msg)\n\trequire.Nil(t, err)\n\n\t_, err = k.DirectPolicyCmd(ctx, &types.MsgDirectPolicyCmd{\n\t\tCreator:  creator,\n\t\tPolicyId: resp.Record.Policy.Id,\n\t\tCmd:      types.NewRegisterObjectCmd(s.obj),\n\t})\n\trequire.Nil(t, err)\n\n\treturn ctx, k, accKeep.FirstAcc(), creator, resp.Record.Policy.Id\n}\n\nfunc (s *queryObjectOwnerSuite) TestQueryReturnsObjectOwner() {\n\tctx, k, _, _, policyId := s.setup(s.T())\n\n\tresp, err := k.ObjectOwner(ctx, &types.QueryObjectOwnerRequest{\n\t\tPolicyId: policyId,\n\t\tObject:   s.obj,\n\t})\n\n\trequire.Equal(s.T(), resp, &types.QueryObjectOwnerResponse{\n\t\tIsRegistered: true,\n\t\tRecord:       resp.Record,\n\t})\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryObjectOwnerSuite) TestQueryingForUnregisteredObjectReturnsEmptyOwner() {\n\tctx, k, _, _, policyId := s.setup(s.T())\n\n\tresp, err := k.ObjectOwner(ctx, &types.QueryObjectOwnerRequest{\n\t\tPolicyId: policyId,\n\t\tObject:   coretypes.NewObject(\"file\", \"404\"),\n\t})\n\n\trequire.Nil(s.T(), err)\n\trequire.Equal(s.T(), resp, &types.QueryObjectOwnerResponse{\n\t\tIsRegistered: false,\n\t\tRecord:       nil,\n\t})\n}\n\nfunc (s *queryObjectOwnerSuite) TestQueryingPolicyThatDoesNotExistReturnError() {\n\tctx, k, _, _, _ := s.setup(s.T())\n\n\tresp, err := k.ObjectOwner(ctx, &types.QueryObjectOwnerRequest{\n\t\tPolicyId: \"some-policy\",\n\t\tObject:   s.obj,\n\t})\n\n\trequire.ErrorIs(s.T(), err, errors.ErrorType_NOT_FOUND)\n\trequire.Nil(s.T(), resp)\n}\n\nfunc (s *queryObjectOwnerSuite) TestQueryingForObjectInNonExistingPolicyReturnsError() {\n\tctx, k, _, _, policyId := s.setup(s.T())\n\n\tresp, err := k.ObjectOwner(ctx, &types.QueryObjectOwnerRequest{\n\t\tPolicyId: policyId,\n\t\tObject:   coretypes.NewObject(\"missing-resource\", \"abc\"),\n\t})\n\n\trequire.Nil(s.T(), resp)\n\trequire.NotNil(s.T(), err)\n}\n"
  },
  {
    "path": "x/acp/keeper/query_params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\treturn &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc TestParamsQuery(t *testing.T) {\n\tk, ctx := keepertest.AcpKeeper(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Params(ctx, &types.QueryParamsRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryParamsResponse{Params: params}, response)\n}\n"
  },
  {
    "path": "x/acp/keeper/query_policy.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) Policy(goCtx context.Context, req *types.QueryPolicyRequest) (*types.QueryPolicyResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\n\tresponse, err := engine.GetPolicy(goCtx, &coretypes.GetPolicyRequest{\n\t\tId: req.Id,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif response == nil {\n\t\treturn nil, errors.ErrPolicyNotFound(req.Id)\n\t}\n\n\trecord, err := types.MapPolicy(response.Record)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryPolicyResponse{\n\t\tRecord: record,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_policy_ids.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"encoding/binary\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) PolicyIds(goCtx context.Context, req *types.QueryPolicyIdsRequest) (*types.QueryPolicyIdsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\n\tresp, err := engine.ListPolicies(ctx, &coretypes.ListPoliciesRequest{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Use MapNullableSlice to filter out 'nil' policies and get policy IDs\n\tallPolicyIds := utils.MapNullableSlice(resp.Records, func(p *coretypes.PolicyRecord) string { return p.Policy.Id })\n\n\t// Apply pagination\n\tpolicyIds, pageRes := paginateSlice(allPolicyIds, req.Pagination)\n\n\treturn &types.QueryPolicyIdsResponse{\n\t\tIds:        policyIds,\n\t\tPagination: pageRes,\n\t}, nil\n}\n\n// paginateSlice applies pagination to a slice of strings following Cosmos SDK patterns.\nfunc paginateSlice(items []string, pageReq *query.PageRequest) ([]string, *query.PageResponse) {\n\ttotal := uint64(len(items))\n\n\tif pageReq == nil {\n\t\treturn items, &query.PageResponse{Total: total}\n\t}\n\n\t// Handle key-based pagination\n\toffset := pageReq.Offset\n\tif len(pageReq.Key) > 0 {\n\t\t// Decode offset from key (uint64 = 8 bytes)\n\t\tif len(pageReq.Key) != 8 {\n\t\t\treturn []string{}, &query.PageResponse{\n\t\t\t\tTotal: total,\n\t\t\t}\n\t\t}\n\t\toffset = binary.BigEndian.Uint64(pageReq.Key)\n\t}\n\n\t// Determine limit\n\tlimit := pageReq.Limit\n\tif limit == 0 {\n\t\tif offset > 0 {\n\t\t\tlimit = query.DefaultLimit\n\t\t} else {\n\t\t\treturn items, &query.PageResponse{Total: total}\n\t\t}\n\t}\n\tif limit > query.PaginationMaxLimit {\n\t\tlimit = query.PaginationMaxLimit\n\t}\n\n\t// Validate offset\n\tif offset >= total {\n\t\treturn []string{}, &query.PageResponse{Total: total}\n\t}\n\n\t// Calculate end index\n\tend := offset + limit\n\tif end > total {\n\t\tend = total\n\t}\n\n\tresult := items[offset:end]\n\n\t// Encode next key using proper uint64 encoding\n\tvar nextKey []byte\n\tif end < total {\n\t\tnextKey = make([]byte, 8)\n\t\tbinary.BigEndian.PutUint64(nextKey, end)\n\t}\n\n\treturn result, &query.PageResponse{\n\t\tNextKey: nextKey,\n\t\tTotal:   total,\n\t}\n}\n"
  },
  {
    "path": "x/acp/keeper/query_policy_ids_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"text/template\"\n\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryPolicyIdsSuite struct {\n\tsuite.Suite\n}\n\nfunc TestPolicyIds(t *testing.T) {\n\tsuite.Run(t, &queryPolicyIdsSuite{})\n}\n\nfunc (s *queryPolicyIdsSuite) setupPolicies(\n\tt *testing.T,\n\tctx context.Context,\n\tk Keeper,\n\tcreator string,\n\tpolicyNames []string,\n\tmarshalingType coretypes.PolicyMarshalingType,\n) []string {\n\tpolTemplate := `\nname: {{.Name}}\ndescription: {{.Name}}\nmeta:\n  k1: v1\n  k2: v2\nresources:\n  - name: file\n    permissions:\n    - name: manage\n    relations:\n    - name: reader\n`\n\tpolicyIds := []string{}\n\n\tfor _, name := range policyNames {\n\t\tparams := map[string]string{\n\t\t\t\"Name\": name,\n\t\t}\n\t\ttmp, err := template.New(\"test\").Parse(polTemplate)\n\t\trequire.NoError(t, err)\n\t\tbuilder := strings.Builder{}\n\t\terr = tmp.Execute(&builder, params)\n\t\trequire.NoError(t, err)\n\n\t\tmsg := types.MsgCreatePolicy{\n\t\t\tCreator:     creator,\n\t\t\tPolicy:      builder.String(),\n\t\t\tMarshalType: marshalingType,\n\t\t}\n\n\t\tresp, err := k.CreatePolicy(ctx, &msg)\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, resp)\n\n\t\tpolicyIds = append(policyIds, resp.Record.Policy.Id)\n\t}\n\n\treturn policyIds\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_YAML() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\tpolicyIds := s.setupPolicies(s.T(), ctx, k, creator, []string{\"P1\", \"P2\", \"P3\"}, coretypes.PolicyMarshalingType_YAML)\n\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.ElementsMatch(s.T(), policyIds, resp.Ids)\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_NoPoliciesRegistered() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Empty(s.T(), resp.Ids)\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_DuplicatePolicyNames() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\t_ = s.setupPolicies(s.T(), ctx, k, creator, []string{\"P1\", \"P1\"}, coretypes.PolicyMarshalingType_YAML)\n\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Equal(s.T(), 2, len(resp.Ids))\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_LargeNumberOfPolicies_YAML() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\tnames := []string{}\n\tfor i := 0; i < 10_000; i++ {\n\t\tnames = append(names, \"Policy\"+strconv.Itoa(i))\n\t}\n\tpolicyIds := s.setupPolicies(s.T(), ctx, k, creator, names, coretypes.PolicyMarshalingType_YAML)\n\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.ElementsMatch(s.T(), policyIds, resp.Ids)\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_WithPagination() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\t// Create 25 policies\n\tnames := []string{}\n\tfor i := 0; i < 25; i++ {\n\t\tnames = append(names, \"Policy\"+strconv.Itoa(i))\n\t}\n\tallPolicyIds := s.setupPolicies(s.T(), ctx, k, creator, names, coretypes.PolicyMarshalingType_YAML)\n\n\t// Test first page with limit 10\n\tresp1, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tLimit: 10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp1)\n\trequire.Len(s.T(), resp1.Ids, 10)\n\trequire.Equal(s.T(), uint64(25), resp1.Pagination.Total)\n\trequire.NotNil(s.T(), resp1.Pagination.NextKey)\n\n\t// Test second page with offset 10\n\tresp2, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tOffset: 10,\n\t\t\tLimit:  10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp2)\n\trequire.Len(s.T(), resp2.Ids, 10)\n\trequire.Equal(s.T(), uint64(25), resp2.Pagination.Total)\n\n\t// Test third page with offset 20 (should get remaining 5)\n\tresp3, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tOffset: 20,\n\t\t\tLimit:  10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp3)\n\trequire.Len(s.T(), resp3.Ids, 5)\n\trequire.Equal(s.T(), uint64(25), resp3.Pagination.Total)\n\trequire.Nil(s.T(), resp3.Pagination.NextKey)\n\n\t// Verify all pages combined match all policy IDs\n\tallPages := append(resp1.Ids, resp2.Ids...)\n\tallPages = append(allPages, resp3.Ids...)\n\trequire.ElementsMatch(s.T(), allPolicyIds, allPages)\n\n\t// Verify no overlap between pages\n\trequire.NotContains(s.T(), resp2.Ids, resp1.Ids[0])\n\trequire.NotContains(s.T(), resp3.Ids, resp1.Ids[0])\n\trequire.NotContains(s.T(), resp3.Ids, resp2.Ids[0])\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_WithKeyBasedPagination() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\t// Create 25 policies\n\tnames := []string{}\n\tfor i := 0; i < 25; i++ {\n\t\tnames = append(names, \"Policy\"+strconv.Itoa(i))\n\t}\n\tallPolicyIds := s.setupPolicies(s.T(), ctx, k, creator, names, coretypes.PolicyMarshalingType_YAML)\n\n\t// Test first page with limit 10\n\tresp1, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tLimit: 10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp1)\n\trequire.Len(s.T(), resp1.Ids, 10)\n\trequire.Equal(s.T(), uint64(25), resp1.Pagination.Total)\n\trequire.NotNil(s.T(), resp1.Pagination.NextKey)\n\n\t// Test second page using NextKey from first page\n\tresp2, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tKey:   resp1.Pagination.NextKey,\n\t\t\tLimit: 10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp2)\n\trequire.Len(s.T(), resp2.Ids, 10)\n\trequire.Equal(s.T(), uint64(25), resp2.Pagination.Total)\n\trequire.NotNil(s.T(), resp2.Pagination.NextKey)\n\n\t// Test third page using NextKey from second page\n\tresp3, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tKey:   resp2.Pagination.NextKey,\n\t\t\tLimit: 10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp3)\n\trequire.Len(s.T(), resp3.Ids, 5)\n\trequire.Equal(s.T(), uint64(25), resp3.Pagination.Total)\n\trequire.Nil(s.T(), resp3.Pagination.NextKey)\n\n\t// Verify all pages combined match all policy IDs\n\tallPages := append(resp1.Ids, resp2.Ids...)\n\tallPages = append(allPages, resp3.Ids...)\n\trequire.ElementsMatch(s.T(), allPolicyIds, allPages)\n\n\t// Verify no overlap between pages\n\trequire.NotContains(s.T(), resp2.Ids, resp1.Ids[0])\n\trequire.NotContains(s.T(), resp3.Ids, resp1.Ids[0])\n\trequire.NotContains(s.T(), resp3.Ids, resp2.Ids[0])\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_LargeOffset() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\t// Create policies to test large offset handling\n\tnames := []string{}\n\tfor i := 0; i < 100; i++ {\n\t\tnames = append(names, \"Policy\"+strconv.Itoa(i))\n\t}\n\t_ = s.setupPolicies(s.T(), ctx, k, creator, names, coretypes.PolicyMarshalingType_YAML)\n\n\t// Test with offset beyond total\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tOffset: 300,\n\t\t\tLimit:  10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Empty(s.T(), resp.Ids)\n\trequire.Equal(s.T(), uint64(100), resp.Pagination.Total)\n}\n\nfunc (s *queryPolicyIdsSuite) TestQueryPolicyIds_MalformedKey() {\n\tctx, k, accKeep := setupKeeper(s.T())\n\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\tnames := []string{\"P1\", \"P2\", \"P3\"}\n\t_ = s.setupPolicies(s.T(), ctx, k, creator, names, coretypes.PolicyMarshalingType_YAML)\n\n\t// Test with malformed key\n\tresp, err := k.PolicyIds(ctx, &types.QueryPolicyIdsRequest{\n\t\tPagination: &query.PageRequest{\n\t\t\tKey:   []byte{0x01, 0x02}, // Only 2 bytes instead of 8\n\t\t\tLimit: 10,\n\t\t},\n\t})\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Empty(s.T(), resp.Ids) // Should return empty on malformed key\n\trequire.Equal(s.T(), uint64(3), resp.Pagination.Total)\n}\n"
  },
  {
    "path": "x/acp/keeper/query_policy_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryPolicySuite struct {\n\tsuite.Suite\n}\n\nfunc TestQueryPolicy(t *testing.T) {\n\tsuite.Run(t, &queryPolicySuite{})\n}\n\nfunc (s *queryPolicySuite) setupPolicy(t *testing.T) (context.Context, Keeper, string) {\n\tpolicyStr := `\ndescription: A valid policy\nname: Source Policy\nresources:\n- name: file\n  permissions:\n  - name: read\n  - name: write\n  relations:\n  - name: rm-root\n`\n\n\tctx, k, accKeep := setupKeeper(t)\n\tcreator := accKeep.FirstAcc().GetAddress().String()\n\n\tmsg := types.MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policyStr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresp, err := k.CreatePolicy(ctx, &msg)\n\trequire.NoError(t, err)\n\n\treturn ctx, k, resp.Record.Policy.Id\n}\n\nfunc (s *queryPolicySuite) TestQueryPolicy_Success() {\n\tctx, k, policyID := s.setupPolicy(s.T())\n\n\treq := types.QueryPolicyRequest{\n\t\tId: policyID,\n\t}\n\n\tresp, err := k.Policy(ctx, &req)\n\trequire.NoError(s.T(), err)\n\trequire.NotNil(s.T(), resp)\n\trequire.Equal(s.T(), \"Source Policy\", resp.Record.Policy.Name)\n\trequire.Equal(s.T(), \"A valid policy\", resp.Record.Policy.Description)\n}\n\nfunc (s *queryPolicySuite) TestQueryPolicy_UnknownPolicyReturnsPolicyNotFoundErr() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\treq := types.QueryPolicyRequest{\n\t\tId: \"not found\",\n\t}\n\n\tresp, err := k.Policy(ctx, &req)\n\trequire.Nil(s.T(), resp)\n\trequire.ErrorIs(s.T(), err, errors.ErrorType_NOT_FOUND)\n\trequire.Contains(s.T(), err.Error(), \"policy not found\")\n}\n\nfunc (s *queryPolicySuite) TestQueryPolicy_NilRequestReturnsInvalidRequestErr() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\tresp, err := k.Policy(ctx, nil)\n\trequire.Nil(s.T(), resp)\n\trequire.Error(s.T(), err)\n\trequire.Contains(s.T(), err.Error(), \"invalid request\")\n}\n"
  },
  {
    "path": "x/acp/keeper/query_registrations_commitment.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc (k *Keeper) RegistrationsCommitment(\n\tgoCtx context.Context,\n\treq *types.QueryRegistrationsCommitmentRequest,\n) (*types.QueryRegistrationsCommitmentResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\trepo := k.getRegistrationsCommitmentRepository(ctx)\n\n\topt, err := repo.GetById(ctx, req.Id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opt.Empty() {\n\t\treturn nil, errors.Wrap(\"commitment not found\", errors.ErrorType_NOT_FOUND,\n\t\t\terrors.Pair(\"commitment\", fmt.Sprintf(\"%v\", req.Id)),\n\t\t)\n\t}\n\n\treturn &types.QueryRegistrationsCommitmentResponse{\n\t\tRegistrationsCommitment: opt.GetValue(),\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_registrations_commitment_by_commitment.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/raccoondb/v2/iterator\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc (k *Keeper) RegistrationsCommitmentByCommitment(\n\tgoCtx context.Context,\n\treq *types.QueryRegistrationsCommitmentByCommitmentRequest,\n) (*types.QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\trepo := k.getRegistrationsCommitmentRepository(ctx)\n\n\titer, err := repo.FilterByCommitment(ctx, req.Commitment)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcommitments, err := iterator.Consume(ctx, iter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryRegistrationsCommitmentByCommitmentResponse{\n\t\tRegistrationsCommitments: commitments,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_validate_policy.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) ValidatePolicy(\n\tgoCtx context.Context,\n\treq *types.QueryValidatePolicyRequest,\n) (*types.QueryValidatePolicyResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tengine := k.getACPEngine(ctx)\n\n\tresp, err := engine.ValidatePolicy(ctx, &coretypes.ValidatePolicyRequest{\n\t\tPolicy:      req.Policy,\n\t\tMarshalType: req.MarshalType,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryValidatePolicyResponse{\n\t\tValid:    resp.Valid,\n\t\tErrorMsg: resp.ErrorMsg,\n\t\tPolicy:   resp.Policy,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_validate_policy_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryValidatePolicySuite struct {\n\tsuite.Suite\n}\n\nfunc TestValidatePolicy(t *testing.T) {\n\tsuite.Run(t, &queryValidatePolicySuite{})\n}\n\nfunc (s *queryValidatePolicySuite) TestValidatePolicy_ValidPolicy() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\treq := &types.QueryValidatePolicyRequest{\n\t\tPolicy: `\ndescription: A valid policy\nname: Source Policy\nresources:\n- name: file\n  permissions:\n  - name: read\n  - name: write\n`,\n\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresult, err := k.ValidatePolicy(ctx, req)\n\n\twant := &types.QueryValidatePolicyResponse{\n\t\tValid:    true,\n\t\tErrorMsg: \"\",\n\t\tPolicy: &coretypes.Policy{\n\t\t\tId:          \"\",\n\t\t\tName:        \"Source Policy\",\n\t\t\tDescription: \"A valid policy\",\n\t\t\tActorResource: &coretypes.ActorResource{\n\t\t\t\tName: \"actor\",\n\t\t\t\tDoc:  \"actor resource models the set of actors defined within a policy\",\n\t\t\t},\n\t\t\tAttributes:        nil,\n\t\t\tSpecificationType: 0,\n\t\t\tResources: []*coretypes.Resource{\n\t\t\t\t{\n\t\t\t\t\tName: \"file\",\n\t\t\t\t\tPermissions: []*coretypes.Permission{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:                \"read\",\n\t\t\t\t\t\t\tExpression:          \"\",\n\t\t\t\t\t\t\tEffectiveExpression: \"owner\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tName:                \"write\",\n\t\t\t\t\t\t\tExpression:          \"\",\n\t\t\t\t\t\t\tEffectiveExpression: \"owner\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRelations: []*coretypes.Relation{},\n\t\t\t\t\tManagementRules: []*coretypes.ManagementRule{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tRelation:   \"owner\",\n\t\t\t\t\t\t\tExpression: \"owner\",\n\t\t\t\t\t\t\tManagers: []string{\n\t\t\t\t\t\t\t\t\"owner\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tOwner: &coretypes.Relation{\n\t\t\t\t\t\tName:    \"owner\",\n\t\t\t\t\t\tDoc:     \"owner relations represents the object owner\",\n\t\t\t\t\t\tManages: []string{\"owner\"},\n\t\t\t\t\t\tVrTypes: []*coretypes.Restriction{\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tResourceName: \"actor\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\trequire.Equal(s.T(), want, result)\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryValidatePolicySuite) TestValidatePolicy_ComplexValidPolicy() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\treq := &types.QueryValidatePolicyRequest{\n\t\tPolicy: `\ndescription: Another valid policy\nname: Source Policy\nresources:\n- name: file\n  permissions:\n  - doc: own doc\n    name: own\n  - expr: reader\n    name: read\n  relations:\n  - manages:\n    - reader\n    name: admin\n  - name: reader\n`,\n\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresult, err := k.ValidatePolicy(ctx, req)\n\trequire.True(s.T(), result.Valid)\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryValidatePolicySuite) TestValidatePolicy_InvalidSyntax() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\treq := &types.QueryValidatePolicyRequest{\n\t\tPolicy: `\nname: Invalid policy\ndescription: Policy with invalid syntax\nresources:\n  file\n    permissions:\n      read:\n        expr: owner\n`,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresult, err := k.ValidatePolicy(ctx, req)\n\n\trequire.NotNil(s.T(), result)\n\trequire.False(s.T(), result.Valid)\n\trequire.Contains(s.T(), result.ErrorMsg, \"mapping values are not allowed in this context\")\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryValidatePolicySuite) TestValidatePolicy_EmptyPolicy() {\n\tctx, k, _ := setupKeeper(s.T())\n\n\treq := &types.QueryValidatePolicyRequest{\n\t\tPolicy:      \"\",\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresult, err := k.ValidatePolicy(ctx, req)\n\n\trequire.False(s.T(), result.Valid)\n\trequire.Contains(s.T(), result.ErrorMsg, \"name required\")\n\trequire.Nil(s.T(), err)\n}\n"
  },
  {
    "path": "x/acp/keeper/query_verify_access_request.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc (k *Keeper) VerifyAccessRequest(\n\tgoCtx context.Context,\n\treq *types.QueryVerifyAccessRequestRequest,\n) (*types.QueryVerifyAccessRequestResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tengine := k.getACPEngine(ctx)\n\n\tactorId := req.AccessRequest.Actor.Id\n\tif did, err := k.GetActorDID(ctx, actorId); err == nil {\n\t\treq.AccessRequest.Actor.Id = did\n\t}\n\n\tresult, err := engine.VerifyAccessRequest(ctx, &coretypes.VerifyAccessRequestRequest{\n\t\tPolicyId:      req.PolicyId,\n\t\tAccessRequest: req.AccessRequest,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.QueryVerifyAccessRequestResponse{\n\t\tValid: result.Valid,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/query_verify_access_request_test.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype queryVerifyAccessRequestSuite struct {\n\tsuite.Suite\n}\n\nfunc TestVerifyAccessRequest(t *testing.T) {\n\tsuite.Run(t, &queryVerifyAccessRequestSuite{})\n}\n\nfunc setupTestVerifyAccessRequest(t *testing.T) (context.Context, Keeper, *coretypes.Policy, string) {\n\tctx, k, accKeep := setupKeeper(t)\n\n\tcreatorAcc := accKeep.GenAccount()\n\tcreator := creatorAcc.GetAddress().String()\n\tcreatorDID, _ := did.IssueDID(creatorAcc)\n\n\tobj := coretypes.NewObject(\"file\", \"1\")\n\n\tpolicyStr := `\nname: policy\nresources:\n- name: file\n  permissions:\n  - name: read\n  - name: write\n  relations:\n  - name: rm-root\n`\n\n\tmsg := types.MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policyStr,\n\t\tMarshalType: coretypes.PolicyMarshalingType_YAML,\n\t}\n\n\tresp, err := k.CreatePolicy(ctx, &msg)\n\trequire.Nil(t, err)\n\n\t_, err = k.DirectPolicyCmd(ctx, &types.MsgDirectPolicyCmd{\n\t\tCreator:  creator,\n\t\tPolicyId: resp.Record.Policy.Id,\n\t\tCmd:      types.NewRegisterObjectCmd(obj),\n\t})\n\trequire.Nil(t, err)\n\n\treturn ctx, k, resp.Record.Policy, creatorDID\n}\n\nfunc (s *queryVerifyAccessRequestSuite) TestVerifyAccessRequest_QueryingObjectsTheActorHasAccessToReturnsTrue() {\n\tctx, k, pol, creator := setupTestVerifyAccessRequest(s.T())\n\n\treq := &types.QueryVerifyAccessRequestRequest{\n\t\tPolicyId: pol.Id,\n\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\tOperations: []*coretypes.Operation{\n\t\t\t\t{\n\t\t\t\t\tObject:     coretypes.NewObject(\"file\", \"1\"),\n\t\t\t\t\tPermission: \"read\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tObject:     coretypes.NewObject(\"file\", \"1\"),\n\t\t\t\t\tPermission: \"write\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tActor: &coretypes.Actor{\n\t\t\t\tId: creator,\n\t\t\t},\n\t\t},\n\t}\n\tresult, err := k.VerifyAccessRequest(ctx, req)\n\n\twant := &types.QueryVerifyAccessRequestResponse{\n\t\tValid: true,\n\t}\n\trequire.Equal(s.T(), want, result)\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryVerifyAccessRequestSuite) TestVerifyAccessRequest_QueryingOperationActorIsNotAuthorizedReturnNotValid() {\n\tctx, k, pol, creator := setupTestVerifyAccessRequest(s.T())\n\n\treq := &types.QueryVerifyAccessRequestRequest{\n\t\tPolicyId: pol.Id,\n\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\tOperations: []*coretypes.Operation{\n\t\t\t\t{\n\t\t\t\t\tObject:     coretypes.NewObject(\"file\", \"1\"),\n\t\t\t\t\tPermission: \"rm-root\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tActor: &coretypes.Actor{\n\t\t\t\tId: creator,\n\t\t\t},\n\t\t},\n\t}\n\tresult, err := k.VerifyAccessRequest(ctx, req)\n\n\twant := &types.QueryVerifyAccessRequestResponse{\n\t\tValid: false,\n\t}\n\trequire.Equal(s.T(), want, result)\n\trequire.Nil(s.T(), err)\n}\n\nfunc (s *queryVerifyAccessRequestSuite) TestVerifyAccessRequest_QueryingObjectThatDoesNotExistReturnValidFalse() {\n\tctx, k, pol, creator := setupTestVerifyAccessRequest(s.T())\n\n\treq := &types.QueryVerifyAccessRequestRequest{\n\t\tPolicyId: pol.Id,\n\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\tOperations: []*coretypes.Operation{\n\t\t\t\t{\n\t\t\t\t\tObject:     coretypes.NewObject(\"file\", \"file-that-is-not-registered\"),\n\t\t\t\t\tPermission: \"read\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tActor: &coretypes.Actor{\n\t\t\t\tId: creator,\n\t\t\t},\n\t\t},\n\t}\n\tresult, err := k.VerifyAccessRequest(ctx, req)\n\n\twant := &types.QueryVerifyAccessRequestResponse{\n\t\tValid: false,\n\t}\n\trequire.Equal(s.T(), want, result)\n\trequire.Nil(s.T(), err)\n}\n"
  },
  {
    "path": "x/acp/keeper/utils.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\ted25519sdk \"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\thubtypes \"github.com/sourcenetwork/sourcehub/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// IssueDIDFromAccountAddr issues a DID based on the specified address string.\nfunc (k *Keeper) IssueDIDFromAccountAddr(ctx context.Context, addr string) (string, error) {\n\tsdkAddr, err := hubtypes.AccAddressFromBech32(addr)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"IssueDIDFromAccountAddr: %v: %w\", err, types.NewErrInvalidAccAddrErr(err, addr))\n\t}\n\n\tacc := k.accountKeeper.GetAccount(ctx, sdkAddr)\n\tif acc == nil {\n\t\treturn \"\", fmt.Errorf(\"IssueDIDFromAccountAddr: %w\", types.NewAccNotFoundErr(addr))\n\t}\n\n\t// Check if this is an ICA address\n\tif _, found := k.hubKeeper.GetICAConnection(sdk.UnwrapSDKContext(ctx), addr); found {\n\t\tcontrollerDID := did.IssueInterchainAccountDID(addr)\n\t\treturn controllerDID, nil\n\t}\n\n\tdid, err := did.IssueDID(acc)\n\tif err != nil {\n\t\treturn \"\", errors.NewWithCause(\"could not issue did\",\n\t\t\terr,\n\t\t\terrors.ErrorType_BAD_INPUT,\n\t\t\terrors.Pair(\"address\", addr),\n\t\t)\n\t}\n\treturn did, nil\n}\n\n// GetAddressFromDID extracts and returns the bech32 address from a DID.\nfunc (k *Keeper) GetAddressFromDID(ctx context.Context, didStr string) (sdk.AccAddress, error) {\n\tif err := did.IsValidDID(didStr); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid DID: %w\", err)\n\t}\n\n\tdidKey := key.DIDKey(didStr)\n\tpubBytes, _, keyType, err := didKey.Decode()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to decode DID key: %w\", err)\n\t}\n\n\tvar pubKey cryptotypes.PubKey\n\tswitch keyType {\n\tcase crypto.SECP256k1:\n\t\tpubKey = &secp256k1.PubKey{Key: pubBytes}\n\tcase crypto.Ed25519:\n\t\tpubKey = &ed25519sdk.PubKey{Key: pubBytes}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported key type: %v\", keyType)\n\t}\n\n\taddr := sdk.AccAddress(pubKey.Address())\n\treturn addr, nil\n}\n"
  },
  {
    "path": "x/acp/keeper/utils_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestIssueDIDFromAccountAddr(t *testing.T) {\n\tctx, k, accountKeeper := setupKeeper(t)\n\n\tt.Run(\"empty address\", func(t *testing.T) {\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, \"\")\n\t\trequire.Error(t, err)\n\t\trequire.Empty(t, did)\n\t})\n\n\tt.Run(\"valid regular account address\", func(t *testing.T) {\n\t\taccount := accountKeeper.GenAccount()\n\t\taddr := account.GetAddress().String()\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, addr)\n\t\trequire.NoError(t, err)\n\t\trequire.NotEmpty(t, did)\n\t\trequire.Contains(t, did, \"did:key:\")\n\t})\n\n\tt.Run(\"invalid address format\", func(t *testing.T) {\n\t\tinvalidAddr := \"invalid-address\"\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, invalidAddr)\n\t\trequire.Error(t, err)\n\t\trequire.Empty(t, did)\n\t\trequire.Contains(t, err.Error(), \"IssueDIDFromAccountAddr\")\n\t})\n\n\tt.Run(\"valid address but account not found\", func(t *testing.T) {\n\t\tnonExistentAddr := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, nonExistentAddr)\n\t\trequire.Error(t, err)\n\t\trequire.Empty(t, did)\n\t\trequire.Contains(t, err.Error(), \"account not found\")\n\t})\n\n\tt.Run(\"ICA address - should use IssueInterchainAccountDID\", func(t *testing.T) {\n\t\ticaAccount := accountKeeper.GenAccount()\n\t\ticaAddress := icaAccount.GetAddress().String()\n\t\tcontrollerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\t\tcontrollerChainID := \"shinzo-1\"\n\t\tconnectionID := \"connection-0\"\n\n\t\terr := k.hubKeeper.SetICAConnection(sdk.UnwrapSDKContext(ctx), icaAddress, controllerAddress, controllerChainID, connectionID)\n\t\trequire.NoError(t, err)\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, icaAddress)\n\t\trequire.NoError(t, err)\n\t\trequire.NotEmpty(t, did)\n\t\trequire.Contains(t, did, \"did:ica:\")\n\t})\n\n\tt.Run(\"ICA address without account should still fail\", func(t *testing.T) {\n\t\ticaAddress := \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\"\n\t\tcontrollerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\t\tcontrollerChainID := \"shinzo-1\"\n\t\tconnectionID := \"connection-1\"\n\n\t\terr := k.hubKeeper.SetICAConnection(sdk.UnwrapSDKContext(ctx), icaAddress, controllerAddress, controllerChainID, connectionID)\n\t\trequire.NoError(t, err)\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, icaAddress)\n\t\trequire.Error(t, err)\n\t\trequire.Empty(t, did)\n\t\trequire.Contains(t, err.Error(), \"account not found\")\n\t})\n\n\tt.Run(\"ICA address with account exists\", func(t *testing.T) {\n\t\ticaAccount := accountKeeper.GenAccount()\n\t\ticaAddress := icaAccount.GetAddress().String()\n\t\tcontrollerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\t\tcontrollerChainID := \"shinzo-1\"\n\t\tconnectionID := \"connection-full\"\n\n\t\terr := k.hubKeeper.SetICAConnection(sdk.UnwrapSDKContext(ctx), icaAddress, controllerAddress, controllerChainID, connectionID)\n\t\trequire.NoError(t, err)\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, icaAddress)\n\t\trequire.NoError(t, err)\n\t\trequire.NotEmpty(t, did)\n\t\trequire.Contains(t, did, \"did:ica:\")\n\n\t\tconnection, found := k.hubKeeper.GetICAConnection(sdk.UnwrapSDKContext(ctx), icaAddress)\n\t\trequire.True(t, found)\n\t\trequire.Equal(t, controllerAddress, connection.ControllerAddress)\n\t\trequire.Equal(t, controllerChainID, connection.ControllerChainId)\n\t\trequire.Equal(t, connectionID, connection.ConnectionId)\n\t})\n}\n\nfunc TestGetAddressFromDID(t *testing.T) {\n\tctx, k, accountKeeper := setupKeeper(t)\n\n\tt.Run(\"round-trip: account -> DID -> address\", func(t *testing.T) {\n\t\taccount := accountKeeper.GenAccount()\n\t\toriginalAddr := account.GetAddress()\n\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, originalAddr.String())\n\t\trequire.NoError(t, err)\n\t\trequire.NotEmpty(t, did)\n\t\trequire.Contains(t, did, \"did:key:\")\n\n\t\tderivedAddr, err := k.GetAddressFromDID(ctx, did)\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, derivedAddr)\n\n\t\trequire.Equal(t, originalAddr.String(), derivedAddr.String(),\n\t\t\t\"Address derived from DID should match original address\")\n\t})\n\n\tt.Run(\"invalid DID format\", func(t *testing.T) {\n\t\tinvalidDID := \"not-a-valid-did\"\n\n\t\taddr, err := k.GetAddressFromDID(ctx, invalidDID)\n\t\trequire.Error(t, err)\n\t\trequire.Nil(t, addr)\n\t\trequire.Contains(t, err.Error(), \"invalid DID\")\n\t})\n\n\tt.Run(\"empty DID\", func(t *testing.T) {\n\t\taddr, err := k.GetAddressFromDID(ctx, \"\")\n\t\trequire.Error(t, err)\n\t\trequire.Nil(t, addr)\n\t})\n\n\tt.Run(\"valid did:key format with secp256k1\", func(t *testing.T) {\n\t\ttestDID := \"did:key:zQ3shokFTS3brHcDQrn82RUDfCZESWL1ZdCEJwekUDPQiYBme\"\n\n\t\taddr, err := k.GetAddressFromDID(ctx, testDID)\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, addr)\n\t\trequire.NotEmpty(t, addr.String())\n\n\t\trequire.True(t, len(addr) > 0)\n\t})\n\n\tt.Run(\"multiple conversions of same DID produce same address\", func(t *testing.T) {\n\t\taccount := accountKeeper.GenAccount()\n\t\toriginalAddr := account.GetAddress()\n\t\tdid, err := k.IssueDIDFromAccountAddr(ctx, originalAddr.String())\n\t\trequire.NoError(t, err)\n\n\t\taddr1, err := k.GetAddressFromDID(ctx, did)\n\t\trequire.NoError(t, err)\n\n\t\taddr2, err := k.GetAddressFromDID(ctx, did)\n\t\trequire.NoError(t, err)\n\n\t\taddr3, err := k.GetAddressFromDID(ctx, did)\n\t\trequire.NoError(t, err)\n\n\t\trequire.Equal(t, addr1.String(), addr2.String())\n\t\trequire.Equal(t, addr2.String(), addr3.String())\n\t\trequire.Equal(t, originalAddr.String(), addr1.String())\n\t})\n}\n"
  },
  {
    "path": "x/acp/metrics/metrics.go",
    "content": "package metrics\n\nconst (\n\n\t// counter\n\t// label for grpc method\n\t// not sure - host? weird because scraping multiple targets would skew the distribution since everyone executes this msg\n\tMsgTotal = \"sourcehub_acp_msg_total\"\n\n\t// counter\n\t// label for grpc method\n\tMsgErrors = \"sourcehub_acp_msg_errors_total\"\n\n\t// histogram\n\t// label for grpc method\n\tMsgSeconds = \"sourcehub_acp_msg_seconds\"\n\n\t// counter\n\tInvariantViolation = \"sourcehub_acp_invariant_violation_total\"\n\n\t// counter\n\t// label for grpc method\n\tQueryTotal = \"sourcehub_acp_query_total\"\n\n\t// counter\n\t// label for grpc method (?)\n\tQueryErrors = \"sourcehub_acp_query_errors_total\"\n\n\t// histogram\n\t// label for grpc method\n\t// label for error or not\n\tQuerySeconds = \"sourcehub_acp_query_seconds\"\n)\n"
  },
  {
    "path": "x/acp/module/autocli.go",
    "content": "package acp\n\nimport (\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/acp\"\n)\n\n// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService:              modulev1.Query_ServiceDesc.ServiceName,\n\t\t\tEnhanceCustomCommand: true, // only required if you want to use the custom command\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Params\",\n\t\t\t\t\tUse:       \"params\",\n\t\t\t\t\tShort:     \"Shows the parameters of the module\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Policy\",\n\t\t\t\t\tUse:            \"policy [id]\",\n\t\t\t\t\tShort:          \"Queries for a Policy by its ID\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"id\"}},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"PolicyIds\",\n\t\t\t\t\tUse:            \"policy-ids\",\n\t\t\t\t\tShort:          \"Lists Registered Policies IDs\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"ValidatePolicy\",\n\t\t\t\t\tUse:       \"validate-policy [policy] [marshal_type]\",\n\t\t\t\t\tShort:     \"Validates the Payload of a Policy\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"policy\"},\n\t\t\t\t\t\t{ProtoField: \"marshal_type\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"AccessDecision\",\n\t\t\t\t\tUse:            \"access-decision [id]\",\n\t\t\t\t\tShort:          \"Returns an AccessDecision by its id\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"id\"}},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"RegistrationsCommitment\",\n\t\t\t\t\tUse:       \"registrations-commitment\",\n\t\t\t\t\tShort:     \"Query RegistrationsCommitment\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"id\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"RegistrationsCommitmentByCommitment\",\n\t\t\t\t\tUse:            \"registrations-commitment-by-commitment\",\n\t\t\t\t\tShort:          \"Query RegistrationsCommitmentByCommitment\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"HijackAttemptsByPolicy\",\n\t\t\t\t\tUse:            \"hijack-attempts-by-policy\",\n\t\t\t\t\tShort:          \"Query HijackAttemptsByPolicy\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\n\t\t\t\t// this line is used by ignite scaffolding # autocli/query\n\t\t\t},\n\t\t},\n\t\tTx: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService:              modulev1.Msg_ServiceDesc.ServiceName,\n\t\t\tEnhanceCustomCommand: true, // only required if you want to use the custom command\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"UpdateParams\",\n\t\t\t\t\tSkip:      true, // skipped because authority gated\n\t\t\t\t},\n\t\t\t\t// this line is used by ignite scaffolding # autocli/tx\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/acp/module/genesis.go",
    "content": "package acp\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// InitGenesis initializes the module's state from a provided genesis state.\nfunc InitGenesis(ctx sdk.Context, k *keeper.Keeper, genState types.GenesisState) {\n\tk.SetParams(ctx, genState.Params)\n}\n\n// ExportGenesis returns the module's exported genesis.\nfunc ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState {\n\tgenesis := types.DefaultGenesis()\n\tgenesis.Params = k.GetParams(ctx)\n\n\treturn genesis\n}\n"
  },
  {
    "path": "x/acp/module/genesis_test.go",
    "content": "package acp_test\n\nimport (\n\t\"testing\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/nullify\"\n\tacp \"github.com/sourcenetwork/sourcehub/x/acp/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesis(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t}\n\n\tk, ctx := keepertest.AcpKeeper(t)\n\tacp.InitGenesis(ctx, &k, genesisState)\n\tgot := acp.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n"
  },
  {
    "path": "x/acp/module/module.go",
    "content": "package acp\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/spf13/cobra\"\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/acp/module\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/client/cli\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar (\n\t_ module.AppModuleBasic      = (*AppModule)(nil)\n\t_ module.AppModuleSimulation = (*AppModule)(nil)\n\t_ module.HasGenesis          = (*AppModule)(nil)\n\t_ module.HasInvariants       = (*AppModule)(nil)\n\t_ module.HasConsensusVersion = (*AppModule)(nil)\n\n\t_ appmodule.AppModule       = (*AppModule)(nil)\n\t_ appmodule.HasBeginBlocker = (*AppModule)(nil)\n\t_ appmodule.HasEndBlocker   = (*AppModule)(nil)\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic implements the AppModuleBasic interface that defines the\n// independent methods a Cosmos SDK module needs to implement.\ntype AppModuleBasic struct {\n\tcdc codec.BinaryCodec\n}\n\nfunc NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic {\n\treturn AppModuleBasic{cdc: cdc}\n}\n\n// Name returns the name of the module as a string.\nfunc (AppModuleBasic) Name() string {\n\treturn types.ModuleName\n}\n\n// RegisterLegacyAminoCodec registers the amino codec for the module, which is used\n// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore.\nfunc (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}\n\n// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message.\nfunc (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {\n\ttypes.RegisterInterfaces(reg)\n}\n\n// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage.\n// The default GenesisState need to be defined by the module developer and is primarily used for testing.\nfunc (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(types.DefaultGenesis())\n}\n\n// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form.\nfunc (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {\n\tvar genState types.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &genState); err != nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal %s genesis state: %w\", types.ModuleName, err)\n\t}\n\treturn genState.Validate()\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.\nfunc (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {\n\tif err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper        *keeper.Keeper\n\taccountKeeper types.AccountKeeper\n\tbankKeeper    types.BankKeeper\n}\n\nfunc NewAppModule(\n\tcdc codec.Codec,\n\tkeeper *keeper.Keeper,\n\taccountKeeper types.AccountKeeper,\n\tbankKeeper types.BankKeeper,\n) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: NewAppModuleBasic(cdc),\n\t\tkeeper:         keeper,\n\t\taccountKeeper:  accountKeeper,\n\t\tbankKeeper:     bankKeeper,\n\t}\n}\n\n// GetTxCmd returns the root Tx command for the module. The subcommands of this root command are used by end-users to generate new transactions containing messages defined in the module\nfunc (a AppModuleBasic) GetTxCmd() *cobra.Command {\n\treturn cli.GetTxCmd()\n}\n\n// GetQueryCmd returns the root query command for the module. The subcommands of this root command are used by end-users to generate new queries to the subset of the state defined by the module\nfunc (AppModuleBasic) GetQueryCmd() *cobra.Command {\n\treturn cli.GetQueryCmd(types.StoreKey)\n}\n\n// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\t// Inject instrumentation into msg service handler\n\tdescriptor := metrics.WrapMsgServerServiceDescriptor(types.ModuleName, types.Msg_serviceDesc)\n\tcfg.MsgServer().RegisterService(&descriptor, am.keeper)\n\n\t// Inject instrumentation into query service handler\n\tdescriptor = metrics.WrapQueryServiceDescriptor(types.ModuleName, types.Query_serviceDesc)\n\tcfg.QueryServer().RegisterService(&descriptor, am.keeper)\n}\n\n// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted)\nfunc (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}\n\n// InitGenesis performs the module's genesis initialization. It returns no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) {\n\tvar genState types.GenesisState\n\t// Initialize global index to index in genesis state\n\tcdc.MustUnmarshalJSON(gs, &genState)\n\n\tInitGenesis(ctx, am.keeper, genState)\n}\n\n// ExportGenesis returns the module's exported genesis state as raw JSON bytes.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgenState := ExportGenesis(ctx, am.keeper)\n\treturn cdc.MustMarshalJSON(genState)\n}\n\n// ConsensusVersion is a sequence number for state-breaking change of the module.\n// It should be incremented on each consensus-breaking change introduced by the module.\n// To avoid wrong/empty versions, the initial version should be set to 1.\nfunc (AppModule) ConsensusVersion() uint64 { return 1 }\n\n// BeginBlock contains the logic that is automatically triggered at the beginning of each block.\n// The begin block implementation is optional.\nfunc (am AppModule) BeginBlock(_ context.Context) error {\n\treturn nil\n}\n\n// EndBlock contains the logic that is automatically triggered at the end of each block.\n// The end block implementation is optional.\nfunc (am AppModule) EndBlock(ctx context.Context) error {\n\t_, err := am.keeper.EndBlocker(ctx)\n\tif err != nil {\n\t\tam.keeper.Logger().Error(\"EndBlocker failed\", \"error\", err)\n\t}\n\n\treturn nil\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// ----------------------------------------------------------------------------\n// App Wiring Setup\n// ----------------------------------------------------------------------------\n\nfunc init() {\n\tappmodule.Register(\n\t\t&modulev1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t)\n}\n\ntype ModuleInputs struct {\n\tdepinject.In\n\n\tStoreService store.KVStoreService\n\tCdc          codec.Codec\n\tConfig       *modulev1.Module\n\tLogger       log.Logger\n\n\tAccountKeeper types.AccountKeeper\n\tBankKeeper    types.BankKeeper\n\tHubKeeper     types.HubKeeper\n}\n\ntype ModuleOutputs struct {\n\tdepinject.Out\n\n\tAcpKeeper *keeper.Keeper\n\tModule    appmodule.AppModule\n}\n\nfunc ProvideModule(in ModuleInputs) ModuleOutputs {\n\t// default to governance authority if not provided\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tif in.Config.Authority != \"\" {\n\t\tauthority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)\n\t}\n\tk := keeper.NewKeeper(\n\t\tin.Cdc,\n\t\tin.StoreService,\n\t\tin.Logger,\n\t\tauthority.String(),\n\t\tin.AccountKeeper,\n\t\tnil, // cap keeper is initialized after depinject is finished executing\n\t\tin.HubKeeper,\n\t)\n\tm := NewAppModule(\n\t\tin.Cdc,\n\t\t&k,\n\t\tin.AccountKeeper,\n\t\tin.BankKeeper,\n\t)\n\n\treturn ModuleOutputs{AcpKeeper: &k, Module: m}\n}\n"
  },
  {
    "path": "x/acp/module/simulation.go",
    "content": "package acp\n\nimport (\n\t\"math/rand\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\tacpsimulation \"github.com/sourcenetwork/sourcehub/x/acp/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// avoid unused import issue\nvar (\n\t_ = acpsimulation.FindAccount\n\t_ = rand.Rand{}\n\t_ = sample.AccAddress\n\t_ = sdk.AccAddress{}\n\t_ = simulation.MsgEntryKind\n)\n\nconst (\n\topWeightMsgCreatePolicy = \"op_weight_msg_create_policy\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgCreatePolicy int = 100\n\n\topWeightMsgCheckAccess = \"op_weight_msg_check_access\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgCheckAccess int = 100\n\n\topWeightMsgPolicyCmd = \"op_weight_msg_policy_cmd\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgPolicyCmd int = 100\n\n\topWeightMsgMsgEditPolicy = \"op_weight_msg_msg_edit_policy\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgMsgEditPolicy int = 100\n\n\t// this line is used by starport scaffolding # simapp/module/const\n)\n\n// GenerateGenesisState creates a randomized GenState of the module.\nfunc (AppModule) GenerateGenesisState(simState *module.SimulationState) {\n\taccs := make([]string, len(simState.Accounts))\n\tfor i, acc := range simState.Accounts {\n\t\taccs[i] = acc.Address.String()\n\t}\n\tacpGenesis := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\t// this line is used by starport scaffolding # simapp/module/genesisState\n\t}\n\tsimState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&acpGenesis)\n}\n\n// RegisterStoreDecoder registers a decoder.\nfunc (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {}\n\n// ProposalContents doesn't return any content functions for governance proposals.\nfunc (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent {\n\treturn nil\n}\n\n// WeightedOperations returns the all the gov module operations with their respective weights.\nfunc (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation {\n\toperations := make([]simtypes.WeightedOperation, 0)\n\n\tvar weightMsgCreatePolicy int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgCreatePolicy, &weightMsgCreatePolicy, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgCreatePolicy = defaultWeightMsgCreatePolicy\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgCreatePolicy,\n\t\tacpsimulation.SimulateMsgCreatePolicy(am.accountKeeper, am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgCheckAccess int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgCheckAccess, &weightMsgCheckAccess, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgCheckAccess = defaultWeightMsgCheckAccess\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgCheckAccess,\n\t\tacpsimulation.SimulateMsgCheckAccess(am.accountKeeper, am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgPolicyCmd int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgPolicyCmd, &weightMsgPolicyCmd, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgPolicyCmd = defaultWeightMsgPolicyCmd\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgPolicyCmd,\n\t\tacpsimulation.SimulateMsgPolicyCmd(am.accountKeeper, am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgMsgEditPolicy int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgMsgEditPolicy, &weightMsgMsgEditPolicy, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgMsgEditPolicy = defaultWeightMsgMsgEditPolicy\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgMsgEditPolicy,\n\t\tacpsimulation.SimulateMsgMsgEditPolicy(am.accountKeeper, am.bankKeeper, am.keeper),\n\t))\n\n\t// this line is used by starport scaffolding # simapp/module/operation\n\n\treturn operations\n}\n\n// ProposalMsgs returns msgs used for governance proposals for simulations.\nfunc (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg {\n\treturn []simtypes.WeightedProposalMsg{\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgCreatePolicy,\n\t\t\tdefaultWeightMsgCreatePolicy,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\tacpsimulation.SimulateMsgCreatePolicy(am.accountKeeper, am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgCheckAccess,\n\t\t\tdefaultWeightMsgCheckAccess,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\tacpsimulation.SimulateMsgCheckAccess(am.accountKeeper, am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgPolicyCmd,\n\t\t\tdefaultWeightMsgPolicyCmd,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\tacpsimulation.SimulateMsgPolicyCmd(am.accountKeeper, am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgMsgEditPolicy,\n\t\t\tdefaultWeightMsgMsgEditPolicy,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\tacpsimulation.SimulateMsgMsgEditPolicy(am.accountKeeper, am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\t// this line is used by starport scaffolding # simapp/module/OpMsg\n\t}\n}\n"
  },
  {
    "path": "x/acp/registration/repository.go",
    "content": "package registration\n\nimport (\n\t\"context\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/raccoondb/v2/iterator\"\n\t\"github.com/sourcenetwork/raccoondb/v2/marshal\"\n\t\"github.com/sourcenetwork/raccoondb/v2/store\"\n\t\"github.com/sourcenetwork/raccoondb/v2/table\"\n\trctypes \"github.com/sourcenetwork/raccoondb/v2/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/stores\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// NewAmendmentEventRepository returns a repository which manages AmendmentEvent records\nfunc NewAmendmentEventRepository(kv store.KVStore) (*AmendmentEventRepository, error) {\n\tmarshaler := stores.NewGogoProtoMarshaler(func() *types.AmendmentEvent { return &types.AmendmentEvent{} })\n\tt := table.NewTable(kv, marshaler)\n\n\tgetter := func(ev **types.AmendmentEvent) uint64 {\n\t\treturn (*ev).Id\n\t}\n\tsetter := func(ev **types.AmendmentEvent, id uint64) {\n\t\t(*ev).Id = id\n\t}\n\tincrementer := table.NewAutoIncrementer(t, getter, setter)\n\n\textractor := func(ev **types.AmendmentEvent) string {\n\t\treturn (*ev).PolicyId\n\t}\n\tpolIdx, err := table.NewIndex(t, \"policy\", extractor, marshal.StringMarshaler{})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &AmendmentEventRepository{\n\t\tt:           t,\n\t\tincrementer: incrementer,\n\t\tpolIdx:      polIdx,\n\t}, nil\n}\n\n// AmendmentEventRepository exposes operations\n// to access and store AmendmentEvent records\ntype AmendmentEventRepository struct {\n\tt           *table.Table[*types.AmendmentEvent]\n\tpolIdx      table.IndexReader[*types.AmendmentEvent, string]\n\tincrementer *table.Autoincrementer[*types.AmendmentEvent]\n}\n\nfunc (r *AmendmentEventRepository) wrapErr(err error) error {\n\tif err == nil {\n\t\treturn err\n\t}\n\treturn errors.NewWithCause(\"amendment event repository\", err, errors.ErrorType_INTERNAL)\n}\n\n// create uses Raccoon's autoincrement to\n// insert a new event with an autoincremented ID\nfunc (r *AmendmentEventRepository) create(ctx context.Context, reg *types.AmendmentEvent) error {\n\terr := r.incrementer.Insert(ctx, &reg)\n\treturn r.wrapErr(err)\n}\n\n// update updates the data in a record\nfunc (r *AmendmentEventRepository) update(ctx context.Context, reg *types.AmendmentEvent) error {\n\terr := r.incrementer.Update(ctx, &reg)\n\treturn r.wrapErr(err)\n}\n\n// GetById returns a record with the given ID\nfunc (r *AmendmentEventRepository) GetById(ctx context.Context, id uint64) (rctypes.Option[*types.AmendmentEvent], error) {\n\topt, err := r.incrementer.GetByID(ctx, id)\n\tif err != nil {\n\t\treturn rctypes.None[*types.AmendmentEvent](), r.wrapErr(err)\n\t}\n\treturn opt, nil\n}\n\n// ListHijackEventsByPolicy returns all flagged AmendmentEvents for a Policy\nfunc (r *AmendmentEventRepository) ListHijackEventsByPolicy(ctx context.Context, policyId string) (iterator.Iterator[*types.AmendmentEvent], error) {\n\titer, err := r.ListEventsByPolicy(ctx, policyId)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\titer = iterator.Filter(iter, func(ev *types.AmendmentEvent) bool { return ev.HijackFlag })\n\treturn iter, nil\n}\n\n// ListEventsByPolicy returns all AmendmentEvents for a Policy\nfunc (r *AmendmentEventRepository) ListEventsByPolicy(ctx context.Context, policyId string) (iterator.Iterator[*types.AmendmentEvent], error) {\n\tkeysIter, err := r.polIdx.IterateKeys(ctx, &policyId, store.NewOpenIterator())\n\tif err != nil {\n\t\treturn nil, r.wrapErr(err)\n\t}\n\titer := table.MaterializeObjects(ctx, r.t, keysIter)\n\treturn iter, nil\n}\n"
  },
  {
    "path": "x/acp/registration/service.go",
    "content": "package registration\n\nimport (\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/auth\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/acp_core/pkg/services\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/commitment\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// NewRegistrationService returns an abstraction\n// layer which exposes object registration operations\nfunc NewRegistrationService(engine *services.EngineService, eventRepo *AmendmentEventRepository, commitmentService *commitment.CommitmentService) *RegistrationService {\n\treturn &RegistrationService{\n\t\tengine:            engine,\n\t\tcommitmentService: commitmentService,\n\t\teventRepo:         eventRepo,\n\t}\n}\n\n// RegistrationService abstracts object registration operations\ntype RegistrationService struct {\n\tengine            *services.EngineService\n\tcommitmentService *commitment.CommitmentService\n\teventRepo         *AmendmentEventRepository\n}\n\n// UnarchiveObject flags a given object as active, effectively re-establishing the owner relationship.\n// Only the previous owner can unarchive an object.\n// This operation is idempotent.\n//\n// If no change to the state was made, returns a nil ObjectRegistrationEvent.\n// If an error happened, returns nil, nil and error\nfunc (s *RegistrationService) UnarchiveObject(ctx sdk.Context, polId string, object *coretypes.Object) (*coretypes.UnarchiveObjectResponse, error) {\n\treturn s.engine.UnarchiveObject(ctx, &coretypes.UnarchiveObjectRequest{\n\t\tPolicyId: polId,\n\t\tObject:   object,\n\t})\n}\n\n// ArchiveObject flags an object as archived and\n// removes relationships from it\nfunc (s *RegistrationService) ArchiveObject(ctx sdk.Context, polId string, object *coretypes.Object) (*coretypes.ArchiveObjectResponse, error) {\n\treturn s.engine.ArchiveObject(ctx, &coretypes.ArchiveObjectRequest{\n\t\tPolicyId: polId,\n\t\tObject:   object,\n\t})\n}\n\n// RegisterObject attempts to bind an object id to an actor\n// If the object has been previously registered, returns an error\n//\n// This operation is not idempotent.\nfunc (s *RegistrationService) RegisterObject(ctx sdk.Context, polId string, object *coretypes.Object, actor *coretypes.Actor, msgCreator string) (*coretypes.RegisterObjectResponse, error) {\n\tmetadata, err := types.BuildACPSuppliedMetadata(ctx, actor.Id, msgCreator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn s.engine.RegisterObject(ctx, &coretypes.RegisterObjectRequest{\n\t\tPolicyId: polId,\n\t\tObject:   object,\n\t\tMetadata: metadata,\n\t})\n}\n\n// amendRegistration transfers the ownership of the object in record\n// to actor.\n// a new amendment event is created\nfunc (s *RegistrationService) amendRegistration(ctx sdk.Context, commitment *types.RegistrationsCommitment, record *coretypes.RelationshipRecord, actor *coretypes.Actor, msgCreator string) (*coretypes.RelationshipRecord, *types.AmendmentEvent, error) {\n\tobject := record.Relationship.Object\n\n\tregistrationMetadata, err := types.ExtractRecordMetadata(record.Metadata)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// registration is older than commitment\n\tif registrationMetadata.CreationTs.BlockHeight < commitment.Metadata.CreationTs.BlockHeight {\n\t\treturn nil, nil, errors.Wrap(\"amendment failed: current registration older than commitment\", errors.ErrorType_OPERATION_FORBIDDEN,\n\t\t\terrors.Pair(\"policy\", commitment.PolicyId),\n\t\t\terrors.Pair(\"resource\", object.Resource),\n\t\t\terrors.Pair(\"object\", object.Id),\n\t\t)\n\t}\n\n\tamendMetadata, err := types.BuildACPSuppliedMetadataWithTime(ctx, commitment.Metadata.CreationTs, actor.Id, msgCreator)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tgoCtx := auth.InjectPrincipal(ctx, coretypes.RootPrincipal())\n\tctx = ctx.WithContext(goCtx)\n\tresult, err := s.engine.AmendRegistration(ctx, &coretypes.AmendRegistrationRequest{\n\t\tPolicyId:      commitment.PolicyId,\n\t\tObject:        object,\n\t\tNewOwner:      actor,\n\t\tNewCreationTs: commitment.Metadata.CreationTs.ProtoTs,\n\t\tMetadata:      amendMetadata,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\teventMetadata, err := types.BuildRecordMetadata(ctx, actor.Id, msgCreator)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tevent := &types.AmendmentEvent{\n\t\tId:            0, // doesn't matter, will get autogenerated\n\t\tPolicyId:      commitment.PolicyId,\n\t\tObject:        object,\n\t\tNewOwner:      actor,\n\t\tPreviousOwner: coretypes.NewActor(record.Metadata.Creator.Identifier),\n\t\tCommitmentId:  commitment.Id,\n\t\tHijackFlag:    false,\n\t\tMetadata:      eventMetadata,\n\t}\n\terr = s.eventRepo.create(ctx, event)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn result.Record, event, nil\n}\n\n// RevealRegistration attempts to register an object from a commitment opening.\n// If the opening is valid, registers the object.\n// Returns an AmendmentEvent if the object registration was amended\n//\n// In the event where the opening is valid and the object was already registered,\n// if the commitment is older than the registration, run the amendment protocol\n// which transfers the object's ownership to the commitment author.\nfunc (s *RegistrationService) RevealRegistration(ctx sdk.Context, commitmentId uint64, proof *types.RegistrationProof, actor *coretypes.Actor, msgSigner string) (*coretypes.RelationshipRecord, *types.AmendmentEvent, error) {\n\tcommitment, ok, err := s.commitmentService.ValidateOpening(ctx, commitmentId, proof, actor)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif !ok {\n\t\treturn nil, nil, errors.Wrap(\"invalid registration opening\", errors.ErrorType_UNAUTHORIZED)\n\t}\n\n\tregistrationRecord, err := s.engine.GetObjectRegistration(ctx, &coretypes.GetObjectRegistrationRequest{\n\t\tPolicyId: commitment.PolicyId,\n\t\tObject:   proof.Object,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif !registrationRecord.IsRegistered {\n\t\t// Use the commitment creation ts to prevent a secondary amendment\n\t\tmetadata, err := types.BuildACPSuppliedMetadataWithTime(ctx, commitment.Metadata.CreationTs, actor.Id, msgSigner)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\tresult, err := s.engine.RevealRegistration(ctx, &coretypes.RevealRegistrationRequest{\n\t\t\tPolicyId:   commitment.PolicyId,\n\t\t\tObject:     proof.Object,\n\t\t\tMetadata:   metadata,\n\t\t\tCreationTs: commitment.Metadata.CreationTs.ProtoTs,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\treturn result.Record, nil, nil\n\t}\n\n\treturn s.amendRegistration(ctx, commitment, registrationRecord.Record, actor, msgSigner)\n}\n\n// FlagHijackEvent sets the hijack flag of an amendment event to true\nfunc (s *RegistrationService) FlagHijackEvent(ctx sdk.Context, eventId uint64, actor *coretypes.Actor) (*types.AmendmentEvent, error) {\n\topt, err := s.eventRepo.GetById(ctx, eventId)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opt.Empty() {\n\t\treturn nil, errors.Wrap(\"event not found\", errors.ErrorType_NOT_FOUND, errors.Pair(\"event\", fmt.Sprintf(\"%v\", eventId)))\n\t}\n\tevent := opt.GetValue()\n\n\tif event.Metadata.OwnerDid != actor.Id {\n\t\treturn nil, errors.Wrap(\"event actor mismatch: actor must be event subject\",\n\t\t\terrors.ErrorType_UNAUTHORIZED,\n\t\t\terrors.Pair(\"event\", fmt.Sprintf(\"%v\", eventId)),\n\t\t\terrors.Pair(\"expected_actor\", actor.Id),\n\t\t)\n\t}\n\n\tevent.HijackFlag = true\n\terr = s.eventRepo.update(ctx, event)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn event, nil\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/builder.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"context\"\n\t\"crypto\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/cosmos/gogoproto/jsonpb\"\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\t\"github.com/go-jose/go-jose/v3\"\n\t\"github.com/go-jose/go-jose/v3/cryptosigner\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc NewCmdBuilder(clock LogicalClock, params types.Params) *CmdBuilder {\n\treturn &CmdBuilder{\n\t\tclock:  clock,\n\t\tparams: params,\n\t}\n}\n\n// CmdBuilder builds PolicyCmdPayloads\ntype CmdBuilder struct {\n\tclock  LogicalClock\n\tcmd    types.SignedPolicyCmdPayload\n\tparams types.Params\n\tcmdErr error\n\tsigner crypto.Signer\n}\n\n// BuildJWS produces a signed JWS for the specified Cmd\nfunc (b *CmdBuilder) BuildJWS(ctx context.Context) (string, error) {\n\tif b.signer == nil {\n\t\treturn \"\", fmt.Errorf(\"cmdBuilder failed: %w\", ErrSignerRequired)\n\t}\n\n\tpayload, err := b.Build(ctx)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn SignPayload(payload, b.signer)\n}\n\n// SetSigner sets the Signer for the Builder, which will be used to produce a JWS\nfunc (b *CmdBuilder) SetSigner(signer crypto.Signer) {\n\tb.signer = signer\n}\n\n// GetSigner returns the currently set Signer\nfunc (b *CmdBuilder) GetSigner() crypto.Signer {\n\treturn b.signer\n}\n\n// Build validates the data provided to the Builder, validates it and returns a SignedPolicyCmdPayload or an error.\nfunc (b *CmdBuilder) Build(ctx context.Context) (types.SignedPolicyCmdPayload, error) {\n\theight, err := b.clock.GetTimestampNow(ctx)\n\tif err != nil {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: timestamp failed: %v\", err)\n\t}\n\n\tb.cmd.IssuedHeight = height\n\n\tif b.cmd.IssuedAt == nil {\n\t\tb.cmd.IssuedAt = prototypes.TimestampNow()\n\t}\n\n\tif b.cmd.ExpirationDelta == 0 {\n\t\tb.cmd.ExpirationDelta = b.params.PolicyCommandMaxExpirationDelta\n\t}\n\n\tif b.cmd.PolicyId == \"\" {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: policy id: %w\", ErrBuilderMissingArgument)\n\t}\n\n\tif b.cmd.ExpirationDelta > b.params.PolicyCommandMaxExpirationDelta {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: %v\", ErrExpirationDeltaTooLarge)\n\t}\n\n\tif err := did.IsValidDID(b.cmd.Actor); err != nil {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: invalid actor: %v\", err)\n\t}\n\n\tif b.cmd.Cmd == nil {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: Command not specified: %v\", ErrBuilderMissingArgument)\n\t}\n\n\tif b.cmdErr != nil {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: Command invalid: %v\", b.cmdErr)\n\t}\n\n\tif err := validatePolicyCmd(b.cmd.Cmd); err != nil {\n\t\treturn types.SignedPolicyCmdPayload{}, fmt.Errorf(\"cmdBuilder: Command invalid: %v\", err)\n\t}\n\n\treturn b.cmd, nil\n}\n\n// validatePolicyCmd performs basic structural validation on the embedded PolicyCmd.\n// It ensures required fields are present and non-empty for each command variant.\nfunc validatePolicyCmd(cmd *types.PolicyCmd) error {\n\tswitch c := cmd.GetCmd().(type) {\n\tcase *types.PolicyCmd_SetRelationshipCmd:\n\t\trel := c.SetRelationshipCmd.GetRelationship()\n\t\tif rel == nil {\n\t\t\treturn fmt.Errorf(\"set_relationship: relationship is required\")\n\t\t}\n\t\tobj := rel.GetObject()\n\t\tif obj == nil || strings.TrimSpace(obj.GetResource()) == \"\" || strings.TrimSpace(obj.GetId()) == \"\" {\n\t\t\treturn fmt.Errorf(\"set_relationship: object resource and id are required\")\n\t\t}\n\t\tif strings.TrimSpace(rel.GetRelation()) == \"\" {\n\t\t\treturn fmt.Errorf(\"set_relationship: relation is required\")\n\t\t}\n\t\tsubj := rel.GetSubject()\n\t\tif subj == nil {\n\t\t\treturn fmt.Errorf(\"set_relationship: subject is required\")\n\t\t}\n\t\tvalidSubject := false\n\t\tif a := subj.GetActor(); a != nil && strings.TrimSpace(a.GetId()) != \"\" {\n\t\t\tvalidSubject = true\n\t\t}\n\t\tif o := subj.GetObject(); o != nil && strings.TrimSpace(o.GetResource()) != \"\" && strings.TrimSpace(o.GetId()) != \"\" {\n\t\t\tvalidSubject = true\n\t\t}\n\t\tif as := subj.GetActorSet(); as != nil && strings.TrimSpace(as.GetRelation()) != \"\" {\n\t\t\tvalidSubject = true\n\t\t}\n\t\tif subj.GetAllActors() != nil {\n\t\t\tvalidSubject = true\n\t\t}\n\t\tif !validSubject {\n\t\t\treturn fmt.Errorf(\"set_relationship: invalid subject\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_DeleteRelationshipCmd:\n\t\trel := c.DeleteRelationshipCmd.GetRelationship()\n\t\tif rel == nil {\n\t\t\treturn fmt.Errorf(\"delete_relationship: relationship is required\")\n\t\t}\n\t\tobj := rel.GetObject()\n\t\tif obj == nil || strings.TrimSpace(obj.GetResource()) == \"\" || strings.TrimSpace(obj.GetId()) == \"\" {\n\t\t\treturn fmt.Errorf(\"delete_relationship: object resource and id are required\")\n\t\t}\n\t\tif strings.TrimSpace(rel.GetRelation()) == \"\" {\n\t\t\treturn fmt.Errorf(\"delete_relationship: relation is required\")\n\t\t}\n\t\tif rel.GetSubject() == nil {\n\t\t\treturn fmt.Errorf(\"delete_relationship: subject is required\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_RegisterObjectCmd:\n\t\tobj := c.RegisterObjectCmd.GetObject()\n\t\tif obj == nil || strings.TrimSpace(obj.GetResource()) == \"\" || strings.TrimSpace(obj.GetId()) == \"\" {\n\t\t\treturn fmt.Errorf(\"register_object: object resource and id are required\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_ArchiveObjectCmd:\n\t\tobj := c.ArchiveObjectCmd.GetObject()\n\t\tif obj == nil || strings.TrimSpace(obj.GetResource()) == \"\" || strings.TrimSpace(obj.GetId()) == \"\" {\n\t\t\treturn fmt.Errorf(\"archive_object: object resource and id are required\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_UnarchiveObjectCmd:\n\t\tobj := c.UnarchiveObjectCmd.GetObject()\n\t\tif obj == nil || strings.TrimSpace(obj.GetResource()) == \"\" || strings.TrimSpace(obj.GetId()) == \"\" {\n\t\t\treturn fmt.Errorf(\"unarchive_object: object resource and id are required\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_CommitRegistrationsCmd:\n\t\tif len(c.CommitRegistrationsCmd.GetCommitment()) == 0 {\n\t\t\treturn fmt.Errorf(\"commit_registrations: commitment is required\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_RevealRegistrationCmd:\n\t\tif c.RevealRegistrationCmd.GetProof() == nil {\n\t\t\treturn fmt.Errorf(\"reveal_registration: proof is required\")\n\t\t}\n\t\tif c.RevealRegistrationCmd.GetRegistrationsCommitmentId() == 0 {\n\t\t\treturn fmt.Errorf(\"reveal_registration: registrations_commitment_id must be > 0\")\n\t\t}\n\t\treturn nil\n\n\tcase *types.PolicyCmd_FlagHijackAttemptCmd:\n\t\tif c.FlagHijackAttemptCmd.GetEventId() == 0 {\n\t\t\treturn fmt.Errorf(\"flag_hijack_attempt: event_id must be > 0\")\n\t\t}\n\t\treturn nil\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown command variant\")\n\t}\n}\n\n// IssuedAt sets the creation timestamp\nfunc (b *CmdBuilder) IssuedAt(ts *prototypes.Timestamp) {\n\tb.cmd.IssuedAt = ts\n}\n\n// Actor sets the Actor for the Command\nfunc (b *CmdBuilder) Actor(did string) {\n\tb.cmd.Actor = did\n}\n\n// ExpirationDelta specifies the number of blocks after the issue height for which the Command will be valid.\nfunc (b *CmdBuilder) ExpirationDelta(delta uint64) {\n\tb.cmd.ExpirationDelta = delta\n}\n\n// PolicyID sets the Policy ID for the payload\nfunc (b *CmdBuilder) PolicyID(id string) {\n\tb.cmd.PolicyId = id\n}\n\n// PolicyCmd sets the command to be issued with the Signed token\nfunc (b *CmdBuilder) PolicyCmd(cmd *types.PolicyCmd) {\n\tb.cmd.Cmd = cmd\n}\n\n// SignPayload produces a JWS serialized version of a Payload from a signing key\nfunc SignPayload(cmd types.SignedPolicyCmdPayload, skey crypto.Signer) (string, error) {\n\tmarshaler := jsonpb.Marshaler{}\n\tpayload, err := marshaler.MarshalToString(&cmd)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\topaque := cryptosigner.Opaque(skey)\n\tkey := jose.SigningKey{\n\t\tAlgorithm: opaque.Algs()[0],\n\t\tKey:       opaque,\n\t}\n\tvar opts *jose.SignerOptions\n\tsigner, err := jose.NewSigner(key, opts)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tobj, err := signer.Sign([]byte(payload))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn obj.FullSerialize(), nil\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/builder_test.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\ntype fixedClock struct{ h uint64 }\n\nfunc (c fixedClock) GetTimestampNow(ctx context.Context) (uint64, error) { return c.h, nil }\n\nfunc newTestBuilder(t *testing.T) *CmdBuilder {\n\tt.Helper()\n\treturn NewCmdBuilder(fixedClock{h: 100}, types.DefaultParams())\n}\n\nfunc TestCmdBuilder_ValidateCmd_RegisterObject_OK(t *testing.T) {\n\tb := newTestBuilder(t)\n\tb.Actor(\"did:key:test-actor\")\n\tb.PolicyID(\"policy-1\")\n\tb.PolicyCmd(types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"foo\")))\n\tpayload, err := b.Build(context.Background())\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"policy-1\", payload.PolicyId)\n}\n\nfunc TestCmdBuilder_ValidateCmd_RegisterObject_Invalid(t *testing.T) {\n\tb := newTestBuilder(t)\n\tb.Actor(\"did:key:test-actor\")\n\tb.PolicyID(\"policy-1\")\n\tb.PolicyCmd(types.NewRegisterObjectCmd(coretypes.NewObject(\"file\", \"\")))\n\t_, err := b.Build(context.Background())\n\trequire.Error(t, err)\n}\n\nfunc TestCmdBuilder_ValidateCmd_SetRelationship_OK(t *testing.T) {\n\tb := newTestBuilder(t)\n\tb.Actor(\"did:key:test-actor\")\n\tb.PolicyID(\"policy-1\")\n\trel := coretypes.NewActorRelationship(\"file\", \"foo\", \"viewer\", \"did:key:bob\")\n\tb.PolicyCmd(types.NewSetRelationshipCmd(rel))\n\t_, err := b.Build(context.Background())\n\trequire.NoError(t, err)\n}\n\nfunc TestCmdBuilder_ValidateCmd_SetRelationship_InvalidRelation(t *testing.T) {\n\tb := newTestBuilder(t)\n\tb.Actor(\"did:key:test-actor\")\n\tb.PolicyID(\"policy-1\")\n\trel := coretypes.NewActorRelationship(\"file\", \"foo\", \"\", \"did:key:bob\")\n\tb.PolicyCmd(types.NewSetRelationshipCmd(rel))\n\t_, err := b.Build(context.Background())\n\trequire.Error(t, err)\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/errors.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"errors\"\n)\n\nvar (\n\tErrExpirationDeltaTooLarge = errors.New(\"expiration delta greater than threshold\")\n\tErrCommandExpired          = errors.New(\"PolicyCmdPayload expiration height is stale\")\n\tErrBuilderMissingArgument  = errors.New(\"missing argument\")\n\tErrSignerRequired          = errors.New(\"no signer set for builder\")\n\tErrPayloadAlreadyProcessed = errors.New(\"PolicyCmdPayload already processed\")\n)\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/jws.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"fmt\"\n\n\t\"github.com/TBD54566975/ssi-sdk/crypto\"\n\t\"github.com/TBD54566975/ssi-sdk/did/key\"\n\t\"github.com/cosmos/gogoproto/jsonpb\"\n\tsecp \"github.com/decred/dcrd/dcrec/secp256k1/v4\"\n\t\"github.com/go-jose/go-jose/v3\"\n\t\"github.com/lestrrat-go/jwx/v2/jwa\"\n\tjwxjws \"github.com/lestrrat-go/jwx/v2/jws\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc newJWSVerifier(resolver did.Resolver) jwsVerifier {\n\treturn jwsVerifier{\n\t\tresolver: resolver,\n\t}\n}\n\n// jwsVerifier verifies the Signature of a JWS which contains a PolicyCmd\ntype jwsVerifier struct {\n\tresolver did.Resolver\n}\n\n// Verify verifies the integrity of the JWS payload, returns the Payload if OK\n//\n// The verification extracts a VerificationMethod from the resolved Actor DID in the PolicyCmd.\n// The JOSE header attributes are ignored and only the key derived from the Actor DID is accepted.\n// This is done to assure no impersonation happens by tinkering the JOSE header in order to produce a valid\n// JWS, signed by key different than that of the DID owner.\nfunc (s *jwsVerifier) Verify(ctx context.Context, jwsStr string) (*types.SignedPolicyCmdPayload, error) {\n\tjws, err := jose.ParseSigned(jwsStr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed parsing jws: %v\", err)\n\t}\n\n\tpayloadBytes := jws.UnsafePayloadWithoutVerification()\n\tpayload := &types.SignedPolicyCmdPayload{}\n\terr = jsonpb.UnmarshalString(string(payloadBytes), payload)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed unmarshaling PolicyCmd payload: %v\", err)\n\t}\n\n\tdid := payload.Actor\n\t// currently the ssi-sdk key resolver does not support secp256k1\n\t// therefore we skip using the did pkg resolver and decode it directly,\n\t// as that does not error.\n\tdidKey := key.DIDKey(did)\n\tpubBytes, _, keytype, err := didKey.Decode()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to resolve actor did: %v\", err)\n\t}\n\n\tpubKey, err := crypto.BytesToPubKey(pubBytes, keytype)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to retrieve pub key: %v\", err)\n\t}\n\n\tvar algs []jwa.SignatureAlgorithm\n\tif secpKey, ok := pubKey.(secp.PublicKey); ok {\n\t\t// https://www.rfc-editor.org/rfc/rfc8812\n\t\talgs = []jwa.SignatureAlgorithm{jwa.ES256K}\n\t\tpubKey = secpKey.ToECDSA()\n\t} else {\n\t\talgs, err = jwxjws.AlgorithmsForKey(pubKey)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to retrieve algs for pub key: %v\", err)\n\t\t}\n\t}\n\n\t_, err = jwxjws.Verify([]byte(jwsStr), jwxjws.WithKey(algs[0], pubKey))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"could not verify actor signature for jwk: %v\", err)\n\t}\n\n\treturn payload, nil\n}\n\n// ComputePayloadID hashes a JWS payload to produce an ID used for replay protection.\nfunc ComputePayloadID(jwsPayload string) []byte {\n\thasher := sha256.New()\n\thasher.Write([]byte(jwsPayload))\n\treturn hasher.Sum(nil)\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/jws_test.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\n// reject jws with critical header: If any of the listed extension Header Parameters are not understood\n//and supported by the recipient, then the JWS is invalid\n// reject jws with jose kid, x5c, x5u, kid, jwk, jku\n\n// test jws containing kid and signed with kids key is rejected\n\n// test did no verification method is rejected\n\nfunc TestComputePayloadID_ValidJWS(t *testing.T) {\n\tjws1 := `{\"payload\":\"eyJhY3RvciI6ImRpZDprZXk6ejZNa3JNZGthUFFlWGZCUGJLelkyYlhNNkE1UktxUHF1cDgxeDE1UEdnQVJZRVVaIiwiaXNzdWVkSGVpZ2h0IjoiMSIsImlzc3VlZEF0IjoiMjAyNS0wOC0xOVQxMjoxODo1NS4yOTI3NDdaIiwiZXhwaXJhdGlvbkRlbHRhIjoiNDMyMDAiLCJwb2xpY3lJZCI6ImRhN2JlNjUwMjc2NjQ3MDg1NTFmOTcxOTdiYTVmNTk5M2FhOTliYzdiNTcwNTVkZjk3NjY0MjZkYzZkYTk2MDUiLCJjbWQiOnsicmVnaXN0ZXJPYmplY3RDbWQiOnsib2JqZWN0Ijp7InJlc291cmNlIjoiZmlsZSIsImlkIjoiZm9vIn19fX0\",\"protected\":\"eyJhbGciOiJFZERTQSJ9\",\"signature\":\"XJjL-DwobYDKmvwWDovTu1TbGbdr355hTzHJsXaOYnfim1wdlVyggGkAr1y10xB_zRf_k7CHZSLrh98lZhuyCw\"}`\n\n\tjws2 := `\n\t{\"payload\":\"eyJhY3RvciI6ImRpZDprZXk6ejZNa2lvRTR6ejcydjk1SERFRjgxTkFrQjVwbllyalVzYUFhSzhCUDdhQWFlaEZuIiwiaXNzdWVkSGVpZ2h0IjoiMSIsImlzc3VlZEF0IjoiMjAyNS0wOC0xOVQxMjo1NzoxMS4wNzUxNzhaIiwiZXhwaXJhdGlvbkRlbHRhIjoiNDMyMDAiLCJwb2xpY3lJZCI6IjgxZDUwNTU5YzUyZjM5YWNiOTc4NGRkY2I3ZmM1MTY2ZWRjZDczMmQ3NzU4Y2QyMjQ2NWE4NjhjNGI5NmJiNmIiLCJjbWQiOnsicmVnaXN0ZXJPYmplY3RDbWQiOnsib2JqZWN0Ijp7InJlc291cmNlIjoiZmlsZSIsImlkIjoiZm9vIn19fX0\",\"protected\":\"eyJhbGciOiJFZERTQSJ9\",\"signature\":\"5WKgw-80H6HTH5-CVBWykyFKHMjz1tEeIJNbuWJOHNlEM9nd8FfEpOuR0Ha6iHwsyviqcpfUXF8_Jqy2nou-Dg\"}`\n\n\tid1 := ComputePayloadID(jws1)\n\trequire.NotEmpty(t, id1)\n\n\tid2 := ComputePayloadID(jws2)\n\trequire.NotEmpty(t, id2)\n\n\tid3 := ComputePayloadID(jws1)\n\trequire.NotEmpty(t, id3)\n\n\trequire.Equal(t, id1, id3)\n\trequire.NotEqual(t, id1, id2)\n}\n\nfunc TestComputePayloadID_EmptyInput(t *testing.T) {\n\tid := ComputePayloadID(\"\")\n\trequire.NotEmpty(t, id)\n}\n\nfunc TestComputePayloadID_InvalidJWS(t *testing.T) {\n\tinvalidJSON := `{\"payload\": eyJhY3RvciI6ImRp}`\n\tid := ComputePayloadID(invalidJSON)\n\trequire.NotEmpty(t, id)\n}\n\nfunc TestComputePayloadID_MalformedJWS(t *testing.T) {\n\tmalformedJWS := `{\"payload\": \"test\"}`\n\tid := ComputePayloadID(malformedJWS)\n\trequire.NotEmpty(t, id)\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/spec.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/did\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\n// payloadSpec executes validation against a PolicyCmdPayload to ensure it should be accepted\nfunc payloadSpec(params types.Params, currentHeight uint64, payload *types.SignedPolicyCmdPayload) error {\n\tif payload.ExpirationDelta > params.PolicyCommandMaxExpirationDelta {\n\t\treturn fmt.Errorf(\"%w: max %v, given %v\", ErrExpirationDeltaTooLarge, params.PolicyCommandMaxExpirationDelta, payload.ExpirationDelta)\n\t}\n\n\tmaxHeight := payload.IssuedHeight + payload.ExpirationDelta\n\tif currentHeight > maxHeight {\n\t\treturn fmt.Errorf(\"%v: current %v limit %v\", ErrCommandExpired, currentHeight, maxHeight)\n\t}\n\n\treturn nil\n}\n\n// ValidateAndExtractCmd validates a MsgPolicyCmd and return the Cmd payload\nfunc ValidateAndExtractCmd(ctx context.Context, params types.Params, resolver did.Resolver, payload string, contentType types.MsgSignedPolicyCmd_ContentType, currentHeight uint64) (*types.SignedPolicyCmdPayload, error) {\n\tvar cmd *types.SignedPolicyCmdPayload\n\tvar err error\n\n\tswitch contentType {\n\tcase types.MsgSignedPolicyCmd_JWS:\n\t\tverifier := newJWSVerifier(resolver)\n\t\tcmd, err = verifier.Verify(ctx, payload)\n\tdefault:\n\t\terr = fmt.Errorf(\"invalid signed command: cmd %v: %w\", payload, errors.ErrUnknownVariant)\n\t}\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid signed command: %w\", err)\n\t}\n\n\terr = payloadSpec(params, currentHeight, cmd)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid payload: %v\", err)\n\t}\n\n\treturn cmd, nil\n}\n"
  },
  {
    "path": "x/acp/signed_policy_cmd/types.go",
    "content": "package signed_policy_cmd\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/cometbft/cometbft/rpc/client\"\n)\n\n// LogicalClock models a Provider for logical timestamps.\n// Timestamps must be monotonically increasing and are used as reference\n// for the total ordering of events in the system.\n//\n// This abstraction is general purpose but for the current context of SourceHub\n// this primarily means the current system block height.\ntype LogicalClock interface {\n\n\t// GetTimestamp returns an integer for the current timestamp in the system.\n\tGetTimestampNow(ctx context.Context) (uint64, error)\n}\n\nvar _ LogicalClock = (*abciLogicalClock)(nil)\n\nfunc LogicalClockFromCometClient(client client.Client) LogicalClock {\n\treturn &abciLogicalClock{\n\t\trpcClient: client,\n\t}\n}\n\ntype abciLogicalClock struct {\n\trpcClient client.Client\n}\n\nfunc (c *abciLogicalClock) GetTimestampNow(ctx context.Context) (uint64, error) {\n\tresp, err := c.rpcClient.ABCIInfo(ctx)\n\tif err != nil {\n\t\treturn 0, fmt.Errorf(\"failed to fetch latest block: %v\", err)\n\t}\n\n\treturn uint64(resp.Response.LastBlockHeight), nil\n}\n"
  },
  {
    "path": "x/acp/simulation/check_access.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc SimulateMsgCheckAccess(\n\tak types.AccountKeeper,\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgCheckAccess{\n\t\t\tCreator: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the CheckAccess simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"CheckAccess simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/acp/simulation/create_policy.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc SimulateMsgCreatePolicy(\n\tak types.AccountKeeper,\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgCreatePolicy{\n\t\t\tCreator: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the CreatePolicy simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"CreatePolicy simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/acp/simulation/helpers.go",
    "content": "package simulation\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\n// FindAccount find a specific address from an account list\nfunc FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) {\n\tcreator, err := sdk.AccAddressFromBech32(address)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn simtypes.FindAccount(accs, creator)\n}\n"
  },
  {
    "path": "x/acp/simulation/msg_edit_policy.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc SimulateMsgMsgEditPolicy(\n\tak types.AccountKeeper,\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgEditPolicy{\n\t\t\tCreator: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the MsgEditPolicy simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"MsgEditPolicy simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/acp/simulation/policy_cmd.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nfunc SimulateMsgPolicyCmd(\n\tak types.AccountKeeper,\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgSignedPolicyCmd{\n\t\t\tCreator: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the PolicyCmd simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"PolicyCmd simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/acp/stores/cosmos/doc.go",
    "content": "// package cosmos implements Raccoon wrappers for Cosmos store types\npackage cosmos\n"
  },
  {
    "path": "x/acp/stores/cosmos/error.go",
    "content": "package cosmos\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/raccoondb/v2/errors\"\n)\n\nvar ErrCosmosKV = errors.New(\"cosmossdk store\")\n\n// wrapErr wraps an error with ErrCosmosKV\nfunc wrapErr(err error) error {\n\treturn fmt.Errorf(\"%w: %w\", ErrCosmosKV, err)\n}\n"
  },
  {
    "path": "x/acp/stores/cosmos/iter.go",
    "content": "package cosmos\n\nimport (\n\t\"context\"\n\n\tcosmosstore \"cosmossdk.io/core/store\"\n\t\"github.com/sourcenetwork/raccoondb/v2/iterator\"\n\t\"github.com/sourcenetwork/raccoondb/v2/store\"\n)\n\nvar _ iterator.Iterator[[]byte] = (*iterAdapter)(nil)\n\ntype iterAdapter struct {\n\titer     cosmosstore.Iterator\n\tparams   store.IterationParam\n\tfinished bool\n}\n\nfunc (i *iterAdapter) Next(ctx context.Context) error {\n\ti.iter.Next()\n\n\tif !i.iter.Valid() {\n\t\ti.finished = true\n\t}\n\n\terr := i.iter.Error()\n\tif err != nil {\n\t\treturn wrapErr(err)\n\t}\n\treturn nil\n}\n\nfunc (i *iterAdapter) Value() ([]byte, error) {\n\tif i.finished {\n\t\treturn nil, nil\n\t}\n\treturn i.iter.Value(), nil\n}\n\nfunc (i *iterAdapter) Finished() bool {\n\treturn i.finished\n}\n\nfunc (i *iterAdapter) Close() error {\n\terr := i.iter.Close()\n\tif err != nil {\n\t\treturn wrapErr(err)\n\t}\n\treturn nil\n}\n\nfunc (i *iterAdapter) GetParams() store.IterationParam {\n\treturn i.params\n}\n\nfunc (i *iterAdapter) CurrentKey() []byte {\n\tif i.finished {\n\t\treturn nil\n\t}\n\treturn i.iter.Key()\n}\n"
  },
  {
    "path": "x/acp/stores/cosmos/store.go",
    "content": "package cosmos\n\nimport (\n\t\"context\"\n\n\tcorestore \"cosmossdk.io/core/store\"\n\tcosmosdb \"github.com/cosmos/cosmos-db\"\n\t\"github.com/sourcenetwork/raccoondb/v2/store\"\n\t\"github.com/sourcenetwork/raccoondb/v2/types\"\n)\n\nvar _ store.KVStore = (*kvAdapter)(nil)\n\n// NewFromCoreKVStore returns a Raccoon KVStore from\n// cosmossdk.io/core/store KVStore\nfunc NewFromCoreKVStore(cosmosKV corestore.KVStore) store.KVStore {\n\treturn &kvAdapter{\n\t\tstore: cosmosKV,\n\t}\n}\n\n// NewFromCosmosDBStore returns a Raccoon KVStore from\n// a cosmos-db DB\nfunc NewFromCosmosDB(db cosmosdb.DB) store.KVStore {\n\treturn &kvAdapter{\n\t\tstore: db,\n\t}\n}\n\n// kvAdapter implements Raccoon KVStore interface\ntype kvAdapter struct {\n\tstore corestore.KVStore\n}\n\nfunc (k *kvAdapter) Iterate(ctx context.Context, opt store.IterationParam) (store.StoreIterator[[]byte], error) {\n\tvar iter corestore.Iterator\n\tvar err error\n\tif opt.IsReverse() {\n\t\titer, err = k.store.ReverseIterator(opt.GetLeftBound(), opt.GetRightBound())\n\t} else {\n\t\titer, err = k.store.Iterator(opt.GetLeftBound(), opt.GetRightBound())\n\t}\n\tif err != nil {\n\t\treturn nil, wrapErr(err)\n\t}\n\n\tif iter.Error() != nil {\n\t\treturn nil, wrapErr(iter.Error())\n\t}\n\n\treturn &iterAdapter{\n\t\titer:     iter,\n\t\tfinished: false,\n\t\tparams:   opt,\n\t}, nil\n}\n\nfunc (k *kvAdapter) Get(ctx context.Context, key []byte) (types.Option[[]byte], error) {\n\tif key == nil {\n\t\treturn types.None[[]byte](), wrapErr(store.ErrKeyNil)\n\t}\n\n\tbytes, err := k.store.Get(key)\n\tif err != nil {\n\t\treturn types.None[[]byte](), wrapErr(err)\n\t}\n\tif bytes == nil {\n\t\treturn types.None[[]byte](), nil\n\t}\n\treturn types.Some(bytes), nil\n\n}\n\nfunc (k *kvAdapter) Has(ctx context.Context, key []byte) (bool, error) {\n\tif key == nil {\n\t\treturn false, wrapErr(store.ErrKeyNil)\n\t}\n\n\thas, err := k.store.Has(key)\n\tif err != nil {\n\t\treturn false, wrapErr(err)\n\t}\n\treturn has, nil\n}\n\nfunc (k *kvAdapter) Set(ctx context.Context, key, value []byte) (store.KeyCreated, error) {\n\tif key == nil {\n\t\treturn false, wrapErr(store.ErrKeyNil)\n\t}\n\n\thas, err := k.store.Has(key)\n\tif err != nil {\n\t\treturn false, wrapErr(err)\n\t}\n\n\terr = k.store.Set(key, value)\n\tif err != nil {\n\t\treturn false, wrapErr(err)\n\t}\n\treturn store.KeyCreated(!has), nil\n}\n\nfunc (k *kvAdapter) Delete(ctx context.Context, key []byte) (store.KeyRemoved, error) {\n\tif key == nil {\n\t\treturn false, wrapErr(store.ErrKeyNil)\n\t}\n\n\thas, err := k.store.Has(key)\n\tif err != nil {\n\t\treturn false, wrapErr(err)\n\t}\n\n\terr = k.store.Delete(key)\n\tif err != nil {\n\t\treturn false, wrapErr(err)\n\t}\n\treturn store.KeyRemoved(has), nil\n}\n"
  },
  {
    "path": "x/acp/stores/cosmos/store_test.go",
    "content": "package cosmos\n\nimport (\n\t\"testing\"\n\n\tcosmosdb \"github.com/cosmos/cosmos-db\"\n\n\t\"github.com/sourcenetwork/raccoondb/v2/store\"\n\t\"github.com/sourcenetwork/raccoondb/v2/store/test\"\n)\n\nfunc Test_CosmosCoreKVStore_Suite(t *testing.T) {\n\tfactory := func() store.KVStore {\n\t\tdb := cosmosdb.NewMemDB()\n\t\treturn NewFromCoreKVStore(db)\n\t}\n\ttest.RunSuite(t, factory)\n}\n\nfunc Test_CosmosDB_Suite(t *testing.T) {\n\tfactory := func() store.KVStore {\n\t\tdb := cosmosdb.NewMemDB()\n\t\treturn NewFromCosmosDB(db)\n\t}\n\ttest.RunSuite(t, factory)\n}\n"
  },
  {
    "path": "x/acp/stores/kv_stores_cosmos.go",
    "content": "package stores\n\nimport (\n\tstoretypes \"cosmossdk.io/store/types\"\n\trcdb \"github.com/sourcenetwork/raccoondb\"\n)\n\n// RaccoonKVFromCosmos adapts a cosmossdk KVStore\n// into a raccoondb v1 KVStore\nfunc RaccoonKVFromCosmos(store storetypes.KVStore) rcdb.KVStore {\n\treturn &cosmosKvWrapper{\n\t\tstore: store,\n\t}\n}\n\ntype cosmosKvWrapper struct {\n\tstore storetypes.KVStore\n}\n\nfunc (s *cosmosKvWrapper) Get(key []byte) ([]byte, error) {\n\treturn s.store.Get(key), nil\n}\n\nfunc (s *cosmosKvWrapper) Has(key []byte) (bool, error) {\n\treturn s.store.Has(key), nil\n}\n\nfunc (s *cosmosKvWrapper) Set(key []byte, val []byte) error {\n\ts.store.Set(key, val)\n\treturn nil\n}\n\nfunc (s *cosmosKvWrapper) Delete(key []byte) error {\n\ts.store.Delete(key)\n\treturn nil\n}\n\nfunc (s *cosmosKvWrapper) Iterator(start, end []byte) rcdb.Iterator {\n\treturn s.store.Iterator(start, end)\n}\n"
  },
  {
    "path": "x/acp/stores/marshaler.go",
    "content": "package stores\n\nimport (\n\tgogoproto \"github.com/cosmos/gogoproto/proto\"\n\traccoon \"github.com/sourcenetwork/raccoondb\"\n)\n\nvar _ raccoon.Marshaler[gogoproto.Message] = (*gogoProtoMarshaler[gogoproto.Message])(nil)\n\n// NewGogoProtoMarshaler returns a raccoon Marshaler\n// which marshals and unmarshals a Message using gogoproto.\n//\n// Requires a factory method which returns an instance of T\nfunc NewGogoProtoMarshaler[T gogoproto.Message](factory func() T) raccoon.Marshaler[T] {\n\treturn &gogoProtoMarshaler[T]{\n\t\tfactory: factory,\n\t}\n}\n\ntype gogoProtoMarshaler[T gogoproto.Message] struct {\n\tfactory func() T\n}\n\nfunc (m *gogoProtoMarshaler[T]) Marshal(t *T) ([]byte, error) {\n\treturn gogoproto.Marshal(*t)\n}\n\nfunc (m *gogoProtoMarshaler[T]) Unmarshal(bytes []byte) (T, error) {\n\tt := m.factory()\n\terr := gogoproto.Unmarshal(bytes, t)\n\tif err != nil {\n\t\treturn t, err\n\t}\n\n\treturn t, nil\n}\n"
  },
  {
    "path": "x/acp/testutil/account_keeper.go",
    "content": "package testutil\n\nimport (\n\t\"context\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tcryptotypes \"github.com/cosmos/cosmos-sdk/crypto/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n)\n\nvar _ types.AccountKeeper = (*AccountKeeperStub)(nil)\n\ntype AccountKeeperStub struct {\n\tAccounts map[string]sdk.AccountI\n}\n\nfunc (s *AccountKeeperStub) GetAccount(ctx context.Context, address sdk.AccAddress) sdk.AccountI {\n\tacc := s.Accounts[address.String()]\n\treturn acc\n}\n\nfunc (s *AccountKeeperStub) GenAccount() sdk.AccountI {\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\treturn s.NewAccount(pubKey)\n}\n\nfunc (s *AccountKeeperStub) FirstAcc() sdk.AccountI {\n\tfor _, acc := range s.Accounts {\n\t\treturn acc\n\t}\n\treturn nil\n}\n\nfunc (s *AccountKeeperStub) NewAccount(key cryptotypes.PubKey) sdk.AccountI {\n\tif s.Accounts == nil {\n\t\ts.Accounts = make(map[string]sdk.AccountI)\n\t}\n\n\taddr := sdk.AccAddress(key.Address())\n\tacc := authtypes.NewBaseAccount(addr, key, 1, 1)\n\ts.Accounts[addr.String()] = acc\n\treturn acc\n}\n"
  },
  {
    "path": "x/acp/testutil/assertions.go",
    "content": "package testutil\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\n\t\"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc AssertEventEmmited(t *testing.T, ctx types.Context, event any) {\n\tvar ev types.Event\n\n\tswitch cast := event.(type) {\n\tcase types.Event:\n\t\tev = cast\n\tdefault:\n\t\tvar err error\n\t\tev, err = types.TypedEventToEvent(cast.(proto.Message))\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tfor _, e := range ctx.EventManager().Events() {\n\t\tif reflect.DeepEqual(e, ev) {\n\t\t\treturn\n\t\t}\n\t}\n\tt.Fatalf(\"EventManager did not emit wanted event: want %v\", event)\n}\n"
  },
  {
    "path": "x/acp/testutil/proto.go",
    "content": "package testutil\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"google.golang.org/protobuf/proto\"\n\t\"google.golang.org/protobuf/testing/protocmp\"\n)\n\nfunc ProtoEq[Msg proto.Message](t *testing.T, left, right Msg) {\n\topt := protocmp.Transform()\n\n\tif diff := cmp.Diff(left, right, opt); diff != \"\" {\n\t\tt.Errorf(\"mismatch (-left +right):\\n%s\", diff)\n\t}\n}\n"
  },
  {
    "path": "x/acp/testutil/time.go",
    "content": "package testutil\n\nimport (\n\t\"time\"\n\n\tgogotypes \"github.com/cosmos/gogoproto/types\"\n)\n\n// MustDateTimeToProto parses a time.DateTime (YYYY-MM-DD HH:MM:SS) timestamp\n// and converts into a proto Timestamp.\n// Panics if input is invalid\nfunc MustDateTimeToProto(timestamp string) *gogotypes.Timestamp {\n\tt, err := time.Parse(time.DateTime, timestamp)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tts, err := gogotypes.TimestampProto(t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn ts\n}\n"
  },
  {
    "path": "x/acp/types/access_decision.go",
    "content": "package types\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/base32\"\n\t\"fmt\"\n\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n\n\t\"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n)\n\n// ProduceId uses all fields in an AccessDecision (ignoring the ID) to produce an ID\n// for the Decision.\nfunc (d *AccessDecision) ProduceId() string {\n\thash := d.hashDecision()\n\treturn base32.StdEncoding.EncodeToString(hash)\n}\n\n// hashDecision produces a sha256 hash of all fields (except the id) of an AccessDecision.\n// The hash is used to produce an unique and deterministic ID for a decision\nfunc (decision *AccessDecision) hashDecision() []byte {\n\tsortableOperations := utils.FromComparator(decision.Operations, func(left, right *types.Operation) bool {\n\t\treturn left.Object.Resource < right.Object.Resource && left.Object.Id < right.Object.Id && left.Permission < right.Permission\n\t})\n\toperations := sortableOperations.Sort()\n\n\thasher := sha256.New()\n\thasher.Write([]byte(decision.PolicyId))\n\thasher.Write([]byte(decision.Creator))\n\thasher.Write([]byte(decision.Actor))\n\thasher.Write([]byte(fmt.Sprintf(\"%v\", decision.CreatorAccSequence)))\n\thasher.Write([]byte(fmt.Sprintf(\"%v\", decision.IssuedHeight)))\n\thasher.Write([]byte(prototypes.TimestampString(decision.CreationTime.ProtoTs)))\n\n\tfor _, operation := range operations {\n\t\thasher.Write([]byte(operation.Object.Resource))\n\t\thasher.Write([]byte(operation.Object.Id))\n\t\thasher.Write([]byte(operation.Permission))\n\t}\n\n\thasher.Write(decision.hashParams())\n\n\treturn hasher.Sum(nil)\n}\n\n// hashParams produces a sha256 of the DecisionParameters\nfunc (d *AccessDecision) hashParams() []byte {\n\thasher := sha256.New()\n\thasher.Write([]byte(fmt.Sprintf(\"%v\", d.Params.DecisionExpirationDelta)))\n\thasher.Write([]byte(fmt.Sprintf(\"%v\", d.Params.ProofExpirationDelta)))\n\thasher.Write([]byte(fmt.Sprintf(\"%v\", d.Params.TicketExpirationDelta)))\n\treturn hasher.Sum(nil)\n}\n"
  },
  {
    "path": "x/acp/types/access_decision.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/access_decision.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// AccessDecision models the result of evaluating a set of AccessRequests for an Actor\ntype AccessDecision struct {\n\tId                 string             `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPolicyId           string             `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCreator            string             `protobuf:\"bytes,3,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tCreatorAccSequence uint64             `protobuf:\"varint,4,opt,name=creator_acc_sequence,json=creatorAccSequence,proto3\" json:\"creator_acc_sequence,omitempty\"`\n\tOperations         []*types.Operation `protobuf:\"bytes,5,rep,name=operations,proto3\" json:\"operations,omitempty\"`\n\tActor              string             `protobuf:\"bytes,6,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\tParams             *DecisionParams    `protobuf:\"bytes,7,opt,name=params,proto3\" json:\"params,omitempty\"`\n\tCreationTime       *Timestamp         `protobuf:\"bytes,8,opt,name=creation_time,json=creationTime,proto3\" json:\"creation_time,omitempty\"`\n\t// issued_height stores the block height when the Decision was evaluated\n\tIssuedHeight uint64 `protobuf:\"varint,9,opt,name=issued_height,json=issuedHeight,proto3\" json:\"issued_height,omitempty\"`\n}\n\nfunc (m *AccessDecision) Reset()         { *m = AccessDecision{} }\nfunc (m *AccessDecision) String() string { return proto.CompactTextString(m) }\nfunc (*AccessDecision) ProtoMessage()    {}\nfunc (*AccessDecision) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1d553fec1c2b5021, []int{0}\n}\nfunc (m *AccessDecision) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AccessDecision) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AccessDecision.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AccessDecision) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AccessDecision.Merge(m, src)\n}\nfunc (m *AccessDecision) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AccessDecision) XXX_DiscardUnknown() {\n\txxx_messageInfo_AccessDecision.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AccessDecision proto.InternalMessageInfo\n\nfunc (m *AccessDecision) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessDecision) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessDecision) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessDecision) GetCreatorAccSequence() uint64 {\n\tif m != nil {\n\t\treturn m.CreatorAccSequence\n\t}\n\treturn 0\n}\n\nfunc (m *AccessDecision) GetOperations() []*types.Operation {\n\tif m != nil {\n\t\treturn m.Operations\n\t}\n\treturn nil\n}\n\nfunc (m *AccessDecision) GetActor() string {\n\tif m != nil {\n\t\treturn m.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessDecision) GetParams() *DecisionParams {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn nil\n}\n\nfunc (m *AccessDecision) GetCreationTime() *Timestamp {\n\tif m != nil {\n\t\treturn m.CreationTime\n\t}\n\treturn nil\n}\n\nfunc (m *AccessDecision) GetIssuedHeight() uint64 {\n\tif m != nil {\n\t\treturn m.IssuedHeight\n\t}\n\treturn 0\n}\n\n// DecisionParams stores auxiliary information regarding the validity of a decision\ntype DecisionParams struct {\n\t// number of blocks a Decision is valid for\n\tDecisionExpirationDelta uint64 `protobuf:\"varint,1,opt,name=decision_expiration_delta,json=decisionExpirationDelta,proto3\" json:\"decision_expiration_delta,omitempty\"`\n\t// number of blocks a DecisionProof is valid for\n\tProofExpirationDelta uint64 `protobuf:\"varint,2,opt,name=proof_expiration_delta,json=proofExpirationDelta,proto3\" json:\"proof_expiration_delta,omitempty\"`\n\t// number of blocks an AccessTicket is valid for\n\tTicketExpirationDelta uint64 `protobuf:\"varint,3,opt,name=ticket_expiration_delta,json=ticketExpirationDelta,proto3\" json:\"ticket_expiration_delta,omitempty\"`\n}\n\nfunc (m *DecisionParams) Reset()         { *m = DecisionParams{} }\nfunc (m *DecisionParams) String() string { return proto.CompactTextString(m) }\nfunc (*DecisionParams) ProtoMessage()    {}\nfunc (*DecisionParams) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1d553fec1c2b5021, []int{1}\n}\nfunc (m *DecisionParams) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DecisionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DecisionParams.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DecisionParams) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DecisionParams.Merge(m, src)\n}\nfunc (m *DecisionParams) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DecisionParams) XXX_DiscardUnknown() {\n\txxx_messageInfo_DecisionParams.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DecisionParams proto.InternalMessageInfo\n\nfunc (m *DecisionParams) GetDecisionExpirationDelta() uint64 {\n\tif m != nil {\n\t\treturn m.DecisionExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (m *DecisionParams) GetProofExpirationDelta() uint64 {\n\tif m != nil {\n\t\treturn m.ProofExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (m *DecisionParams) GetTicketExpirationDelta() uint64 {\n\tif m != nil {\n\t\treturn m.TicketExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterType((*AccessDecision)(nil), \"sourcehub.acp.AccessDecision\")\n\tproto.RegisterType((*DecisionParams)(nil), \"sourcehub.acp.DecisionParams\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/acp/access_decision.proto\", fileDescriptor_1d553fec1c2b5021)\n}\n\nvar fileDescriptor_1d553fec1c2b5021 = []byte{\n\t// 486 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x4f, 0x6f, 0xd3, 0x30,\n\t0x18, 0xc6, 0x97, 0xb4, 0xeb, 0x56, 0x6f, 0xed, 0xc1, 0x2a, 0xcc, 0x0c, 0x11, 0xca, 0xc6, 0xa1,\n\t0x5c, 0x12, 0x34, 0xfe, 0x1c, 0x90, 0x38, 0x14, 0x0d, 0x69, 0x9c, 0x40, 0x81, 0x13, 0x97, 0xc8,\n\t0x75, 0xbc, 0xd4, 0x5a, 0x9b, 0xd7, 0xd8, 0x8e, 0xd8, 0xbe, 0x05, 0x9f, 0x87, 0x4f, 0xc0, 0x71,\n\t0x47, 0x8e, 0xa8, 0xfd, 0x1c, 0x48, 0x28, 0x76, 0x3c, 0x48, 0x27, 0x6e, 0xf6, 0xfb, 0x7b, 0x9e,\n\t0xf8, 0x7d, 0xf2, 0xbe, 0xe8, 0x58, 0x43, 0xa5, 0x18, 0x9f, 0x57, 0xb3, 0x84, 0x32, 0x99, 0x50,\n\t0xc6, 0xb8, 0xd6, 0x59, 0xce, 0x99, 0xd0, 0x02, 0xca, 0x58, 0x2a, 0x30, 0x80, 0x07, 0x37, 0xa2,\n\t0x98, 0x32, 0x79, 0x38, 0x2a, 0xa0, 0x00, 0x4b, 0x92, 0xfa, 0xe4, 0x44, 0x87, 0x0f, 0x0b, 0x80,\n\t0x62, 0xc1, 0x13, 0x7b, 0x9b, 0x55, 0xe7, 0x89, 0x11, 0x4b, 0xae, 0x0d, 0x5d, 0xca, 0x46, 0x40,\n\t0xda, 0x4f, 0xd5, 0xb8, 0x21, 0x4f, 0x1c, 0x29, 0xb9, 0xf9, 0x0a, 0xea, 0xa2, 0xa6, 0x19, 0x03,\n\t0xc5, 0x13, 0xc5, 0x17, 0xd4, 0x08, 0x28, 0xf5, 0x5c, 0xf8, 0x8f, 0x3c, 0xfe, 0xaf, 0xf4, 0x4b,\n\t0xc5, 0xb5, 0x71, 0xaa, 0xa3, 0xdf, 0x21, 0x1a, 0x4e, 0x6d, 0x94, 0xd3, 0x26, 0x09, 0x1e, 0xa2,\n\t0x50, 0xe4, 0x24, 0x18, 0x07, 0x93, 0x7e, 0x1a, 0x8a, 0x1c, 0xdf, 0x47, 0x7d, 0x09, 0x0b, 0xc1,\n\t0xae, 0x32, 0x91, 0x93, 0xd0, 0x96, 0x77, 0x5d, 0xe1, 0x5d, 0x8e, 0x09, 0xda, 0x61, 0x8a, 0x53,\n\t0x03, 0x8a, 0x74, 0x2c, 0xf2, 0x57, 0xfc, 0x14, 0x8d, 0x9a, 0x63, 0x46, 0x19, 0xcb, 0x74, 0xfd,\n\t0x6c, 0xc9, 0x38, 0xe9, 0x8e, 0x83, 0x49, 0x37, 0xc5, 0x0d, 0x9b, 0x32, 0xf6, 0xb1, 0x21, 0x78,\n\t0x8a, 0x10, 0x48, 0xae, 0x5c, 0x10, 0xb2, 0x3d, 0xee, 0x4c, 0xf6, 0x4e, 0x1e, 0xc5, 0xad, 0x18,\n\t0xb1, 0x8f, 0x11, 0xbf, 0xf7, 0xca, 0xf4, 0x1f, 0x13, 0x1e, 0xa1, 0x6d, 0xca, 0xea, 0x66, 0x7a,\n\t0xb6, 0x19, 0x77, 0xc1, 0x2f, 0x50, 0x4f, 0x52, 0x45, 0x97, 0x9a, 0xec, 0x8c, 0x83, 0xc9, 0xde,\n\t0xc9, 0x83, 0xb8, 0x35, 0xa6, 0xd8, 0x47, 0xff, 0x60, 0x45, 0x69, 0x23, 0xc6, 0xaf, 0xd1, 0xc0,\n\t0x76, 0x29, 0xa0, 0xcc, 0xea, 0x19, 0x90, 0x5d, 0xeb, 0x26, 0x1b, 0xee, 0x4f, 0x7e, 0x7a, 0xe9,\n\t0xbe, 0x97, 0xd7, 0x25, 0x7c, 0x8c, 0x06, 0x42, 0xeb, 0x8a, 0xe7, 0xd9, 0x9c, 0x8b, 0x62, 0x6e,\n\t0x48, 0xdf, 0x26, 0xdf, 0x77, 0xc5, 0x33, 0x5b, 0x3b, 0xfa, 0x1e, 0xa0, 0x61, 0xfb, 0x79, 0xfc,\n\t0x0a, 0xdd, 0xf3, 0x5b, 0x95, 0xf1, 0x4b, 0x29, 0x5c, 0xb6, 0x2c, 0xe7, 0x0b, 0x43, 0xed, 0x58,\n\t0xba, 0xe9, 0x81, 0x17, 0xbc, 0xbd, 0xe1, 0xa7, 0x35, 0xc6, 0xcf, 0xd1, 0x5d, 0xa9, 0x00, 0xce,\n\t0x6f, 0x1b, 0x43, 0x6b, 0x1c, 0x59, 0xba, 0xe9, 0x7a, 0x89, 0x0e, 0x8c, 0x60, 0x17, 0xdc, 0xdc,\n\t0xb6, 0x75, 0xac, 0xed, 0x8e, 0xc3, 0x1b, 0xbe, 0x37, 0x67, 0x3f, 0x56, 0x51, 0x70, 0xbd, 0x8a,\n\t0x82, 0x5f, 0xab, 0x28, 0xf8, 0xb6, 0x8e, 0xb6, 0xae, 0xd7, 0xd1, 0xd6, 0xcf, 0x75, 0xb4, 0xf5,\n\t0x39, 0x2e, 0x84, 0xa9, 0xff, 0x0f, 0x83, 0x65, 0xd2, 0xde, 0xc3, 0xbf, 0xab, 0x7d, 0xe9, 0x96,\n\t0xfb, 0x4a, 0x72, 0x3d, 0xeb, 0xd9, 0x6d, 0x7c, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x3b,\n\t0x6e, 0x88, 0x65, 0x03, 0x00, 0x00,\n}\n\nfunc (m *AccessDecision) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AccessDecision) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AccessDecision) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.IssuedHeight != 0 {\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(m.IssuedHeight))\n\t\ti--\n\t\tdAtA[i] = 0x48\n\t}\n\tif m.CreationTime != nil {\n\t\t{\n\t\t\tsize, err := m.CreationTime.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.Params != nil {\n\t\t{\n\t\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\tif len(m.Actor) > 0 {\n\t\ti -= len(m.Actor)\n\t\tcopy(dAtA[i:], m.Actor)\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(len(m.Actor)))\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.Operations) > 0 {\n\t\tfor iNdEx := len(m.Operations) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Operations[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif m.CreatorAccSequence != 0 {\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(m.CreatorAccSequence))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DecisionParams) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DecisionParams) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DecisionParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.TicketExpirationDelta != 0 {\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(m.TicketExpirationDelta))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.ProofExpirationDelta != 0 {\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(m.ProofExpirationDelta))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.DecisionExpirationDelta != 0 {\n\t\ti = encodeVarintAccessDecision(dAtA, i, uint64(m.DecisionExpirationDelta))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintAccessDecision(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovAccessDecision(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *AccessDecision) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tif m.CreatorAccSequence != 0 {\n\t\tn += 1 + sovAccessDecision(uint64(m.CreatorAccSequence))\n\t}\n\tif len(m.Operations) > 0 {\n\t\tfor _, e := range m.Operations {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t\t}\n\t}\n\tl = len(m.Actor)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tif m.Params != nil {\n\t\tl = m.Params.Size()\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tif m.CreationTime != nil {\n\t\tl = m.CreationTime.Size()\n\t\tn += 1 + l + sovAccessDecision(uint64(l))\n\t}\n\tif m.IssuedHeight != 0 {\n\t\tn += 1 + sovAccessDecision(uint64(m.IssuedHeight))\n\t}\n\treturn n\n}\n\nfunc (m *DecisionParams) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DecisionExpirationDelta != 0 {\n\t\tn += 1 + sovAccessDecision(uint64(m.DecisionExpirationDelta))\n\t}\n\tif m.ProofExpirationDelta != 0 {\n\t\tn += 1 + sovAccessDecision(uint64(m.ProofExpirationDelta))\n\t}\n\tif m.TicketExpirationDelta != 0 {\n\t\tn += 1 + sovAccessDecision(uint64(m.TicketExpirationDelta))\n\t}\n\treturn n\n}\n\nfunc sovAccessDecision(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozAccessDecision(x uint64) (n int) {\n\treturn sovAccessDecision(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *AccessDecision) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AccessDecision: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AccessDecision: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatorAccSequence\", wireType)\n\t\t\t}\n\t\t\tm.CreatorAccSequence = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreatorAccSequence |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Operations\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Operations = append(m.Operations, &types.Operation{})\n\t\t\tif err := m.Operations[len(m.Operations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Params == nil {\n\t\t\t\tm.Params = &DecisionParams{}\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.CreationTime == nil {\n\t\t\t\tm.CreationTime = &Timestamp{}\n\t\t\t}\n\t\t\tif err := m.CreationTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuedHeight\", wireType)\n\t\t\t}\n\t\t\tm.IssuedHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.IssuedHeight |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAccessDecision(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DecisionParams) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DecisionParams: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DecisionParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DecisionExpirationDelta\", wireType)\n\t\t\t}\n\t\t\tm.DecisionExpirationDelta = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.DecisionExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProofExpirationDelta\", wireType)\n\t\t\t}\n\t\t\tm.ProofExpirationDelta = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ProofExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TicketExpirationDelta\", wireType)\n\t\t\t}\n\t\t\tm.TicketExpirationDelta = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TicketExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAccessDecision(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipAccessDecision(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowAccessDecision\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAccessDecision\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthAccessDecision\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupAccessDecision\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthAccessDecision\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthAccessDecision        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowAccessDecision          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupAccessDecision = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/access_ticket.go",
    "content": "package types\n\nconst (\n\tAccessTicketV1 string = \"v1\"\n)\n"
  },
  {
    "path": "x/acp/types/access_ticket.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/access_ticket.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Represents a Capability token containing an opaque proof and a set of Operations\n// the Actor is allowed to perform.\n// Tickets should be verified by a Reference Monitor before granting access to the requested operations.\ntype AccessTicket struct {\n\t// identified the ticket version\n\tVersionDenominator string          `protobuf:\"bytes,1,opt,name=version_denominator,json=versionDenominator,proto3\" json:\"version_denominator,omitempty\"`\n\tDecisionId         string          `protobuf:\"bytes,2,opt,name=decision_id,json=decisionId,proto3\" json:\"decision_id,omitempty\"`\n\tDecision           *AccessDecision `protobuf:\"bytes,3,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n\t// proof of existance that the given decision exists in the chain\n\t// validation strategy is dependent on ticket version\n\tDecisionProof []byte `protobuf:\"bytes,4,opt,name=decision_proof,json=decisionProof,proto3\" json:\"decision_proof,omitempty\"`\n\t// signature of ticket which must match actor pkey in the access decision\n\tSignature []byte `protobuf:\"bytes,5,opt,name=signature,proto3\" json:\"signature,omitempty\"`\n}\n\nfunc (m *AccessTicket) Reset()         { *m = AccessTicket{} }\nfunc (m *AccessTicket) String() string { return proto.CompactTextString(m) }\nfunc (*AccessTicket) ProtoMessage()    {}\nfunc (*AccessTicket) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_bd5443967ce9352d, []int{0}\n}\nfunc (m *AccessTicket) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AccessTicket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AccessTicket.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AccessTicket) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AccessTicket.Merge(m, src)\n}\nfunc (m *AccessTicket) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AccessTicket) XXX_DiscardUnknown() {\n\txxx_messageInfo_AccessTicket.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AccessTicket proto.InternalMessageInfo\n\nfunc (m *AccessTicket) GetVersionDenominator() string {\n\tif m != nil {\n\t\treturn m.VersionDenominator\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessTicket) GetDecisionId() string {\n\tif m != nil {\n\t\treturn m.DecisionId\n\t}\n\treturn \"\"\n}\n\nfunc (m *AccessTicket) GetDecision() *AccessDecision {\n\tif m != nil {\n\t\treturn m.Decision\n\t}\n\treturn nil\n}\n\nfunc (m *AccessTicket) GetDecisionProof() []byte {\n\tif m != nil {\n\t\treturn m.DecisionProof\n\t}\n\treturn nil\n}\n\nfunc (m *AccessTicket) GetSignature() []byte {\n\tif m != nil {\n\t\treturn m.Signature\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*AccessTicket)(nil), \"sourcehub.acp.AccessTicket\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/access_ticket.proto\", fileDescriptor_bd5443967ce9352d) }\n\nvar fileDescriptor_bd5443967ce9352d = []byte{\n\t// 308 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xbf, 0x4e, 0xf3, 0x30,\n\t0x14, 0xc5, 0xeb, 0xef, 0x03, 0x44, 0xdd, 0x96, 0xc1, 0x30, 0x44, 0x15, 0xb8, 0x05, 0x84, 0xd4,\n\t0x29, 0x96, 0x60, 0x62, 0x04, 0x75, 0x80, 0x0d, 0x55, 0x4c, 0x2c, 0x95, 0xeb, 0xb8, 0xc6, 0x2a,\n\t0xc9, 0xb5, 0x6c, 0x87, 0x3f, 0x6f, 0xc1, 0x63, 0x31, 0x76, 0x64, 0xac, 0xda, 0x17, 0x41, 0x71,\n\t0x9a, 0x44, 0x48, 0x6c, 0xbe, 0xe7, 0xfc, 0x74, 0x7d, 0xee, 0xc1, 0xa7, 0x0e, 0x72, 0x2b, 0xe4,\n\t0x73, 0x3e, 0x63, 0x5c, 0x18, 0xc6, 0x85, 0x90, 0xce, 0x4d, 0xbd, 0x16, 0x0b, 0xe9, 0x63, 0x63,\n\t0xc1, 0x03, 0xe9, 0xd5, 0x48, 0xcc, 0x85, 0xe9, 0x1f, 0x29, 0x50, 0x10, 0x1c, 0x56, 0xbc, 0x4a,\n\t0xa8, 0x3f, 0x50, 0x00, 0xea, 0x45, 0xb2, 0x30, 0xcd, 0xf2, 0x39, 0xf3, 0x3a, 0x95, 0xce, 0xf3,\n\t0xd4, 0x6c, 0x81, 0xf3, 0x3f, 0x3f, 0x4a, 0xa4, 0xd0, 0x4e, 0x43, 0x56, 0x42, 0x67, 0x2b, 0x84,\n\t0xbb, 0x37, 0xc1, 0x79, 0x0c, 0x09, 0x08, 0xc3, 0x87, 0xaf, 0xd2, 0x16, 0xc4, 0x34, 0x91, 0x19,\n\t0xa4, 0x3a, 0xe3, 0x1e, 0x6c, 0x84, 0x86, 0x68, 0xd4, 0x9e, 0x90, 0xad, 0x35, 0x6e, 0x1c, 0x32,\n\t0xc0, 0x9d, 0x6a, 0xe7, 0x54, 0x27, 0xd1, 0xbf, 0x00, 0xe2, 0x4a, 0xba, 0x4f, 0xc8, 0x35, 0xde,\n\t0xaf, 0xa6, 0xe8, 0xff, 0x10, 0x8d, 0x3a, 0x97, 0x27, 0xf1, 0xaf, 0x03, 0xe3, 0x32, 0xc0, 0x78,\n\t0x0b, 0x4d, 0x6a, 0x9c, 0x5c, 0xe0, 0x83, 0x7a, 0xb7, 0xb1, 0x00, 0xf3, 0x68, 0x67, 0x88, 0x46,\n\t0xdd, 0x49, 0xaf, 0x52, 0x1f, 0x0a, 0x91, 0x1c, 0xe3, 0xb6, 0xd3, 0x2a, 0xe3, 0x3e, 0xb7, 0x32,\n\t0xda, 0x0d, 0x44, 0x23, 0xdc, 0xde, 0x7d, 0xad, 0x29, 0x5a, 0xae, 0x29, 0x5a, 0xad, 0x29, 0xfa,\n\t0xdc, 0xd0, 0xd6, 0x72, 0x43, 0x5b, 0xdf, 0x1b, 0xda, 0x7a, 0x8a, 0x95, 0xf6, 0x45, 0x06, 0x01,\n\t0x29, 0x2b, 0x13, 0x65, 0xd2, 0xbf, 0x81, 0x5d, 0xb0, 0xa6, 0xba, 0xf7, 0x50, 0x9e, 0xff, 0x30,\n\t0xd2, 0xcd, 0xf6, 0x42, 0x67, 0x57, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x2e, 0xf0, 0x38, 0xfc,\n\t0xc3, 0x01, 0x00, 0x00,\n}\n\nfunc (m *AccessTicket) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AccessTicket) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AccessTicket) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Signature) > 0 {\n\t\ti -= len(m.Signature)\n\t\tcopy(dAtA[i:], m.Signature)\n\t\ti = encodeVarintAccessTicket(dAtA, i, uint64(len(m.Signature)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.DecisionProof) > 0 {\n\t\ti -= len(m.DecisionProof)\n\t\tcopy(dAtA[i:], m.DecisionProof)\n\t\ti = encodeVarintAccessTicket(dAtA, i, uint64(len(m.DecisionProof)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Decision != nil {\n\t\t{\n\t\t\tsize, err := m.Decision.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintAccessTicket(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.DecisionId) > 0 {\n\t\ti -= len(m.DecisionId)\n\t\tcopy(dAtA[i:], m.DecisionId)\n\t\ti = encodeVarintAccessTicket(dAtA, i, uint64(len(m.DecisionId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.VersionDenominator) > 0 {\n\t\ti -= len(m.VersionDenominator)\n\t\tcopy(dAtA[i:], m.VersionDenominator)\n\t\ti = encodeVarintAccessTicket(dAtA, i, uint64(len(m.VersionDenominator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintAccessTicket(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovAccessTicket(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *AccessTicket) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.VersionDenominator)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessTicket(uint64(l))\n\t}\n\tl = len(m.DecisionId)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessTicket(uint64(l))\n\t}\n\tif m.Decision != nil {\n\t\tl = m.Decision.Size()\n\t\tn += 1 + l + sovAccessTicket(uint64(l))\n\t}\n\tl = len(m.DecisionProof)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessTicket(uint64(l))\n\t}\n\tl = len(m.Signature)\n\tif l > 0 {\n\t\tn += 1 + l + sovAccessTicket(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovAccessTicket(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozAccessTicket(x uint64) (n int) {\n\treturn sovAccessTicket(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *AccessTicket) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AccessTicket: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AccessTicket: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field VersionDenominator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.VersionDenominator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DecisionId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DecisionId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Decision == nil {\n\t\t\t\tm.Decision = &AccessDecision{}\n\t\t\t}\n\t\t\tif err := m.Decision.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DecisionProof\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DecisionProof = append(m.DecisionProof[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.DecisionProof == nil {\n\t\t\t\tm.DecisionProof = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Signature\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Signature = append(m.Signature[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Signature == nil {\n\t\t\t\tm.Signature = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipAccessTicket(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipAccessTicket(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowAccessTicket\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowAccessTicket\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthAccessTicket\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupAccessTicket\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthAccessTicket\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthAccessTicket        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowAccessTicket          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupAccessTicket = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/codec.go",
    "content": "package types\n\nimport (\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/msgservice\"\n)\n\nfunc RegisterInterfaces(registry cdctypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgCreatePolicy{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgCheckAccess{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgSignedPolicyCmd{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgBearerPolicyCmd{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgDirectPolicyCmd{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgEditPolicy{},\n\t)\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgUpdateParams{},\n\t)\n\n\tregisterResponses(registry)\n\n\tmsgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)\n}\n\n// registerResponses additionally registers all acp modules\n// tx response types in the InterfaceRegistry.\n//\n// This is done in order to ease tx response unmarshaling\n// from cometbft TxResult structure\nfunc registerResponses(registry cdctypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreatePolicyResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgCheckAccessResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgSignedPolicyCmdResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgBearerPolicyCmdResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgDirectPolicyCmdResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateParamsResponse{})\n\tregistry.RegisterImplementations((*sdk.Msg)(nil), &MsgEditPolicyResponse{})\n}\n"
  },
  {
    "path": "x/acp/types/commitment.go",
    "content": "package types\n\n// IsExpiredAgainst return true if c is expired when taking ts as the target time\nfunc (c *RegistrationsCommitment) IsExpiredAgainst(ts *Timestamp) (bool, error) {\n\treturn c.Metadata.CreationTs.IsAfter(c.Validity, ts)\n}\n"
  },
  {
    "path": "x/acp/types/commitment.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/commitment.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// RegistrationProof models an opening proof for a RegistrationCommitment\ntype RegistrationProof struct {\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n\t// Hash of neighbors required to validate proof.\n\t//\n\t// Hashes must be ordered as a RFC6962 \"merkle audit path\"\n\t// https://www.rfc-editor.org/rfc/rfc6962#section-2.1.1\n\tMerkleProof [][]byte `protobuf:\"bytes,2,rep,name=merkle_proof,json=merkleProof,proto3\" json:\"merkle_proof,omitempty\"`\n\tLeafCount   uint64   `protobuf:\"varint,3,opt,name=leaf_count,json=leafCount,proto3\" json:\"leaf_count,omitempty\"`\n\tLeafIndex   uint64   `protobuf:\"varint,4,opt,name=leaf_index,json=leafIndex,proto3\" json:\"leaf_index,omitempty\"`\n}\n\nfunc (m *RegistrationProof) Reset()         { *m = RegistrationProof{} }\nfunc (m *RegistrationProof) String() string { return proto.CompactTextString(m) }\nfunc (*RegistrationProof) ProtoMessage()    {}\nfunc (*RegistrationProof) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_6112833ff0b7565d, []int{0}\n}\nfunc (m *RegistrationProof) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RegistrationProof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RegistrationProof.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RegistrationProof) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RegistrationProof.Merge(m, src)\n}\nfunc (m *RegistrationProof) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RegistrationProof) XXX_DiscardUnknown() {\n\txxx_messageInfo_RegistrationProof.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RegistrationProof proto.InternalMessageInfo\n\nfunc (m *RegistrationProof) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\nfunc (m *RegistrationProof) GetMerkleProof() [][]byte {\n\tif m != nil {\n\t\treturn m.MerkleProof\n\t}\n\treturn nil\n}\n\nfunc (m *RegistrationProof) GetLeafCount() uint64 {\n\tif m != nil {\n\t\treturn m.LeafCount\n\t}\n\treturn 0\n}\n\nfunc (m *RegistrationProof) GetLeafIndex() uint64 {\n\tif m != nil {\n\t\treturn m.LeafIndex\n\t}\n\treturn 0\n}\n\n// RegistrationsCommitment models a batched cryptographic commitment\n// of a set of Object registrations issued by an Actor\ntype RegistrationsCommitment struct {\n\tId       uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tPolicyId string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\t// commitment is a merkle root of registrations\n\tCommitment []byte `protobuf:\"bytes,3,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n\tExpired    bool   `protobuf:\"varint,4,opt,name=expired,proto3\" json:\"expired,omitempty\"`\n\t// validity models the duration for which the commitment is valid for\n\tValidity *Duration       `protobuf:\"bytes,5,opt,name=validity,proto3\" json:\"validity,omitempty\"`\n\tMetadata *RecordMetadata `protobuf:\"bytes,6,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (m *RegistrationsCommitment) Reset()         { *m = RegistrationsCommitment{} }\nfunc (m *RegistrationsCommitment) String() string { return proto.CompactTextString(m) }\nfunc (*RegistrationsCommitment) ProtoMessage()    {}\nfunc (*RegistrationsCommitment) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_6112833ff0b7565d, []int{1}\n}\nfunc (m *RegistrationsCommitment) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RegistrationsCommitment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RegistrationsCommitment.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RegistrationsCommitment) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RegistrationsCommitment.Merge(m, src)\n}\nfunc (m *RegistrationsCommitment) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RegistrationsCommitment) XXX_DiscardUnknown() {\n\txxx_messageInfo_RegistrationsCommitment.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RegistrationsCommitment proto.InternalMessageInfo\n\nfunc (m *RegistrationsCommitment) GetId() uint64 {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn 0\n}\n\nfunc (m *RegistrationsCommitment) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *RegistrationsCommitment) GetCommitment() []byte {\n\tif m != nil {\n\t\treturn m.Commitment\n\t}\n\treturn nil\n}\n\nfunc (m *RegistrationsCommitment) GetExpired() bool {\n\tif m != nil {\n\t\treturn m.Expired\n\t}\n\treturn false\n}\n\nfunc (m *RegistrationsCommitment) GetValidity() *Duration {\n\tif m != nil {\n\t\treturn m.Validity\n\t}\n\treturn nil\n}\n\nfunc (m *RegistrationsCommitment) GetMetadata() *RecordMetadata {\n\tif m != nil {\n\t\treturn m.Metadata\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*RegistrationProof)(nil), \"sourcehub.acp.RegistrationProof\")\n\tproto.RegisterType((*RegistrationsCommitment)(nil), \"sourcehub.acp.RegistrationsCommitment\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/commitment.proto\", fileDescriptor_6112833ff0b7565d) }\n\nvar fileDescriptor_6112833ff0b7565d = []byte{\n\t// 402 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0x41, 0x6e, 0x13, 0x31,\n\t0x14, 0x86, 0xe3, 0x34, 0x84, 0xc4, 0x0d, 0x48, 0x78, 0x53, 0x2b, 0xa8, 0x56, 0xe8, 0x2a, 0x6c,\n\t0x3c, 0x12, 0x95, 0x90, 0xd8, 0x52, 0x16, 0x74, 0x81, 0x40, 0x5e, 0xb2, 0x19, 0x39, 0xf6, 0x6b,\n\t0x6b, 0x3a, 0x33, 0xb6, 0x3c, 0x1e, 0x48, 0x6e, 0xc1, 0x41, 0x38, 0x08, 0xcb, 0x2e, 0x59, 0xa2,\n\t0xe4, 0x02, 0x1c, 0x01, 0x8d, 0x9d, 0x4e, 0x3a, 0x5d, 0xfa, 0xff, 0xbf, 0xf7, 0xf4, 0xeb, 0xfd,\n\t0xc6, 0xac, 0xb6, 0x8d, 0x57, 0x70, 0xd3, 0xac, 0x32, 0xa9, 0x5c, 0xa6, 0x6c, 0x59, 0x9a, 0x50,\n\t0x42, 0x15, 0xb8, 0xf3, 0x36, 0x58, 0xf2, 0xac, 0xf3, 0xb9, 0x54, 0x6e, 0x3e, 0xef, 0xe3, 0x1e,\n\t0x94, 0xf5, 0x3a, 0xa1, 0x73, 0xda, 0xf7, 0x82, 0x29, 0x61, 0xef, 0xbc, 0x4e, 0x4e, 0x05, 0xe1,\n\t0x87, 0xf5, 0xb7, 0xad, 0x9b, 0x2b, 0xeb, 0x21, 0xf3, 0x50, 0xc8, 0x60, 0x6c, 0x55, 0xdf, 0x18,\n\t0x97, 0xd0, 0xb3, 0x5f, 0x08, 0xbf, 0x10, 0x70, 0x6d, 0xea, 0xe0, 0xa3, 0xf5, 0xc5, 0x5b, 0x7b,\n\t0x45, 0xde, 0xe2, 0xb1, 0x5d, 0x7d, 0x03, 0x15, 0x28, 0x5a, 0xa0, 0xe5, 0xf1, 0x1b, 0xc6, 0x7b,\n\t0x1b, 0xf9, 0xfd, 0x46, 0xfe, 0x39, 0x52, 0x62, 0x4f, 0x93, 0x57, 0x78, 0x56, 0x82, 0xbf, 0x2d,\n\t0x20, 0x77, 0xed, 0x1e, 0x3a, 0x5c, 0x1c, 0x2d, 0x67, 0xe2, 0x38, 0x69, 0x69, 0xf5, 0x29, 0xc6,\n\t0x05, 0xc8, 0xab, 0x5c, 0xd9, 0xa6, 0x0a, 0xf4, 0x68, 0x81, 0x96, 0x23, 0x31, 0x6d, 0x95, 0x8b,\n\t0x56, 0xe8, 0x6c, 0x53, 0x69, 0x58, 0xd3, 0xd1, 0xc1, 0xbe, 0x6c, 0x85, 0xb3, 0x7f, 0x08, 0x9f,\n\t0x3c, 0x8c, 0x5b, 0x5f, 0x74, 0x07, 0x24, 0xcf, 0xf1, 0xd0, 0xe8, 0x18, 0x78, 0x24, 0x86, 0x46,\n\t0x93, 0x97, 0x78, 0xea, 0x6c, 0x61, 0xd4, 0x26, 0x37, 0x9a, 0x0e, 0x17, 0x68, 0x39, 0x15, 0x93,\n\t0x24, 0x5c, 0x6a, 0xc2, 0x30, 0x3e, 0xdc, 0x3e, 0xc6, 0x98, 0x89, 0x07, 0x0a, 0xa1, 0xf8, 0x29,\n\t0xac, 0x9d, 0xf1, 0xa0, 0x63, 0x88, 0x89, 0xb8, 0x7f, 0x92, 0x73, 0x3c, 0xf9, 0x2e, 0x0b, 0xa3,\n\t0x4d, 0xd8, 0xd0, 0x27, 0xf1, 0x3a, 0x27, 0xbc, 0x57, 0x1a, 0xff, 0xd0, 0xa4, 0x70, 0xa2, 0x03,\n\t0xc9, 0x3b, 0x3c, 0x29, 0x21, 0x48, 0x2d, 0x83, 0xa4, 0xe3, 0x38, 0x74, 0xfa, 0x68, 0x48, 0xc4,\n\t0x6a, 0x3f, 0xed, 0x21, 0xd1, 0xe1, 0xef, 0x3f, 0xfe, 0xde, 0x32, 0x74, 0xb7, 0x65, 0xe8, 0xef,\n\t0x96, 0xa1, 0x9f, 0x3b, 0x36, 0xb8, 0xdb, 0xb1, 0xc1, 0x9f, 0x1d, 0x1b, 0x7c, 0xe5, 0xd7, 0x26,\n\t0xb4, 0xe3, 0xca, 0x96, 0x59, 0xbf, 0xf1, 0xc3, 0xcf, 0x58, 0xa7, 0xbf, 0xb1, 0x71, 0x50, 0xaf,\n\t0xc6, 0xb1, 0xf2, 0xf3, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x48, 0x15, 0xb5, 0x84, 0x02,\n\t0x00, 0x00,\n}\n\nfunc (m *RegistrationProof) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegistrationProof) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RegistrationProof) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.LeafIndex != 0 {\n\t\ti = encodeVarintCommitment(dAtA, i, uint64(m.LeafIndex))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.LeafCount != 0 {\n\t\ti = encodeVarintCommitment(dAtA, i, uint64(m.LeafCount))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.MerkleProof) > 0 {\n\t\tfor iNdEx := len(m.MerkleProof) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.MerkleProof[iNdEx])\n\t\t\tcopy(dAtA[i:], m.MerkleProof[iNdEx])\n\t\t\ti = encodeVarintCommitment(dAtA, i, uint64(len(m.MerkleProof[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintCommitment(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegistrationsCommitment) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegistrationsCommitment) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RegistrationsCommitment) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Metadata != nil {\n\t\t{\n\t\t\tsize, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintCommitment(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif m.Validity != nil {\n\t\t{\n\t\t\tsize, err := m.Validity.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintCommitment(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.Expired {\n\t\ti--\n\t\tif m.Expired {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Commitment) > 0 {\n\t\ti -= len(m.Commitment)\n\t\tcopy(dAtA[i:], m.Commitment)\n\t\ti = encodeVarintCommitment(dAtA, i, uint64(len(m.Commitment)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintCommitment(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Id != 0 {\n\t\ti = encodeVarintCommitment(dAtA, i, uint64(m.Id))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintCommitment(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovCommitment(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *RegistrationProof) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovCommitment(uint64(l))\n\t}\n\tif len(m.MerkleProof) > 0 {\n\t\tfor _, b := range m.MerkleProof {\n\t\t\tl = len(b)\n\t\t\tn += 1 + l + sovCommitment(uint64(l))\n\t\t}\n\t}\n\tif m.LeafCount != 0 {\n\t\tn += 1 + sovCommitment(uint64(m.LeafCount))\n\t}\n\tif m.LeafIndex != 0 {\n\t\tn += 1 + sovCommitment(uint64(m.LeafIndex))\n\t}\n\treturn n\n}\n\nfunc (m *RegistrationsCommitment) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Id != 0 {\n\t\tn += 1 + sovCommitment(uint64(m.Id))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovCommitment(uint64(l))\n\t}\n\tl = len(m.Commitment)\n\tif l > 0 {\n\t\tn += 1 + l + sovCommitment(uint64(l))\n\t}\n\tif m.Expired {\n\t\tn += 2\n\t}\n\tif m.Validity != nil {\n\t\tl = m.Validity.Size()\n\t\tn += 1 + l + sovCommitment(uint64(l))\n\t}\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.Size()\n\t\tn += 1 + l + sovCommitment(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovCommitment(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozCommitment(x uint64) (n int) {\n\treturn sovCommitment(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *RegistrationProof) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RegistrationProof: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RegistrationProof: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MerkleProof\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.MerkleProof = append(m.MerkleProof, make([]byte, postIndex-iNdEx))\n\t\t\tcopy(m.MerkleProof[len(m.MerkleProof)-1], dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LeafCount\", wireType)\n\t\t\t}\n\t\t\tm.LeafCount = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.LeafCount |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LeafIndex\", wireType)\n\t\t\t}\n\t\t\tm.LeafIndex = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.LeafIndex |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipCommitment(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RegistrationsCommitment) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RegistrationsCommitment: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RegistrationsCommitment: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tm.Id = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Id |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Commitment = append(m.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Commitment == nil {\n\t\t\t\tm.Commitment = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expired\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Expired = bool(v != 0)\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Validity\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Validity == nil {\n\t\t\t\tm.Validity = &Duration{}\n\t\t\t}\n\t\t\tif err := m.Validity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Metadata == nil {\n\t\t\t\tm.Metadata = &RecordMetadata{}\n\t\t\t}\n\t\t\tif err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipCommitment(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipCommitment(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowCommitment\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowCommitment\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthCommitment\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupCommitment\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthCommitment\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthCommitment        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowCommitment          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupCommitment = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/constants.go",
    "content": "package types\n\nimport \"time\"\n\n// PolicyCommandMaxExpirationDelta configures the maximum lifetime of a PolicyCmd signed payload.\n// Since SourceHub is expected to operate roughly with 1-2 seconds block time,\n// the payload would live for roughly 12-24h\nconst DefaultPolicyCommandMaxExpirationDelta = 60 * 60 * 12\n\n// DefaultRegistrationCommitmentLifetime configures the default lifetime\n// for a RegistrationCommitment object\nvar DefaultRegistrationCommitmentLifetime *Duration = NewDurationFromTimeDuration(time.Minute * 10)\n"
  },
  {
    "path": "x/acp/types/errors.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n)\n\n// x/acp module sentinel errors\nvar (\n\tErrInvalidSigner = errorsmod.Register(ModuleName, 1100, \"expected gov account as only signer for proposal message\")\n)\n\ntype Error = errors.Error\ntype ErrorType = errors.ErrorType\n\nconst (\n\tErrorType_UNKNOWN             = errors.ErrorType_UNKNOWN\n\tErrorType_INTERNAL            = errors.ErrorType_INTERNAL\n\tErrorType_UNAUTHENTICATED     = errors.ErrorType_UNAUTHENTICATED\n\tErrorType_UNAUTHORIZED        = errors.ErrorType_UNAUTHORIZED\n\tErrorType_BAD_INPUT           = errors.ErrorType_BAD_INPUT\n\tErrorType_OPERATION_FORBIDDEN = errors.ErrorType_OPERATION_FORBIDDEN\n\tErrorType_NOT_FOUND           = errors.ErrorType_NOT_FOUND\n)\n\nvar New = errors.New\nvar Wrap = errors.Wrap\nvar NewWithCause = errors.NewWithCause\n\nfunc NewErrInvalidAccAddrErr(cause error, addr string) error {\n\treturn errors.NewWithCause(\"invalid account address\", cause, errors.ErrorType_BAD_INPUT, errors.Pair(\"address\", addr))\n}\n\nfunc NewAccNotFoundErr(addr string) error {\n\treturn errors.Wrap(\"account not found\", errors.ErrorType_NOT_FOUND, errors.Pair(\"address\", addr))\n}\n"
  },
  {
    "path": "x/acp/types/expected_keepers.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\thubtypes \"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// AccountKeeper defines the expected interface for the Account module.\ntype AccountKeeper interface {\n\tGetAccount(context.Context, sdk.AccAddress) sdk.AccountI\n\t// Methods imported from account should be defined here\n}\n\n// BankKeeper defines the expected interface for the Bank module.\ntype BankKeeper interface {\n\tSpendableCoins(context.Context, sdk.AccAddress) sdk.Coins\n\t// Methods imported from bank should be defined here\n}\n\n// ParamSubspace defines the expected Subspace interface for parameters.\ntype ParamSubspace interface {\n\tGet(context.Context, []byte, interface{})\n\tSet(context.Context, []byte, interface{})\n}\n\n// HubKeeper defines the expected interface for the hub module.\ntype HubKeeper interface {\n\tGetICAConnection(ctx sdk.Context, icaAddress string) (hubtypes.ICAConnection, bool)\n\tSetICAConnection(ctx sdk.Context, icaAddress, controllerAddress, controllerChainID, connectionID string) error\n}\n"
  },
  {
    "path": "x/acp/types/genesis.go",
    "content": "package types\n\n// DefaultIndex is the default global index\nconst DefaultIndex uint64 = 1\n\n// DefaultGenesis returns the default genesis state\nfunc DefaultGenesis() *GenesisState {\n\treturn &GenesisState{\n\t\tParams: DefaultParams(),\n\t}\n}\n\n// Validate performs basic genesis state validation returning an error upon any failure.\nfunc (gs GenesisState) Validate() error {\n\treturn gs.Params.Validate()\n}\n"
  },
  {
    "path": "x/acp/types/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/genesis.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// GenesisState defines the acp module's genesis state.\ntype GenesisState struct {\n\t// params defines all the parameters of the module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_84434e1feb0cb187, []int{0}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\nfunc init() {\n\tproto.RegisterType((*GenesisState)(nil), \"sourcehub.acp.GenesisState\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/genesis.proto\", fileDescriptor_84434e1feb0cb187) }\n\nvar fileDescriptor_84434e1feb0cb187 = []byte{\n\t// 207 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x4c, 0x2e, 0xd0, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce,\n\t0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x85, 0x4b, 0xea, 0x25, 0x26, 0x17, 0x48,\n\t0x09, 0x26, 0xe6, 0x66, 0xe6, 0xe5, 0xeb, 0x83, 0x49, 0x88, 0x0a, 0x29, 0x91, 0xf4, 0xfc, 0xf4,\n\t0x7c, 0x30, 0x53, 0x1f, 0xc4, 0x82, 0x8a, 0x4a, 0xa1, 0x1a, 0x5a, 0x90, 0x58, 0x94, 0x98, 0x0b,\n\t0x35, 0x53, 0xc9, 0x83, 0x8b, 0xc7, 0x1d, 0x62, 0x49, 0x70, 0x49, 0x62, 0x49, 0xaa, 0x90, 0x05,\n\t0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x54, 0x0f, 0xc5, 0x52, 0xbd,\n\t0x00, 0xb0, 0xa4, 0x13, 0xe7, 0x89, 0x7b, 0xf2, 0x0c, 0x2b, 0x9e, 0x6f, 0xd0, 0x62, 0x0c, 0x82,\n\t0xaa, 0x77, 0xf2, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18,\n\t0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4,\n\t0xcc, 0x12, 0x90, 0xfe, 0xe4, 0xfc, 0x5c, 0x7d, 0x88, 0x69, 0x79, 0xa9, 0x25, 0xe5, 0xf9, 0x45,\n\t0xd9, 0xfa, 0x08, 0x87, 0x55, 0x80, 0x9d, 0x56, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x76,\n\t0x9a, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x40, 0xa0, 0xfb, 0xeb, 0x0d, 0x01, 0x00, 0x00,\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovGenesis(uint64(l))\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/genesis_test.go",
    "content": "package types_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesisState_Validate(t *testing.T) {\n\ttests := []struct {\n\t\tdesc     string\n\t\tgenState *types.GenesisState\n\t\tvalid    bool\n\t}{\n\t\t{\n\t\t\tdesc:     \"default is valid\",\n\t\t\tgenState: types.DefaultGenesis(),\n\t\t\tvalid:    true,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"valid genesis state\",\n\t\t\tgenState: &types.GenesisState{\n\n\t\t\t\t// this line is used by starport scaffolding # types/genesis/validField\n\t\t\t},\n\t\t\tvalid: true,\n\t\t},\n\t\t// this line is used by starport scaffolding # types/genesis/testcase\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.desc, func(t *testing.T) {\n\t\t\terr := tc.genState.Validate()\n\t\t\tif tc.valid {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Error(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/keys.go",
    "content": "package types\n\nconst (\n\t// ModuleName defines the module name\n\tModuleName = \"acp\"\n\n\t// StoreKey defines the primary module store key\n\tStoreKey = ModuleName\n\n\t// MemStoreKey defines the in-memory store key\n\tMemStoreKey = \"mem_acp\"\n\n\t// AccessDecisionRepositoryKeyPrefix defines the namespace for Access Decisions\n\tAccessDecisionRepositoryKeyPrefix = \"access_decision/\"\n\n\t// RegistrationsCommitmentKeyPrefix defines a key prefix for RegistrationsCommitments\n\tRegistrationsCommitmentKeyPrefix = \"commitment/\"\n\n\t// AmendmentEventKeyPrefix defines a key prefix for Amendment Events\n\tAmendmentEventKeyPrefix = \"amendment_event/\"\n\n\t// SignedPolicyCmdSeenKeyPrefix defines a key prefix for seen signed policy command payloads\n\tSignedPolicyCmdSeenKeyPrefix = \"spc_seen/\"\n)\n\nvar (\n\tParamsKey = []byte(\"p_acp\")\n)\n"
  },
  {
    "path": "x/acp/types/mapper.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/errors\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/utils\"\n)\n\n// BuildRecordMetadata returns a RecordMetadata from an sdk Context\n// and authenticated actor / signer data.\nfunc BuildRecordMetadata(ctx sdk.Context, actorDID string, msgCreator string) (*RecordMetadata, error) {\n\tts, err := TimestampFromCtx(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdt := &RecordMetadata{\n\t\tCreationTs: ts,\n\t\tTxHash:     utils.HashTx(ctx.TxBytes()),\n\t\tOwnerDid:   actorDID,\n\t\tTxSigner:   msgCreator,\n\t}\n\treturn dt, nil\n}\n\n// BuildACPSuppliedMetadata returns an acp SuppliedMetadata\n// object which embeds a SourceHub RecordMetadata\n// built from ctx, actorDID and msgCreator\nfunc BuildACPSuppliedMetadata(ctx sdk.Context, actorDID string, msgCreator string) (*coretypes.SuppliedMetadata, error) {\n\tmetadata, err := BuildRecordMetadata(ctx, actorDID, msgCreator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbytes, err := metadata.Marshal()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &coretypes.SuppliedMetadata{\n\t\tBlob: bytes,\n\t}, nil\n}\n\n// BuildACPSuppliedMetadataWithTime returns an acp SuppliedMetadata\n// object which embeds a SourceHub RecordMetadata\n// built from ctx, ts, actorDID and msgCreator\nfunc BuildACPSuppliedMetadataWithTime(ctx sdk.Context, ts *Timestamp, actorDID string, msgCreator string) (*coretypes.SuppliedMetadata, error) {\n\tmetadata := &RecordMetadata{\n\t\tCreationTs: ts,\n\t\tTxHash:     utils.HashTx(ctx.TxBytes()),\n\t\tOwnerDid:   actorDID,\n\t\tTxSigner:   msgCreator,\n\t}\n\tbytes, err := metadata.Marshal()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &coretypes.SuppliedMetadata{\n\t\tBlob: bytes,\n\t}, nil\n}\n\n// ExtractRecordMetadata extracts and unmarshals\n// a RecordMetadata from the blob field in acp_core's metadata\nfunc ExtractRecordMetadata(md *coretypes.RecordMetadata) (*RecordMetadata, error) {\n\tmetadata := &RecordMetadata{}\n\terr := metadata.Unmarshal(md.Supplied.Blob)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(\"unmarshaling record metadata\", err)\n\t}\n\treturn metadata, nil\n}\n\n// MapRelationshipRecord maps an acp_core RelationshipRecord\n// into a SourceHub RelationshipRecord\nfunc MapRelationshipRecord(rec *coretypes.RelationshipRecord) (*RelationshipRecord, error) {\n\tmetadata, err := ExtractRecordMetadata(rec.Metadata)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &RelationshipRecord{\n\t\tPolicyId:     rec.PolicyId,\n\t\tArchived:     rec.Archived,\n\t\tRelationship: rec.Relationship,\n\t\tMetadata:     metadata,\n\t}, nil\n}\n\n// MapPolicy maps an acp core PolicyRecord into a SourceHub\n// PolicyRecord\nfunc MapPolicy(rec *coretypes.PolicyRecord) (*PolicyRecord, error) {\n\tmetadata, err := ExtractRecordMetadata(rec.Metadata)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &PolicyRecord{\n\t\tPolicy:      rec.Policy,\n\t\tMetadata:    metadata,\n\t\tMarshalType: rec.MarshalType,\n\t\tRawPolicy:   rec.PolicyDefinition,\n\t}, nil\n}\n"
  },
  {
    "path": "x/acp/types/message_bearer_policy_cmd.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgDirectPolicyCmd{}\n\nfunc NewMsgBearerPolicyCmd(creator string, token string, policyId string, cmd *PolicyCmd) *MsgBearerPolicyCmd {\n\treturn &MsgBearerPolicyCmd{\n\t\tCreator:     creator,\n\t\tBearerToken: token,\n\t\tPolicyId:    policyId,\n\t\tCmd:         cmd,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/message_check_access.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/types\"\n)\n\nvar _ sdk.Msg = &MsgCheckAccess{}\n\nfunc NewMsgCheckAccess(creator string, policyId string, accesReq *types.AccessRequest) *MsgCheckAccess {\n\treturn &MsgCheckAccess{\n\t\tCreator:       creator,\n\t\tPolicyId:      policyId,\n\t\tAccessRequest: accesReq,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/message_create_policy.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\tacptypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n)\n\nvar _ sdk.Msg = &MsgCreatePolicy{}\n\nfunc NewMsgCreatePolicy(creator string, policy string, marshalingType acptypes.PolicyMarshalingType) *MsgCreatePolicy {\n\treturn &MsgCreatePolicy{\n\t\tCreator:     creator,\n\t\tPolicy:      policy,\n\t\tMarshalType: marshalingType,\n\t}\n}\n\nfunc (msg *MsgCreatePolicy) ValidateBasic() error {\n\t// ValidateBasic should probably unmarshal the policy and validate it\n\t_, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid creator address (%s)\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/types/message_create_policy_test.go",
    "content": "package types\n\nimport (\n\t\"testing\"\n\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestMsgCreatePolicy_ValidateBasic(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tmsg  MsgCreatePolicy\n\t\terr  error\n\t}{\n\t\t{\n\t\t\tname: \"invalid address\",\n\t\t\tmsg: MsgCreatePolicy{\n\t\t\t\tCreator: \"invalid_address\",\n\t\t\t},\n\t\t\terr: sdkerrors.ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"valid address\",\n\t\t\tmsg: MsgCreatePolicy{\n\t\t\t\tCreator: sample.AccAddress(),\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\terr := tt.msg.ValidateBasic()\n\t\t\tif tt.err != nil {\n\t\t\t\trequire.ErrorIs(t, err, tt.err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/message_direct_policy_cmd.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgDirectPolicyCmd{}\n\nfunc NewMsgDirectPolicyCmd(creator string, policyId string, cmd *PolicyCmd) *MsgDirectPolicyCmd {\n\treturn &MsgDirectPolicyCmd{\n\t\tCreator:  creator,\n\t\tPolicyId: policyId,\n\t\tCmd:      cmd,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/message_edit_policy.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n)\n\nvar _ sdk.Msg = &MsgEditPolicy{}\n\nfunc NewMsgEditPolicy(creator string, policyId string, policy string, marshalType coretypes.PolicyMarshalingType) *MsgEditPolicy {\n\treturn &MsgEditPolicy{\n\t\tCreator:     creator,\n\t\tPolicyId:    policyId,\n\t\tPolicy:      policy,\n\t\tMarshalType: marshalType,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/message_policy_cmd.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgSignedPolicyCmd{}\n\nfunc NewMsgSignedPolicyCmd(creator string, payload string, contentType MsgSignedPolicyCmd_ContentType) *MsgSignedPolicyCmd {\n\treturn &MsgSignedPolicyCmd{\n\t\tCreator: creator,\n\t\tPayload: payload,\n\t\tType:    contentType,\n\t}\n}\n\nfunc NewMsgSignedPolicyCmdFromJWS(creator string, jws string) *MsgSignedPolicyCmd {\n\treturn &MsgSignedPolicyCmd{\n\t\tCreator: creator,\n\t\tType:    MsgSignedPolicyCmd_JWS,\n\t\tPayload: jws,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/msg_update_params.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgUpdateParams{}\n\n// ValidateBasic does a sanity check on the provided data.\nfunc (m *MsgUpdateParams) ValidateBasic() error {\n\tif _, err := sdk.AccAddressFromBech32(m.Authority); err != nil {\n\t\treturn errorsmod.Wrap(err, \"invalid authority address\")\n\t}\n\n\tif err := m.Params.Validate(); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/types/params.go",
    "content": "package types\n\nimport (\n\tparamtypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n)\n\nvar _ paramtypes.ParamSet = (*Params)(nil)\n\n// ParamKeyTable the param key table for launch module\nfunc ParamKeyTable() paramtypes.KeyTable {\n\treturn paramtypes.NewKeyTable().RegisterParamSet(&Params{})\n}\n\n// NewParams creates a new Params instance\nfunc NewParams(policyCmdExpirationDelta uint64, registrationCommitmentValidity *Duration) Params {\n\treturn Params{\n\t\tPolicyCommandMaxExpirationDelta: policyCmdExpirationDelta,\n\t\tRegistrationsCommitmentValidity: registrationCommitmentValidity,\n\t}\n}\n\n// DefaultParams returns a default set of parameters\nfunc DefaultParams() Params {\n\treturn NewParams(DefaultPolicyCommandMaxExpirationDelta, DefaultRegistrationCommitmentLifetime)\n}\n\n// ParamSetPairs get the params.ParamSet\nfunc (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {\n\treturn paramtypes.ParamSetPairs{}\n}\n\n// Validate validates the set of params\nfunc (p Params) Validate() error {\n\treturn nil\n}\n"
  },
  {
    "path": "x/acp/types/params.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/params.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Params defines the parameters for the module.\ntype Params struct {\n\t// policy_command_max_expiration_delta specifies a global thershold for how old a Command will be accepted for.\n\tPolicyCommandMaxExpirationDelta uint64 `protobuf:\"varint,1,opt,name=policy_command_max_expiration_delta,json=policyCommandMaxExpirationDelta,proto3\" json:\"policy_command_max_expiration_delta,omitempty\"`\n\t// registrations_commitment_validity specifies a duration for the lifetime of a commitment.\n\t// Performing a RevealRegistration against an expired commitment causes a protocol error.\n\tRegistrationsCommitmentValidity *Duration `protobuf:\"bytes,2,opt,name=registrations_commitment_validity,json=registrationsCommitmentValidity,proto3\" json:\"registrations_commitment_validity,omitempty\"`\n}\n\nfunc (m *Params) Reset()         { *m = Params{} }\nfunc (m *Params) String() string { return proto.CompactTextString(m) }\nfunc (*Params) ProtoMessage()    {}\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_042bc00af41a360e, []int{0}\n}\nfunc (m *Params) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Params.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Params) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Params.Merge(m, src)\n}\nfunc (m *Params) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Params) XXX_DiscardUnknown() {\n\txxx_messageInfo_Params.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Params proto.InternalMessageInfo\n\nfunc (m *Params) GetPolicyCommandMaxExpirationDelta() uint64 {\n\tif m != nil {\n\t\treturn m.PolicyCommandMaxExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetRegistrationsCommitmentValidity() *Duration {\n\tif m != nil {\n\t\treturn m.RegistrationsCommitmentValidity\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*Params)(nil), \"sourcehub.acp.Params\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/params.proto\", fileDescriptor_042bc00af41a360e) }\n\nvar fileDescriptor_042bc00af41a360e = []byte{\n\t// 295 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x4c, 0x2e, 0xd0, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d,\n\t0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x85, 0xcb, 0xe9, 0x25, 0x26, 0x17, 0x48, 0x09,\n\t0x26, 0xe6, 0x66, 0xe6, 0xe5, 0xeb, 0x83, 0x49, 0x88, 0x0a, 0x29, 0x91, 0xf4, 0xfc, 0xf4, 0x7c,\n\t0x30, 0x53, 0x1f, 0xc4, 0x82, 0x8a, 0x4a, 0xa0, 0x9a, 0x59, 0x92, 0x99, 0x9b, 0x0a, 0x91, 0x51,\n\t0xba, 0xc1, 0xc8, 0xc5, 0x16, 0x00, 0xb6, 0x42, 0xc8, 0x87, 0x4b, 0xb9, 0x20, 0x3f, 0x27, 0x33,\n\t0xb9, 0x32, 0x3e, 0x39, 0x3f, 0x37, 0x37, 0x31, 0x2f, 0x25, 0x3e, 0x37, 0xb1, 0x22, 0x3e, 0xb5,\n\t0xa2, 0x20, 0xb3, 0x28, 0xb1, 0x24, 0x33, 0x3f, 0x2f, 0x3e, 0x25, 0x35, 0xa7, 0x24, 0x51, 0x82,\n\t0x51, 0x81, 0x51, 0x83, 0x25, 0x48, 0x1e, 0xa2, 0xd4, 0x19, 0xa2, 0xd2, 0x37, 0xb1, 0xc2, 0x15,\n\t0xae, 0xce, 0x05, 0xa4, 0x4c, 0x28, 0x99, 0x4b, 0xb1, 0x28, 0x35, 0x3d, 0xb3, 0xb8, 0x04, 0x22,\n\t0x58, 0x0c, 0x36, 0x34, 0xb3, 0x24, 0x37, 0x35, 0xaf, 0x24, 0xbe, 0x2c, 0x31, 0x27, 0x33, 0x25,\n\t0xb3, 0xa4, 0x52, 0x82, 0x49, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x5c, 0x0f, 0xc5, 0x5b, 0x7a, 0x2e,\n\t0xa5, 0x10, 0x3d, 0x41, 0xf2, 0x28, 0x26, 0x38, 0xc3, 0x0d, 0x08, 0x83, 0xea, 0xb7, 0x92, 0xee,\n\t0x7a, 0xbe, 0x41, 0x4b, 0x0c, 0xe1, 0xb9, 0x0a, 0xb0, 0xf7, 0x20, 0xfe, 0x71, 0xf2, 0x38, 0xf1,\n\t0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8,\n\t0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4, 0xcc, 0x12, 0x90, 0x65, 0xc9,\n\t0xf9, 0xb9, 0xfa, 0x10, 0xcd, 0x79, 0xa9, 0x25, 0xe5, 0xf9, 0x45, 0xd9, 0xfa, 0xe8, 0x46, 0x95,\n\t0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0xc3, 0xca, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xb9,\n\t0xdb, 0x3b, 0xde, 0x9b, 0x01, 0x00, 0x00,\n}\n\nfunc (m *Params) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Params) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitmentValidity != nil {\n\t\t{\n\t\t\tsize, err := m.RegistrationsCommitmentValidity.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintParams(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.PolicyCommandMaxExpirationDelta != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.PolicyCommandMaxExpirationDelta))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintParams(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovParams(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Params) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.PolicyCommandMaxExpirationDelta != 0 {\n\t\tn += 1 + sovParams(uint64(m.PolicyCommandMaxExpirationDelta))\n\t}\n\tif m.RegistrationsCommitmentValidity != nil {\n\t\tl = m.RegistrationsCommitmentValidity.Size()\n\t\tn += 1 + l + sovParams(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovParams(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozParams(x uint64) (n int) {\n\treturn sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Params) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyCommandMaxExpirationDelta\", wireType)\n\t\t\t}\n\t\t\tm.PolicyCommandMaxExpirationDelta = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.PolicyCommandMaxExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitmentValidity\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RegistrationsCommitmentValidity == nil {\n\t\t\t\tm.RegistrationsCommitmentValidity = &Duration{}\n\t\t\t}\n\t\t\tif err := m.RegistrationsCommitmentValidity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipParams(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipParams(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthParams\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupParams\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthParams\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthParams        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowParams          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupParams = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/policy_cmd.go",
    "content": "package types\n\nimport coretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\nfunc NewSetRelationshipCmd(rel *coretypes.Relationship) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_SetRelationshipCmd{\n\t\t\tSetRelationshipCmd: &SetRelationshipCmd{\n\t\t\t\tRelationship: rel,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewDeleteRelationshipCmd(rel *coretypes.Relationship) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_DeleteRelationshipCmd{\n\t\t\tDeleteRelationshipCmd: &DeleteRelationshipCmd{\n\t\t\t\tRelationship: rel,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewRegisterObjectCmd(obj *coretypes.Object) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_RegisterObjectCmd{\n\t\t\tRegisterObjectCmd: &RegisterObjectCmd{\n\t\t\t\tObject: obj,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewArchiveObjectCmd(obj *coretypes.Object) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_ArchiveObjectCmd{\n\t\t\tArchiveObjectCmd: &ArchiveObjectCmd{\n\t\t\t\tObject: obj,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewCommitRegistrationCmd(commitment []byte) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_CommitRegistrationsCmd{\n\t\t\tCommitRegistrationsCmd: &CommitRegistrationsCmd{\n\t\t\t\tCommitment: commitment,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewRevealRegistrationCmd(commitmentId uint64, proof *RegistrationProof) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_RevealRegistrationCmd{\n\t\t\tRevealRegistrationCmd: &RevealRegistrationCmd{\n\t\t\t\tProof:                     proof,\n\t\t\t\tRegistrationsCommitmentId: commitmentId,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewFlagHijackAttemptCmd(eventId uint64) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_FlagHijackAttemptCmd{\n\t\t\tFlagHijackAttemptCmd: &FlagHijackAttemptCmd{\n\t\t\t\tEventId: eventId,\n\t\t\t},\n\t\t},\n\t}\n}\n\nfunc NewUnarchiveObjectCmd(object *coretypes.Object) *PolicyCmd {\n\treturn &PolicyCmd{\n\t\tCmd: &PolicyCmd_UnarchiveObjectCmd{\n\t\t\tUnarchiveObjectCmd: &UnarchiveObjectCmd{\n\t\t\t\tObject: object,\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/policy_cmd.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/policy_cmd.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// PolicyCmd models an operation to be performed against the context of a Policy\ntype PolicyCmd struct {\n\t// Types that are valid to be assigned to Cmd:\n\t//\t*PolicyCmd_SetRelationshipCmd\n\t//\t*PolicyCmd_DeleteRelationshipCmd\n\t//\t*PolicyCmd_RegisterObjectCmd\n\t//\t*PolicyCmd_ArchiveObjectCmd\n\t//\t*PolicyCmd_CommitRegistrationsCmd\n\t//\t*PolicyCmd_RevealRegistrationCmd\n\t//\t*PolicyCmd_FlagHijackAttemptCmd\n\t//\t*PolicyCmd_UnarchiveObjectCmd\n\tCmd isPolicyCmd_Cmd `protobuf_oneof:\"cmd\"`\n}\n\nfunc (m *PolicyCmd) Reset()         { *m = PolicyCmd{} }\nfunc (m *PolicyCmd) String() string { return proto.CompactTextString(m) }\nfunc (*PolicyCmd) ProtoMessage()    {}\nfunc (*PolicyCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{0}\n}\nfunc (m *PolicyCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PolicyCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PolicyCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PolicyCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PolicyCmd.Merge(m, src)\n}\nfunc (m *PolicyCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PolicyCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_PolicyCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PolicyCmd proto.InternalMessageInfo\n\ntype isPolicyCmd_Cmd interface {\n\tisPolicyCmd_Cmd()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype PolicyCmd_SetRelationshipCmd struct {\n\tSetRelationshipCmd *SetRelationshipCmd `protobuf:\"bytes,1,opt,name=set_relationship_cmd,json=setRelationshipCmd,proto3,oneof\" json:\"set_relationship_cmd,omitempty\"`\n}\ntype PolicyCmd_DeleteRelationshipCmd struct {\n\tDeleteRelationshipCmd *DeleteRelationshipCmd `protobuf:\"bytes,2,opt,name=delete_relationship_cmd,json=deleteRelationshipCmd,proto3,oneof\" json:\"delete_relationship_cmd,omitempty\"`\n}\ntype PolicyCmd_RegisterObjectCmd struct {\n\tRegisterObjectCmd *RegisterObjectCmd `protobuf:\"bytes,3,opt,name=register_object_cmd,json=registerObjectCmd,proto3,oneof\" json:\"register_object_cmd,omitempty\"`\n}\ntype PolicyCmd_ArchiveObjectCmd struct {\n\tArchiveObjectCmd *ArchiveObjectCmd `protobuf:\"bytes,4,opt,name=archive_object_cmd,json=archiveObjectCmd,proto3,oneof\" json:\"archive_object_cmd,omitempty\"`\n}\ntype PolicyCmd_CommitRegistrationsCmd struct {\n\tCommitRegistrationsCmd *CommitRegistrationsCmd `protobuf:\"bytes,5,opt,name=commit_registrations_cmd,json=commitRegistrationsCmd,proto3,oneof\" json:\"commit_registrations_cmd,omitempty\"`\n}\ntype PolicyCmd_RevealRegistrationCmd struct {\n\tRevealRegistrationCmd *RevealRegistrationCmd `protobuf:\"bytes,6,opt,name=reveal_registration_cmd,json=revealRegistrationCmd,proto3,oneof\" json:\"reveal_registration_cmd,omitempty\"`\n}\ntype PolicyCmd_FlagHijackAttemptCmd struct {\n\tFlagHijackAttemptCmd *FlagHijackAttemptCmd `protobuf:\"bytes,7,opt,name=flag_hijack_attempt_cmd,json=flagHijackAttemptCmd,proto3,oneof\" json:\"flag_hijack_attempt_cmd,omitempty\"`\n}\ntype PolicyCmd_UnarchiveObjectCmd struct {\n\tUnarchiveObjectCmd *UnarchiveObjectCmd `protobuf:\"bytes,8,opt,name=unarchive_object_cmd,json=unarchiveObjectCmd,proto3,oneof\" json:\"unarchive_object_cmd,omitempty\"`\n}\n\nfunc (*PolicyCmd_SetRelationshipCmd) isPolicyCmd_Cmd()     {}\nfunc (*PolicyCmd_DeleteRelationshipCmd) isPolicyCmd_Cmd()  {}\nfunc (*PolicyCmd_RegisterObjectCmd) isPolicyCmd_Cmd()      {}\nfunc (*PolicyCmd_ArchiveObjectCmd) isPolicyCmd_Cmd()       {}\nfunc (*PolicyCmd_CommitRegistrationsCmd) isPolicyCmd_Cmd() {}\nfunc (*PolicyCmd_RevealRegistrationCmd) isPolicyCmd_Cmd()  {}\nfunc (*PolicyCmd_FlagHijackAttemptCmd) isPolicyCmd_Cmd()   {}\nfunc (*PolicyCmd_UnarchiveObjectCmd) isPolicyCmd_Cmd()     {}\n\nfunc (m *PolicyCmd) GetCmd() isPolicyCmd_Cmd {\n\tif m != nil {\n\t\treturn m.Cmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetSetRelationshipCmd() *SetRelationshipCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_SetRelationshipCmd); ok {\n\t\treturn x.SetRelationshipCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetDeleteRelationshipCmd() *DeleteRelationshipCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_DeleteRelationshipCmd); ok {\n\t\treturn x.DeleteRelationshipCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetRegisterObjectCmd() *RegisterObjectCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_RegisterObjectCmd); ok {\n\t\treturn x.RegisterObjectCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetArchiveObjectCmd() *ArchiveObjectCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_ArchiveObjectCmd); ok {\n\t\treturn x.ArchiveObjectCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetCommitRegistrationsCmd() *CommitRegistrationsCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_CommitRegistrationsCmd); ok {\n\t\treturn x.CommitRegistrationsCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetRevealRegistrationCmd() *RevealRegistrationCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_RevealRegistrationCmd); ok {\n\t\treturn x.RevealRegistrationCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetFlagHijackAttemptCmd() *FlagHijackAttemptCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_FlagHijackAttemptCmd); ok {\n\t\treturn x.FlagHijackAttemptCmd\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmd) GetUnarchiveObjectCmd() *UnarchiveObjectCmd {\n\tif x, ok := m.GetCmd().(*PolicyCmd_UnarchiveObjectCmd); ok {\n\t\treturn x.UnarchiveObjectCmd\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*PolicyCmd) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*PolicyCmd_SetRelationshipCmd)(nil),\n\t\t(*PolicyCmd_DeleteRelationshipCmd)(nil),\n\t\t(*PolicyCmd_RegisterObjectCmd)(nil),\n\t\t(*PolicyCmd_ArchiveObjectCmd)(nil),\n\t\t(*PolicyCmd_CommitRegistrationsCmd)(nil),\n\t\t(*PolicyCmd_RevealRegistrationCmd)(nil),\n\t\t(*PolicyCmd_FlagHijackAttemptCmd)(nil),\n\t\t(*PolicyCmd_UnarchiveObjectCmd)(nil),\n\t}\n}\n\n// SetRelationship creates or updates a Relationship within a Policy\n// A Relationship is a statement which ties together an object and a subjecto with a \"relation\",\n// which means the set of high level rules defined in the Policy will apply to these entities.\ntype SetRelationshipCmd struct {\n\tRelationship *types.Relationship `protobuf:\"bytes,1,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n}\n\nfunc (m *SetRelationshipCmd) Reset()         { *m = SetRelationshipCmd{} }\nfunc (m *SetRelationshipCmd) String() string { return proto.CompactTextString(m) }\nfunc (*SetRelationshipCmd) ProtoMessage()    {}\nfunc (*SetRelationshipCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{1}\n}\nfunc (m *SetRelationshipCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SetRelationshipCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SetRelationshipCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SetRelationshipCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SetRelationshipCmd.Merge(m, src)\n}\nfunc (m *SetRelationshipCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SetRelationshipCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_SetRelationshipCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SetRelationshipCmd proto.InternalMessageInfo\n\nfunc (m *SetRelationshipCmd) GetRelationship() *types.Relationship {\n\tif m != nil {\n\t\treturn m.Relationship\n\t}\n\treturn nil\n}\n\n// DelereRelationship removes a Relationship from a Policy.\n// If the Relationship was not found in a Policy, this Cmd is a no-op.\ntype DeleteRelationshipCmd struct {\n\tRelationship *types.Relationship `protobuf:\"bytes,1,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n}\n\nfunc (m *DeleteRelationshipCmd) Reset()         { *m = DeleteRelationshipCmd{} }\nfunc (m *DeleteRelationshipCmd) String() string { return proto.CompactTextString(m) }\nfunc (*DeleteRelationshipCmd) ProtoMessage()    {}\nfunc (*DeleteRelationshipCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{2}\n}\nfunc (m *DeleteRelationshipCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DeleteRelationshipCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DeleteRelationshipCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DeleteRelationshipCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DeleteRelationshipCmd.Merge(m, src)\n}\nfunc (m *DeleteRelationshipCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DeleteRelationshipCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_DeleteRelationshipCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DeleteRelationshipCmd proto.InternalMessageInfo\n\nfunc (m *DeleteRelationshipCmd) GetRelationship() *types.Relationship {\n\tif m != nil {\n\t\treturn m.Relationship\n\t}\n\treturn nil\n}\n\n// RegisterObject creates a special kind of Relationship within a Policy which ties\n// the msg's Actor as the owner of the msg's Object.\n// The Owner has complete control over the set of subjects that are related to their Object,\n// giving them autonomy to share the object and revoke acces to the object,\n// much like owners in a Discretionary Access Control model.\n//\n// Attempting to register a previously registered Object is an error,\n// Object IDs are therefore assumed to be unique within a Policy.\ntype RegisterObjectCmd struct {\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (m *RegisterObjectCmd) Reset()         { *m = RegisterObjectCmd{} }\nfunc (m *RegisterObjectCmd) String() string { return proto.CompactTextString(m) }\nfunc (*RegisterObjectCmd) ProtoMessage()    {}\nfunc (*RegisterObjectCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{3}\n}\nfunc (m *RegisterObjectCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RegisterObjectCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RegisterObjectCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RegisterObjectCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RegisterObjectCmd.Merge(m, src)\n}\nfunc (m *RegisterObjectCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RegisterObjectCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_RegisterObjectCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RegisterObjectCmd proto.InternalMessageInfo\n\nfunc (m *RegisterObjectCmd) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\n// CommitRegistrationsCmd creates a new batched commitment to a set of Object registrations\ntype CommitRegistrationsCmd struct {\n\tCommitment []byte `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n}\n\nfunc (m *CommitRegistrationsCmd) Reset()         { *m = CommitRegistrationsCmd{} }\nfunc (m *CommitRegistrationsCmd) String() string { return proto.CompactTextString(m) }\nfunc (*CommitRegistrationsCmd) ProtoMessage()    {}\nfunc (*CommitRegistrationsCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{4}\n}\nfunc (m *CommitRegistrationsCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *CommitRegistrationsCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_CommitRegistrationsCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *CommitRegistrationsCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_CommitRegistrationsCmd.Merge(m, src)\n}\nfunc (m *CommitRegistrationsCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *CommitRegistrationsCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_CommitRegistrationsCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_CommitRegistrationsCmd proto.InternalMessageInfo\n\nfunc (m *CommitRegistrationsCmd) GetCommitment() []byte {\n\tif m != nil {\n\t\treturn m.Commitment\n\t}\n\treturn nil\n}\n\ntype CommitRegistrationsCmdResult struct {\n\tRegistrationsCommitment *RegistrationsCommitment `protobuf:\"bytes,1,opt,name=registrations_commitment,json=registrationsCommitment,proto3\" json:\"registrations_commitment,omitempty\"`\n}\n\nfunc (m *CommitRegistrationsCmdResult) Reset()         { *m = CommitRegistrationsCmdResult{} }\nfunc (m *CommitRegistrationsCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*CommitRegistrationsCmdResult) ProtoMessage()    {}\nfunc (*CommitRegistrationsCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{5}\n}\nfunc (m *CommitRegistrationsCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *CommitRegistrationsCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_CommitRegistrationsCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *CommitRegistrationsCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_CommitRegistrationsCmdResult.Merge(m, src)\n}\nfunc (m *CommitRegistrationsCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *CommitRegistrationsCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_CommitRegistrationsCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_CommitRegistrationsCmdResult proto.InternalMessageInfo\n\nfunc (m *CommitRegistrationsCmdResult) GetRegistrationsCommitment() *RegistrationsCommitment {\n\tif m != nil {\n\t\treturn m.RegistrationsCommitment\n\t}\n\treturn nil\n}\n\ntype RevealRegistrationCmd struct {\n\tRegistrationsCommitmentId uint64             `protobuf:\"varint,1,opt,name=registrations_commitment_id,json=registrationsCommitmentId,proto3\" json:\"registrations_commitment_id,omitempty\"`\n\tProof                     *RegistrationProof `protobuf:\"bytes,2,opt,name=proof,proto3\" json:\"proof,omitempty\"`\n}\n\nfunc (m *RevealRegistrationCmd) Reset()         { *m = RevealRegistrationCmd{} }\nfunc (m *RevealRegistrationCmd) String() string { return proto.CompactTextString(m) }\nfunc (*RevealRegistrationCmd) ProtoMessage()    {}\nfunc (*RevealRegistrationCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{6}\n}\nfunc (m *RevealRegistrationCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RevealRegistrationCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RevealRegistrationCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RevealRegistrationCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RevealRegistrationCmd.Merge(m, src)\n}\nfunc (m *RevealRegistrationCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RevealRegistrationCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_RevealRegistrationCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RevealRegistrationCmd proto.InternalMessageInfo\n\nfunc (m *RevealRegistrationCmd) GetRegistrationsCommitmentId() uint64 {\n\tif m != nil {\n\t\treturn m.RegistrationsCommitmentId\n\t}\n\treturn 0\n}\n\nfunc (m *RevealRegistrationCmd) GetProof() *RegistrationProof {\n\tif m != nil {\n\t\treturn m.Proof\n\t}\n\treturn nil\n}\n\ntype RevealRegistrationCmdResult struct {\n\tRecord *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n\tEvent  *AmendmentEvent     `protobuf:\"bytes,2,opt,name=event,proto3\" json:\"event,omitempty\"`\n}\n\nfunc (m *RevealRegistrationCmdResult) Reset()         { *m = RevealRegistrationCmdResult{} }\nfunc (m *RevealRegistrationCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*RevealRegistrationCmdResult) ProtoMessage()    {}\nfunc (*RevealRegistrationCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{7}\n}\nfunc (m *RevealRegistrationCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RevealRegistrationCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RevealRegistrationCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RevealRegistrationCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RevealRegistrationCmdResult.Merge(m, src)\n}\nfunc (m *RevealRegistrationCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RevealRegistrationCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_RevealRegistrationCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RevealRegistrationCmdResult proto.InternalMessageInfo\n\nfunc (m *RevealRegistrationCmdResult) GetRecord() *RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\nfunc (m *RevealRegistrationCmdResult) GetEvent() *AmendmentEvent {\n\tif m != nil {\n\t\treturn m.Event\n\t}\n\treturn nil\n}\n\ntype FlagHijackAttemptCmd struct {\n\tEventId uint64 `protobuf:\"varint,1,opt,name=event_id,json=eventId,proto3\" json:\"event_id,omitempty\"`\n}\n\nfunc (m *FlagHijackAttemptCmd) Reset()         { *m = FlagHijackAttemptCmd{} }\nfunc (m *FlagHijackAttemptCmd) String() string { return proto.CompactTextString(m) }\nfunc (*FlagHijackAttemptCmd) ProtoMessage()    {}\nfunc (*FlagHijackAttemptCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{8}\n}\nfunc (m *FlagHijackAttemptCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FlagHijackAttemptCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FlagHijackAttemptCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FlagHijackAttemptCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FlagHijackAttemptCmd.Merge(m, src)\n}\nfunc (m *FlagHijackAttemptCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FlagHijackAttemptCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_FlagHijackAttemptCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FlagHijackAttemptCmd proto.InternalMessageInfo\n\nfunc (m *FlagHijackAttemptCmd) GetEventId() uint64 {\n\tif m != nil {\n\t\treturn m.EventId\n\t}\n\treturn 0\n}\n\ntype FlagHijackAttemptCmdResult struct {\n\tEvent *AmendmentEvent `protobuf:\"bytes,1,opt,name=event,proto3\" json:\"event,omitempty\"`\n}\n\nfunc (m *FlagHijackAttemptCmdResult) Reset()         { *m = FlagHijackAttemptCmdResult{} }\nfunc (m *FlagHijackAttemptCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*FlagHijackAttemptCmdResult) ProtoMessage()    {}\nfunc (*FlagHijackAttemptCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{9}\n}\nfunc (m *FlagHijackAttemptCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *FlagHijackAttemptCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_FlagHijackAttemptCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *FlagHijackAttemptCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_FlagHijackAttemptCmdResult.Merge(m, src)\n}\nfunc (m *FlagHijackAttemptCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *FlagHijackAttemptCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_FlagHijackAttemptCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_FlagHijackAttemptCmdResult proto.InternalMessageInfo\n\nfunc (m *FlagHijackAttemptCmdResult) GetEvent() *AmendmentEvent {\n\tif m != nil {\n\t\treturn m.Event\n\t}\n\treturn nil\n}\n\ntype UnarchiveObjectCmd struct {\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (m *UnarchiveObjectCmd) Reset()         { *m = UnarchiveObjectCmd{} }\nfunc (m *UnarchiveObjectCmd) String() string { return proto.CompactTextString(m) }\nfunc (*UnarchiveObjectCmd) ProtoMessage()    {}\nfunc (*UnarchiveObjectCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{10}\n}\nfunc (m *UnarchiveObjectCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnarchiveObjectCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnarchiveObjectCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnarchiveObjectCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnarchiveObjectCmd.Merge(m, src)\n}\nfunc (m *UnarchiveObjectCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnarchiveObjectCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnarchiveObjectCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnarchiveObjectCmd proto.InternalMessageInfo\n\nfunc (m *UnarchiveObjectCmd) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\ntype UnarchiveObjectCmdResult struct {\n\tRecord               *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n\tRelationshipModified bool                `protobuf:\"varint,2,opt,name=relationship_modified,json=relationshipModified,proto3\" json:\"relationship_modified,omitempty\"`\n}\n\nfunc (m *UnarchiveObjectCmdResult) Reset()         { *m = UnarchiveObjectCmdResult{} }\nfunc (m *UnarchiveObjectCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*UnarchiveObjectCmdResult) ProtoMessage()    {}\nfunc (*UnarchiveObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{11}\n}\nfunc (m *UnarchiveObjectCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnarchiveObjectCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnarchiveObjectCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnarchiveObjectCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnarchiveObjectCmdResult.Merge(m, src)\n}\nfunc (m *UnarchiveObjectCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnarchiveObjectCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnarchiveObjectCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnarchiveObjectCmdResult proto.InternalMessageInfo\n\nfunc (m *UnarchiveObjectCmdResult) GetRecord() *RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\nfunc (m *UnarchiveObjectCmdResult) GetRelationshipModified() bool {\n\tif m != nil {\n\t\treturn m.RelationshipModified\n\t}\n\treturn false\n}\n\n// ArchiveObject let's an Object's Owner effectively \"unshare\" their Object.\n// This method wipes all Relationships referencing the given Object.\n//\n// A caveat is that after removing the Relationships, a record of the original Object owner\n// is maintained to prevent an \"ownership hijack\" attack.\n//\n// Suppose Bob owns object Foo, which is shared with Bob but not Eve.\n// Eve wants to access Foo but was not given permission to, they could \"hijack\" Bob's object by waiting for Bob to Archive Foo,\n// then submitting a RegisterObject Msg, effectively becoming Foo's new owner.\n// If Charlie has a copy of the object, Eve could convince Charlie to share his copy, granting Eve access to Foo.\n// The previous scenario where an unauthorized user is able to claim ownership to data previously unaccessible to them\n// is an \"ownership hijack\".\ntype ArchiveObjectCmd struct {\n\tObject *types.Object `protobuf:\"bytes,1,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (m *ArchiveObjectCmd) Reset()         { *m = ArchiveObjectCmd{} }\nfunc (m *ArchiveObjectCmd) String() string { return proto.CompactTextString(m) }\nfunc (*ArchiveObjectCmd) ProtoMessage()    {}\nfunc (*ArchiveObjectCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{12}\n}\nfunc (m *ArchiveObjectCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ArchiveObjectCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ArchiveObjectCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ArchiveObjectCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ArchiveObjectCmd.Merge(m, src)\n}\nfunc (m *ArchiveObjectCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ArchiveObjectCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_ArchiveObjectCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ArchiveObjectCmd proto.InternalMessageInfo\n\nfunc (m *ArchiveObjectCmd) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\n// SetRelationshipCmd sets a Relationship in a Policy\ntype SetRelationshipCmdResult struct {\n\t// Indicates whether the given Relationship previously existed, ie the Tx was a no op\n\tRecordExisted bool                `protobuf:\"varint,1,opt,name=record_existed,json=recordExisted,proto3\" json:\"record_existed,omitempty\"`\n\tRecord        *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *SetRelationshipCmdResult) Reset()         { *m = SetRelationshipCmdResult{} }\nfunc (m *SetRelationshipCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*SetRelationshipCmdResult) ProtoMessage()    {}\nfunc (*SetRelationshipCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{13}\n}\nfunc (m *SetRelationshipCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SetRelationshipCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SetRelationshipCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SetRelationshipCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SetRelationshipCmdResult.Merge(m, src)\n}\nfunc (m *SetRelationshipCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SetRelationshipCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_SetRelationshipCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SetRelationshipCmdResult proto.InternalMessageInfo\n\nfunc (m *SetRelationshipCmdResult) GetRecordExisted() bool {\n\tif m != nil {\n\t\treturn m.RecordExisted\n\t}\n\treturn false\n}\n\nfunc (m *SetRelationshipCmdResult) GetRecord() *RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\n// DeleteRelationshipCmdResult removes a Relationship in a Policy\ntype DeleteRelationshipCmdResult struct {\n\tRecordFound bool `protobuf:\"varint,1,opt,name=record_found,json=recordFound,proto3\" json:\"record_found,omitempty\"`\n}\n\nfunc (m *DeleteRelationshipCmdResult) Reset()         { *m = DeleteRelationshipCmdResult{} }\nfunc (m *DeleteRelationshipCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*DeleteRelationshipCmdResult) ProtoMessage()    {}\nfunc (*DeleteRelationshipCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{14}\n}\nfunc (m *DeleteRelationshipCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DeleteRelationshipCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DeleteRelationshipCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DeleteRelationshipCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DeleteRelationshipCmdResult.Merge(m, src)\n}\nfunc (m *DeleteRelationshipCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DeleteRelationshipCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_DeleteRelationshipCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DeleteRelationshipCmdResult proto.InternalMessageInfo\n\nfunc (m *DeleteRelationshipCmdResult) GetRecordFound() bool {\n\tif m != nil {\n\t\treturn m.RecordFound\n\t}\n\treturn false\n}\n\n// RegisterObjectCmdResult registers an Object in a Policy\ntype RegisterObjectCmdResult struct {\n\tRecord *RelationshipRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *RegisterObjectCmdResult) Reset()         { *m = RegisterObjectCmdResult{} }\nfunc (m *RegisterObjectCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*RegisterObjectCmdResult) ProtoMessage()    {}\nfunc (*RegisterObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{15}\n}\nfunc (m *RegisterObjectCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RegisterObjectCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RegisterObjectCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RegisterObjectCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RegisterObjectCmdResult.Merge(m, src)\n}\nfunc (m *RegisterObjectCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RegisterObjectCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_RegisterObjectCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RegisterObjectCmdResult proto.InternalMessageInfo\n\nfunc (m *RegisterObjectCmdResult) GetRecord() *RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\n// ArchiveObjectCmdResult unregisters an Object in a Policy\ntype ArchiveObjectCmdResult struct {\n\tFound                bool   `protobuf:\"varint,1,opt,name=found,proto3\" json:\"found,omitempty\"`\n\tRelationshipsRemoved uint64 `protobuf:\"varint,2,opt,name=relationships_removed,json=relationshipsRemoved,proto3\" json:\"relationships_removed,omitempty\"`\n}\n\nfunc (m *ArchiveObjectCmdResult) Reset()         { *m = ArchiveObjectCmdResult{} }\nfunc (m *ArchiveObjectCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*ArchiveObjectCmdResult) ProtoMessage()    {}\nfunc (*ArchiveObjectCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{16}\n}\nfunc (m *ArchiveObjectCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ArchiveObjectCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ArchiveObjectCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ArchiveObjectCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ArchiveObjectCmdResult.Merge(m, src)\n}\nfunc (m *ArchiveObjectCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ArchiveObjectCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_ArchiveObjectCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ArchiveObjectCmdResult proto.InternalMessageInfo\n\nfunc (m *ArchiveObjectCmdResult) GetFound() bool {\n\tif m != nil {\n\t\treturn m.Found\n\t}\n\treturn false\n}\n\nfunc (m *ArchiveObjectCmdResult) GetRelationshipsRemoved() uint64 {\n\tif m != nil {\n\t\treturn m.RelationshipsRemoved\n\t}\n\treturn 0\n}\n\ntype PolicyCmdResult struct {\n\t// Types that are valid to be assigned to Result:\n\t//\n\t//\t*PolicyCmdResult_SetRelationshipResult\n\t//\t*PolicyCmdResult_DeleteRelationshipResult\n\t//\t*PolicyCmdResult_RegisterObjectResult\n\t//\t*PolicyCmdResult_ArchiveObjectResult\n\t//\t*PolicyCmdResult_CommitRegistrationsResult\n\t//\t*PolicyCmdResult_RevealRegistrationResult\n\t//\t*PolicyCmdResult_FlagHijackAttemptResult\n\t//\t*PolicyCmdResult_UnarchiveObjectResult\n\tResult isPolicyCmdResult_Result `protobuf_oneof:\"result\"`\n}\n\nfunc (m *PolicyCmdResult) Reset()         { *m = PolicyCmdResult{} }\nfunc (m *PolicyCmdResult) String() string { return proto.CompactTextString(m) }\nfunc (*PolicyCmdResult) ProtoMessage()    {}\nfunc (*PolicyCmdResult) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1de5e9736122d1ff, []int{17}\n}\nfunc (m *PolicyCmdResult) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PolicyCmdResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PolicyCmdResult.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PolicyCmdResult) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PolicyCmdResult.Merge(m, src)\n}\nfunc (m *PolicyCmdResult) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PolicyCmdResult) XXX_DiscardUnknown() {\n\txxx_messageInfo_PolicyCmdResult.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PolicyCmdResult proto.InternalMessageInfo\n\ntype isPolicyCmdResult_Result interface {\n\tisPolicyCmdResult_Result()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype PolicyCmdResult_SetRelationshipResult struct {\n\tSetRelationshipResult *SetRelationshipCmdResult `protobuf:\"bytes,1,opt,name=set_relationship_result,json=setRelationshipResult,proto3,oneof\" json:\"set_relationship_result,omitempty\"`\n}\ntype PolicyCmdResult_DeleteRelationshipResult struct {\n\tDeleteRelationshipResult *DeleteRelationshipCmdResult `protobuf:\"bytes,2,opt,name=delete_relationship_result,json=deleteRelationshipResult,proto3,oneof\" json:\"delete_relationship_result,omitempty\"`\n}\ntype PolicyCmdResult_RegisterObjectResult struct {\n\tRegisterObjectResult *RegisterObjectCmdResult `protobuf:\"bytes,3,opt,name=register_object_result,json=registerObjectResult,proto3,oneof\" json:\"register_object_result,omitempty\"`\n}\ntype PolicyCmdResult_ArchiveObjectResult struct {\n\tArchiveObjectResult *ArchiveObjectCmdResult `protobuf:\"bytes,4,opt,name=archive_object_result,json=archiveObjectResult,proto3,oneof\" json:\"archive_object_result,omitempty\"`\n}\ntype PolicyCmdResult_CommitRegistrationsResult struct {\n\tCommitRegistrationsResult *CommitRegistrationsCmdResult `protobuf:\"bytes,5,opt,name=commit_registrations_result,json=commitRegistrationsResult,proto3,oneof\" json:\"commit_registrations_result,omitempty\"`\n}\ntype PolicyCmdResult_RevealRegistrationResult struct {\n\tRevealRegistrationResult *RevealRegistrationCmdResult `protobuf:\"bytes,6,opt,name=reveal_registration_result,json=revealRegistrationResult,proto3,oneof\" json:\"reveal_registration_result,omitempty\"`\n}\ntype PolicyCmdResult_FlagHijackAttemptResult struct {\n\tFlagHijackAttemptResult *FlagHijackAttemptCmdResult `protobuf:\"bytes,7,opt,name=flag_hijack_attempt_result,json=flagHijackAttemptResult,proto3,oneof\" json:\"flag_hijack_attempt_result,omitempty\"`\n}\ntype PolicyCmdResult_UnarchiveObjectResult struct {\n\tUnarchiveObjectResult *UnarchiveObjectCmdResult `protobuf:\"bytes,8,opt,name=unarchive_object_result,json=unarchiveObjectResult,proto3,oneof\" json:\"unarchive_object_result,omitempty\"`\n}\n\nfunc (*PolicyCmdResult_SetRelationshipResult) isPolicyCmdResult_Result()     {}\nfunc (*PolicyCmdResult_DeleteRelationshipResult) isPolicyCmdResult_Result()  {}\nfunc (*PolicyCmdResult_RegisterObjectResult) isPolicyCmdResult_Result()      {}\nfunc (*PolicyCmdResult_ArchiveObjectResult) isPolicyCmdResult_Result()       {}\nfunc (*PolicyCmdResult_CommitRegistrationsResult) isPolicyCmdResult_Result() {}\nfunc (*PolicyCmdResult_RevealRegistrationResult) isPolicyCmdResult_Result()  {}\nfunc (*PolicyCmdResult_FlagHijackAttemptResult) isPolicyCmdResult_Result()   {}\nfunc (*PolicyCmdResult_UnarchiveObjectResult) isPolicyCmdResult_Result()     {}\n\nfunc (m *PolicyCmdResult) GetResult() isPolicyCmdResult_Result {\n\tif m != nil {\n\t\treturn m.Result\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetSetRelationshipResult() *SetRelationshipCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_SetRelationshipResult); ok {\n\t\treturn x.SetRelationshipResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetDeleteRelationshipResult() *DeleteRelationshipCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_DeleteRelationshipResult); ok {\n\t\treturn x.DeleteRelationshipResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetRegisterObjectResult() *RegisterObjectCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_RegisterObjectResult); ok {\n\t\treturn x.RegisterObjectResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetArchiveObjectResult() *ArchiveObjectCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_ArchiveObjectResult); ok {\n\t\treturn x.ArchiveObjectResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetCommitRegistrationsResult() *CommitRegistrationsCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_CommitRegistrationsResult); ok {\n\t\treturn x.CommitRegistrationsResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetRevealRegistrationResult() *RevealRegistrationCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_RevealRegistrationResult); ok {\n\t\treturn x.RevealRegistrationResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetFlagHijackAttemptResult() *FlagHijackAttemptCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_FlagHijackAttemptResult); ok {\n\t\treturn x.FlagHijackAttemptResult\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyCmdResult) GetUnarchiveObjectResult() *UnarchiveObjectCmdResult {\n\tif x, ok := m.GetResult().(*PolicyCmdResult_UnarchiveObjectResult); ok {\n\t\treturn x.UnarchiveObjectResult\n\t}\n\treturn nil\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*PolicyCmdResult) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*PolicyCmdResult_SetRelationshipResult)(nil),\n\t\t(*PolicyCmdResult_DeleteRelationshipResult)(nil),\n\t\t(*PolicyCmdResult_RegisterObjectResult)(nil),\n\t\t(*PolicyCmdResult_ArchiveObjectResult)(nil),\n\t\t(*PolicyCmdResult_CommitRegistrationsResult)(nil),\n\t\t(*PolicyCmdResult_RevealRegistrationResult)(nil),\n\t\t(*PolicyCmdResult_FlagHijackAttemptResult)(nil),\n\t\t(*PolicyCmdResult_UnarchiveObjectResult)(nil),\n\t}\n}\n\nfunc init() {\n\tproto.RegisterType((*PolicyCmd)(nil), \"sourcehub.acp.PolicyCmd\")\n\tproto.RegisterType((*SetRelationshipCmd)(nil), \"sourcehub.acp.SetRelationshipCmd\")\n\tproto.RegisterType((*DeleteRelationshipCmd)(nil), \"sourcehub.acp.DeleteRelationshipCmd\")\n\tproto.RegisterType((*RegisterObjectCmd)(nil), \"sourcehub.acp.RegisterObjectCmd\")\n\tproto.RegisterType((*CommitRegistrationsCmd)(nil), \"sourcehub.acp.CommitRegistrationsCmd\")\n\tproto.RegisterType((*CommitRegistrationsCmdResult)(nil), \"sourcehub.acp.CommitRegistrationsCmdResult\")\n\tproto.RegisterType((*RevealRegistrationCmd)(nil), \"sourcehub.acp.RevealRegistrationCmd\")\n\tproto.RegisterType((*RevealRegistrationCmdResult)(nil), \"sourcehub.acp.RevealRegistrationCmdResult\")\n\tproto.RegisterType((*FlagHijackAttemptCmd)(nil), \"sourcehub.acp.FlagHijackAttemptCmd\")\n\tproto.RegisterType((*FlagHijackAttemptCmdResult)(nil), \"sourcehub.acp.FlagHijackAttemptCmdResult\")\n\tproto.RegisterType((*UnarchiveObjectCmd)(nil), \"sourcehub.acp.UnarchiveObjectCmd\")\n\tproto.RegisterType((*UnarchiveObjectCmdResult)(nil), \"sourcehub.acp.UnarchiveObjectCmdResult\")\n\tproto.RegisterType((*ArchiveObjectCmd)(nil), \"sourcehub.acp.ArchiveObjectCmd\")\n\tproto.RegisterType((*SetRelationshipCmdResult)(nil), \"sourcehub.acp.SetRelationshipCmdResult\")\n\tproto.RegisterType((*DeleteRelationshipCmdResult)(nil), \"sourcehub.acp.DeleteRelationshipCmdResult\")\n\tproto.RegisterType((*RegisterObjectCmdResult)(nil), \"sourcehub.acp.RegisterObjectCmdResult\")\n\tproto.RegisterType((*ArchiveObjectCmdResult)(nil), \"sourcehub.acp.ArchiveObjectCmdResult\")\n\tproto.RegisterType((*PolicyCmdResult)(nil), \"sourcehub.acp.PolicyCmdResult\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/policy_cmd.proto\", fileDescriptor_1de5e9736122d1ff) }\n\nvar fileDescriptor_1de5e9736122d1ff = []byte{\n\t// 1009 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6f, 0x1b, 0x45,\n\t0x14, 0xf6, 0x36, 0xb1, 0x6b, 0x5e, 0x5a, 0x68, 0xa7, 0x76, 0xec, 0x38, 0xb0, 0x4d, 0x17, 0x0a,\n\t0x14, 0x24, 0x5b, 0xb4, 0x12, 0x82, 0x0b, 0x22, 0x0d, 0xad, 0x5c, 0x7e, 0xa8, 0x65, 0xa0, 0x17,\n\t0x40, 0x59, 0x6d, 0x76, 0xc7, 0xf6, 0xa6, 0x5e, 0x8f, 0x35, 0x3b, 0x0e, 0xad, 0xc4, 0x85, 0x2b,\n\t0x12, 0x82, 0x3f, 0x8b, 0x1b, 0x3d, 0x72, 0x44, 0x89, 0xc4, 0xdf, 0x81, 0xe6, 0x87, 0xed, 0xdd,\n\t0x99, 0x71, 0x48, 0x69, 0x6e, 0xf6, 0xbc, 0x6f, 0xbe, 0xf7, 0xe6, 0xbd, 0x37, 0x6f, 0xbe, 0x05,\n\t0x3f, 0xa7, 0x33, 0x16, 0x93, 0xd1, 0xec, 0xa0, 0x17, 0xc5, 0xd3, 0xde, 0x94, 0x8e, 0xd3, 0xf8,\n\t0x59, 0x18, 0x67, 0x49, 0x77, 0xca, 0x28, 0xa7, 0xe8, 0xf2, 0xc2, 0xde, 0x8d, 0xe2, 0x69, 0xe7,\n\t0xfa, 0x90, 0xd2, 0xe1, 0x98, 0xf4, 0xa4, 0xf1, 0x60, 0x36, 0xe8, 0xf1, 0x34, 0x23, 0x39, 0x8f,\n\t0xb2, 0xa9, 0xc2, 0x77, 0x0c, 0xbe, 0x98, 0x66, 0x59, 0xca, 0x33, 0x32, 0xe1, 0xda, 0xde, 0x29,\n\t0xdb, 0x19, 0x89, 0x29, 0xd3, 0xbe, 0x3a, 0x3b, 0xa6, 0x6d, 0x98, 0xe6, 0x9c, 0x45, 0x3c, 0xa5,\n\t0x13, 0x8d, 0xb8, 0xa5, 0x10, 0x13, 0xc2, 0x7f, 0xa4, 0xec, 0x89, 0x40, 0x85, 0x31, 0x65, 0xa4,\n\t0xc7, 0xc8, 0x58, 0xc2, 0xf2, 0x51, 0xaa, 0x03, 0x09, 0xfe, 0xa9, 0xc2, 0x2b, 0x8f, 0xe4, 0x69,\n\t0xf6, 0xb2, 0x04, 0x3d, 0x86, 0x46, 0x4e, 0x78, 0x58, 0xc4, 0x89, 0x43, 0xb6, 0xbd, 0x1d, 0xef,\n\t0xdd, 0x8d, 0xdb, 0x37, 0xba, 0xa5, 0x53, 0x76, 0xbf, 0x21, 0x1c, 0x17, 0x90, 0x7b, 0x59, 0xd2,\n\t0xaf, 0x60, 0x94, 0x5b, 0xab, 0x68, 0x1f, 0x5a, 0x09, 0x19, 0x13, 0x4e, 0x6c, 0xe6, 0x0b, 0x92,\n\t0xf9, 0x2d, 0x83, 0xf9, 0x33, 0x89, 0xb6, 0xc9, 0x9b, 0x89, 0xcb, 0x80, 0x30, 0x5c, 0x53, 0x59,\n\t0x20, 0x2c, 0xa4, 0x07, 0x87, 0x24, 0xe6, 0x92, 0x7b, 0x4d, 0x72, 0xef, 0x18, 0xdc, 0x58, 0x23,\n\t0x1f, 0x4a, 0xa0, 0xe2, 0xbd, 0xca, 0xcc, 0x45, 0xf4, 0x10, 0x50, 0xc4, 0xe2, 0x51, 0x7a, 0x44,\n\t0x8a, 0x94, 0xeb, 0x92, 0xf2, 0xba, 0x41, 0xb9, 0xab, 0x80, 0x45, 0xc6, 0x2b, 0x91, 0xb1, 0x86,\n\t0x22, 0x68, 0xab, 0x32, 0x87, 0xc5, 0x8a, 0xe5, 0x92, 0xb6, 0x2a, 0x69, 0x6f, 0x1a, 0xb4, 0x7b,\n\t0x12, 0x8e, 0x8b, 0x68, 0x45, 0xbe, 0x19, 0x3b, 0x2d, 0x22, 0xcf, 0x8c, 0x1c, 0x91, 0x68, 0x5c,\n\t0x72, 0x21, 0x3d, 0xd4, 0x9c, 0x79, 0xc6, 0x12, 0x5d, 0xe4, 0xd1, 0x79, 0x66, 0x2e, 0x03, 0xfa,\n\t0x01, 0x5a, 0x83, 0x71, 0x34, 0x0c, 0x47, 0xe9, 0x61, 0x14, 0x3f, 0x09, 0x23, 0xce, 0x49, 0x36,\n\t0x55, 0x89, 0xb9, 0x28, 0xf9, 0xdf, 0x34, 0xf8, 0xef, 0x8f, 0xa3, 0x61, 0x5f, 0x82, 0x77, 0x15,\n\t0x56, 0xd1, 0x37, 0x06, 0x8e, 0x75, 0xd1, 0x7c, 0xb3, 0x89, 0x23, 0xe7, 0x75, 0x67, 0xf3, 0x3d,\n\t0x9e, 0x44, 0x76, 0xd6, 0xd1, 0xcc, 0x5a, 0xbd, 0x5b, 0x85, 0xb5, 0x38, 0x4b, 0x82, 0x7d, 0x40,\n\t0x76, 0xbf, 0xa2, 0x3e, 0x5c, 0x2a, 0xb6, 0xa4, 0x6e, 0xf4, 0x79, 0x9a, 0xf4, 0x05, 0xea, 0xce,\n\t0x2f, 0x50, 0xb7, 0xb8, 0x1d, 0x97, 0x76, 0x06, 0x11, 0x34, 0x9d, 0x5d, 0x7b, 0x8e, 0x2e, 0xbe,\n\t0x80, 0xab, 0x56, 0xf3, 0xa2, 0x0f, 0xa1, 0xa6, 0x72, 0xa5, 0x89, 0xfd, 0x55, 0xc4, 0x6a, 0x0b,\n\t0xd6, 0xe8, 0xe0, 0x23, 0xd8, 0x74, 0xf7, 0x17, 0xf2, 0x01, 0x96, 0xf3, 0x48, 0xb2, 0x5e, 0xc2,\n\t0x85, 0x95, 0xe0, 0x67, 0x0f, 0x5e, 0x77, 0x6f, 0xc5, 0x24, 0x9f, 0x8d, 0xb9, 0xe8, 0x74, 0xa3,\n\t0xc5, 0xcb, 0x74, 0x1b, 0xb7, 0xdf, 0x76, 0xde, 0xc9, 0x39, 0xd1, 0x02, 0x8d, 0x5b, 0xcc, 0x6d,\n\t0x08, 0x7e, 0xf3, 0xa0, 0xe9, 0x6c, 0x5e, 0xf4, 0x09, 0x6c, 0xaf, 0x72, 0x1e, 0xa6, 0x6a, 0x92,\n\t0xad, 0xe3, 0xad, 0x15, 0xbc, 0x0f, 0x44, 0x3e, 0xab, 0x53, 0x46, 0xe9, 0x40, 0x4f, 0xa6, 0x9d,\n\t0x53, 0x22, 0x7d, 0x24, 0x70, 0x58, 0xc1, 0x83, 0x5f, 0x3d, 0xd8, 0x76, 0x46, 0xa4, 0x93, 0xf2,\n\t0x31, 0xd4, 0xd4, 0x14, 0x5f, 0x31, 0x4c, 0x4b, 0x75, 0x97, 0x40, 0xac, 0x37, 0xa0, 0x3b, 0x50,\n\t0x25, 0x47, 0x22, 0x79, 0x2a, 0xa4, 0x37, 0xcc, 0xe9, 0x93, 0x91, 0x49, 0x22, 0xa2, 0xbf, 0x27,\n\t0x40, 0x58, 0x61, 0x83, 0x0f, 0xa0, 0xe1, 0xba, 0x7d, 0x68, 0x0b, 0xea, 0x12, 0xb0, 0x4c, 0xc6,\n\t0x45, 0xf9, 0xff, 0x41, 0x12, 0x7c, 0x0d, 0x1d, 0xd7, 0x16, 0x7d, 0x80, 0x45, 0x14, 0xde, 0x0b,\n\t0x44, 0xf1, 0x25, 0x20, 0xfb, 0xa2, 0xfe, 0xef, 0x9e, 0xfd, 0xc5, 0x83, 0xb6, 0x4d, 0x77, 0x1e,\n\t0x09, 0x6e, 0x96, 0x1e, 0xa6, 0x8c, 0x26, 0xe9, 0x20, 0x25, 0xea, 0x75, 0xaa, 0xe3, 0x46, 0xd1,\n\t0xf8, 0x95, 0xb6, 0x05, 0x9f, 0xc3, 0x95, 0xdd, 0xf3, 0x3a, 0xd8, 0x4f, 0xd0, 0xb6, 0x87, 0x93,\n\t0x3e, 0xd7, 0x4d, 0x78, 0x55, 0x85, 0x19, 0x92, 0xa7, 0xe2, 0xee, 0xab, 0xf3, 0xd5, 0xf1, 0x65,\n\t0xb5, 0x7a, 0x4f, 0x2d, 0x16, 0x8e, 0x7f, 0xe1, 0x05, 0x8f, 0x1f, 0x7c, 0x0a, 0xdb, 0xce, 0xd1,\n\t0xa5, 0x03, 0xb8, 0x21, 0x06, 0x98, 0x0c, 0x60, 0x40, 0x67, 0x93, 0xb9, 0xfb, 0x0d, 0xb5, 0x76,\n\t0x5f, 0x2c, 0x05, 0xdf, 0x42, 0xcb, 0x9a, 0x4c, 0x2f, 0x5d, 0x96, 0x20, 0x86, 0xcd, 0x5d, 0x77,\n\t0xad, 0x1b, 0x50, 0x2d, 0xc6, 0xa2, 0xfe, 0x98, 0x65, 0xcc, 0x43, 0x46, 0x32, 0x7a, 0xa4, 0xcb,\n\t0xb8, 0x5e, 0x2e, 0x63, 0x8e, 0x95, 0x2d, 0xf8, 0xb3, 0x06, 0xaf, 0x2d, 0x04, 0xd0, 0x62, 0x80,\n\t0xb5, 0x2c, 0x19, 0xc4, 0xa4, 0x49, 0x1f, 0xe2, 0x9d, 0xff, 0x54, 0x42, 0x8a, 0x49, 0x3c, 0xa5,\n\t0x86, 0x1e, 0xd2, 0x2e, 0x0e, 0xa1, 0xe3, 0x92, 0x44, 0xda, 0x8b, 0x2a, 0xe1, 0x7b, 0x67, 0x51,\n\t0x45, 0x0b, 0x47, 0x6d, 0x5b, 0x1b, 0x69, 0x5f, 0xfb, 0xb0, 0x69, 0xca, 0x23, 0xed, 0x67, 0xed,\n\t0x94, 0x69, 0x6c, 0x95, 0x52, 0x3c, 0xdc, 0x65, 0x9d, 0xa4, 0xf9, 0xbf, 0x87, 0xa6, 0xf1, 0x6c,\n\t0x6b, 0xfa, 0x75, 0xa7, 0xac, 0x71, 0xd7, 0xb4, 0x5f, 0xc1, 0xd7, 0x4a, 0x37, 0x5b, 0x93, 0x67,\n\t0xb0, 0xed, 0x94, 0x4d, 0xda, 0x85, 0x52, 0x4e, 0xef, 0x9f, 0x49, 0x39, 0x2d, 0x1c, 0x6d, 0x39,\n\t0xf4, 0xd3, 0xb2, 0x2e, 0x2e, 0x09, 0xa5, 0xbd, 0xd5, 0x9c, 0x75, 0x39, 0x65, 0xec, 0x8b, 0xba,\n\t0xd8, 0x5a, 0x4a, 0xfb, 0x1a, 0x41, 0xc7, 0x25, 0xa7, 0xb4, 0x2f, 0xa5, 0xa8, 0x6e, 0x9d, 0x41,\n\t0x51, 0x2d, 0x5c, 0xb5, 0x2c, 0x5d, 0xb5, 0x6c, 0x68, 0x4b, 0x5a, 0x69, 0x37, 0x75, 0x67, 0x43,\n\t0xaf, 0x9a, 0xb2, 0xa2, 0xa1, 0x0d, 0x8d, 0xa5, 0x0c, 0x77, 0xeb, 0xe2, 0x9e, 0xcb, 0x5f, 0xfd,\n\t0x3f, 0x8e, 0x7d, 0xef, 0xf9, 0xb1, 0xef, 0xfd, 0x7d, 0xec, 0x7b, 0xbf, 0x9f, 0xf8, 0x95, 0xe7,\n\t0x27, 0x7e, 0xe5, 0xaf, 0x13, 0xbf, 0xf2, 0x5d, 0x77, 0x98, 0x72, 0xe1, 0x21, 0xa6, 0x59, 0xaf,\n\t0xfc, 0x89, 0xb2, 0xfc, 0xa4, 0x79, 0x2a, 0x3f, 0x6a, 0xf8, 0xb3, 0x29, 0xc9, 0x0f, 0x6a, 0xf2,\n\t0x1b, 0xe5, 0xce, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x61, 0x04, 0x36, 0x0d, 0x7e, 0x0d, 0x00,\n\t0x00,\n}\n\nfunc (m *PolicyCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PolicyCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Cmd != nil {\n\t\t{\n\t\t\tsize := m.Cmd.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.Cmd.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PolicyCmd_SetRelationshipCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_SetRelationshipCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SetRelationshipCmd != nil {\n\t\t{\n\t\t\tsize, err := m.SetRelationshipCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_DeleteRelationshipCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_DeleteRelationshipCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DeleteRelationshipCmd != nil {\n\t\t{\n\t\t\tsize, err := m.DeleteRelationshipCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_RegisterObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_RegisterObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RegisterObjectCmd != nil {\n\t\t{\n\t\t\tsize, err := m.RegisterObjectCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_ArchiveObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_ArchiveObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ArchiveObjectCmd != nil {\n\t\t{\n\t\t\tsize, err := m.ArchiveObjectCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_CommitRegistrationsCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_CommitRegistrationsCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.CommitRegistrationsCmd != nil {\n\t\t{\n\t\t\tsize, err := m.CommitRegistrationsCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_RevealRegistrationCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_RevealRegistrationCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RevealRegistrationCmd != nil {\n\t\t{\n\t\t\tsize, err := m.RevealRegistrationCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_FlagHijackAttemptCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_FlagHijackAttemptCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FlagHijackAttemptCmd != nil {\n\t\t{\n\t\t\tsize, err := m.FlagHijackAttemptCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmd_UnarchiveObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmd_UnarchiveObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.UnarchiveObjectCmd != nil {\n\t\t{\n\t\t\tsize, err := m.UnarchiveObjectCmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *SetRelationshipCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SetRelationshipCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SetRelationshipCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Relationship != nil {\n\t\t{\n\t\t\tsize, err := m.Relationship.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeleteRelationshipCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeleteRelationshipCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DeleteRelationshipCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Relationship != nil {\n\t\t{\n\t\t\tsize, err := m.Relationship.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegisterObjectCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegisterObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RegisterObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CommitRegistrationsCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CommitRegistrationsCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *CommitRegistrationsCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Commitment) > 0 {\n\t\ti -= len(m.Commitment)\n\t\tcopy(dAtA[i:], m.Commitment)\n\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(len(m.Commitment)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *CommitRegistrationsCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *CommitRegistrationsCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *CommitRegistrationsCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitment != nil {\n\t\t{\n\t\t\tsize, err := m.RegistrationsCommitment.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RevealRegistrationCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RevealRegistrationCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RevealRegistrationCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Proof != nil {\n\t\t{\n\t\t\tsize, err := m.Proof.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.RegistrationsCommitmentId != 0 {\n\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(m.RegistrationsCommitmentId))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RevealRegistrationCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RevealRegistrationCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RevealRegistrationCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Event != nil {\n\t\t{\n\t\t\tsize, err := m.Event.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FlagHijackAttemptCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FlagHijackAttemptCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FlagHijackAttemptCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.EventId != 0 {\n\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(m.EventId))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *FlagHijackAttemptCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *FlagHijackAttemptCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *FlagHijackAttemptCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Event != nil {\n\t\t{\n\t\t\tsize, err := m.Event.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnarchiveObjectCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnarchiveObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnarchiveObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnarchiveObjectCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnarchiveObjectCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnarchiveObjectCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RelationshipModified {\n\t\ti--\n\t\tif m.RelationshipModified {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ArchiveObjectCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ArchiveObjectCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ArchiveObjectCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SetRelationshipCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SetRelationshipCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SetRelationshipCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.RecordExisted {\n\t\ti--\n\t\tif m.RecordExisted {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DeleteRelationshipCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DeleteRelationshipCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DeleteRelationshipCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RecordFound {\n\t\ti--\n\t\tif m.RecordFound {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RegisterObjectCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RegisterObjectCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RegisterObjectCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *ArchiveObjectCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ArchiveObjectCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ArchiveObjectCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RelationshipsRemoved != 0 {\n\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(m.RelationshipsRemoved))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.Found {\n\t\ti--\n\t\tif m.Found {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PolicyCmdResult) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PolicyCmdResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\t{\n\t\t\tsize := m.Result.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.Result.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PolicyCmdResult_SetRelationshipResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_SetRelationshipResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.SetRelationshipResult != nil {\n\t\t{\n\t\t\tsize, err := m.SetRelationshipResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_DeleteRelationshipResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_DeleteRelationshipResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.DeleteRelationshipResult != nil {\n\t\t{\n\t\t\tsize, err := m.DeleteRelationshipResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_RegisterObjectResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_RegisterObjectResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RegisterObjectResult != nil {\n\t\t{\n\t\t\tsize, err := m.RegisterObjectResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_ArchiveObjectResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_ArchiveObjectResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ArchiveObjectResult != nil {\n\t\t{\n\t\t\tsize, err := m.ArchiveObjectResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_CommitRegistrationsResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_CommitRegistrationsResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.CommitRegistrationsResult != nil {\n\t\t{\n\t\t\tsize, err := m.CommitRegistrationsResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_RevealRegistrationResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_RevealRegistrationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.RevealRegistrationResult != nil {\n\t\t{\n\t\t\tsize, err := m.RevealRegistrationResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_FlagHijackAttemptResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_FlagHijackAttemptResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.FlagHijackAttemptResult != nil {\n\t\t{\n\t\t\tsize, err := m.FlagHijackAttemptResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x3a\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *PolicyCmdResult_UnarchiveObjectResult) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyCmdResult_UnarchiveObjectResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.UnarchiveObjectResult != nil {\n\t\t{\n\t\t\tsize, err := m.UnarchiveObjectResult.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc encodeVarintPolicyCmd(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovPolicyCmd(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *PolicyCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Cmd != nil {\n\t\tn += m.Cmd.Size()\n\t}\n\treturn n\n}\n\nfunc (m *PolicyCmd_SetRelationshipCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SetRelationshipCmd != nil {\n\t\tl = m.SetRelationshipCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_DeleteRelationshipCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DeleteRelationshipCmd != nil {\n\t\tl = m.DeleteRelationshipCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_RegisterObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegisterObjectCmd != nil {\n\t\tl = m.RegisterObjectCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_ArchiveObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ArchiveObjectCmd != nil {\n\t\tl = m.ArchiveObjectCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_CommitRegistrationsCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CommitRegistrationsCmd != nil {\n\t\tl = m.CommitRegistrationsCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_RevealRegistrationCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RevealRegistrationCmd != nil {\n\t\tl = m.RevealRegistrationCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_FlagHijackAttemptCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FlagHijackAttemptCmd != nil {\n\t\tl = m.FlagHijackAttemptCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmd_UnarchiveObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.UnarchiveObjectCmd != nil {\n\t\tl = m.UnarchiveObjectCmd.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *SetRelationshipCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Relationship != nil {\n\t\tl = m.Relationship.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DeleteRelationshipCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Relationship != nil {\n\t\tl = m.Relationship.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *RegisterObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *CommitRegistrationsCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Commitment)\n\tif l > 0 {\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *CommitRegistrationsCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitment != nil {\n\t\tl = m.RegistrationsCommitment.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *RevealRegistrationCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitmentId != 0 {\n\t\tn += 1 + sovPolicyCmd(uint64(m.RegistrationsCommitmentId))\n\t}\n\tif m.Proof != nil {\n\t\tl = m.Proof.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *RevealRegistrationCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\tif m.Event != nil {\n\t\tl = m.Event.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *FlagHijackAttemptCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.EventId != 0 {\n\t\tn += 1 + sovPolicyCmd(uint64(m.EventId))\n\t}\n\treturn n\n}\n\nfunc (m *FlagHijackAttemptCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Event != nil {\n\t\tl = m.Event.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UnarchiveObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UnarchiveObjectCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\tif m.RelationshipModified {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *ArchiveObjectCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *SetRelationshipCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RecordExisted {\n\t\tn += 2\n\t}\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DeleteRelationshipCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RecordFound {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *RegisterObjectCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *ArchiveObjectCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Found {\n\t\tn += 2\n\t}\n\tif m.RelationshipsRemoved != 0 {\n\t\tn += 1 + sovPolicyCmd(uint64(m.RelationshipsRemoved))\n\t}\n\treturn n\n}\n\nfunc (m *PolicyCmdResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\tn += m.Result.Size()\n\t}\n\treturn n\n}\n\nfunc (m *PolicyCmdResult_SetRelationshipResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.SetRelationshipResult != nil {\n\t\tl = m.SetRelationshipResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_DeleteRelationshipResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.DeleteRelationshipResult != nil {\n\t\tl = m.DeleteRelationshipResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_RegisterObjectResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegisterObjectResult != nil {\n\t\tl = m.RegisterObjectResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_ArchiveObjectResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ArchiveObjectResult != nil {\n\t\tl = m.ArchiveObjectResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_CommitRegistrationsResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CommitRegistrationsResult != nil {\n\t\tl = m.CommitRegistrationsResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_RevealRegistrationResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RevealRegistrationResult != nil {\n\t\tl = m.RevealRegistrationResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_FlagHijackAttemptResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.FlagHijackAttemptResult != nil {\n\t\tl = m.FlagHijackAttemptResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *PolicyCmdResult_UnarchiveObjectResult) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.UnarchiveObjectResult != nil {\n\t\tl = m.UnarchiveObjectResult.Size()\n\t\tn += 1 + l + sovPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovPolicyCmd(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozPolicyCmd(x uint64) (n int) {\n\treturn sovPolicyCmd(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *PolicyCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SetRelationshipCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &SetRelationshipCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_SetRelationshipCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DeleteRelationshipCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &DeleteRelationshipCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_DeleteRelationshipCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegisterObjectCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RegisterObjectCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_RegisterObjectCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ArchiveObjectCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &ArchiveObjectCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_ArchiveObjectCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CommitRegistrationsCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &CommitRegistrationsCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_CommitRegistrationsCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RevealRegistrationCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RevealRegistrationCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_RevealRegistrationCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field FlagHijackAttemptCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &FlagHijackAttemptCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_FlagHijackAttemptCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnarchiveObjectCmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &UnarchiveObjectCmd{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Cmd = &PolicyCmd_UnarchiveObjectCmd{v}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SetRelationshipCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SetRelationshipCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SetRelationshipCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Relationship == nil {\n\t\t\t\tm.Relationship = &types.Relationship{}\n\t\t\t}\n\t\t\tif err := m.Relationship.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DeleteRelationshipCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRelationshipCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRelationshipCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Relationship == nil {\n\t\t\t\tm.Relationship = &types.Relationship{}\n\t\t\t}\n\t\t\tif err := m.Relationship.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RegisterObjectCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterObjectCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CommitRegistrationsCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CommitRegistrationsCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CommitRegistrationsCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Commitment = append(m.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Commitment == nil {\n\t\t\t\tm.Commitment = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *CommitRegistrationsCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: CommitRegistrationsCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: CommitRegistrationsCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitment\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RegistrationsCommitment == nil {\n\t\t\t\tm.RegistrationsCommitment = &RegistrationsCommitment{}\n\t\t\t}\n\t\t\tif err := m.RegistrationsCommitment.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RevealRegistrationCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RevealRegistrationCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RevealRegistrationCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitmentId\", wireType)\n\t\t\t}\n\t\t\tm.RegistrationsCommitmentId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RegistrationsCommitmentId |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Proof\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Proof == nil {\n\t\t\t\tm.Proof = &RegistrationProof{}\n\t\t\t}\n\t\t\tif err := m.Proof.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RevealRegistrationCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RevealRegistrationCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RevealRegistrationCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &RelationshipRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Event\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Event == nil {\n\t\t\t\tm.Event = &AmendmentEvent{}\n\t\t\t}\n\t\t\tif err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FlagHijackAttemptCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FlagHijackAttemptCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FlagHijackAttemptCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field EventId\", wireType)\n\t\t\t}\n\t\t\tm.EventId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.EventId |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *FlagHijackAttemptCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: FlagHijackAttemptCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: FlagHijackAttemptCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Event\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Event == nil {\n\t\t\t\tm.Event = &AmendmentEvent{}\n\t\t\t}\n\t\t\tif err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnarchiveObjectCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnarchiveObjectCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnarchiveObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnarchiveObjectCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnarchiveObjectCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnarchiveObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &RelationshipRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipModified\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.RelationshipModified = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ArchiveObjectCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ArchiveObjectCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ArchiveObjectCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SetRelationshipCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SetRelationshipCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SetRelationshipCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RecordExisted\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.RecordExisted = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &RelationshipRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DeleteRelationshipCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRelationshipCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DeleteRelationshipCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RecordFound\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.RecordFound = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RegisterObjectCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterObjectCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RegisterObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &RelationshipRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *ArchiveObjectCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ArchiveObjectCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ArchiveObjectCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Found\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Found = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipsRemoved\", wireType)\n\t\t\t}\n\t\t\tm.RelationshipsRemoved = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RelationshipsRemoved |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PolicyCmdResult) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyCmdResult: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyCmdResult: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SetRelationshipResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &SetRelationshipCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_SetRelationshipResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DeleteRelationshipResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &DeleteRelationshipCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_DeleteRelationshipResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegisterObjectResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RegisterObjectCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_RegisterObjectResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ArchiveObjectResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &ArchiveObjectCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_ArchiveObjectResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CommitRegistrationsResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &CommitRegistrationsCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_CommitRegistrationsResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RevealRegistrationResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &RevealRegistrationCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_RevealRegistrationResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field FlagHijackAttemptResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &FlagHijackAttemptCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_FlagHijackAttemptResult{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnarchiveObjectResult\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &UnarchiveObjectCmdResult{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Result = &PolicyCmdResult_UnarchiveObjectResult{v}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipPolicyCmd(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthPolicyCmd\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupPolicyCmd\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthPolicyCmd\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthPolicyCmd        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowPolicyCmd          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupPolicyCmd = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/query.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\tquery \"github.com/cosmos/cosmos-sdk/types/query\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n}\n\nfunc (m *QueryParamsRequest) Reset()         { *m = QueryParamsRequest{} }\nfunc (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsRequest) ProtoMessage()    {}\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{0}\n}\nfunc (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsRequest.Merge(m, src)\n}\nfunc (m *QueryParamsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\t// params holds all the parameters of this module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *QueryParamsResponse) Reset()         { *m = QueryParamsResponse{} }\nfunc (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsResponse) ProtoMessage()    {}\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{1}\n}\nfunc (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsResponse.Merge(m, src)\n}\nfunc (m *QueryParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo\n\nfunc (m *QueryParamsResponse) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\ntype QueryPolicyRequest struct {\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (m *QueryPolicyRequest) Reset()         { *m = QueryPolicyRequest{} }\nfunc (m *QueryPolicyRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPolicyRequest) ProtoMessage()    {}\nfunc (*QueryPolicyRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{2}\n}\nfunc (m *QueryPolicyRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPolicyRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPolicyRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPolicyRequest.Merge(m, src)\n}\nfunc (m *QueryPolicyRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPolicyRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPolicyRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPolicyRequest proto.InternalMessageInfo\n\nfunc (m *QueryPolicyRequest) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryPolicyResponse struct {\n\tRecord *PolicyRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *QueryPolicyResponse) Reset()         { *m = QueryPolicyResponse{} }\nfunc (m *QueryPolicyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPolicyResponse) ProtoMessage()    {}\nfunc (*QueryPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{3}\n}\nfunc (m *QueryPolicyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPolicyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPolicyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPolicyResponse.Merge(m, src)\n}\nfunc (m *QueryPolicyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPolicyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPolicyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPolicyResponse proto.InternalMessageInfo\n\nfunc (m *QueryPolicyResponse) GetRecord() *PolicyRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\ntype QueryPolicyIdsRequest struct {\n\tPagination *query.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryPolicyIdsRequest) Reset()         { *m = QueryPolicyIdsRequest{} }\nfunc (m *QueryPolicyIdsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPolicyIdsRequest) ProtoMessage()    {}\nfunc (*QueryPolicyIdsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{4}\n}\nfunc (m *QueryPolicyIdsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPolicyIdsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPolicyIdsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPolicyIdsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPolicyIdsRequest.Merge(m, src)\n}\nfunc (m *QueryPolicyIdsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPolicyIdsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPolicyIdsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPolicyIdsRequest proto.InternalMessageInfo\n\nfunc (m *QueryPolicyIdsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPolicyIdsResponse struct {\n\tIds        []string            `protobuf:\"bytes,1,rep,name=ids,proto3\" json:\"ids,omitempty\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryPolicyIdsResponse) Reset()         { *m = QueryPolicyIdsResponse{} }\nfunc (m *QueryPolicyIdsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPolicyIdsResponse) ProtoMessage()    {}\nfunc (*QueryPolicyIdsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{5}\n}\nfunc (m *QueryPolicyIdsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPolicyIdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPolicyIdsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPolicyIdsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPolicyIdsResponse.Merge(m, src)\n}\nfunc (m *QueryPolicyIdsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPolicyIdsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPolicyIdsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPolicyIdsResponse proto.InternalMessageInfo\n\nfunc (m *QueryPolicyIdsResponse) GetIds() []string {\n\tif m != nil {\n\t\treturn m.Ids\n\t}\n\treturn nil\n}\n\nfunc (m *QueryPolicyIdsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryFilterRelationshipsRequest struct {\n\tPolicyId string                      `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tSelector *types.RelationshipSelector `protobuf:\"bytes,2,opt,name=selector,proto3\" json:\"selector,omitempty\"`\n}\n\nfunc (m *QueryFilterRelationshipsRequest) Reset()         { *m = QueryFilterRelationshipsRequest{} }\nfunc (m *QueryFilterRelationshipsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryFilterRelationshipsRequest) ProtoMessage()    {}\nfunc (*QueryFilterRelationshipsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{6}\n}\nfunc (m *QueryFilterRelationshipsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryFilterRelationshipsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryFilterRelationshipsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryFilterRelationshipsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryFilterRelationshipsRequest.Merge(m, src)\n}\nfunc (m *QueryFilterRelationshipsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryFilterRelationshipsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryFilterRelationshipsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryFilterRelationshipsRequest proto.InternalMessageInfo\n\nfunc (m *QueryFilterRelationshipsRequest) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryFilterRelationshipsRequest) GetSelector() *types.RelationshipSelector {\n\tif m != nil {\n\t\treturn m.Selector\n\t}\n\treturn nil\n}\n\ntype QueryFilterRelationshipsResponse struct {\n\tRecords []*RelationshipRecord `protobuf:\"bytes,1,rep,name=records,proto3\" json:\"records,omitempty\"`\n}\n\nfunc (m *QueryFilterRelationshipsResponse) Reset()         { *m = QueryFilterRelationshipsResponse{} }\nfunc (m *QueryFilterRelationshipsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryFilterRelationshipsResponse) ProtoMessage()    {}\nfunc (*QueryFilterRelationshipsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{7}\n}\nfunc (m *QueryFilterRelationshipsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryFilterRelationshipsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryFilterRelationshipsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryFilterRelationshipsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryFilterRelationshipsResponse.Merge(m, src)\n}\nfunc (m *QueryFilterRelationshipsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryFilterRelationshipsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryFilterRelationshipsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryFilterRelationshipsResponse proto.InternalMessageInfo\n\nfunc (m *QueryFilterRelationshipsResponse) GetRecords() []*RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Records\n\t}\n\treturn nil\n}\n\ntype QueryVerifyAccessRequestRequest struct {\n\tPolicyId      string               `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tAccessRequest *types.AccessRequest `protobuf:\"bytes,2,opt,name=access_request,json=accessRequest,proto3\" json:\"access_request,omitempty\"`\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) Reset()         { *m = QueryVerifyAccessRequestRequest{} }\nfunc (m *QueryVerifyAccessRequestRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryVerifyAccessRequestRequest) ProtoMessage()    {}\nfunc (*QueryVerifyAccessRequestRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{8}\n}\nfunc (m *QueryVerifyAccessRequestRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryVerifyAccessRequestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryVerifyAccessRequestRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryVerifyAccessRequestRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryVerifyAccessRequestRequest.Merge(m, src)\n}\nfunc (m *QueryVerifyAccessRequestRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryVerifyAccessRequestRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryVerifyAccessRequestRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryVerifyAccessRequestRequest proto.InternalMessageInfo\n\nfunc (m *QueryVerifyAccessRequestRequest) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) GetAccessRequest() *types.AccessRequest {\n\tif m != nil {\n\t\treturn m.AccessRequest\n\t}\n\treturn nil\n}\n\ntype QueryVerifyAccessRequestResponse struct {\n\tValid bool `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n}\n\nfunc (m *QueryVerifyAccessRequestResponse) Reset()         { *m = QueryVerifyAccessRequestResponse{} }\nfunc (m *QueryVerifyAccessRequestResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryVerifyAccessRequestResponse) ProtoMessage()    {}\nfunc (*QueryVerifyAccessRequestResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{9}\n}\nfunc (m *QueryVerifyAccessRequestResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryVerifyAccessRequestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryVerifyAccessRequestResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryVerifyAccessRequestResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryVerifyAccessRequestResponse.Merge(m, src)\n}\nfunc (m *QueryVerifyAccessRequestResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryVerifyAccessRequestResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryVerifyAccessRequestResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryVerifyAccessRequestResponse proto.InternalMessageInfo\n\nfunc (m *QueryVerifyAccessRequestResponse) GetValid() bool {\n\tif m != nil {\n\t\treturn m.Valid\n\t}\n\treturn false\n}\n\ntype QueryValidatePolicyRequest struct {\n\tPolicy      string                     `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,3,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (m *QueryValidatePolicyRequest) Reset()         { *m = QueryValidatePolicyRequest{} }\nfunc (m *QueryValidatePolicyRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryValidatePolicyRequest) ProtoMessage()    {}\nfunc (*QueryValidatePolicyRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{10}\n}\nfunc (m *QueryValidatePolicyRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryValidatePolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryValidatePolicyRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryValidatePolicyRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryValidatePolicyRequest.Merge(m, src)\n}\nfunc (m *QueryValidatePolicyRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryValidatePolicyRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryValidatePolicyRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryValidatePolicyRequest proto.InternalMessageInfo\n\nfunc (m *QueryValidatePolicyRequest) GetPolicy() string {\n\tif m != nil {\n\t\treturn m.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryValidatePolicyRequest) GetMarshalType() types.PolicyMarshalingType {\n\tif m != nil {\n\t\treturn m.MarshalType\n\t}\n\treturn types.PolicyMarshalingType_UNKNOWN\n}\n\ntype QueryValidatePolicyResponse struct {\n\tValid    bool          `protobuf:\"varint,1,opt,name=valid,proto3\" json:\"valid,omitempty\"`\n\tErrorMsg string        `protobuf:\"bytes,2,opt,name=error_msg,json=errorMsg,proto3\" json:\"error_msg,omitempty\"`\n\tPolicy   *types.Policy `protobuf:\"bytes,3,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n}\n\nfunc (m *QueryValidatePolicyResponse) Reset()         { *m = QueryValidatePolicyResponse{} }\nfunc (m *QueryValidatePolicyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryValidatePolicyResponse) ProtoMessage()    {}\nfunc (*QueryValidatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{11}\n}\nfunc (m *QueryValidatePolicyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryValidatePolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryValidatePolicyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryValidatePolicyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryValidatePolicyResponse.Merge(m, src)\n}\nfunc (m *QueryValidatePolicyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryValidatePolicyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryValidatePolicyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryValidatePolicyResponse proto.InternalMessageInfo\n\nfunc (m *QueryValidatePolicyResponse) GetValid() bool {\n\tif m != nil {\n\t\treturn m.Valid\n\t}\n\treturn false\n}\n\nfunc (m *QueryValidatePolicyResponse) GetErrorMsg() string {\n\tif m != nil {\n\t\treturn m.ErrorMsg\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryValidatePolicyResponse) GetPolicy() *types.Policy {\n\tif m != nil {\n\t\treturn m.Policy\n\t}\n\treturn nil\n}\n\ntype QueryAccessDecisionRequest struct {\n\tId string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (m *QueryAccessDecisionRequest) Reset()         { *m = QueryAccessDecisionRequest{} }\nfunc (m *QueryAccessDecisionRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAccessDecisionRequest) ProtoMessage()    {}\nfunc (*QueryAccessDecisionRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{12}\n}\nfunc (m *QueryAccessDecisionRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAccessDecisionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAccessDecisionRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAccessDecisionRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAccessDecisionRequest.Merge(m, src)\n}\nfunc (m *QueryAccessDecisionRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAccessDecisionRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAccessDecisionRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAccessDecisionRequest proto.InternalMessageInfo\n\nfunc (m *QueryAccessDecisionRequest) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryAccessDecisionResponse struct {\n\tDecision *AccessDecision `protobuf:\"bytes,1,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n}\n\nfunc (m *QueryAccessDecisionResponse) Reset()         { *m = QueryAccessDecisionResponse{} }\nfunc (m *QueryAccessDecisionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAccessDecisionResponse) ProtoMessage()    {}\nfunc (*QueryAccessDecisionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{13}\n}\nfunc (m *QueryAccessDecisionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAccessDecisionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAccessDecisionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAccessDecisionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAccessDecisionResponse.Merge(m, src)\n}\nfunc (m *QueryAccessDecisionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAccessDecisionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAccessDecisionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAccessDecisionResponse proto.InternalMessageInfo\n\nfunc (m *QueryAccessDecisionResponse) GetDecision() *AccessDecision {\n\tif m != nil {\n\t\treturn m.Decision\n\t}\n\treturn nil\n}\n\ntype QueryObjectOwnerRequest struct {\n\tPolicyId string        `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObject   *types.Object `protobuf:\"bytes,2,opt,name=object,proto3\" json:\"object,omitempty\"`\n}\n\nfunc (m *QueryObjectOwnerRequest) Reset()         { *m = QueryObjectOwnerRequest{} }\nfunc (m *QueryObjectOwnerRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryObjectOwnerRequest) ProtoMessage()    {}\nfunc (*QueryObjectOwnerRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{14}\n}\nfunc (m *QueryObjectOwnerRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryObjectOwnerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryObjectOwnerRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryObjectOwnerRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryObjectOwnerRequest.Merge(m, src)\n}\nfunc (m *QueryObjectOwnerRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryObjectOwnerRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryObjectOwnerRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryObjectOwnerRequest proto.InternalMessageInfo\n\nfunc (m *QueryObjectOwnerRequest) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryObjectOwnerRequest) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\ntype QueryObjectOwnerResponse struct {\n\tIsRegistered bool                `protobuf:\"varint,1,opt,name=is_registered,json=isRegistered,proto3\" json:\"is_registered,omitempty\"`\n\tRecord       *RelationshipRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *QueryObjectOwnerResponse) Reset()         { *m = QueryObjectOwnerResponse{} }\nfunc (m *QueryObjectOwnerResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryObjectOwnerResponse) ProtoMessage()    {}\nfunc (*QueryObjectOwnerResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{15}\n}\nfunc (m *QueryObjectOwnerResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryObjectOwnerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryObjectOwnerResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryObjectOwnerResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryObjectOwnerResponse.Merge(m, src)\n}\nfunc (m *QueryObjectOwnerResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryObjectOwnerResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryObjectOwnerResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryObjectOwnerResponse proto.InternalMessageInfo\n\nfunc (m *QueryObjectOwnerResponse) GetIsRegistered() bool {\n\tif m != nil {\n\t\treturn m.IsRegistered\n\t}\n\treturn false\n}\n\nfunc (m *QueryObjectOwnerResponse) GetRecord() *RelationshipRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentRequest struct {\n\tId uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (m *QueryRegistrationsCommitmentRequest) Reset()         { *m = QueryRegistrationsCommitmentRequest{} }\nfunc (m *QueryRegistrationsCommitmentRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryRegistrationsCommitmentRequest) ProtoMessage()    {}\nfunc (*QueryRegistrationsCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{16}\n}\nfunc (m *QueryRegistrationsCommitmentRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryRegistrationsCommitmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryRegistrationsCommitmentRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryRegistrationsCommitmentRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryRegistrationsCommitmentRequest.Merge(m, src)\n}\nfunc (m *QueryRegistrationsCommitmentRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryRegistrationsCommitmentRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryRegistrationsCommitmentRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryRegistrationsCommitmentRequest proto.InternalMessageInfo\n\nfunc (m *QueryRegistrationsCommitmentRequest) GetId() uint64 {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn 0\n}\n\ntype QueryRegistrationsCommitmentResponse struct {\n\tRegistrationsCommitment *RegistrationsCommitment `protobuf:\"bytes,1,opt,name=registrations_commitment,json=registrationsCommitment,proto3\" json:\"registrations_commitment,omitempty\"`\n}\n\nfunc (m *QueryRegistrationsCommitmentResponse) Reset()         { *m = QueryRegistrationsCommitmentResponse{} }\nfunc (m *QueryRegistrationsCommitmentResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryRegistrationsCommitmentResponse) ProtoMessage()    {}\nfunc (*QueryRegistrationsCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{17}\n}\nfunc (m *QueryRegistrationsCommitmentResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryRegistrationsCommitmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryRegistrationsCommitmentResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryRegistrationsCommitmentResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryRegistrationsCommitmentResponse.Merge(m, src)\n}\nfunc (m *QueryRegistrationsCommitmentResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryRegistrationsCommitmentResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryRegistrationsCommitmentResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryRegistrationsCommitmentResponse proto.InternalMessageInfo\n\nfunc (m *QueryRegistrationsCommitmentResponse) GetRegistrationsCommitment() *RegistrationsCommitment {\n\tif m != nil {\n\t\treturn m.RegistrationsCommitment\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentByCommitmentRequest struct {\n\tCommitment []byte `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) Reset() {\n\t*m = QueryRegistrationsCommitmentByCommitmentRequest{}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) String() string {\n\treturn proto.CompactTextString(m)\n}\nfunc (*QueryRegistrationsCommitmentByCommitmentRequest) ProtoMessage() {}\nfunc (*QueryRegistrationsCommitmentByCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{18}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryRegistrationsCommitmentByCommitmentRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryRegistrationsCommitmentByCommitmentRequest.Merge(m, src)\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryRegistrationsCommitmentByCommitmentRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryRegistrationsCommitmentByCommitmentRequest proto.InternalMessageInfo\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) GetCommitment() []byte {\n\tif m != nil {\n\t\treturn m.Commitment\n\t}\n\treturn nil\n}\n\ntype QueryRegistrationsCommitmentByCommitmentResponse struct {\n\tRegistrationsCommitments []*RegistrationsCommitment `protobuf:\"bytes,1,rep,name=registrations_commitments,json=registrationsCommitments,proto3\" json:\"registrations_commitments,omitempty\"`\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) Reset() {\n\t*m = QueryRegistrationsCommitmentByCommitmentResponse{}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) String() string {\n\treturn proto.CompactTextString(m)\n}\nfunc (*QueryRegistrationsCommitmentByCommitmentResponse) ProtoMessage() {}\nfunc (*QueryRegistrationsCommitmentByCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{19}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryRegistrationsCommitmentByCommitmentResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryRegistrationsCommitmentByCommitmentResponse.Merge(m, src)\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryRegistrationsCommitmentByCommitmentResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryRegistrationsCommitmentByCommitmentResponse proto.InternalMessageInfo\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) GetRegistrationsCommitments() []*RegistrationsCommitment {\n\tif m != nil {\n\t\treturn m.RegistrationsCommitments\n\t}\n\treturn nil\n}\n\ntype QueryGenerateCommitmentRequest struct {\n\tPolicyId string          `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tObjects  []*types.Object `protobuf:\"bytes,2,rep,name=objects,proto3\" json:\"objects,omitempty\"`\n\tActor    *types.Actor    `protobuf:\"bytes,3,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n}\n\nfunc (m *QueryGenerateCommitmentRequest) Reset()         { *m = QueryGenerateCommitmentRequest{} }\nfunc (m *QueryGenerateCommitmentRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryGenerateCommitmentRequest) ProtoMessage()    {}\nfunc (*QueryGenerateCommitmentRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{20}\n}\nfunc (m *QueryGenerateCommitmentRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryGenerateCommitmentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryGenerateCommitmentRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryGenerateCommitmentRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryGenerateCommitmentRequest.Merge(m, src)\n}\nfunc (m *QueryGenerateCommitmentRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryGenerateCommitmentRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryGenerateCommitmentRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryGenerateCommitmentRequest proto.InternalMessageInfo\n\nfunc (m *QueryGenerateCommitmentRequest) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryGenerateCommitmentRequest) GetObjects() []*types.Object {\n\tif m != nil {\n\t\treturn m.Objects\n\t}\n\treturn nil\n}\n\nfunc (m *QueryGenerateCommitmentRequest) GetActor() *types.Actor {\n\tif m != nil {\n\t\treturn m.Actor\n\t}\n\treturn nil\n}\n\ntype QueryGenerateCommitmentResponse struct {\n\tCommitment    []byte               `protobuf:\"bytes,1,opt,name=commitment,proto3\" json:\"commitment,omitempty\"`\n\tHexCommitment string               `protobuf:\"bytes,2,opt,name=hex_commitment,json=hexCommitment,proto3\" json:\"hex_commitment,omitempty\"`\n\tProofs        []*RegistrationProof `protobuf:\"bytes,3,rep,name=proofs,proto3\" json:\"proofs,omitempty\"`\n\tProofsJson    []string             `protobuf:\"bytes,4,rep,name=proofs_json,json=proofsJson,proto3\" json:\"proofs_json,omitempty\"`\n}\n\nfunc (m *QueryGenerateCommitmentResponse) Reset()         { *m = QueryGenerateCommitmentResponse{} }\nfunc (m *QueryGenerateCommitmentResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryGenerateCommitmentResponse) ProtoMessage()    {}\nfunc (*QueryGenerateCommitmentResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{21}\n}\nfunc (m *QueryGenerateCommitmentResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryGenerateCommitmentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryGenerateCommitmentResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryGenerateCommitmentResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryGenerateCommitmentResponse.Merge(m, src)\n}\nfunc (m *QueryGenerateCommitmentResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryGenerateCommitmentResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryGenerateCommitmentResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryGenerateCommitmentResponse proto.InternalMessageInfo\n\nfunc (m *QueryGenerateCommitmentResponse) GetCommitment() []byte {\n\tif m != nil {\n\t\treturn m.Commitment\n\t}\n\treturn nil\n}\n\nfunc (m *QueryGenerateCommitmentResponse) GetHexCommitment() string {\n\tif m != nil {\n\t\treturn m.HexCommitment\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryGenerateCommitmentResponse) GetProofs() []*RegistrationProof {\n\tif m != nil {\n\t\treturn m.Proofs\n\t}\n\treturn nil\n}\n\nfunc (m *QueryGenerateCommitmentResponse) GetProofsJson() []string {\n\tif m != nil {\n\t\treturn m.ProofsJson\n\t}\n\treturn nil\n}\n\ntype QueryHijackAttemptsByPolicyRequest struct {\n\tPolicyId string `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n}\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) Reset()         { *m = QueryHijackAttemptsByPolicyRequest{} }\nfunc (m *QueryHijackAttemptsByPolicyRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryHijackAttemptsByPolicyRequest) ProtoMessage()    {}\nfunc (*QueryHijackAttemptsByPolicyRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{22}\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryHijackAttemptsByPolicyRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryHijackAttemptsByPolicyRequest.Merge(m, src)\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryHijackAttemptsByPolicyRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryHijackAttemptsByPolicyRequest proto.InternalMessageInfo\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\ntype QueryHijackAttemptsByPolicyResponse struct {\n\tEvents []*AmendmentEvent `protobuf:\"bytes,1,rep,name=events,proto3\" json:\"events,omitempty\"`\n}\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) Reset()         { *m = QueryHijackAttemptsByPolicyResponse{} }\nfunc (m *QueryHijackAttemptsByPolicyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryHijackAttemptsByPolicyResponse) ProtoMessage()    {}\nfunc (*QueryHijackAttemptsByPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0e48f8debbc27977, []int{23}\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryHijackAttemptsByPolicyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryHijackAttemptsByPolicyResponse.Merge(m, src)\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryHijackAttemptsByPolicyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryHijackAttemptsByPolicyResponse proto.InternalMessageInfo\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) GetEvents() []*AmendmentEvent {\n\tif m != nil {\n\t\treturn m.Events\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryParamsRequest)(nil), \"sourcehub.acp.QueryParamsRequest\")\n\tproto.RegisterType((*QueryParamsResponse)(nil), \"sourcehub.acp.QueryParamsResponse\")\n\tproto.RegisterType((*QueryPolicyRequest)(nil), \"sourcehub.acp.QueryPolicyRequest\")\n\tproto.RegisterType((*QueryPolicyResponse)(nil), \"sourcehub.acp.QueryPolicyResponse\")\n\tproto.RegisterType((*QueryPolicyIdsRequest)(nil), \"sourcehub.acp.QueryPolicyIdsRequest\")\n\tproto.RegisterType((*QueryPolicyIdsResponse)(nil), \"sourcehub.acp.QueryPolicyIdsResponse\")\n\tproto.RegisterType((*QueryFilterRelationshipsRequest)(nil), \"sourcehub.acp.QueryFilterRelationshipsRequest\")\n\tproto.RegisterType((*QueryFilterRelationshipsResponse)(nil), \"sourcehub.acp.QueryFilterRelationshipsResponse\")\n\tproto.RegisterType((*QueryVerifyAccessRequestRequest)(nil), \"sourcehub.acp.QueryVerifyAccessRequestRequest\")\n\tproto.RegisterType((*QueryVerifyAccessRequestResponse)(nil), \"sourcehub.acp.QueryVerifyAccessRequestResponse\")\n\tproto.RegisterType((*QueryValidatePolicyRequest)(nil), \"sourcehub.acp.QueryValidatePolicyRequest\")\n\tproto.RegisterType((*QueryValidatePolicyResponse)(nil), \"sourcehub.acp.QueryValidatePolicyResponse\")\n\tproto.RegisterType((*QueryAccessDecisionRequest)(nil), \"sourcehub.acp.QueryAccessDecisionRequest\")\n\tproto.RegisterType((*QueryAccessDecisionResponse)(nil), \"sourcehub.acp.QueryAccessDecisionResponse\")\n\tproto.RegisterType((*QueryObjectOwnerRequest)(nil), \"sourcehub.acp.QueryObjectOwnerRequest\")\n\tproto.RegisterType((*QueryObjectOwnerResponse)(nil), \"sourcehub.acp.QueryObjectOwnerResponse\")\n\tproto.RegisterType((*QueryRegistrationsCommitmentRequest)(nil), \"sourcehub.acp.QueryRegistrationsCommitmentRequest\")\n\tproto.RegisterType((*QueryRegistrationsCommitmentResponse)(nil), \"sourcehub.acp.QueryRegistrationsCommitmentResponse\")\n\tproto.RegisterType((*QueryRegistrationsCommitmentByCommitmentRequest)(nil), \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentRequest\")\n\tproto.RegisterType((*QueryRegistrationsCommitmentByCommitmentResponse)(nil), \"sourcehub.acp.QueryRegistrationsCommitmentByCommitmentResponse\")\n\tproto.RegisterType((*QueryGenerateCommitmentRequest)(nil), \"sourcehub.acp.QueryGenerateCommitmentRequest\")\n\tproto.RegisterType((*QueryGenerateCommitmentResponse)(nil), \"sourcehub.acp.QueryGenerateCommitmentResponse\")\n\tproto.RegisterType((*QueryHijackAttemptsByPolicyRequest)(nil), \"sourcehub.acp.QueryHijackAttemptsByPolicyRequest\")\n\tproto.RegisterType((*QueryHijackAttemptsByPolicyResponse)(nil), \"sourcehub.acp.QueryHijackAttemptsByPolicyResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/query.proto\", fileDescriptor_0e48f8debbc27977) }\n\nvar fileDescriptor_0e48f8debbc27977 = []byte{\n\t// 1497 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xcf, 0x6f, 0xdc, 0xc4,\n\t0x17, 0x8f, 0x93, 0x76, 0x9b, 0xbc, 0x34, 0x51, 0xbf, 0xd3, 0x5f, 0x5b, 0xf7, 0xcb, 0x36, 0x38,\n\t0x49, 0x9b, 0x86, 0x62, 0x37, 0x89, 0x5a, 0x52, 0xa1, 0xb6, 0x34, 0xa5, 0x3f, 0x28, 0x54, 0x69,\n\t0x5d, 0x40, 0x08, 0x90, 0x2c, 0xc7, 0x3b, 0xdd, 0x75, 0xbb, 0xeb, 0x71, 0x3d, 0x4e, 0xda, 0x50,\n\t0x7a, 0x00, 0x09, 0x89, 0x4a, 0x1c, 0x90, 0x38, 0x70, 0xe7, 0x80, 0x38, 0x80, 0xc4, 0x1d, 0x01,\n\t0x42, 0x5c, 0x7a, 0x42, 0x95, 0xb8, 0x70, 0x42, 0xa8, 0x45, 0xe2, 0x0f, 0xe0, 0x1f, 0x40, 0x9e,\n\t0x79, 0xde, 0xd8, 0xbb, 0x63, 0x67, 0xd3, 0x4b, 0x6b, 0x7b, 0xde, 0x8f, 0xcf, 0xe7, 0xcd, 0x9b,\n\t0x37, 0x9f, 0x0d, 0x1c, 0xe0, 0x6c, 0x35, 0xf2, 0x68, 0x73, 0x75, 0xc5, 0x72, 0xbd, 0xd0, 0xba,\n\t0xb3, 0x4a, 0xa3, 0x75, 0x33, 0x8c, 0x58, 0xcc, 0xc8, 0x58, 0x67, 0xc9, 0x74, 0xbd, 0x50, 0xff,\n\t0x9f, 0xdb, 0xf6, 0x03, 0x66, 0x89, 0x7f, 0xa5, 0x85, 0x3e, 0xeb, 0x31, 0xde, 0x66, 0xdc, 0x5a,\n\t0x71, 0x39, 0x95, 0xae, 0xd6, 0xda, 0xdc, 0x0a, 0x8d, 0xdd, 0x39, 0x2b, 0x74, 0x1b, 0x7e, 0xe0,\n\t0xc6, 0x3e, 0x0b, 0xd0, 0x76, 0x4f, 0x83, 0x35, 0x98, 0x78, 0xb4, 0x92, 0x27, 0xfc, 0xfa, 0xff,\n\t0x06, 0x63, 0x8d, 0x16, 0xb5, 0xdc, 0xd0, 0xb7, 0xdc, 0x20, 0x60, 0xb1, 0x70, 0xe1, 0xb8, 0x3a,\n\t0x99, 0x07, 0xe7, 0x7a, 0x1e, 0xe5, 0xdc, 0xa9, 0x53, 0xcf, 0xe7, 0x1b, 0x81, 0x6b, 0x79, 0x23,\n\t0x8f, 0xb5, 0xdb, 0x7e, 0xdc, 0xa6, 0x41, 0x8c, 0xeb, 0x7a, 0x7e, 0x3d, 0x74, 0x23, 0xb7, 0xcd,\n\t0xd5, 0x6b, 0x11, 0xf5, 0x58, 0x54, 0xc7, 0xb5, 0x89, 0xee, 0xb5, 0x86, 0xcf, 0xe3, 0x28, 0x4b,\n\t0x09, 0xe1, 0x05, 0x34, 0xbe, 0xcb, 0xa2, 0xdb, 0x89, 0x95, 0xe3, 0xb1, 0x88, 0x5a, 0x21, 0x6b,\n\t0xf9, 0x1e, 0x56, 0x51, 0x3f, 0x5a, 0x6a, 0xe4, 0xf0, 0x26, 0x8b, 0xe2, 0x4d, 0x4c, 0x23, 0xda,\n\t0x92, 0x65, 0x69, 0xfa, 0x21, 0x9a, 0xce, 0xf7, 0x61, 0xea, 0x70, 0xda, 0xa2, 0x5e, 0xcc, 0x22,\n\t0xf4, 0x99, 0x2a, 0xf4, 0xb9, 0xb3, 0x4a, 0x39, 0x82, 0x30, 0xf6, 0x00, 0xb9, 0x9e, 0xec, 0xe4,\n\t0x35, 0x51, 0x27, 0x5b, 0xae, 0x19, 0xcb, 0xb0, 0x3b, 0xf7, 0x95, 0x87, 0x2c, 0xe0, 0x94, 0x2c,\n\t0x42, 0x45, 0xd6, 0xb3, 0xaa, 0x4d, 0x68, 0x33, 0xa3, 0xf3, 0x7b, 0xcd, 0x5c, 0xcf, 0x98, 0xd2,\n\t0x7c, 0x69, 0xe4, 0xd1, 0x9f, 0x87, 0x06, 0xbe, 0xf9, 0xe7, 0xfb, 0x59, 0xcd, 0x46, 0x7b, 0x63,\n\t0x2a, 0x4d, 0x23, 0xca, 0x80, 0x69, 0xc8, 0x38, 0x0c, 0xfa, 0x75, 0x11, 0x6b, 0xc4, 0x1e, 0xf4,\n\t0xeb, 0xc6, 0x95, 0x34, 0x2d, 0x5a, 0x61, 0xda, 0x05, 0xa8, 0xc8, 0xad, 0xc2, 0xb4, 0x07, 0xbb,\n\t0xd3, 0xa2, 0x79, 0x62, 0x62, 0xa3, 0xa9, 0xe1, 0xc0, 0xde, 0x4c, 0xac, 0xd7, 0xea, 0x29, 0x37,\n\t0x72, 0x11, 0x60, 0xa3, 0x5b, 0x31, 0xe2, 0x61, 0x53, 0xb6, 0xb6, 0x99, 0xb4, 0xb6, 0x29, 0x4f,\n\t0x05, 0xb6, 0xb6, 0x79, 0xcd, 0x6d, 0x50, 0xf4, 0xb5, 0x33, 0x9e, 0x06, 0x87, 0x7d, 0xdd, 0x09,\n\t0x10, 0xef, 0x2e, 0x18, 0xf2, 0xeb, 0x49, 0x8d, 0x86, 0x66, 0x46, 0xec, 0xe4, 0x91, 0x5c, 0xca,\n\t0xe5, 0x1c, 0x14, 0x39, 0x8f, 0x6c, 0x9a, 0x53, 0x86, 0xcb, 0x25, 0xfd, 0x54, 0x83, 0x43, 0x22,\n\t0xeb, 0x45, 0xbf, 0x15, 0xd3, 0xc8, 0xce, 0xec, 0x7f, 0x87, 0xe0, 0x41, 0x18, 0xc1, 0x6e, 0xeb,\n\t0x14, 0x77, 0x38, 0x44, 0x90, 0xe4, 0x32, 0x0c, 0xa7, 0x7d, 0x82, 0x38, 0x8e, 0x99, 0xb9, 0x46,\n\t0x31, 0xd3, 0x46, 0x31, 0xb3, 0xc1, 0x6f, 0xa0, 0x8f, 0xdd, 0xf1, 0x36, 0x1c, 0x98, 0x28, 0x46,\n\t0x82, 0x95, 0x78, 0x19, 0x76, 0xc8, 0xed, 0x90, 0xd5, 0x18, 0x9d, 0x7f, 0xbe, 0x6b, 0xeb, 0xb2,\n\t0x6e, 0xb8, 0x81, 0xa9, 0x87, 0xf1, 0x59, 0xca, 0xf5, 0x6d, 0x1a, 0xf9, 0x37, 0xd7, 0xcf, 0x89,\n\t0x71, 0x90, 0xee, 0x44, 0x3f, 0x5c, 0xdf, 0x80, 0x71, 0x9c, 0x21, 0xd8, 0xf3, 0xc8, 0x78, 0xba,\n\t0x88, 0x71, 0x3e, 0xc5, 0x98, 0x9b, 0x7d, 0x35, 0x16, 0x91, 0xaf, 0x12, 0x0d, 0xf2, 0xdd, 0x03,\n\t0xdb, 0xd7, 0xdc, 0x16, 0x42, 0x19, 0xb6, 0xe5, 0x8b, 0xf1, 0x89, 0x06, 0xba, 0x74, 0x4d, 0x5e,\n\t0xdd, 0x98, 0xe6, 0x4f, 0xc1, 0x3e, 0xa8, 0x48, 0xc8, 0x48, 0x00, 0xdf, 0xc8, 0x32, 0xec, 0x6c,\n\t0xbb, 0x11, 0x6f, 0xba, 0x2d, 0x27, 0x5e, 0x0f, 0x69, 0x75, 0x68, 0x42, 0x9b, 0x19, 0x2f, 0xde,\n\t0x2e, 0x19, 0xf4, 0xaa, 0xf4, 0xf0, 0x83, 0xc6, 0x9b, 0xeb, 0x21, 0xb5, 0x47, 0x31, 0x42, 0xf2,\n\t0x92, 0x34, 0xcf, 0x41, 0x25, 0x8e, 0x32, 0xf4, 0x49, 0x89, 0x69, 0x14, 0xb1, 0xc8, 0x69, 0xf3,\n\t0x86, 0x28, 0xe0, 0x88, 0x3d, 0x2c, 0x3e, 0x5c, 0xe5, 0x0d, 0x72, 0xb2, 0x83, 0x7d, 0x48, 0x94,\n\t0xb6, 0x56, 0x8e, 0x2e, 0xe5, 0x66, 0x1c, 0xc3, 0x8a, 0xc8, 0x32, 0xbe, 0x8a, 0x23, 0xbe, 0x68,\n\t0x2e, 0xbc, 0x83, 0xb8, 0xbb, 0xad, 0x11, 0xf7, 0x29, 0x18, 0x4e, 0x2f, 0x09, 0x3c, 0xcf, 0xcf,\n\t0x75, 0xb5, 0x59, 0x97, 0x63, 0xc7, 0xdc, 0x08, 0x60, 0xbf, 0x88, 0xbc, 0xbc, 0x72, 0x8b, 0x7a,\n\t0xf1, 0xf2, 0xdd, 0x20, 0xe9, 0xe4, 0x3e, 0x5a, 0xeb, 0x24, 0x54, 0x98, 0x70, 0xc1, 0x96, 0x2a,\n\t0xe4, 0x2d, 0x03, 0xdb, 0x68, 0x6d, 0x7c, 0x00, 0xd5, 0xde, 0x7c, 0x48, 0x63, 0x12, 0xc6, 0xfc,\n\t0xa4, 0x55, 0x93, 0x8b, 0x87, 0x46, 0x34, 0xdd, 0x86, 0x9d, 0x3e, 0xb7, 0x3b, 0xdf, 0xc8, 0xa9,\n\t0xce, 0x2c, 0x94, 0x89, 0xfb, 0x38, 0x50, 0xe9, 0x44, 0x3c, 0x01, 0x93, 0x22, 0xb7, 0x9d, 0xb9,\n\t0xda, 0xf8, 0xf9, 0xce, 0xfd, 0xd9, 0x5b, 0xfc, 0x6d, 0xa2, 0xf8, 0x0f, 0x35, 0x98, 0x2a, 0xf7,\n\t0x43, 0xfc, 0x2e, 0x54, 0xb3, 0xb7, 0x26, 0x77, 0x36, 0xee, 0xe6, 0xce, 0x98, 0xed, 0x06, 0xab,\n\t0x8e, 0xb8, 0x3f, 0x52, 0x2f, 0x18, 0xd7, 0xc1, 0x2a, 0x83, 0xb2, 0xb4, 0xde, 0x4b, 0xa7, 0x06,\n\t0xd0, 0x85, 0x63, 0xa7, 0x9d, 0xf9, 0x62, 0x7c, 0xa9, 0xc1, 0xf1, 0xfe, 0x63, 0x22, 0x55, 0x0f,\n\t0x0e, 0x14, 0x51, 0x4d, 0x27, 0x5d, 0xbf, 0x5c, 0xab, 0x05, 0x5c, 0xb9, 0xf1, 0xad, 0x06, 0x35,\n\t0x81, 0xec, 0x12, 0x0d, 0x68, 0xe4, 0xc6, 0xb4, 0x97, 0x5c, 0x69, 0x8f, 0x2e, 0xc2, 0x0e, 0xd9,\n\t0x75, 0xbc, 0x3a, 0x28, 0x20, 0x6d, 0xd6, 0xa4, 0xa9, 0x39, 0x59, 0x80, 0xed, 0xae, 0xb8, 0x21,\n\t0x86, 0x72, 0xa7, 0x49, 0x31, 0x2f, 0x93, 0x2b, 0x41, 0xda, 0x1a, 0xbf, 0xa6, 0xe3, 0x5a, 0x05,\n\t0x17, 0xeb, 0xb6, 0xc9, 0x66, 0x90, 0x69, 0x18, 0x6f, 0xd2, 0x7b, 0xd9, 0xc6, 0x91, 0x03, 0x67,\n\t0xac, 0x49, 0xef, 0x6d, 0x84, 0x13, 0x3a, 0x24, 0x62, 0xec, 0x26, 0xaf, 0x0e, 0x09, 0x62, 0x13,\n\t0x25, 0xb5, 0xbe, 0x96, 0x18, 0xda, 0x68, 0x4f, 0x0e, 0xc1, 0xa8, 0x7c, 0x72, 0x6e, 0x71, 0x16,\n\t0x54, 0xb7, 0x89, 0x2b, 0x1a, 0xe4, 0xa7, 0x2b, 0x9c, 0x05, 0xc6, 0x39, 0x30, 0x04, 0x89, 0xcb,\n\t0xfe, 0x2d, 0xd7, 0xbb, 0x7d, 0x2e, 0x8e, 0x69, 0x3b, 0x8c, 0xf9, 0x52, 0x97, 0x70, 0x29, 0xab,\n\t0xbb, 0xf1, 0x3e, 0x9e, 0xb3, 0xa2, 0x10, 0x58, 0x8b, 0x13, 0x50, 0xa1, 0x6b, 0x99, 0x86, 0xe9,\n\t0x99, 0x59, 0x6d, 0x1a, 0xd4, 0x13, 0xba, 0x17, 0x12, 0x2b, 0x1b, 0x8d, 0xe7, 0x7f, 0xdb, 0x05,\n\t0xdb, 0x45, 0x78, 0xf2, 0x21, 0x54, 0xa4, 0xe0, 0x22, 0xdd, 0x43, 0xa0, 0x57, 0xd1, 0xe9, 0x46,\n\t0x99, 0x89, 0x44, 0x64, 0xbc, 0xf0, 0xf1, 0xef, 0x7f, 0x7f, 0x31, 0x38, 0x4d, 0x26, 0xad, 0xbc,\n\t0x74, 0x54, 0x29, 0x6a, 0xf2, 0x91, 0x06, 0x15, 0xc9, 0xa8, 0x20, 0x7d, 0xb6, 0x60, 0x05, 0xe9,\n\t0x73, 0x05, 0x31, 0x8e, 0x8b, 0xf4, 0xb3, 0x64, 0xa6, 0x3c, 0xbd, 0x70, 0xb2, 0xee, 0xfb, 0xf5,\n\t0x07, 0xe4, 0xa1, 0x06, 0x23, 0x1d, 0xf9, 0x45, 0xa6, 0x8a, 0x73, 0x6c, 0xc8, 0x3f, 0x7d, 0x7a,\n\t0x13, 0x2b, 0x04, 0x63, 0x09, 0x30, 0x47, 0xc9, 0x91, 0x3e, 0xc0, 0x38, 0x89, 0xc4, 0xfb, 0x51,\n\t0x83, 0xdd, 0x0a, 0x29, 0x44, 0x4c, 0x55, 0xbe, 0x62, 0xf5, 0xa6, 0x5b, 0x7d, 0xdb, 0x23, 0xd2,\n\t0x0b, 0x02, 0xe9, 0x59, 0x72, 0xba, 0x14, 0xe9, 0x4d, 0x11, 0xc1, 0xc9, 0xfe, 0x60, 0xe0, 0xd6,\n\t0xfd, 0x0e, 0xfe, 0x07, 0xe4, 0x27, 0x0d, 0x76, 0x2b, 0xa4, 0x8d, 0x1a, 0x7f, 0xb1, 0x22, 0x53,\n\t0xe3, 0x2f, 0xd1, 0x4c, 0xc6, 0x45, 0x81, 0xff, 0x15, 0x72, 0xa6, 0x14, 0xff, 0x9a, 0x88, 0xe0,\n\t0xe4, 0xf5, 0x5c, 0x8e, 0xc0, 0xd7, 0x1a, 0x8c, 0xe7, 0x85, 0x0d, 0x39, 0xaa, 0xc4, 0xa2, 0x12,\n\t0x61, 0xfa, 0x6c, 0x3f, 0xa6, 0x88, 0xf8, 0xb4, 0x40, 0xfc, 0x12, 0x39, 0x51, 0x8e, 0x18, 0x9d,\n\t0x9d, 0xb4, 0x63, 0xe5, 0xff, 0x0f, 0xc8, 0x57, 0x1a, 0x8c, 0xe7, 0x05, 0x89, 0x1a, 0xa8, 0x52,\n\t0x1b, 0xa9, 0x81, 0xaa, 0x85, 0x91, 0x71, 0x4a, 0x00, 0x5d, 0x20, 0x73, 0xa5, 0x40, 0xbb, 0x7e,\n\t0x67, 0xcb, 0xa3, 0xf5, 0x83, 0x06, 0xa3, 0x19, 0x91, 0x42, 0x0e, 0xab, 0xd2, 0xf6, 0xaa, 0x26,\n\t0xfd, 0xc8, 0xa6, 0x76, 0x88, 0xed, 0x3d, 0x81, 0xed, 0x2d, 0x72, 0xa3, 0x14, 0x9b, 0xbc, 0x91,\n\t0x1c, 0x96, 0xb8, 0x66, 0x77, 0xdb, 0xba, 0x2f, 0x57, 0xcc, 0x88, 0x4a, 0x87, 0x8d, 0x2f, 0x09,\n\t0xfa, 0x5f, 0x34, 0xd8, 0x5f, 0x70, 0xe1, 0x92, 0x79, 0x15, 0xc2, 0x72, 0x4d, 0xa4, 0x2f, 0x6c,\n\t0xc9, 0x67, 0x4b, 0x6d, 0x52, 0xa4, 0x23, 0xc8, 0xbf, 0x1a, 0x4c, 0xf6, 0xa1, 0x49, 0xc8, 0x99,\n\t0x2d, 0x60, 0x53, 0x08, 0x24, 0xfd, 0xec, 0x33, 0xfb, 0x23, 0xcf, 0xd7, 0x05, 0xcf, 0x0b, 0xe4,\n\t0xfc, 0x33, 0xf1, 0x74, 0x56, 0xd6, 0xb3, 0xac, 0xbf, 0xd3, 0x80, 0xf4, 0x0a, 0x08, 0xf2, 0xa2,\n\t0x0a, 0x64, 0xa1, 0x2e, 0xd2, 0xcd, 0x7e, 0xcd, 0x91, 0xc2, 0xa2, 0xa0, 0x30, 0x4f, 0x8e, 0x97,\n\t0x52, 0x68, 0x60, 0x80, 0x2c, 0xde, 0x9f, 0x35, 0xd8, 0xa7, 0xbe, 0xe8, 0xc9, 0x9c, 0x0a, 0x44,\n\t0xa9, 0xae, 0xd0, 0xe7, 0xb7, 0xe2, 0x82, 0xd8, 0xcf, 0x08, 0xec, 0x8b, 0xe4, 0x64, 0x29, 0xf6,\n\t0xa6, 0x08, 0xe2, 0xb8, 0x18, 0x25, 0xa9, 0xba, 0x3c, 0x4d, 0x4b, 0x97, 0x1f, 0x3d, 0xa9, 0x69,\n\t0x8f, 0x9f, 0xd4, 0xb4, 0xbf, 0x9e, 0xd4, 0xb4, 0xcf, 0x9f, 0xd6, 0x06, 0x1e, 0x3f, 0xad, 0x0d,\n\t0xfc, 0xf1, 0xb4, 0x36, 0xf0, 0xae, 0xd9, 0xf0, 0xe3, 0x04, 0x89, 0xc7, 0xda, 0x85, 0xb1, 0xef,\n\t0x89, 0xe8, 0xc9, 0xef, 0x53, 0xbe, 0x52, 0x11, 0x7f, 0x52, 0x5a, 0xf8, 0x2f, 0x00, 0x00, 0xff,\n\t0xff, 0x8b, 0xea, 0x53, 0x0b, 0x65, 0x14, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Policy returns a Policy with the given ID.\n\tPolicy(ctx context.Context, in *QueryPolicyRequest, opts ...grpc.CallOption) (*QueryPolicyResponse, error)\n\t// PolicyIds returns list of Ids for Policies registered in the system.\n\tPolicyIds(ctx context.Context, in *QueryPolicyIdsRequest, opts ...grpc.CallOption) (*QueryPolicyIdsResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(ctx context.Context, in *QueryFilterRelationshipsRequest, opts ...grpc.CallOption) (*QueryFilterRelationshipsResponse, error)\n\t// VerifyAccessRequest verifies whether an Access Request is accepted with respect to the given Policy's Relation Graph.\n\tVerifyAccessRequest(ctx context.Context, in *QueryVerifyAccessRequestRequest, opts ...grpc.CallOption) (*QueryVerifyAccessRequestResponse, error)\n\t// ValidatePolicy verifies whether the given Policy definition is properly formatted\n\tValidatePolicy(ctx context.Context, in *QueryValidatePolicyRequest, opts ...grpc.CallOption) (*QueryValidatePolicyResponse, error)\n\t// AccessDecision queries the system for an AccessDecision with the given ID.\n\tAccessDecision(ctx context.Context, in *QueryAccessDecisionRequest, opts ...grpc.CallOption) (*QueryAccessDecisionResponse, error)\n\t// ObjectOwner returns the Actor ID of the the given Object's owner\n\tObjectOwner(ctx context.Context, in *QueryObjectOwnerRequest, opts ...grpc.CallOption) (*QueryObjectOwnerResponse, error)\n\t// RegistrationsCommitment returns a specific RegistrationsCommitment record\n\tRegistrationsCommitment(ctx context.Context, in *QueryRegistrationsCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentResponse, error)\n\t// RegistrationsCommitmentByCommitment returns all RegistrationCommitment records with a given commitment\n\tRegistrationsCommitmentByCommitment(ctx context.Context, in *QueryRegistrationsCommitmentByCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentByCommitmentResponse, error)\n\t// GenerateCommitment generates a Object registration commitment for the given objects\n\t//\n\t// Note: this operation assures the commitment is valid (no object is registered and the policy exists)\n\t// but exposes the Object Ids to the RPC node.\n\t// ONLY use this method if the node is trusted\n\tGenerateCommitment(ctx context.Context, in *QueryGenerateCommitmentRequest, opts ...grpc.CallOption) (*QueryGenerateCommitmentResponse, error)\n\t// HijackAttemptsByPolicy returns, for a given policy, all AmendmentEvent whose hijack flag is true\n\tHijackAttemptsByPolicy(ctx context.Context, in *QueryHijackAttemptsByPolicyRequest, opts ...grpc.CallOption) (*QueryHijackAttemptsByPolicyResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/Params\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Policy(ctx context.Context, in *QueryPolicyRequest, opts ...grpc.CallOption) (*QueryPolicyResponse, error) {\n\tout := new(QueryPolicyResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/Policy\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) PolicyIds(ctx context.Context, in *QueryPolicyIdsRequest, opts ...grpc.CallOption) (*QueryPolicyIdsResponse, error) {\n\tout := new(QueryPolicyIdsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/PolicyIds\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) FilterRelationships(ctx context.Context, in *QueryFilterRelationshipsRequest, opts ...grpc.CallOption) (*QueryFilterRelationshipsResponse, error) {\n\tout := new(QueryFilterRelationshipsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/FilterRelationships\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) VerifyAccessRequest(ctx context.Context, in *QueryVerifyAccessRequestRequest, opts ...grpc.CallOption) (*QueryVerifyAccessRequestResponse, error) {\n\tout := new(QueryVerifyAccessRequestResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/VerifyAccessRequest\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) ValidatePolicy(ctx context.Context, in *QueryValidatePolicyRequest, opts ...grpc.CallOption) (*QueryValidatePolicyResponse, error) {\n\tout := new(QueryValidatePolicyResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/ValidatePolicy\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) AccessDecision(ctx context.Context, in *QueryAccessDecisionRequest, opts ...grpc.CallOption) (*QueryAccessDecisionResponse, error) {\n\tout := new(QueryAccessDecisionResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/AccessDecision\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) ObjectOwner(ctx context.Context, in *QueryObjectOwnerRequest, opts ...grpc.CallOption) (*QueryObjectOwnerResponse, error) {\n\tout := new(QueryObjectOwnerResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/ObjectOwner\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) RegistrationsCommitment(ctx context.Context, in *QueryRegistrationsCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentResponse, error) {\n\tout := new(QueryRegistrationsCommitmentResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/RegistrationsCommitment\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) RegistrationsCommitmentByCommitment(ctx context.Context, in *QueryRegistrationsCommitmentByCommitmentRequest, opts ...grpc.CallOption) (*QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\tout := new(QueryRegistrationsCommitmentByCommitmentResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/RegistrationsCommitmentByCommitment\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) GenerateCommitment(ctx context.Context, in *QueryGenerateCommitmentRequest, opts ...grpc.CallOption) (*QueryGenerateCommitmentResponse, error) {\n\tout := new(QueryGenerateCommitmentResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/GenerateCommitment\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) HijackAttemptsByPolicy(ctx context.Context, in *QueryHijackAttemptsByPolicyRequest, opts ...grpc.CallOption) (*QueryHijackAttemptsByPolicyResponse, error) {\n\tout := new(QueryHijackAttemptsByPolicyResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Query/HijackAttemptsByPolicy\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Policy returns a Policy with the given ID.\n\tPolicy(context.Context, *QueryPolicyRequest) (*QueryPolicyResponse, error)\n\t// PolicyIds returns list of Ids for Policies registered in the system.\n\tPolicyIds(context.Context, *QueryPolicyIdsRequest) (*QueryPolicyIdsResponse, error)\n\t// FilterRelationships returns filtered set of Relationships in a Policy.\n\tFilterRelationships(context.Context, *QueryFilterRelationshipsRequest) (*QueryFilterRelationshipsResponse, error)\n\t// VerifyAccessRequest verifies whether an Access Request is accepted with respect to the given Policy's Relation Graph.\n\tVerifyAccessRequest(context.Context, *QueryVerifyAccessRequestRequest) (*QueryVerifyAccessRequestResponse, error)\n\t// ValidatePolicy verifies whether the given Policy definition is properly formatted\n\tValidatePolicy(context.Context, *QueryValidatePolicyRequest) (*QueryValidatePolicyResponse, error)\n\t// AccessDecision queries the system for an AccessDecision with the given ID.\n\tAccessDecision(context.Context, *QueryAccessDecisionRequest) (*QueryAccessDecisionResponse, error)\n\t// ObjectOwner returns the Actor ID of the the given Object's owner\n\tObjectOwner(context.Context, *QueryObjectOwnerRequest) (*QueryObjectOwnerResponse, error)\n\t// RegistrationsCommitment returns a specific RegistrationsCommitment record\n\tRegistrationsCommitment(context.Context, *QueryRegistrationsCommitmentRequest) (*QueryRegistrationsCommitmentResponse, error)\n\t// RegistrationsCommitmentByCommitment returns all RegistrationCommitment records with a given commitment\n\tRegistrationsCommitmentByCommitment(context.Context, *QueryRegistrationsCommitmentByCommitmentRequest) (*QueryRegistrationsCommitmentByCommitmentResponse, error)\n\t// GenerateCommitment generates a Object registration commitment for the given objects\n\t//\n\t// Note: this operation assures the commitment is valid (no object is registered and the policy exists)\n\t// but exposes the Object Ids to the RPC node.\n\t// ONLY use this method if the node is trusted\n\tGenerateCommitment(context.Context, *QueryGenerateCommitmentRequest) (*QueryGenerateCommitmentResponse, error)\n\t// HijackAttemptsByPolicy returns, for a given policy, all AmendmentEvent whose hijack flag is true\n\tHijackAttemptsByPolicy(context.Context, *QueryHijackAttemptsByPolicyRequest) (*QueryHijackAttemptsByPolicyResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (*UnimplementedQueryServer) Policy(ctx context.Context, req *QueryPolicyRequest) (*QueryPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Policy not implemented\")\n}\nfunc (*UnimplementedQueryServer) PolicyIds(ctx context.Context, req *QueryPolicyIdsRequest) (*QueryPolicyIdsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PolicyIds not implemented\")\n}\nfunc (*UnimplementedQueryServer) FilterRelationships(ctx context.Context, req *QueryFilterRelationshipsRequest) (*QueryFilterRelationshipsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method FilterRelationships not implemented\")\n}\nfunc (*UnimplementedQueryServer) VerifyAccessRequest(ctx context.Context, req *QueryVerifyAccessRequestRequest) (*QueryVerifyAccessRequestResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method VerifyAccessRequest not implemented\")\n}\nfunc (*UnimplementedQueryServer) ValidatePolicy(ctx context.Context, req *QueryValidatePolicyRequest) (*QueryValidatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ValidatePolicy not implemented\")\n}\nfunc (*UnimplementedQueryServer) AccessDecision(ctx context.Context, req *QueryAccessDecisionRequest) (*QueryAccessDecisionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AccessDecision not implemented\")\n}\nfunc (*UnimplementedQueryServer) ObjectOwner(ctx context.Context, req *QueryObjectOwnerRequest) (*QueryObjectOwnerResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ObjectOwner not implemented\")\n}\nfunc (*UnimplementedQueryServer) RegistrationsCommitment(ctx context.Context, req *QueryRegistrationsCommitmentRequest) (*QueryRegistrationsCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegistrationsCommitment not implemented\")\n}\nfunc (*UnimplementedQueryServer) RegistrationsCommitmentByCommitment(ctx context.Context, req *QueryRegistrationsCommitmentByCommitmentRequest) (*QueryRegistrationsCommitmentByCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegistrationsCommitmentByCommitment not implemented\")\n}\nfunc (*UnimplementedQueryServer) GenerateCommitment(ctx context.Context, req *QueryGenerateCommitmentRequest) (*QueryGenerateCommitmentResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GenerateCommitment not implemented\")\n}\nfunc (*UnimplementedQueryServer) HijackAttemptsByPolicy(ctx context.Context, req *QueryHijackAttemptsByPolicyRequest) (*QueryHijackAttemptsByPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method HijackAttemptsByPolicy not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/Params\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Policy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Policy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/Policy\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Policy(ctx, req.(*QueryPolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_PolicyIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPolicyIdsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).PolicyIds(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/PolicyIds\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).PolicyIds(ctx, req.(*QueryPolicyIdsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_FilterRelationships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryFilterRelationshipsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).FilterRelationships(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/FilterRelationships\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).FilterRelationships(ctx, req.(*QueryFilterRelationshipsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_VerifyAccessRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryVerifyAccessRequestRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).VerifyAccessRequest(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/VerifyAccessRequest\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).VerifyAccessRequest(ctx, req.(*QueryVerifyAccessRequestRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_ValidatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryValidatePolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).ValidatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/ValidatePolicy\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).ValidatePolicy(ctx, req.(*QueryValidatePolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_AccessDecision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAccessDecisionRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).AccessDecision(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/AccessDecision\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).AccessDecision(ctx, req.(*QueryAccessDecisionRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_ObjectOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryObjectOwnerRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).ObjectOwner(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/ObjectOwner\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).ObjectOwner(ctx, req.(*QueryObjectOwnerRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_RegistrationsCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryRegistrationsCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).RegistrationsCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/RegistrationsCommitment\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).RegistrationsCommitment(ctx, req.(*QueryRegistrationsCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_RegistrationsCommitmentByCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryRegistrationsCommitmentByCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).RegistrationsCommitmentByCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/RegistrationsCommitmentByCommitment\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).RegistrationsCommitmentByCommitment(ctx, req.(*QueryRegistrationsCommitmentByCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_GenerateCommitment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryGenerateCommitmentRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).GenerateCommitment(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/GenerateCommitment\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).GenerateCommitment(ctx, req.(*QueryGenerateCommitmentRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_HijackAttemptsByPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryHijackAttemptsByPolicyRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).HijackAttemptsByPolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Query/HijackAttemptsByPolicy\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).HijackAttemptsByPolicy(ctx, req.(*QueryHijackAttemptsByPolicyRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.acp.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Policy\",\n\t\t\tHandler:    _Query_Policy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PolicyIds\",\n\t\t\tHandler:    _Query_PolicyIds_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"FilterRelationships\",\n\t\t\tHandler:    _Query_FilterRelationships_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"VerifyAccessRequest\",\n\t\t\tHandler:    _Query_VerifyAccessRequest_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ValidatePolicy\",\n\t\t\tHandler:    _Query_ValidatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AccessDecision\",\n\t\t\tHandler:    _Query_AccessDecision_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ObjectOwner\",\n\t\t\tHandler:    _Query_ObjectOwner_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegistrationsCommitment\",\n\t\t\tHandler:    _Query_RegistrationsCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegistrationsCommitmentByCommitment\",\n\t\t\tHandler:    _Query_RegistrationsCommitmentByCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GenerateCommitment\",\n\t\t\tHandler:    _Query_GenerateCommitment_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"HijackAttemptsByPolicy\",\n\t\t\tHandler:    _Query_HijackAttemptsByPolicy_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/acp/query.proto\",\n}\n\nfunc (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPolicyRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPolicyRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPolicyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPolicyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPolicyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPolicyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPolicyIdsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPolicyIdsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPolicyIdsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPolicyIdsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPolicyIdsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPolicyIdsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Ids) > 0 {\n\t\tfor iNdEx := len(m.Ids) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.Ids[iNdEx])\n\t\t\tcopy(dAtA[i:], m.Ids[iNdEx])\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Ids[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryFilterRelationshipsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryFilterRelationshipsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryFilterRelationshipsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Selector != nil {\n\t\t{\n\t\t\tsize, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryFilterRelationshipsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryFilterRelationshipsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryFilterRelationshipsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Records) > 0 {\n\t\tfor iNdEx := len(m.Records) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Records[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.AccessRequest != nil {\n\t\t{\n\t\t\tsize, err := m.AccessRequest.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryVerifyAccessRequestResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryVerifyAccessRequestResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryVerifyAccessRequestResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Valid {\n\t\ti--\n\t\tif m.Valid {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryValidatePolicyRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryValidatePolicyRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryValidatePolicyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.MarshalType != 0 {\n\t\ti = encodeVarintQuery(dAtA, i, uint64(m.MarshalType))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Policy) > 0 {\n\t\ti -= len(m.Policy)\n\t\tcopy(dAtA[i:], m.Policy)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Policy)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryValidatePolicyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryValidatePolicyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryValidatePolicyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Policy != nil {\n\t\t{\n\t\t\tsize, err := m.Policy.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.ErrorMsg) > 0 {\n\t\ti -= len(m.ErrorMsg)\n\t\tcopy(dAtA[i:], m.ErrorMsg)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.ErrorMsg)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Valid {\n\t\ti--\n\t\tif m.Valid {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAccessDecisionRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAccessDecisionRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAccessDecisionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAccessDecisionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAccessDecisionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAccessDecisionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Decision != nil {\n\t\t{\n\t\t\tsize, err := m.Decision.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryObjectOwnerRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryObjectOwnerRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryObjectOwnerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryObjectOwnerResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryObjectOwnerResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryObjectOwnerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.IsRegistered {\n\t\ti--\n\t\tif m.IsRegistered {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryRegistrationsCommitmentRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryRegistrationsCommitmentRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryRegistrationsCommitmentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Id != 0 {\n\t\ti = encodeVarintQuery(dAtA, i, uint64(m.Id))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryRegistrationsCommitmentResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryRegistrationsCommitmentResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryRegistrationsCommitmentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitment != nil {\n\t\t{\n\t\t\tsize, err := m.RegistrationsCommitment.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Commitment) > 0 {\n\t\ti -= len(m.Commitment)\n\t\tcopy(dAtA[i:], m.Commitment)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Commitment)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.RegistrationsCommitments) > 0 {\n\t\tfor iNdEx := len(m.RegistrationsCommitments) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.RegistrationsCommitments[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryGenerateCommitmentRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryGenerateCommitmentRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryGenerateCommitmentRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Actor != nil {\n\t\t{\n\t\t\tsize, err := m.Actor.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Objects) > 0 {\n\t\tfor iNdEx := len(m.Objects) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Objects[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryGenerateCommitmentResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryGenerateCommitmentResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryGenerateCommitmentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.ProofsJson) > 0 {\n\t\tfor iNdEx := len(m.ProofsJson) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.ProofsJson[iNdEx])\n\t\t\tcopy(dAtA[i:], m.ProofsJson[iNdEx])\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.ProofsJson[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Proofs) > 0 {\n\t\tfor iNdEx := len(m.Proofs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Proofs[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.HexCommitment) > 0 {\n\t\ti -= len(m.HexCommitment)\n\t\tcopy(dAtA[i:], m.HexCommitment)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.HexCommitment)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Commitment) > 0 {\n\t\ti -= len(m.Commitment)\n\t\tcopy(dAtA[i:], m.Commitment)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Commitment)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Events) > 0 {\n\t\tfor iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryParamsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc (m *QueryPolicyRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPolicyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPolicyIdsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPolicyIdsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Ids) > 0 {\n\t\tfor _, s := range m.Ids {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryFilterRelationshipsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Selector != nil {\n\t\tl = m.Selector.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryFilterRelationshipsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Records) > 0 {\n\t\tfor _, e := range m.Records {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *QueryVerifyAccessRequestRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.AccessRequest != nil {\n\t\tl = m.AccessRequest.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryVerifyAccessRequestResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Valid {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *QueryValidatePolicyRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Policy)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.MarshalType != 0 {\n\t\tn += 1 + sovQuery(uint64(m.MarshalType))\n\t}\n\treturn n\n}\n\nfunc (m *QueryValidatePolicyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Valid {\n\t\tn += 2\n\t}\n\tl = len(m.ErrorMsg)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Policy != nil {\n\t\tl = m.Policy.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAccessDecisionRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAccessDecisionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Decision != nil {\n\t\tl = m.Decision.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryObjectOwnerRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryObjectOwnerResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.IsRegistered {\n\t\tn += 2\n\t}\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryRegistrationsCommitmentRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Id != 0 {\n\t\tn += 1 + sovQuery(uint64(m.Id))\n\t}\n\treturn n\n}\n\nfunc (m *QueryRegistrationsCommitmentResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RegistrationsCommitment != nil {\n\t\tl = m.RegistrationsCommitment.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Commitment)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.RegistrationsCommitments) > 0 {\n\t\tfor _, e := range m.RegistrationsCommitments {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *QueryGenerateCommitmentRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif len(m.Objects) > 0 {\n\t\tfor _, e := range m.Objects {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Actor != nil {\n\t\tl = m.Actor.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryGenerateCommitmentResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Commitment)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.HexCommitment)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif len(m.Proofs) > 0 {\n\t\tfor _, e := range m.Proofs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif len(m.ProofsJson) > 0 {\n\t\tfor _, s := range m.ProofsJson {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *QueryHijackAttemptsByPolicyRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryHijackAttemptsByPolicyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Events) > 0 {\n\t\tfor _, e := range m.Events {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryParamsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPolicyRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPolicyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &PolicyRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPolicyIdsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyIdsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyIdsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPolicyIdsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyIdsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPolicyIdsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Ids\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Ids = append(m.Ids, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryFilterRelationshipsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryFilterRelationshipsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryFilterRelationshipsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Selector\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Selector == nil {\n\t\t\t\tm.Selector = &types.RelationshipSelector{}\n\t\t\t}\n\t\t\tif err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryFilterRelationshipsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryFilterRelationshipsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryFilterRelationshipsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Records\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Records = append(m.Records, &RelationshipRecord{})\n\t\t\tif err := m.Records[len(m.Records)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryVerifyAccessRequestRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryVerifyAccessRequestRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryVerifyAccessRequestRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AccessRequest\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AccessRequest == nil {\n\t\t\t\tm.AccessRequest = &types.AccessRequest{}\n\t\t\t}\n\t\t\tif err := m.AccessRequest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryVerifyAccessRequestResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryVerifyAccessRequestResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryVerifyAccessRequestResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Valid = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryValidatePolicyRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryValidatePolicyRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryValidatePolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t}\n\t\t\tm.MarshalType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryValidatePolicyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryValidatePolicyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryValidatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Valid\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Valid = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ErrorMsg\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ErrorMsg = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Policy == nil {\n\t\t\t\tm.Policy = &types.Policy{}\n\t\t\t}\n\t\t\tif err := m.Policy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAccessDecisionRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAccessDecisionRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAccessDecisionRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAccessDecisionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAccessDecisionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAccessDecisionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Decision == nil {\n\t\t\t\tm.Decision = &AccessDecision{}\n\t\t\t}\n\t\t\tif err := m.Decision.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryObjectOwnerRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryObjectOwnerRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryObjectOwnerRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryObjectOwnerResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryObjectOwnerResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryObjectOwnerResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IsRegistered\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IsRegistered = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &RelationshipRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryRegistrationsCommitmentRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tm.Id = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Id |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryRegistrationsCommitmentResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitment\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.RegistrationsCommitment == nil {\n\t\t\t\tm.RegistrationsCommitment = &RegistrationsCommitment{}\n\t\t\t}\n\t\t\tif err := m.RegistrationsCommitment.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Commitment = append(m.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Commitment == nil {\n\t\t\t\tm.Commitment = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryRegistrationsCommitmentByCommitmentResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryRegistrationsCommitmentByCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RegistrationsCommitments\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RegistrationsCommitments = append(m.RegistrationsCommitments, &RegistrationsCommitment{})\n\t\t\tif err := m.RegistrationsCommitments[len(m.RegistrationsCommitments)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryGenerateCommitmentRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryGenerateCommitmentRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryGenerateCommitmentRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Objects\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Objects = append(m.Objects, &types.Object{})\n\t\t\tif err := m.Objects[len(m.Objects)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Actor == nil {\n\t\t\t\tm.Actor = &types.Actor{}\n\t\t\t}\n\t\t\tif err := m.Actor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryGenerateCommitmentResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryGenerateCommitmentResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryGenerateCommitmentResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Commitment\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Commitment = append(m.Commitment[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Commitment == nil {\n\t\t\t\tm.Commitment = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field HexCommitment\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.HexCommitment = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Proofs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Proofs = append(m.Proofs, &RegistrationProof{})\n\t\t\tif err := m.Proofs[len(m.Proofs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProofsJson\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ProofsJson = append(m.ProofsJson, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryHijackAttemptsByPolicyRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryHijackAttemptsByPolicyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryHijackAttemptsByPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Events\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Events = append(m.Events, &AmendmentEvent{})\n\t\t\tif err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: sourcehub/acp/query.proto\n\n/*\nPackage types is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage types\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.Params(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_Policy_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := client.Policy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Policy_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := server.Policy(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_PolicyIds_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_PolicyIds_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPolicyIdsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_PolicyIds_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.PolicyIds(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_PolicyIds_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPolicyIdsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_PolicyIds_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.PolicyIds(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_FilterRelationships_0 = &utilities.DoubleArray{Encoding: map[string]int{\"policy_id\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_FilterRelationships_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryFilterRelationshipsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_FilterRelationships_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.FilterRelationships(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_FilterRelationships_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryFilterRelationshipsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_FilterRelationships_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.FilterRelationships(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_VerifyAccessRequest_0 = &utilities.DoubleArray{Encoding: map[string]int{\"policy_id\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_VerifyAccessRequest_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryVerifyAccessRequestRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_VerifyAccessRequest_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.VerifyAccessRequest(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_VerifyAccessRequest_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryVerifyAccessRequestRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_VerifyAccessRequest_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.VerifyAccessRequest(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_ValidatePolicy_0 = &utilities.DoubleArray{Encoding: map[string]int{\"policy\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_ValidatePolicy_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryValidatePolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy\")\n\t}\n\n\tprotoReq.Policy, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ValidatePolicy_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.ValidatePolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_ValidatePolicy_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryValidatePolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy\")\n\t}\n\n\tprotoReq.Policy, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ValidatePolicy_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.ValidatePolicy(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_AccessDecision_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAccessDecisionRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := client.AccessDecision(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_AccessDecision_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAccessDecisionRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := server.AccessDecision(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_ObjectOwner_0 = &utilities.DoubleArray{Encoding: map[string]int{\"policy_id\": 0, \"object\": 1, \"resource\": 2, \"id\": 3}, Base: []int{1, 1, 1, 2, 3, 0, 0, 0}, Check: []int{0, 1, 1, 3, 3, 2, 4, 5}}\n)\n\nfunc request_Query_ObjectOwner_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryObjectOwnerRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tval, ok = pathParams[\"object.resource\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"object.resource\")\n\t}\n\n\terr = runtime.PopulateFieldFromPath(&protoReq, \"object.resource\", val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"object.resource\", err)\n\t}\n\n\tval, ok = pathParams[\"object.id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"object.id\")\n\t}\n\n\terr = runtime.PopulateFieldFromPath(&protoReq, \"object.id\", val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"object.id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ObjectOwner_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.ObjectOwner(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_ObjectOwner_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryObjectOwnerRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"policy_id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"policy_id\")\n\t}\n\n\tprotoReq.PolicyId, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"policy_id\", err)\n\t}\n\n\tval, ok = pathParams[\"object.resource\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"object.resource\")\n\t}\n\n\terr = runtime.PopulateFieldFromPath(&protoReq, \"object.resource\", val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"object.resource\", err)\n\t}\n\n\tval, ok = pathParams[\"object.id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"object.id\")\n\t}\n\n\terr = runtime.PopulateFieldFromPath(&protoReq, \"object.id\", val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"object.id\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ObjectOwner_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.ObjectOwner(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_RegistrationsCommitment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_RegistrationsCommitment_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryRegistrationsCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_RegistrationsCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.RegistrationsCommitment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_RegistrationsCommitment_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryRegistrationsCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_RegistrationsCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.RegistrationsCommitment(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_RegistrationsCommitmentByCommitment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_RegistrationsCommitmentByCommitment_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryRegistrationsCommitmentByCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_RegistrationsCommitmentByCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.RegistrationsCommitmentByCommitment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_RegistrationsCommitmentByCommitment_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryRegistrationsCommitmentByCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_RegistrationsCommitmentByCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.RegistrationsCommitmentByCommitment(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_GenerateCommitment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_GenerateCommitment_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryGenerateCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GenerateCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.GenerateCommitment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_GenerateCommitment_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryGenerateCommitmentRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GenerateCommitment_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.GenerateCommitment(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_HijackAttemptsByPolicy_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_HijackAttemptsByPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryHijackAttemptsByPolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_HijackAttemptsByPolicy_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.HijackAttemptsByPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_HijackAttemptsByPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryHijackAttemptsByPolicyRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_HijackAttemptsByPolicy_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.HijackAttemptsByPolicy(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Policy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Policy_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Policy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_PolicyIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_PolicyIds_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_PolicyIds_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_FilterRelationships_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_FilterRelationships_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_FilterRelationships_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_VerifyAccessRequest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_VerifyAccessRequest_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_VerifyAccessRequest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_ValidatePolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_ValidatePolicy_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_ValidatePolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_AccessDecision_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_AccessDecision_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_AccessDecision_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_ObjectOwner_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_ObjectOwner_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_ObjectOwner_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_RegistrationsCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_RegistrationsCommitment_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_RegistrationsCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_RegistrationsCommitmentByCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_RegistrationsCommitmentByCommitment_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_RegistrationsCommitmentByCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_GenerateCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_GenerateCommitment_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_GenerateCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_HijackAttemptsByPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_HijackAttemptsByPolicy_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_HijackAttemptsByPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Policy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Policy_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Policy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_PolicyIds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_PolicyIds_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_PolicyIds_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_FilterRelationships_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_FilterRelationships_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_FilterRelationships_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_VerifyAccessRequest_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_VerifyAccessRequest_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_VerifyAccessRequest_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_ValidatePolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_ValidatePolicy_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_ValidatePolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_AccessDecision_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_AccessDecision_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_AccessDecision_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_ObjectOwner_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_ObjectOwner_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_ObjectOwner_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_RegistrationsCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_RegistrationsCommitment_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_RegistrationsCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_RegistrationsCommitmentByCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_RegistrationsCommitmentByCommitment_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_RegistrationsCommitmentByCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_GenerateCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_GenerateCommitment_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_GenerateCommitment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_HijackAttemptsByPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_HijackAttemptsByPolicy_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_HijackAttemptsByPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"params\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Policy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"policy\", \"id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_PolicyIds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"policy_ids\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_FilterRelationships_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"filter_relationships\", \"policy_id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_VerifyAccessRequest_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"verify_access_request\", \"policy_id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_ValidatePolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"validate_policy\", \"policy\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_AccessDecision_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"access_decision\", \"id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_ObjectOwner_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"object_owner\", \"policy_id\", \"object.resource\", \"object.id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_RegistrationsCommitment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"registrations_commitment\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_RegistrationsCommitmentByCommitment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"registrations_commitment_by_commitment\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_GenerateCommitment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"generate_commitment\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_HijackAttemptsByPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"acp\", \"hijack_attempts_by_policy\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_Params_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Policy_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_PolicyIds_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_FilterRelationships_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_VerifyAccessRequest_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_ValidatePolicy_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_AccessDecision_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_ObjectOwner_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_RegistrationsCommitment_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_RegistrationsCommitmentByCommitment_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_GenerateCommitment_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_HijackAttemptsByPolicy_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/acp/types/record.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/record.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// RecordMetadata models metadata which is stored alongside acp records\ntype RecordMetadata struct {\n\t// creation_ts is the timestamp of record creation\n\tCreationTs *Timestamp `protobuf:\"bytes,1,opt,name=creation_ts,json=creationTs,proto3\" json:\"creation_ts,omitempty\"`\n\t// tx_hash is the hash256 of the tx bytes which produced the record\n\tTxHash []byte `protobuf:\"bytes,2,opt,name=tx_hash,json=txHash,proto3\" json:\"tx_hash,omitempty\"`\n\t// tx_signer is the SourceHub bech32 address of the account that signed the Tx\n\tTxSigner string `protobuf:\"bytes,3,opt,name=tx_signer,json=txSigner,proto3\" json:\"tx_signer,omitempty\"`\n\t// owner_did is the DID of the PolicyCmd actor\n\tOwnerDid string `protobuf:\"bytes,4,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n}\n\nfunc (m *RecordMetadata) Reset()         { *m = RecordMetadata{} }\nfunc (m *RecordMetadata) String() string { return proto.CompactTextString(m) }\nfunc (*RecordMetadata) ProtoMessage()    {}\nfunc (*RecordMetadata) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5977940639fee4f6, []int{0}\n}\nfunc (m *RecordMetadata) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RecordMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RecordMetadata.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RecordMetadata) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RecordMetadata.Merge(m, src)\n}\nfunc (m *RecordMetadata) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RecordMetadata) XXX_DiscardUnknown() {\n\txxx_messageInfo_RecordMetadata.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RecordMetadata proto.InternalMessageInfo\n\nfunc (m *RecordMetadata) GetCreationTs() *Timestamp {\n\tif m != nil {\n\t\treturn m.CreationTs\n\t}\n\treturn nil\n}\n\nfunc (m *RecordMetadata) GetTxHash() []byte {\n\tif m != nil {\n\t\treturn m.TxHash\n\t}\n\treturn nil\n}\n\nfunc (m *RecordMetadata) GetTxSigner() string {\n\tif m != nil {\n\t\treturn m.TxSigner\n\t}\n\treturn \"\"\n}\n\nfunc (m *RecordMetadata) GetOwnerDid() string {\n\tif m != nil {\n\t\treturn m.OwnerDid\n\t}\n\treturn \"\"\n}\n\ntype PolicyRecord struct {\n\tPolicy    *types.Policy   `protobuf:\"bytes,1,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMetadata  *RecordMetadata `protobuf:\"bytes,2,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n\tRawPolicy string          `protobuf:\"bytes,3,opt,name=raw_policy,json=rawPolicy,proto3\" json:\"raw_policy,omitempty\"`\n\t// marshal_type flags the format of policy_raw\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,4,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (m *PolicyRecord) Reset()         { *m = PolicyRecord{} }\nfunc (m *PolicyRecord) String() string { return proto.CompactTextString(m) }\nfunc (*PolicyRecord) ProtoMessage()    {}\nfunc (*PolicyRecord) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5977940639fee4f6, []int{1}\n}\nfunc (m *PolicyRecord) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PolicyRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PolicyRecord.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PolicyRecord) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PolicyRecord.Merge(m, src)\n}\nfunc (m *PolicyRecord) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PolicyRecord) XXX_DiscardUnknown() {\n\txxx_messageInfo_PolicyRecord.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PolicyRecord proto.InternalMessageInfo\n\nfunc (m *PolicyRecord) GetPolicy() *types.Policy {\n\tif m != nil {\n\t\treturn m.Policy\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyRecord) GetMetadata() *RecordMetadata {\n\tif m != nil {\n\t\treturn m.Metadata\n\t}\n\treturn nil\n}\n\nfunc (m *PolicyRecord) GetRawPolicy() string {\n\tif m != nil {\n\t\treturn m.RawPolicy\n\t}\n\treturn \"\"\n}\n\nfunc (m *PolicyRecord) GetMarshalType() types.PolicyMarshalingType {\n\tif m != nil {\n\t\treturn m.MarshalType\n\t}\n\treturn types.PolicyMarshalingType_UNKNOWN\n}\n\ntype RelationshipRecord struct {\n\tPolicyId     string              `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tRelationship *types.Relationship `protobuf:\"bytes,2,opt,name=relationship,proto3\" json:\"relationship,omitempty\"`\n\tArchived     bool                `protobuf:\"varint,3,opt,name=archived,proto3\" json:\"archived,omitempty\"`\n\tMetadata     *RecordMetadata     `protobuf:\"bytes,4,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (m *RelationshipRecord) Reset()         { *m = RelationshipRecord{} }\nfunc (m *RelationshipRecord) String() string { return proto.CompactTextString(m) }\nfunc (*RelationshipRecord) ProtoMessage()    {}\nfunc (*RelationshipRecord) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5977940639fee4f6, []int{2}\n}\nfunc (m *RelationshipRecord) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *RelationshipRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_RelationshipRecord.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *RelationshipRecord) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_RelationshipRecord.Merge(m, src)\n}\nfunc (m *RelationshipRecord) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *RelationshipRecord) XXX_DiscardUnknown() {\n\txxx_messageInfo_RelationshipRecord.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_RelationshipRecord proto.InternalMessageInfo\n\nfunc (m *RelationshipRecord) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *RelationshipRecord) GetRelationship() *types.Relationship {\n\tif m != nil {\n\t\treturn m.Relationship\n\t}\n\treturn nil\n}\n\nfunc (m *RelationshipRecord) GetArchived() bool {\n\tif m != nil {\n\t\treturn m.Archived\n\t}\n\treturn false\n}\n\nfunc (m *RelationshipRecord) GetMetadata() *RecordMetadata {\n\tif m != nil {\n\t\treturn m.Metadata\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*RecordMetadata)(nil), \"sourcehub.acp.RecordMetadata\")\n\tproto.RegisterType((*PolicyRecord)(nil), \"sourcehub.acp.PolicyRecord\")\n\tproto.RegisterType((*RelationshipRecord)(nil), \"sourcehub.acp.RelationshipRecord\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/record.proto\", fileDescriptor_5977940639fee4f6) }\n\nvar fileDescriptor_5977940639fee4f6 = []byte{\n\t// 522 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xc1, 0x8a, 0x13, 0x31,\n\t0x18, 0x6e, 0x74, 0xa9, 0x6d, 0x5a, 0x17, 0x0c, 0xc2, 0x8e, 0x5d, 0x76, 0x2c, 0xd5, 0x43, 0x05,\n\t0x99, 0x60, 0x05, 0x61, 0xaf, 0xe2, 0xa1, 0x1e, 0x16, 0x65, 0xec, 0xc9, 0x4b, 0x48, 0x33, 0x71,\n\t0x26, 0xd8, 0x99, 0x0c, 0x49, 0xba, 0x6d, 0xdf, 0xc2, 0x27, 0xf0, 0x79, 0x3c, 0x2e, 0x9e, 0x3c,\n\t0x4a, 0xfb, 0x04, 0xbe, 0x81, 0x4c, 0x92, 0xd6, 0x8d, 0xe0, 0xca, 0x5e, 0xda, 0xf9, 0xff, 0xef,\n\t0xfb, 0x93, 0xef, 0xfb, 0x92, 0xc0, 0x81, 0x96, 0x4b, 0xc5, 0x78, 0xb1, 0x9c, 0x63, 0xca, 0x6a,\n\t0xac, 0x38, 0x93, 0x2a, 0x4b, 0x6a, 0x25, 0x8d, 0x44, 0xf7, 0x0f, 0x58, 0x42, 0x59, 0x3d, 0x78,\n\t0x40, 0x4b, 0x51, 0x49, 0x6c, 0x7f, 0x1d, 0x63, 0x70, 0xc2, 0xa4, 0x2e, 0xa5, 0xc6, 0xa5, 0xce,\n\t0xf1, 0xe5, 0x8b, 0xe6, 0xcf, 0x03, 0x8f, 0x1c, 0x40, 0x6c, 0x85, 0x5d, 0xe1, 0xa1, 0x87, 0xb9,\n\t0xcc, 0xa5, 0xeb, 0x37, 0x5f, 0xbe, 0xfb, 0x38, 0x97, 0x32, 0x5f, 0x70, 0x6c, 0xab, 0xf9, 0xf2,\n\t0x13, 0x36, 0xa2, 0xe4, 0xda, 0xd0, 0xb2, 0xf6, 0x84, 0x27, 0xa1, 0x50, 0xca, 0x18, 0xd7, 0x9a,\n\t0x64, 0x9c, 0x09, 0x2d, 0x64, 0xe5, 0x49, 0x51, 0x48, 0x6a, 0xd6, 0x08, 0xc7, 0x2b, 0x6e, 0x56,\n\t0x52, 0x7d, 0x6e, 0x50, 0xc2, 0xa4, 0xe2, 0xb8, 0x96, 0x0b, 0xc1, 0x36, 0x9e, 0xf4, 0xec, 0x46,\n\t0x12, 0xd1, 0x85, 0x54, 0xe6, 0x3f, 0x54, 0xc5, 0x17, 0xd4, 0x08, 0x59, 0xe9, 0x42, 0x78, 0xe5,\n\t0xa3, 0xaf, 0x00, 0x1e, 0xa7, 0x36, 0xd7, 0x0b, 0x6e, 0x68, 0x46, 0x0d, 0x45, 0xe7, 0xb0, 0xc7,\n\t0x14, 0xb7, 0x44, 0x62, 0x74, 0x04, 0x86, 0x60, 0xdc, 0x9b, 0x44, 0x49, 0x90, 0x77, 0x32, 0xdb,\n\t0x27, 0x90, 0xc2, 0x3d, 0x79, 0xa6, 0xd1, 0x09, 0xbc, 0x67, 0xd6, 0xa4, 0xa0, 0xba, 0x88, 0xee,\n\t0x0c, 0xc1, 0xb8, 0x9f, 0xb6, 0xcd, 0x7a, 0x4a, 0x75, 0x81, 0x4e, 0x61, 0xd7, 0xac, 0x89, 0x16,\n\t0x79, 0xc5, 0x55, 0x74, 0x77, 0x08, 0xc6, 0xdd, 0xb4, 0x63, 0xd6, 0x1f, 0x6c, 0xdd, 0x80, 0x72,\n\t0x55, 0x71, 0x45, 0x32, 0x91, 0x45, 0x47, 0x0e, 0xb4, 0x8d, 0x37, 0x22, 0x1b, 0xfd, 0x02, 0xb0,\n\t0xff, 0xde, 0x5a, 0x74, 0x32, 0xd1, 0x2b, 0xd8, 0x76, 0x96, 0xbd, 0xb2, 0x38, 0x09, 0xdc, 0x26,\n\t0x7b, 0xb7, 0x89, 0x9f, 0xf2, 0x6c, 0x74, 0x0e, 0x3b, 0xa5, 0xb7, 0x68, 0xc5, 0xf5, 0x26, 0x67,\n\t0x7f, 0x79, 0x0a, 0x73, 0x48, 0x0f, 0x74, 0x74, 0x06, 0xa1, 0xa2, 0x2b, 0xe2, 0xb7, 0x75, 0xf2,\n\t0xbb, 0x8a, 0xae, 0xdc, 0x0e, 0xe8, 0x1d, 0xec, 0x97, 0x54, 0xe9, 0x82, 0x2e, 0x88, 0xd9, 0xd4,\n\t0xdc, 0x5a, 0x38, 0x9e, 0x3c, 0xbf, 0x59, 0xd7, 0x85, 0x9b, 0x10, 0x55, 0x3e, 0xdb, 0xd4, 0x3c,\n\t0xed, 0xf9, 0x15, 0x9a, 0x62, 0xf4, 0x1d, 0x40, 0x94, 0x5e, 0x3b, 0x2b, 0xef, 0xfc, 0x14, 0x76,\n\t0xfd, 0x61, 0x8b, 0xcc, 0x9a, 0xef, 0xa6, 0x1d, 0xd7, 0x78, 0x9b, 0xa1, 0x29, 0xec, 0x5f, 0x3f,\n\t0x5e, 0x6f, 0xf1, 0xe9, 0xbf, 0x44, 0x04, 0xcb, 0x07, 0x93, 0x68, 0x00, 0x3b, 0x54, 0xb1, 0x42,\n\t0x5c, 0xf2, 0xcc, 0x7a, 0xed, 0xa4, 0x87, 0x3a, 0x08, 0xf1, 0xe8, 0x56, 0x21, 0xbe, 0x9e, 0x7e,\n\t0xdb, 0xc6, 0xe0, 0x6a, 0x1b, 0x83, 0x9f, 0xdb, 0x18, 0x7c, 0xd9, 0xc5, 0xad, 0xab, 0x5d, 0xdc,\n\t0xfa, 0xb1, 0x8b, 0x5b, 0x1f, 0x93, 0x5c, 0x98, 0x66, 0x9c, 0xc9, 0x12, 0x87, 0x37, 0xf7, 0xcf,\n\t0x8b, 0x59, 0xbb, 0x37, 0xb3, 0xa9, 0xb9, 0x9e, 0xb7, 0xed, 0xd5, 0x7d, 0xf9, 0x3b, 0x00, 0x00,\n\t0xff, 0xff, 0x4a, 0x16, 0xf1, 0xa1, 0x1f, 0x04, 0x00, 0x00,\n}\n\nfunc (m *RecordMetadata) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RecordMetadata) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RecordMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.OwnerDid) > 0 {\n\t\ti -= len(m.OwnerDid)\n\t\tcopy(dAtA[i:], m.OwnerDid)\n\t\ti = encodeVarintRecord(dAtA, i, uint64(len(m.OwnerDid)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.TxSigner) > 0 {\n\t\ti -= len(m.TxSigner)\n\t\tcopy(dAtA[i:], m.TxSigner)\n\t\ti = encodeVarintRecord(dAtA, i, uint64(len(m.TxSigner)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.TxHash) > 0 {\n\t\ti -= len(m.TxHash)\n\t\tcopy(dAtA[i:], m.TxHash)\n\t\ti = encodeVarintRecord(dAtA, i, uint64(len(m.TxHash)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.CreationTs != nil {\n\t\t{\n\t\t\tsize, err := m.CreationTs.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRecord(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PolicyRecord) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PolicyRecord) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PolicyRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.MarshalType != 0 {\n\t\ti = encodeVarintRecord(dAtA, i, uint64(m.MarshalType))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.RawPolicy) > 0 {\n\t\ti -= len(m.RawPolicy)\n\t\tcopy(dAtA[i:], m.RawPolicy)\n\t\ti = encodeVarintRecord(dAtA, i, uint64(len(m.RawPolicy)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.Metadata != nil {\n\t\t{\n\t\t\tsize, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRecord(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Policy != nil {\n\t\t{\n\t\t\tsize, err := m.Policy.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRecord(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *RelationshipRecord) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *RelationshipRecord) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *RelationshipRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Metadata != nil {\n\t\t{\n\t\t\tsize, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRecord(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Archived {\n\t\ti--\n\t\tif m.Archived {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.Relationship != nil {\n\t\t{\n\t\t\tsize, err := m.Relationship.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRecord(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintRecord(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintRecord(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovRecord(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *RecordMetadata) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CreationTs != nil {\n\t\tl = m.CreationTs.Size()\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tl = len(m.TxHash)\n\tif l > 0 {\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tl = len(m.TxSigner)\n\tif l > 0 {\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tl = len(m.OwnerDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *PolicyRecord) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Policy != nil {\n\t\tl = m.Policy.Size()\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.Size()\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tl = len(m.RawPolicy)\n\tif l > 0 {\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tif m.MarshalType != 0 {\n\t\tn += 1 + sovRecord(uint64(m.MarshalType))\n\t}\n\treturn n\n}\n\nfunc (m *RelationshipRecord) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tif m.Relationship != nil {\n\t\tl = m.Relationship.Size()\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\tif m.Archived {\n\t\tn += 2\n\t}\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.Size()\n\t\tn += 1 + l + sovRecord(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovRecord(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozRecord(x uint64) (n int) {\n\treturn sovRecord(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *RecordMetadata) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RecordMetadata: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RecordMetadata: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationTs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.CreationTs == nil {\n\t\t\t\tm.CreationTs = &Timestamp{}\n\t\t\t}\n\t\t\tif err := m.CreationTs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TxHash\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TxHash = append(m.TxHash[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.TxHash == nil {\n\t\t\t\tm.TxHash = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TxSigner\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TxSigner = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRecord(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PolicyRecord) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyRecord: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PolicyRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Policy == nil {\n\t\t\t\tm.Policy = &types.Policy{}\n\t\t\t}\n\t\t\tif err := m.Policy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Metadata == nil {\n\t\t\t\tm.Metadata = &RecordMetadata{}\n\t\t\t}\n\t\t\tif err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RawPolicy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RawPolicy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t}\n\t\t\tm.MarshalType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRecord(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *RelationshipRecord) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: RelationshipRecord: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: RelationshipRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Relationship\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Relationship == nil {\n\t\t\t\tm.Relationship = &types.Relationship{}\n\t\t\t}\n\t\t\tif err := m.Relationship.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Archived\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Archived = bool(v != 0)\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Metadata == nil {\n\t\t\t\tm.Metadata = &RecordMetadata{}\n\t\t\t}\n\t\t\tif err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRecord(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipRecord(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowRecord\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRecord\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthRecord\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupRecord\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthRecord\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthRecord        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowRecord          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupRecord = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/registration.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/registration.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// AmendmentEvent is a record which tracks executions of the Registration Amendment rule in SourceHub ACP\ntype AmendmentEvent struct {\n\t// event id\n\tId uint64 `protobuf:\"varint,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\t// id of affected policy\n\tPolicyId string `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\t// object whose registration was amended\n\tObject *types.Object `protobuf:\"bytes,3,opt,name=object,proto3\" json:\"object,omitempty\"`\n\t// new_owner is the new object owner\n\tNewOwner *types.Actor `protobuf:\"bytes,4,opt,name=new_owner,json=newOwner,proto3\" json:\"new_owner,omitempty\"`\n\t// previous_owner is the previous object owner\n\tPreviousOwner *types.Actor `protobuf:\"bytes,5,opt,name=previous_owner,json=previousOwner,proto3\" json:\"previous_owner,omitempty\"`\n\t// commitment_id is the id of the commitment which generated the amendment\n\tCommitmentId uint64 `protobuf:\"varint,6,opt,name=commitment_id,json=commitmentId,proto3\" json:\"commitment_id,omitempty\"`\n\t// hijack_flag is true if the amendment rule was executed and the new_owner chose to flag\n\t// the previous_owner as a potential object hijacker\n\tHijackFlag bool            `protobuf:\"varint,7,opt,name=hijack_flag,json=hijackFlag,proto3\" json:\"hijack_flag,omitempty\"`\n\tMetadata   *RecordMetadata `protobuf:\"bytes,8,opt,name=metadata,proto3\" json:\"metadata,omitempty\"`\n}\n\nfunc (m *AmendmentEvent) Reset()         { *m = AmendmentEvent{} }\nfunc (m *AmendmentEvent) String() string { return proto.CompactTextString(m) }\nfunc (*AmendmentEvent) ProtoMessage()    {}\nfunc (*AmendmentEvent) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1356cd7eda5c526d, []int{0}\n}\nfunc (m *AmendmentEvent) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AmendmentEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AmendmentEvent.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AmendmentEvent) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AmendmentEvent.Merge(m, src)\n}\nfunc (m *AmendmentEvent) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AmendmentEvent) XXX_DiscardUnknown() {\n\txxx_messageInfo_AmendmentEvent.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AmendmentEvent proto.InternalMessageInfo\n\nfunc (m *AmendmentEvent) GetId() uint64 {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn 0\n}\n\nfunc (m *AmendmentEvent) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *AmendmentEvent) GetObject() *types.Object {\n\tif m != nil {\n\t\treturn m.Object\n\t}\n\treturn nil\n}\n\nfunc (m *AmendmentEvent) GetNewOwner() *types.Actor {\n\tif m != nil {\n\t\treturn m.NewOwner\n\t}\n\treturn nil\n}\n\nfunc (m *AmendmentEvent) GetPreviousOwner() *types.Actor {\n\tif m != nil {\n\t\treturn m.PreviousOwner\n\t}\n\treturn nil\n}\n\nfunc (m *AmendmentEvent) GetCommitmentId() uint64 {\n\tif m != nil {\n\t\treturn m.CommitmentId\n\t}\n\treturn 0\n}\n\nfunc (m *AmendmentEvent) GetHijackFlag() bool {\n\tif m != nil {\n\t\treturn m.HijackFlag\n\t}\n\treturn false\n}\n\nfunc (m *AmendmentEvent) GetMetadata() *RecordMetadata {\n\tif m != nil {\n\t\treturn m.Metadata\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*AmendmentEvent)(nil), \"sourcehub.acp.AmendmentEvent\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/registration.proto\", fileDescriptor_1356cd7eda5c526d) }\n\nvar fileDescriptor_1356cd7eda5c526d = []byte{\n\t// 397 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0x3f, 0x6f, 0xd4, 0x40,\n\t0x10, 0xc5, 0x6f, 0x8f, 0x70, 0xf8, 0x36, 0xdc, 0x15, 0x5b, 0x59, 0x87, 0x70, 0x2c, 0x68, 0x4c,\n\t0x63, 0x4b, 0x20, 0x21, 0x41, 0x17, 0x04, 0x88, 0x14, 0x28, 0x92, 0x4b, 0x1a, 0x6b, 0xbd, 0x3b,\n\t0xf1, 0x6d, 0xe2, 0xdd, 0xb1, 0xd6, 0xeb, 0x98, 0x7c, 0x0b, 0x3e, 0x16, 0x65, 0x4a, 0x4a, 0x74,\n\t0xf7, 0x25, 0x28, 0x91, 0xff, 0x24, 0x27, 0x23, 0x21, 0xa5, 0x9d, 0xf7, 0x7b, 0x6f, 0x66, 0xf4,\n\t0x68, 0x58, 0x63, 0x63, 0x05, 0x6c, 0x9b, 0x3c, 0xe1, 0xa2, 0x4a, 0x2c, 0x14, 0xaa, 0x76, 0x96,\n\t0x3b, 0x85, 0x26, 0xae, 0x2c, 0x3a, 0x64, 0xab, 0x7b, 0x22, 0xe6, 0xa2, 0xda, 0x9c, 0x14, 0x88,\n\t0x45, 0x09, 0x49, 0x2f, 0xe6, 0xcd, 0x45, 0xe2, 0x94, 0x86, 0xda, 0x71, 0x5d, 0x0d, 0xfc, 0x66,\n\t0xf3, 0x6f, 0xa2, 0x40, 0x2b, 0x47, 0xcd, 0x9f, 0x6a, 0x9d, 0x75, 0x54, 0x5e, 0x0d, 0x8a, 0x01,\n\t0xd7, 0xa2, 0xbd, 0xea, 0xd4, 0x4c, 0xa0, 0x85, 0xc4, 0x42, 0xd9, 0x1f, 0x53, 0x6f, 0xd5, 0xb8,\n\t0xe0, 0xc5, 0x9f, 0x39, 0x5d, 0x9f, 0x6a, 0x30, 0x52, 0x83, 0x71, 0x9f, 0xae, 0xc1, 0x38, 0xb6,\n\t0xa6, 0x73, 0x25, 0x7d, 0x12, 0x92, 0xe8, 0x28, 0x9d, 0x2b, 0xc9, 0x9e, 0xd1, 0x65, 0x85, 0xa5,\n\t0x12, 0x37, 0x99, 0x92, 0xfe, 0x3c, 0x24, 0xd1, 0x32, 0xf5, 0x86, 0xc1, 0x99, 0x64, 0x6f, 0xe9,\n\t0x02, 0xf3, 0x4b, 0x10, 0xce, 0x7f, 0x14, 0x92, 0xe8, 0xf8, 0x75, 0x10, 0x4f, 0x76, 0xc7, 0x77,\n\t0xbb, 0xe3, 0xf3, 0x9e, 0x4a, 0x47, 0x9a, 0xbd, 0xa7, 0x4b, 0x03, 0x6d, 0x86, 0xad, 0x01, 0xeb,\n\t0x1f, 0xf5, 0xd6, 0xe7, 0xff, 0xb3, 0x9e, 0x0a, 0x87, 0x36, 0xf5, 0x0c, 0xb4, 0xe7, 0x1d, 0xce,\n\t0x3e, 0xd2, 0x75, 0x65, 0xe1, 0x5a, 0x61, 0x53, 0x8f, 0x01, 0x8f, 0x1f, 0x12, 0xb0, 0xba, 0x33,\n\t0x0d, 0x29, 0x2f, 0xe9, 0x4a, 0xa0, 0xd6, 0xca, 0x75, 0x9f, 0x77, 0xaf, 0x2d, 0xfa, 0x8f, 0x9f,\n\t0x1e, 0x86, 0x67, 0x92, 0x9d, 0xd0, 0xe3, 0xad, 0xba, 0xe4, 0xe2, 0x2a, 0xbb, 0x28, 0x79, 0xe1,\n\t0x3f, 0x09, 0x49, 0xe4, 0xa5, 0x74, 0x18, 0x7d, 0x2e, 0x79, 0xc1, 0xde, 0x51, 0x4f, 0x83, 0xe3,\n\t0x92, 0x3b, 0xee, 0x7b, 0x93, 0x2b, 0xc6, 0x8e, 0xe3, 0xb4, 0xef, 0xec, 0xeb, 0x08, 0xa5, 0xf7,\n\t0xf8, 0x87, 0x2f, 0x3f, 0x77, 0x01, 0xb9, 0xdd, 0x05, 0xe4, 0xf7, 0x2e, 0x20, 0x3f, 0xf6, 0xc1,\n\t0xec, 0x76, 0x1f, 0xcc, 0x7e, 0xed, 0x83, 0xd9, 0xb7, 0xb8, 0x50, 0xae, 0xb3, 0x0b, 0xd4, 0xc9,\n\t0xb4, 0xca, 0x43, 0xe5, 0xdf, 0x87, 0xd2, 0x6f, 0x2a, 0xa8, 0xf3, 0x45, 0xdf, 0xe5, 0x9b, 0xbf,\n\t0x01, 0x00, 0x00, 0xff, 0xff, 0x31, 0x44, 0x1c, 0x59, 0x80, 0x02, 0x00, 0x00,\n}\n\nfunc (m *AmendmentEvent) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AmendmentEvent) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AmendmentEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Metadata != nil {\n\t\t{\n\t\t\tsize, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRegistration(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.HijackFlag {\n\t\ti--\n\t\tif m.HijackFlag {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tif m.CommitmentId != 0 {\n\t\ti = encodeVarintRegistration(dAtA, i, uint64(m.CommitmentId))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.PreviousOwner != nil {\n\t\t{\n\t\t\tsize, err := m.PreviousOwner.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRegistration(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.NewOwner != nil {\n\t\t{\n\t\t\tsize, err := m.NewOwner.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRegistration(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif m.Object != nil {\n\t\t{\n\t\t\tsize, err := m.Object.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintRegistration(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintRegistration(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Id != 0 {\n\t\ti = encodeVarintRegistration(dAtA, i, uint64(m.Id))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintRegistration(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovRegistration(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *AmendmentEvent) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Id != 0 {\n\t\tn += 1 + sovRegistration(uint64(m.Id))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovRegistration(uint64(l))\n\t}\n\tif m.Object != nil {\n\t\tl = m.Object.Size()\n\t\tn += 1 + l + sovRegistration(uint64(l))\n\t}\n\tif m.NewOwner != nil {\n\t\tl = m.NewOwner.Size()\n\t\tn += 1 + l + sovRegistration(uint64(l))\n\t}\n\tif m.PreviousOwner != nil {\n\t\tl = m.PreviousOwner.Size()\n\t\tn += 1 + l + sovRegistration(uint64(l))\n\t}\n\tif m.CommitmentId != 0 {\n\t\tn += 1 + sovRegistration(uint64(m.CommitmentId))\n\t}\n\tif m.HijackFlag {\n\t\tn += 2\n\t}\n\tif m.Metadata != nil {\n\t\tl = m.Metadata.Size()\n\t\tn += 1 + l + sovRegistration(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovRegistration(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozRegistration(x uint64) (n int) {\n\treturn sovRegistration(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *AmendmentEvent) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AmendmentEvent: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AmendmentEvent: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tm.Id = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Id |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Object\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Object == nil {\n\t\t\t\tm.Object = &types.Object{}\n\t\t\t}\n\t\t\tif err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NewOwner\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.NewOwner == nil {\n\t\t\t\tm.NewOwner = &types.Actor{}\n\t\t\t}\n\t\t\tif err := m.NewOwner.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PreviousOwner\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.PreviousOwner == nil {\n\t\t\t\tm.PreviousOwner = &types.Actor{}\n\t\t\t}\n\t\t\tif err := m.PreviousOwner.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CommitmentId\", wireType)\n\t\t\t}\n\t\t\tm.CommitmentId = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CommitmentId |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field HijackFlag\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.HijackFlag = bool(v != 0)\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Metadata\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Metadata == nil {\n\t\t\t\tm.Metadata = &RecordMetadata{}\n\t\t\t}\n\t\t\tif err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipRegistration(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipRegistration(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowRegistration\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowRegistration\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthRegistration\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupRegistration\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthRegistration\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthRegistration        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowRegistration          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupRegistration = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/signed_policy_cmd.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/signed_policy_cmd.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\ttypes \"github.com/cosmos/gogoproto/types\"\n\t_ \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// SignedPolicyCmd represents a Command issued by an Actor in the context of a Policy\n// The command represents an instruction to be executed\n// The message type contains a signature which is used to authenticate the Command's Actor\ntype SignedPolicyCmd struct {\n\t// payload contains the command context\n\tPayload *SignedPolicyCmdPayload `protobuf:\"bytes,1,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\t// signature is a signature of the payload.\n\t// The signature is generated using the VerificationMethod / Authorization fields\n\t// specificied by the DID document of the Actor.\n\tSignature []byte `protobuf:\"bytes,2,opt,name=signature,proto3\" json:\"signature,omitempty\"`\n}\n\nfunc (m *SignedPolicyCmd) Reset()         { *m = SignedPolicyCmd{} }\nfunc (m *SignedPolicyCmd) String() string { return proto.CompactTextString(m) }\nfunc (*SignedPolicyCmd) ProtoMessage()    {}\nfunc (*SignedPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8eb2671203f09829, []int{0}\n}\nfunc (m *SignedPolicyCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SignedPolicyCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SignedPolicyCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SignedPolicyCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SignedPolicyCmd.Merge(m, src)\n}\nfunc (m *SignedPolicyCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SignedPolicyCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_SignedPolicyCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SignedPolicyCmd proto.InternalMessageInfo\n\nfunc (m *SignedPolicyCmd) GetPayload() *SignedPolicyCmdPayload {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn nil\n}\n\nfunc (m *SignedPolicyCmd) GetSignature() []byte {\n\tif m != nil {\n\t\treturn m.Signature\n\t}\n\treturn nil\n}\n\n// SignedPolicyCmdPayload represents the payload containing the context of the issued command\ntype SignedPolicyCmdPayload struct {\n\t// actor is a did string representing the actor which issued the command\n\tActor string `protobuf:\"bytes,1,opt,name=actor,proto3\" json:\"actor,omitempty\"`\n\t// issued_height is the SourceHub block height of when the Payload was created\n\tIssuedHeight uint64 `protobuf:\"varint,2,opt,name=issued_height,json=issuedHeight,proto3\" json:\"issued_height,omitempty\"`\n\t// issued_at contains a client generated timestamp for the creation of the command.\n\t// This is used only as metadata and isn't trusted\n\tIssuedAt *types.Timestamp `protobuf:\"bytes,3,opt,name=issued_at,json=issuedAt,proto3\" json:\"issued_at,omitempty\"`\n\t// expiration_delta specifies the maximum number of blocks from the issued height during which the Command Payload will be accepted.\n\t// This field is mandatory and is used to prevent replay attacks\n\tExpirationDelta uint64 `protobuf:\"varint,4,opt,name=expiration_delta,json=expirationDelta,proto3\" json:\"expiration_delta,omitempty\"`\n\t// policy_id is the ID of the policy under which the Command will be executed\n\tPolicyId string     `protobuf:\"bytes,5,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd      *PolicyCmd `protobuf:\"bytes,6,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (m *SignedPolicyCmdPayload) Reset()         { *m = SignedPolicyCmdPayload{} }\nfunc (m *SignedPolicyCmdPayload) String() string { return proto.CompactTextString(m) }\nfunc (*SignedPolicyCmdPayload) ProtoMessage()    {}\nfunc (*SignedPolicyCmdPayload) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_8eb2671203f09829, []int{1}\n}\nfunc (m *SignedPolicyCmdPayload) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *SignedPolicyCmdPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_SignedPolicyCmdPayload.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *SignedPolicyCmdPayload) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_SignedPolicyCmdPayload.Merge(m, src)\n}\nfunc (m *SignedPolicyCmdPayload) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *SignedPolicyCmdPayload) XXX_DiscardUnknown() {\n\txxx_messageInfo_SignedPolicyCmdPayload.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_SignedPolicyCmdPayload proto.InternalMessageInfo\n\nfunc (m *SignedPolicyCmdPayload) GetActor() string {\n\tif m != nil {\n\t\treturn m.Actor\n\t}\n\treturn \"\"\n}\n\nfunc (m *SignedPolicyCmdPayload) GetIssuedHeight() uint64 {\n\tif m != nil {\n\t\treturn m.IssuedHeight\n\t}\n\treturn 0\n}\n\nfunc (m *SignedPolicyCmdPayload) GetIssuedAt() *types.Timestamp {\n\tif m != nil {\n\t\treturn m.IssuedAt\n\t}\n\treturn nil\n}\n\nfunc (m *SignedPolicyCmdPayload) GetExpirationDelta() uint64 {\n\tif m != nil {\n\t\treturn m.ExpirationDelta\n\t}\n\treturn 0\n}\n\nfunc (m *SignedPolicyCmdPayload) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *SignedPolicyCmdPayload) GetCmd() *PolicyCmd {\n\tif m != nil {\n\t\treturn m.Cmd\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*SignedPolicyCmd)(nil), \"sourcehub.acp.SignedPolicyCmd\")\n\tproto.RegisterType((*SignedPolicyCmdPayload)(nil), \"sourcehub.acp.SignedPolicyCmdPayload\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/acp/signed_policy_cmd.proto\", fileDescriptor_8eb2671203f09829)\n}\n\nvar fileDescriptor_8eb2671203f09829 = []byte{\n\t// 409 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x3d, 0x6f, 0xd4, 0x30,\n\t0x1c, 0xc6, 0x2f, 0x7d, 0xa3, 0x67, 0x5a, 0x15, 0x59, 0x08, 0x45, 0x01, 0x85, 0x53, 0x51, 0xa5,\n\t0x96, 0xc1, 0x91, 0x60, 0x60, 0x44, 0xbc, 0x0c, 0x65, 0xab, 0x02, 0x13, 0x4b, 0xe4, 0xb3, 0x4d,\n\t0x62, 0x11, 0xc7, 0x96, 0xfd, 0x8f, 0xe8, 0x6d, 0x7c, 0x04, 0x3e, 0x16, 0x63, 0x47, 0x46, 0x74,\n\t0xf7, 0x45, 0xaa, 0xd8, 0x49, 0x4f, 0x89, 0x6e, 0xf4, 0xf3, 0xfc, 0xfc, 0x7f, 0x7b, 0xd0, 0x85,\n\t0xd3, 0xad, 0x65, 0xa2, 0x6a, 0x97, 0x19, 0x65, 0x26, 0x73, 0xb2, 0x6c, 0x04, 0x2f, 0x8c, 0xae,\n\t0x25, 0x5b, 0x15, 0x4c, 0x71, 0x62, 0xac, 0x06, 0x8d, 0x4f, 0x1f, 0x30, 0x42, 0x99, 0x49, 0x5e,\n\t0x96, 0x5a, 0x97, 0xb5, 0xc8, 0xbc, 0xb9, 0x6c, 0x7f, 0x64, 0x20, 0x95, 0x70, 0x40, 0x95, 0x09,\n\t0x7c, 0x92, 0x8e, 0xcb, 0x32, 0xad, 0x94, 0x04, 0x25, 0x1a, 0xd8, 0xed, 0x4f, 0xfb, 0x25, 0xc9,\n\t0xd8, 0xb7, 0x82, 0x69, 0x3b, 0x78, 0x8b, 0xa9, 0x57, 0x4a, 0x07, 0x96, 0x82, 0xd4, 0x4d, 0x4f,\n\t0x5c, 0x05, 0xa2, 0x11, 0xf0, 0x4b, 0xdb, 0x9f, 0x1d, 0x55, 0x30, 0x6d, 0x45, 0x66, 0x45, 0xed,\n\t0x31, 0x57, 0xc9, 0x7e, 0xd0, 0x73, 0x83, 0xce, 0xbe, 0xfa, 0x9d, 0x6f, 0xfc, 0x08, 0x9f, 0x14,\n\t0xc7, 0xef, 0xd1, 0x23, 0x43, 0x57, 0xb5, 0xa6, 0x3c, 0x8e, 0x16, 0xd1, 0xe5, 0xe3, 0x37, 0x17,\n\t0x64, 0xb4, 0x3d, 0x99, 0x7c, 0xb8, 0x09, 0x70, 0x3e, 0xfc, 0xc2, 0x2f, 0xd0, 0xbc, 0xbb, 0x23,\n\t0x85, 0xd6, 0x8a, 0x78, 0x6f, 0x11, 0x5d, 0x9e, 0xe4, 0x5b, 0xe1, 0xfc, 0xf7, 0x1e, 0x7a, 0xb6,\n\t0xbb, 0x02, 0x7e, 0x8a, 0x0e, 0x29, 0x03, 0x6d, 0x7d, 0xdf, 0x79, 0x1e, 0x1e, 0xf8, 0x15, 0x3a,\n\t0x95, 0xce, 0xb5, 0x82, 0x17, 0x95, 0x90, 0x65, 0x05, 0xbe, 0xe4, 0x41, 0x7e, 0x12, 0xc4, 0x6b,\n\t0xaf, 0xe1, 0x77, 0x68, 0xde, 0x43, 0x14, 0xe2, 0x7d, 0x3f, 0x76, 0x42, 0x42, 0x4a, 0x64, 0x48,\n\t0x89, 0x7c, 0x1b, 0x52, 0xca, 0x8f, 0x03, 0xfc, 0x01, 0xf0, 0x15, 0x7a, 0x22, 0x6e, 0x8d, 0x0c,\n\t0xf7, 0x2b, 0xb8, 0xa8, 0x81, 0xc6, 0x07, 0xbe, 0xc1, 0xd9, 0x56, 0xff, 0xdc, 0xc9, 0xf8, 0x39,\n\t0x9a, 0xf7, 0x41, 0x49, 0x1e, 0x1f, 0xfa, 0x11, 0x8f, 0x83, 0xf0, 0x85, 0xe3, 0xd7, 0x68, 0x9f,\n\t0x29, 0x1e, 0x1f, 0xf9, 0xd6, 0xf1, 0xe4, 0x62, 0x0f, 0x9b, 0xe6, 0x1d, 0xf4, 0xf1, 0xfa, 0xef,\n\t0x3a, 0x8d, 0xee, 0xd6, 0x69, 0xf4, 0x7f, 0x9d, 0x46, 0x7f, 0x36, 0xe9, 0xec, 0x6e, 0x93, 0xce,\n\t0xfe, 0x6d, 0xd2, 0xd9, 0x77, 0x52, 0x4a, 0xe8, 0x3e, 0x31, 0xad, 0xb2, 0x71, 0x88, 0xdb, 0xd0,\n\t0x6f, 0x7d, 0xec, 0xb0, 0x32, 0xc2, 0x2d, 0x8f, 0xfc, 0x6e, 0x6f, 0xef, 0x03, 0x00, 0x00, 0xff,\n\t0xff, 0x10, 0x6d, 0x0f, 0xb3, 0xc7, 0x02, 0x00, 0x00,\n}\n\nfunc (m *SignedPolicyCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SignedPolicyCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SignedPolicyCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Signature) > 0 {\n\t\ti -= len(m.Signature)\n\t\tcopy(dAtA[i:], m.Signature)\n\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(len(m.Signature)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.Payload != nil {\n\t\t{\n\t\t\tsize, err := m.Payload.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *SignedPolicyCmdPayload) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *SignedPolicyCmdPayload) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *SignedPolicyCmdPayload) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Cmd != nil {\n\t\t{\n\t\t\tsize, err := m.Cmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x32\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif m.ExpirationDelta != 0 {\n\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(m.ExpirationDelta))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.IssuedAt != nil {\n\t\t{\n\t\t\tsize, err := m.IssuedAt.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif m.IssuedHeight != 0 {\n\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(m.IssuedHeight))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Actor) > 0 {\n\t\ti -= len(m.Actor)\n\t\tcopy(dAtA[i:], m.Actor)\n\t\ti = encodeVarintSignedPolicyCmd(dAtA, i, uint64(len(m.Actor)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintSignedPolicyCmd(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovSignedPolicyCmd(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *SignedPolicyCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Payload != nil {\n\t\tl = m.Payload.Size()\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\tl = len(m.Signature)\n\tif l > 0 {\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *SignedPolicyCmdPayload) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Actor)\n\tif l > 0 {\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\tif m.IssuedHeight != 0 {\n\t\tn += 1 + sovSignedPolicyCmd(uint64(m.IssuedHeight))\n\t}\n\tif m.IssuedAt != nil {\n\t\tl = m.IssuedAt.Size()\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\tif m.ExpirationDelta != 0 {\n\t\tn += 1 + sovSignedPolicyCmd(uint64(m.ExpirationDelta))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\tif m.Cmd != nil {\n\t\tl = m.Cmd.Size()\n\t\tn += 1 + l + sovSignedPolicyCmd(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovSignedPolicyCmd(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozSignedPolicyCmd(x uint64) (n int) {\n\treturn sovSignedPolicyCmd(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *SignedPolicyCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SignedPolicyCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SignedPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Payload == nil {\n\t\t\t\tm.Payload = &SignedPolicyCmdPayload{}\n\t\t\t}\n\t\t\tif err := m.Payload.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Signature\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Signature = append(m.Signature[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Signature == nil {\n\t\t\t\tm.Signature = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipSignedPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *SignedPolicyCmdPayload) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: SignedPolicyCmdPayload: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: SignedPolicyCmdPayload: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Actor\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Actor = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuedHeight\", wireType)\n\t\t\t}\n\t\t\tm.IssuedHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.IssuedHeight |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.IssuedAt == nil {\n\t\t\t\tm.IssuedAt = &types.Timestamp{}\n\t\t\t}\n\t\t\tif err := m.IssuedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ExpirationDelta\", wireType)\n\t\t\t}\n\t\t\tm.ExpirationDelta = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ExpirationDelta |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Cmd == nil {\n\t\t\t\tm.Cmd = &PolicyCmd{}\n\t\t\t}\n\t\t\tif err := m.Cmd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipSignedPolicyCmd(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipSignedPolicyCmd(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowSignedPolicyCmd\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowSignedPolicyCmd\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthSignedPolicyCmd\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupSignedPolicyCmd\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthSignedPolicyCmd\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthSignedPolicyCmd        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowSignedPolicyCmd          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupSignedPolicyCmd = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/time.go",
    "content": "package types\n\nimport (\n\t\"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tprototypes \"github.com/cosmos/gogoproto/types\"\n)\n\n// NewBlockCountDuration returns a Duration object\n// based on number of blocks\nfunc NewBlockCountDuration(blocks uint64) *Duration {\n\treturn &Duration{\n\t\tDuration: &Duration_BlockCount{\n\t\t\tBlockCount: blocks,\n\t\t},\n\t}\n}\n\n// NewDurationFromTimeDuration returns a new Duration object\n// based on wall time\nfunc NewDurationFromTimeDuration(duration time.Duration) *Duration {\n\treturn &Duration{\n\t\tDuration: &Duration_ProtoDuration{\n\t\t\tProtoDuration: prototypes.DurationProto(duration),\n\t\t},\n\t}\n}\n\n// ToISOString returns an ISO8601 timestamp\nfunc (ts *Timestamp) ToISOString() (string, error) {\n\tt, err := prototypes.TimestampFromProto(ts.ProtoTs)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn t.Format(time.RFC3339), nil\n}\n\n// IsAfter returns whether now is after ts + duration\nfunc (ts *Timestamp) IsAfter(duration *Duration, now *Timestamp) (bool, error) {\n\tswitch d := duration.Duration.(type) {\n\tcase *Duration_BlockCount:\n\t\treturn ts.BlockHeight+d.BlockCount < now.BlockHeight, nil\n\tcase *Duration_ProtoDuration:\n\t\tgoTs, err := prototypes.TimestampFromProto(ts.ProtoTs)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\n\t\tgoNow, err := prototypes.TimestampFromProto(now.ProtoTs)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\n\t\tgoDuration, err := prototypes.DurationFromProto(d.ProtoDuration)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\n\t\treturn goNow.After(goTs.Add(goDuration)), nil\n\tdefault:\n\t\tpanic(\"invalid duration\")\n\t}\n}\n\n// TimestampFromCtx returns a new Timestamp\n// from a Cosmos Ctx\nfunc TimestampFromCtx(ctx sdk.Context) (*Timestamp, error) {\n\tts, err := prototypes.TimestampProto(ctx.BlockTime())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewTimestamp(ts, uint64(ctx.BlockHeight())), nil\n}\n\n// NewTimestamp returns a Timestamp from a protobuff timestamp and block height\nfunc NewTimestamp(time *prototypes.Timestamp, height uint64) *Timestamp {\n\treturn &Timestamp{\n\t\tBlockHeight: height,\n\t\tProtoTs:     time,\n\t}\n}\n"
  },
  {
    "path": "x/acp/types/time.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/time.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\ttypes \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Duration models a time interval expressed either as a wallclock\n// Duration interval or a number of blocks\ntype Duration struct {\n\t// Types that are valid to be assigned to Duration:\n\t//\t*Duration_ProtoDuration\n\t//\t*Duration_BlockCount\n\tDuration isDuration_Duration `protobuf_oneof:\"duration\"`\n}\n\nfunc (m *Duration) Reset()         { *m = Duration{} }\nfunc (m *Duration) String() string { return proto.CompactTextString(m) }\nfunc (*Duration) ProtoMessage()    {}\nfunc (*Duration) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1a759fd028b3acfe, []int{0}\n}\nfunc (m *Duration) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Duration.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Duration) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Duration.Merge(m, src)\n}\nfunc (m *Duration) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Duration) XXX_DiscardUnknown() {\n\txxx_messageInfo_Duration.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Duration proto.InternalMessageInfo\n\ntype isDuration_Duration interface {\n\tisDuration_Duration()\n\tMarshalTo([]byte) (int, error)\n\tSize() int\n}\n\ntype Duration_ProtoDuration struct {\n\tProtoDuration *types.Duration `protobuf:\"bytes,1,opt,name=proto_duration,json=protoDuration,proto3,oneof\" json:\"proto_duration,omitempty\"`\n}\ntype Duration_BlockCount struct {\n\tBlockCount uint64 `protobuf:\"varint,2,opt,name=block_count,json=blockCount,proto3,oneof\" json:\"block_count,omitempty\"`\n}\n\nfunc (*Duration_ProtoDuration) isDuration_Duration() {}\nfunc (*Duration_BlockCount) isDuration_Duration()    {}\n\nfunc (m *Duration) GetDuration() isDuration_Duration {\n\tif m != nil {\n\t\treturn m.Duration\n\t}\n\treturn nil\n}\n\nfunc (m *Duration) GetProtoDuration() *types.Duration {\n\tif x, ok := m.GetDuration().(*Duration_ProtoDuration); ok {\n\t\treturn x.ProtoDuration\n\t}\n\treturn nil\n}\n\nfunc (m *Duration) GetBlockCount() uint64 {\n\tif x, ok := m.GetDuration().(*Duration_BlockCount); ok {\n\t\treturn x.BlockCount\n\t}\n\treturn 0\n}\n\n// XXX_OneofWrappers is for the internal use of the proto package.\nfunc (*Duration) XXX_OneofWrappers() []interface{} {\n\treturn []interface{}{\n\t\t(*Duration_ProtoDuration)(nil),\n\t\t(*Duration_BlockCount)(nil),\n\t}\n}\n\n// Timestamp models an instant in time expressed as a wallclock\n// Timestamp and a block height\ntype Timestamp struct {\n\tProtoTs     *types.Timestamp `protobuf:\"bytes,1,opt,name=proto_ts,json=protoTs,proto3\" json:\"proto_ts,omitempty\"`\n\tBlockHeight uint64           `protobuf:\"varint,2,opt,name=block_height,json=blockHeight,proto3\" json:\"block_height,omitempty\"`\n}\n\nfunc (m *Timestamp) Reset()         { *m = Timestamp{} }\nfunc (m *Timestamp) String() string { return proto.CompactTextString(m) }\nfunc (*Timestamp) ProtoMessage()    {}\nfunc (*Timestamp) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1a759fd028b3acfe, []int{1}\n}\nfunc (m *Timestamp) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Timestamp.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Timestamp) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Timestamp.Merge(m, src)\n}\nfunc (m *Timestamp) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Timestamp) XXX_DiscardUnknown() {\n\txxx_messageInfo_Timestamp.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Timestamp proto.InternalMessageInfo\n\nfunc (m *Timestamp) GetProtoTs() *types.Timestamp {\n\tif m != nil {\n\t\treturn m.ProtoTs\n\t}\n\treturn nil\n}\n\nfunc (m *Timestamp) GetBlockHeight() uint64 {\n\tif m != nil {\n\t\treturn m.BlockHeight\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterType((*Duration)(nil), \"sourcehub.acp.Duration\")\n\tproto.RegisterType((*Timestamp)(nil), \"sourcehub.acp.Timestamp\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/time.proto\", fileDescriptor_1a759fd028b3acfe) }\n\nvar fileDescriptor_1a759fd028b3acfe = []byte{\n\t// 310 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x28, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x4c, 0x2e, 0xd0, 0x2f, 0xc9, 0xcc, 0x4d, 0xd5, 0x2b,\n\t0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x85, 0xcb, 0xe8, 0x25, 0x26, 0x17, 0x48, 0x09, 0x26, 0xe6,\n\t0x66, 0xe6, 0xe5, 0xeb, 0x83, 0x49, 0x88, 0x0a, 0x29, 0xb9, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54,\n\t0x7d, 0x30, 0x2f, 0xa9, 0x34, 0x4d, 0x3f, 0xa5, 0xb4, 0x28, 0xb1, 0x24, 0x33, 0x3f, 0x0f, 0x2a,\n\t0x2f, 0x8f, 0x2e, 0x0f, 0x32, 0xbd, 0xb8, 0x24, 0x31, 0xb7, 0x00, 0xa2, 0x40, 0x69, 0x09, 0x23,\n\t0x17, 0x87, 0x0b, 0x54, 0x8f, 0x50, 0x38, 0x17, 0x1f, 0x58, 0x34, 0x1e, 0x66, 0x8a, 0x04, 0xa3,\n\t0x02, 0xa3, 0x06, 0xb7, 0x91, 0xa4, 0x1e, 0xc4, 0x18, 0x3d, 0x98, 0x31, 0x7a, 0x30, 0x2d, 0x4e,\n\t0xc2, 0x9b, 0x9e, 0x6f, 0xd0, 0x42, 0xd3, 0xe5, 0xc1, 0x10, 0xc4, 0x0b, 0x16, 0x81, 0x1b, 0x6c,\n\t0xcc, 0xc5, 0x9d, 0x94, 0x93, 0x9f, 0x9c, 0x1d, 0x9f, 0x9c, 0x5f, 0x9a, 0x57, 0x22, 0xc1, 0xa4,\n\t0xc0, 0xa8, 0xc1, 0xe2, 0x24, 0x00, 0xd2, 0x8a, 0x2c, 0xee, 0xc1, 0x10, 0xc4, 0x05, 0xe6, 0x3a,\n\t0x83, 0x78, 0x4e, 0x5c, 0x5c, 0x1c, 0x30, 0x13, 0x95, 0x52, 0xb9, 0x38, 0x43, 0x60, 0x2e, 0x17,\n\t0x32, 0xe5, 0xe2, 0x80, 0x58, 0x58, 0x52, 0x0c, 0x75, 0xa0, 0x14, 0x86, 0x03, 0xe1, 0xaa, 0x83,\n\t0xd8, 0xc1, 0x62, 0x21, 0xc5, 0x42, 0x8a, 0x5c, 0x3c, 0x10, 0xcb, 0x32, 0x52, 0x33, 0xd3, 0x33,\n\t0xa0, 0xae, 0x08, 0x82, 0x38, 0xc0, 0x03, 0x2c, 0xe4, 0xe4, 0x71, 0xe2, 0x91, 0x1c, 0xe3, 0x85,\n\t0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3,\n\t0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x7a, 0xe9, 0x99, 0x25, 0xa0, 0x78, 0x48, 0xce, 0xcf, 0xd5, 0x87,\n\t0xc4, 0x4a, 0x5e, 0x6a, 0x49, 0x79, 0x7e, 0x51, 0xb6, 0x3e, 0x22, 0xf6, 0x2a, 0x20, 0xf1, 0x57,\n\t0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0xb6, 0xd5, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x8d, 0xe9,\n\t0xd1, 0x91, 0xdd, 0x01, 0x00, 0x00,\n}\n\nfunc (m *Duration) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Duration) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Duration) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Duration != nil {\n\t\t{\n\t\t\tsize := m.Duration.Size()\n\t\t\ti -= size\n\t\t\tif _, err := m.Duration.MarshalTo(dAtA[i:]); err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Duration_ProtoDuration) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Duration_ProtoDuration) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\tif m.ProtoDuration != nil {\n\t\t{\n\t\t\tsize, err := m.ProtoDuration.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTime(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Duration_BlockCount) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Duration_BlockCount) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\ti = encodeVarintTime(dAtA, i, uint64(m.BlockCount))\n\ti--\n\tdAtA[i] = 0x10\n\treturn len(dAtA) - i, nil\n}\nfunc (m *Timestamp) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Timestamp) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Timestamp) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.BlockHeight != 0 {\n\t\ti = encodeVarintTime(dAtA, i, uint64(m.BlockHeight))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.ProtoTs != nil {\n\t\t{\n\t\t\tsize, err := m.ProtoTs.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTime(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTime(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTime(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Duration) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Duration != nil {\n\t\tn += m.Duration.Size()\n\t}\n\treturn n\n}\n\nfunc (m *Duration_ProtoDuration) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProtoDuration != nil {\n\t\tl = m.ProtoDuration.Size()\n\t\tn += 1 + l + sovTime(uint64(l))\n\t}\n\treturn n\n}\nfunc (m *Duration_BlockCount) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tn += 1 + sovTime(uint64(m.BlockCount))\n\treturn n\n}\nfunc (m *Timestamp) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.ProtoTs != nil {\n\t\tl = m.ProtoTs.Size()\n\t\tn += 1 + l + sovTime(uint64(l))\n\t}\n\tif m.BlockHeight != 0 {\n\t\tn += 1 + sovTime(uint64(m.BlockHeight))\n\t}\n\treturn n\n}\n\nfunc sovTime(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTime(x uint64) (n int) {\n\treturn sovTime(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Duration) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTime\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Duration: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProtoDuration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tv := &types.Duration{}\n\t\t\tif err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tm.Duration = &Duration_ProtoDuration{v}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BlockCount\", wireType)\n\t\t\t}\n\t\t\tvar v uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Duration = &Duration_BlockCount{v}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTime(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Timestamp) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTime\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Timestamp: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Timestamp: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProtoTs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.ProtoTs == nil {\n\t\t\t\tm.ProtoTs = &types.Timestamp{}\n\t\t\t}\n\t\t\tif err := m.ProtoTs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BlockHeight\", wireType)\n\t\t\t}\n\t\t\tm.BlockHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.BlockHeight |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTime(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTime\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTime(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTime\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTime\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTime\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTime\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTime\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTime        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTime          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTime = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/tx.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/acp/tx.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\ttypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\ntype MsgSignedPolicyCmd_ContentType int32\n\nconst (\n\tMsgSignedPolicyCmd_UNKNOWN MsgSignedPolicyCmd_ContentType = 0\n\tMsgSignedPolicyCmd_JWS     MsgSignedPolicyCmd_ContentType = 1\n)\n\nvar MsgSignedPolicyCmd_ContentType_name = map[int32]string{\n\t0: \"UNKNOWN\",\n\t1: \"JWS\",\n}\n\nvar MsgSignedPolicyCmd_ContentType_value = map[string]int32{\n\t\"UNKNOWN\": 0,\n\t\"JWS\":     1,\n}\n\nfunc (x MsgSignedPolicyCmd_ContentType) String() string {\n\treturn proto.EnumName(MsgSignedPolicyCmd_ContentType_name, int32(x))\n}\n\nfunc (MsgSignedPolicyCmd_ContentType) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{8, 0}\n}\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *MsgUpdateParams) Reset()         { *m = MsgUpdateParams{} }\nfunc (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParams) ProtoMessage()    {}\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{0}\n}\nfunc (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParams) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParams.Merge(m, src)\n}\nfunc (m *MsgUpdateParams) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParams) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo\n\nfunc (m *MsgUpdateParams) GetAuthority() string {\n\tif m != nil {\n\t\treturn m.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateParams) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n}\n\nfunc (m *MsgUpdateParamsResponse) Reset()         { *m = MsgUpdateParamsResponse{} }\nfunc (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParamsResponse) ProtoMessage()    {}\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{1}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo\n\ntype MsgCreatePolicy struct {\n\tCreator     string                     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicy      string                     `protobuf:\"bytes,2,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,3,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (m *MsgCreatePolicy) Reset()         { *m = MsgCreatePolicy{} }\nfunc (m *MsgCreatePolicy) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreatePolicy) ProtoMessage()    {}\nfunc (*MsgCreatePolicy) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{2}\n}\nfunc (m *MsgCreatePolicy) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreatePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreatePolicy.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreatePolicy) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreatePolicy.Merge(m, src)\n}\nfunc (m *MsgCreatePolicy) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreatePolicy) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreatePolicy.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreatePolicy proto.InternalMessageInfo\n\nfunc (m *MsgCreatePolicy) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCreatePolicy) GetPolicy() string {\n\tif m != nil {\n\t\treturn m.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCreatePolicy) GetMarshalType() types.PolicyMarshalingType {\n\tif m != nil {\n\t\treturn m.MarshalType\n\t}\n\treturn types.PolicyMarshalingType_UNKNOWN\n}\n\ntype MsgCreatePolicyResponse struct {\n\tRecord *PolicyRecord `protobuf:\"bytes,1,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *MsgCreatePolicyResponse) Reset()         { *m = MsgCreatePolicyResponse{} }\nfunc (m *MsgCreatePolicyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreatePolicyResponse) ProtoMessage()    {}\nfunc (*MsgCreatePolicyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{3}\n}\nfunc (m *MsgCreatePolicyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreatePolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreatePolicyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreatePolicyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreatePolicyResponse.Merge(m, src)\n}\nfunc (m *MsgCreatePolicyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreatePolicyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreatePolicyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreatePolicyResponse proto.InternalMessageInfo\n\nfunc (m *MsgCreatePolicyResponse) GetRecord() *PolicyRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\ntype MsgEditPolicy struct {\n\tCreator     string                     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId    string                     `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tPolicy      string                     `protobuf:\"bytes,3,opt,name=policy,proto3\" json:\"policy,omitempty\"`\n\tMarshalType types.PolicyMarshalingType `protobuf:\"varint,4,opt,name=marshal_type,json=marshalType,proto3,enum=sourcenetwork.acp_core.PolicyMarshalingType\" json:\"marshal_type,omitempty\"`\n}\n\nfunc (m *MsgEditPolicy) Reset()         { *m = MsgEditPolicy{} }\nfunc (m *MsgEditPolicy) String() string { return proto.CompactTextString(m) }\nfunc (*MsgEditPolicy) ProtoMessage()    {}\nfunc (*MsgEditPolicy) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{4}\n}\nfunc (m *MsgEditPolicy) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgEditPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgEditPolicy.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgEditPolicy) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgEditPolicy.Merge(m, src)\n}\nfunc (m *MsgEditPolicy) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgEditPolicy) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgEditPolicy.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgEditPolicy proto.InternalMessageInfo\n\nfunc (m *MsgEditPolicy) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgEditPolicy) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgEditPolicy) GetPolicy() string {\n\tif m != nil {\n\t\treturn m.Policy\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgEditPolicy) GetMarshalType() types.PolicyMarshalingType {\n\tif m != nil {\n\t\treturn m.MarshalType\n\t}\n\treturn types.PolicyMarshalingType_UNKNOWN\n}\n\ntype MsgEditPolicyResponse struct {\n\tRelationshipsRemoved uint64        `protobuf:\"varint,1,opt,name=relationships_removed,json=relationshipsRemoved,proto3\" json:\"relationships_removed,omitempty\"`\n\tRecord               *PolicyRecord `protobuf:\"bytes,2,opt,name=record,proto3\" json:\"record,omitempty\"`\n}\n\nfunc (m *MsgEditPolicyResponse) Reset()         { *m = MsgEditPolicyResponse{} }\nfunc (m *MsgEditPolicyResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgEditPolicyResponse) ProtoMessage()    {}\nfunc (*MsgEditPolicyResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{5}\n}\nfunc (m *MsgEditPolicyResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgEditPolicyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgEditPolicyResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgEditPolicyResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgEditPolicyResponse.Merge(m, src)\n}\nfunc (m *MsgEditPolicyResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgEditPolicyResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgEditPolicyResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgEditPolicyResponse proto.InternalMessageInfo\n\nfunc (m *MsgEditPolicyResponse) GetRelationshipsRemoved() uint64 {\n\tif m != nil {\n\t\treturn m.RelationshipsRemoved\n\t}\n\treturn 0\n}\n\nfunc (m *MsgEditPolicyResponse) GetRecord() *PolicyRecord {\n\tif m != nil {\n\t\treturn m.Record\n\t}\n\treturn nil\n}\n\ntype MsgCheckAccess struct {\n\tCreator       string               `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId      string               `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tAccessRequest *types.AccessRequest `protobuf:\"bytes,3,opt,name=access_request,json=accessRequest,proto3\" json:\"access_request,omitempty\"`\n}\n\nfunc (m *MsgCheckAccess) Reset()         { *m = MsgCheckAccess{} }\nfunc (m *MsgCheckAccess) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCheckAccess) ProtoMessage()    {}\nfunc (*MsgCheckAccess) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{6}\n}\nfunc (m *MsgCheckAccess) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCheckAccess) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCheckAccess.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCheckAccess) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCheckAccess.Merge(m, src)\n}\nfunc (m *MsgCheckAccess) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCheckAccess) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCheckAccess.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCheckAccess proto.InternalMessageInfo\n\nfunc (m *MsgCheckAccess) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCheckAccess) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCheckAccess) GetAccessRequest() *types.AccessRequest {\n\tif m != nil {\n\t\treturn m.AccessRequest\n\t}\n\treturn nil\n}\n\ntype MsgCheckAccessResponse struct {\n\tDecision *AccessDecision `protobuf:\"bytes,1,opt,name=decision,proto3\" json:\"decision,omitempty\"`\n}\n\nfunc (m *MsgCheckAccessResponse) Reset()         { *m = MsgCheckAccessResponse{} }\nfunc (m *MsgCheckAccessResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCheckAccessResponse) ProtoMessage()    {}\nfunc (*MsgCheckAccessResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{7}\n}\nfunc (m *MsgCheckAccessResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCheckAccessResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCheckAccessResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCheckAccessResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCheckAccessResponse.Merge(m, src)\n}\nfunc (m *MsgCheckAccessResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCheckAccessResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCheckAccessResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCheckAccessResponse proto.InternalMessageInfo\n\nfunc (m *MsgCheckAccessResponse) GetDecision() *AccessDecision {\n\tif m != nil {\n\t\treturn m.Decision\n\t}\n\treturn nil\n}\n\ntype MsgSignedPolicyCmd struct {\n\tCreator string                         `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPayload string                         `protobuf:\"bytes,2,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\tType    MsgSignedPolicyCmd_ContentType `protobuf:\"varint,3,opt,name=type,proto3,enum=sourcehub.acp.MsgSignedPolicyCmd_ContentType\" json:\"type,omitempty\"`\n}\n\nfunc (m *MsgSignedPolicyCmd) Reset()         { *m = MsgSignedPolicyCmd{} }\nfunc (m *MsgSignedPolicyCmd) String() string { return proto.CompactTextString(m) }\nfunc (*MsgSignedPolicyCmd) ProtoMessage()    {}\nfunc (*MsgSignedPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{8}\n}\nfunc (m *MsgSignedPolicyCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgSignedPolicyCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgSignedPolicyCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgSignedPolicyCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgSignedPolicyCmd.Merge(m, src)\n}\nfunc (m *MsgSignedPolicyCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgSignedPolicyCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgSignedPolicyCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgSignedPolicyCmd proto.InternalMessageInfo\n\nfunc (m *MsgSignedPolicyCmd) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgSignedPolicyCmd) GetPayload() string {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgSignedPolicyCmd) GetType() MsgSignedPolicyCmd_ContentType {\n\tif m != nil {\n\t\treturn m.Type\n\t}\n\treturn MsgSignedPolicyCmd_UNKNOWN\n}\n\ntype MsgSignedPolicyCmdResponse struct {\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (m *MsgSignedPolicyCmdResponse) Reset()         { *m = MsgSignedPolicyCmdResponse{} }\nfunc (m *MsgSignedPolicyCmdResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgSignedPolicyCmdResponse) ProtoMessage()    {}\nfunc (*MsgSignedPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{9}\n}\nfunc (m *MsgSignedPolicyCmdResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgSignedPolicyCmdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgSignedPolicyCmdResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgSignedPolicyCmdResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgSignedPolicyCmdResponse.Merge(m, src)\n}\nfunc (m *MsgSignedPolicyCmdResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgSignedPolicyCmdResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgSignedPolicyCmdResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgSignedPolicyCmdResponse proto.InternalMessageInfo\n\nfunc (m *MsgSignedPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif m != nil {\n\t\treturn m.Result\n\t}\n\treturn nil\n}\n\ntype MsgBearerPolicyCmd struct {\n\tCreator     string     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tBearerToken string     `protobuf:\"bytes,2,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\"`\n\tPolicyId    string     `protobuf:\"bytes,3,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd         *PolicyCmd `protobuf:\"bytes,4,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (m *MsgBearerPolicyCmd) Reset()         { *m = MsgBearerPolicyCmd{} }\nfunc (m *MsgBearerPolicyCmd) String() string { return proto.CompactTextString(m) }\nfunc (*MsgBearerPolicyCmd) ProtoMessage()    {}\nfunc (*MsgBearerPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{10}\n}\nfunc (m *MsgBearerPolicyCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgBearerPolicyCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgBearerPolicyCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgBearerPolicyCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgBearerPolicyCmd.Merge(m, src)\n}\nfunc (m *MsgBearerPolicyCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgBearerPolicyCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgBearerPolicyCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgBearerPolicyCmd proto.InternalMessageInfo\n\nfunc (m *MsgBearerPolicyCmd) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgBearerPolicyCmd) GetBearerToken() string {\n\tif m != nil {\n\t\treturn m.BearerToken\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgBearerPolicyCmd) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgBearerPolicyCmd) GetCmd() *PolicyCmd {\n\tif m != nil {\n\t\treturn m.Cmd\n\t}\n\treturn nil\n}\n\ntype MsgBearerPolicyCmdResponse struct {\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (m *MsgBearerPolicyCmdResponse) Reset()         { *m = MsgBearerPolicyCmdResponse{} }\nfunc (m *MsgBearerPolicyCmdResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgBearerPolicyCmdResponse) ProtoMessage()    {}\nfunc (*MsgBearerPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{11}\n}\nfunc (m *MsgBearerPolicyCmdResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgBearerPolicyCmdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgBearerPolicyCmdResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgBearerPolicyCmdResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgBearerPolicyCmdResponse.Merge(m, src)\n}\nfunc (m *MsgBearerPolicyCmdResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgBearerPolicyCmdResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgBearerPolicyCmdResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgBearerPolicyCmdResponse proto.InternalMessageInfo\n\nfunc (m *MsgBearerPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif m != nil {\n\t\treturn m.Result\n\t}\n\treturn nil\n}\n\ntype MsgDirectPolicyCmd struct {\n\tCreator  string     `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tPolicyId string     `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tCmd      *PolicyCmd `protobuf:\"bytes,3,opt,name=cmd,proto3\" json:\"cmd,omitempty\"`\n}\n\nfunc (m *MsgDirectPolicyCmd) Reset()         { *m = MsgDirectPolicyCmd{} }\nfunc (m *MsgDirectPolicyCmd) String() string { return proto.CompactTextString(m) }\nfunc (*MsgDirectPolicyCmd) ProtoMessage()    {}\nfunc (*MsgDirectPolicyCmd) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{12}\n}\nfunc (m *MsgDirectPolicyCmd) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgDirectPolicyCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgDirectPolicyCmd.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgDirectPolicyCmd) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgDirectPolicyCmd.Merge(m, src)\n}\nfunc (m *MsgDirectPolicyCmd) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgDirectPolicyCmd) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgDirectPolicyCmd.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgDirectPolicyCmd proto.InternalMessageInfo\n\nfunc (m *MsgDirectPolicyCmd) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgDirectPolicyCmd) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgDirectPolicyCmd) GetCmd() *PolicyCmd {\n\tif m != nil {\n\t\treturn m.Cmd\n\t}\n\treturn nil\n}\n\ntype MsgDirectPolicyCmdResponse struct {\n\tResult *PolicyCmdResult `protobuf:\"bytes,1,opt,name=result,proto3\" json:\"result,omitempty\"`\n}\n\nfunc (m *MsgDirectPolicyCmdResponse) Reset()         { *m = MsgDirectPolicyCmdResponse{} }\nfunc (m *MsgDirectPolicyCmdResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgDirectPolicyCmdResponse) ProtoMessage()    {}\nfunc (*MsgDirectPolicyCmdResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5bb2974ac27b9ccc, []int{13}\n}\nfunc (m *MsgDirectPolicyCmdResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgDirectPolicyCmdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgDirectPolicyCmdResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgDirectPolicyCmdResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgDirectPolicyCmdResponse.Merge(m, src)\n}\nfunc (m *MsgDirectPolicyCmdResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgDirectPolicyCmdResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgDirectPolicyCmdResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgDirectPolicyCmdResponse proto.InternalMessageInfo\n\nfunc (m *MsgDirectPolicyCmdResponse) GetResult() *PolicyCmdResult {\n\tif m != nil {\n\t\treturn m.Result\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterEnum(\"sourcehub.acp.MsgSignedPolicyCmd_ContentType\", MsgSignedPolicyCmd_ContentType_name, MsgSignedPolicyCmd_ContentType_value)\n\tproto.RegisterType((*MsgUpdateParams)(nil), \"sourcehub.acp.MsgUpdateParams\")\n\tproto.RegisterType((*MsgUpdateParamsResponse)(nil), \"sourcehub.acp.MsgUpdateParamsResponse\")\n\tproto.RegisterType((*MsgCreatePolicy)(nil), \"sourcehub.acp.MsgCreatePolicy\")\n\tproto.RegisterType((*MsgCreatePolicyResponse)(nil), \"sourcehub.acp.MsgCreatePolicyResponse\")\n\tproto.RegisterType((*MsgEditPolicy)(nil), \"sourcehub.acp.MsgEditPolicy\")\n\tproto.RegisterType((*MsgEditPolicyResponse)(nil), \"sourcehub.acp.MsgEditPolicyResponse\")\n\tproto.RegisterType((*MsgCheckAccess)(nil), \"sourcehub.acp.MsgCheckAccess\")\n\tproto.RegisterType((*MsgCheckAccessResponse)(nil), \"sourcehub.acp.MsgCheckAccessResponse\")\n\tproto.RegisterType((*MsgSignedPolicyCmd)(nil), \"sourcehub.acp.MsgSignedPolicyCmd\")\n\tproto.RegisterType((*MsgSignedPolicyCmdResponse)(nil), \"sourcehub.acp.MsgSignedPolicyCmdResponse\")\n\tproto.RegisterType((*MsgBearerPolicyCmd)(nil), \"sourcehub.acp.MsgBearerPolicyCmd\")\n\tproto.RegisterType((*MsgBearerPolicyCmdResponse)(nil), \"sourcehub.acp.MsgBearerPolicyCmdResponse\")\n\tproto.RegisterType((*MsgDirectPolicyCmd)(nil), \"sourcehub.acp.MsgDirectPolicyCmd\")\n\tproto.RegisterType((*MsgDirectPolicyCmdResponse)(nil), \"sourcehub.acp.MsgDirectPolicyCmdResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/acp/tx.proto\", fileDescriptor_5bb2974ac27b9ccc) }\n\nvar fileDescriptor_5bb2974ac27b9ccc = []byte{\n\t// 967 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xbf, 0x6f, 0xdb, 0x46,\n\t0x14, 0xc7, 0xc5, 0xc8, 0xb1, 0xa3, 0x47, 0xd9, 0x4e, 0x09, 0xdb, 0x51, 0x98, 0x86, 0x76, 0x94,\n\t0xa4, 0x70, 0x8c, 0x86, 0x44, 0x15, 0x20, 0x68, 0xb3, 0xd9, 0x4e, 0x81, 0xfe, 0x92, 0x13, 0x50,\n\t0x4e, 0x02, 0x74, 0x21, 0x68, 0xf2, 0x4a, 0x11, 0x16, 0x79, 0xec, 0xdd, 0x29, 0x8d, 0xb6, 0xb6,\n\t0x40, 0x3b, 0x74, 0xea, 0xdf, 0xd0, 0x2e, 0x19, 0x3d, 0x14, 0xe8, 0xd4, 0xce, 0x19, 0x83, 0x4e,\n\t0x9d, 0x8a, 0xc2, 0x1e, 0xfc, 0x6f, 0x14, 0xe4, 0x9d, 0x24, 0xf2, 0x44, 0xc9, 0x46, 0xd2, 0xc5,\n\t0xd6, 0xbb, 0xf7, 0xbd, 0xf7, 0xe3, 0xc3, 0x77, 0x47, 0xc2, 0x1a, 0xc5, 0x7d, 0xe2, 0xa1, 0x6e,\n\t0xff, 0xc0, 0x72, 0xbd, 0xc4, 0x62, 0x2f, 0xcc, 0x84, 0x60, 0x86, 0xb5, 0xc5, 0xd1, 0xba, 0xe9,\n\t0x7a, 0x89, 0xfe, 0x8e, 0x1b, 0x85, 0x31, 0xb6, 0xb2, 0xbf, 0x5c, 0xa1, 0x5f, 0xf1, 0x30, 0x8d,\n\t0x30, 0xb5, 0x22, 0x1a, 0x58, 0xcf, 0x3f, 0x48, 0xff, 0x09, 0xc7, 0x55, 0xee, 0x70, 0x32, 0xcb,\n\t0xe2, 0x86, 0x70, 0xad, 0x04, 0x38, 0xc0, 0x7c, 0x3d, 0xfd, 0x25, 0x56, 0xd7, 0x03, 0x8c, 0x83,\n\t0x1e, 0xb2, 0x32, 0xeb, 0xa0, 0xff, 0x95, 0xc5, 0xc2, 0x08, 0x51, 0xe6, 0x46, 0x89, 0x10, 0xdc,\n\t0x2c, 0x16, 0xe9, 0x7a, 0x1e, 0xa2, 0xd4, 0xf1, 0x91, 0x17, 0xd2, 0x10, 0xc7, 0x42, 0xa4, 0x17,\n\t0x45, 0x89, 0x4b, 0xdc, 0x68, 0x98, 0xd7, 0x90, 0x7c, 0xb8, 0x17, 0x7a, 0x03, 0xc7, 0x8b, 0xfc,\n\t0xf2, 0xbd, 0x04, 0x79, 0x98, 0xf8, 0xc5, 0xe4, 0x31, 0x62, 0xdf, 0x60, 0x72, 0x98, 0xfa, 0x1d,\n\t0x0f, 0x13, 0x24, 0x82, 0x08, 0xd1, 0x9d, 0x99, 0x22, 0x87, 0x76, 0x31, 0x61, 0x42, 0x7a, 0x6b,\n\t0x8a, 0x94, 0xa0, 0xaf, 0xfb, 0x88, 0x0a, 0x55, 0xf3, 0x77, 0x05, 0x96, 0xdb, 0x34, 0x78, 0x92,\n\t0xf8, 0x2e, 0x43, 0x8f, 0xb3, 0x5e, 0xb4, 0xfb, 0x50, 0x73, 0xfb, 0xac, 0x8b, 0x49, 0xc8, 0x06,\n\t0x0d, 0x65, 0x43, 0xd9, 0xac, 0xed, 0x34, 0xfe, 0xfa, 0xed, 0xee, 0x8a, 0x40, 0xbc, 0xed, 0xfb,\n\t0x04, 0x51, 0xda, 0x61, 0x24, 0x8c, 0x03, 0x7b, 0x2c, 0xd5, 0x3e, 0x84, 0x79, 0x4e, 0xa3, 0x71,\n\t0x61, 0x43, 0xd9, 0x54, 0x5b, 0xab, 0x66, 0xe1, 0xe1, 0x9a, 0x3c, 0xfc, 0x4e, 0xed, 0xd5, 0x3f,\n\t0xeb, 0x95, 0x97, 0xa7, 0x47, 0x5b, 0x8a, 0x2d, 0xf4, 0x0f, 0x5a, 0xdf, 0x9f, 0x1e, 0x6d, 0x8d,\n\t0x23, 0xfd, 0x74, 0x7a, 0xb4, 0xb5, 0x3e, 0x46, 0xf5, 0x22, 0x83, 0x25, 0x55, 0xd9, 0xbc, 0x0a,\n\t0x57, 0xa4, 0x25, 0x1b, 0xd1, 0x04, 0xc7, 0x14, 0x35, 0x7f, 0xe1, 0x4d, 0xed, 0x12, 0x94, 0xfa,\n\t0x32, 0x34, 0x5a, 0x03, 0x16, 0xbc, 0xd4, 0xc6, 0x84, 0xb7, 0x64, 0x0f, 0x4d, 0x6d, 0x0d, 0xe6,\n\t0x39, 0xbe, 0xac, 0xec, 0x9a, 0x2d, 0x2c, 0xed, 0x11, 0xd4, 0x23, 0x97, 0xd0, 0xae, 0xdb, 0x73,\n\t0xd8, 0x20, 0x41, 0x8d, 0xea, 0x86, 0xb2, 0xb9, 0xd4, 0x7a, 0xdf, 0x2c, 0x70, 0x35, 0x87, 0x5c,\n\t0x4d, 0x9e, 0xa7, 0xcd, 0x77, 0x84, 0x71, 0xb0, 0x3f, 0x48, 0x90, 0xad, 0x8a, 0x08, 0xa9, 0xf1,\n\t0xa0, 0x9e, 0x76, 0x39, 0x4c, 0xdb, 0xdc, 0xcb, 0xea, 0xcf, 0xd7, 0x38, 0xac, 0x5f, 0xbb, 0x07,\n\t0xf3, 0x7c, 0x34, 0xb2, 0x52, 0xd5, 0xd6, 0x35, 0x19, 0xa4, 0x90, 0xa7, 0x12, 0x5b, 0x48, 0x9b,\n\t0x7f, 0x28, 0xb0, 0xd8, 0xa6, 0xc1, 0xc7, 0x7e, 0xc8, 0xce, 0x6c, 0xf9, 0x1a, 0xd4, 0xc4, 0xc4,\n\t0x84, 0xbe, 0xe8, 0xfa, 0x12, 0x5f, 0xf8, 0xd4, 0xcf, 0xf1, 0xa8, 0xce, 0xe4, 0x31, 0xf7, 0xff,\n\t0xf2, 0xf8, 0x4e, 0x81, 0xd5, 0x42, 0xfd, 0x39, 0x1c, 0xab, 0x04, 0xf5, 0x5c, 0x16, 0xe2, 0x98,\n\t0x76, 0xc3, 0x84, 0x3a, 0x04, 0x45, 0xf8, 0x39, 0xe2, 0x74, 0xe6, 0xec, 0x95, 0x82, 0xd3, 0xe6,\n\t0xbe, 0x1c, 0xc3, 0x0b, 0xe7, 0x67, 0xf8, 0xab, 0x02, 0x4b, 0xe9, 0x43, 0xe9, 0x22, 0xef, 0x70,\n\t0x3b, 0x3b, 0xfd, 0x6f, 0x0a, 0xf1, 0x0b, 0x58, 0x12, 0xd7, 0x87, 0x38, 0x6f, 0x19, 0x4c, 0xb5,\n\t0x75, 0x7b, 0x1a, 0x2e, 0x9e, 0xce, 0xe6, 0x62, 0x7b, 0xd1, 0xcd, 0x9b, 0x12, 0xa9, 0x0e, 0xac,\n\t0x15, 0x8b, 0x1c, 0x91, 0xfa, 0x08, 0x2e, 0x0d, 0x6f, 0x2b, 0x31, 0x3a, 0xd7, 0xa5, 0xb6, 0xf9,\n\t0x86, 0x87, 0x42, 0x64, 0x8f, 0xe4, 0xcd, 0x3f, 0x15, 0xd0, 0xda, 0x34, 0xe8, 0x84, 0x41, 0x8c,\n\t0x7c, 0x0e, 0x67, 0x37, 0xf2, 0x67, 0xb4, 0xdf, 0x80, 0x85, 0xc4, 0x1d, 0xf4, 0xb0, 0x3b, 0x6c,\n\t0x7e, 0x68, 0x6a, 0xdb, 0x30, 0x97, 0x3b, 0x30, 0x77, 0xa5, 0x0a, 0x26, 0x93, 0x98, 0xbb, 0x38,\n\t0x66, 0x28, 0x66, 0xd9, 0x84, 0x64, 0x5b, 0x9b, 0x37, 0x41, 0xcd, 0x2d, 0x6a, 0x2a, 0x2c, 0x3c,\n\t0xd9, 0xfb, 0x7c, 0xef, 0xd1, 0xb3, 0xbd, 0xcb, 0x15, 0x6d, 0x01, 0xaa, 0x9f, 0x3d, 0xeb, 0x5c,\n\t0x56, 0x24, 0x2a, 0xfb, 0xa0, 0x4f, 0x86, 0x1e, 0x91, 0xb9, 0x9f, 0x8e, 0x03, 0xed, 0xf7, 0x98,\n\t0xe0, 0x62, 0x94, 0x8e, 0x03, 0xdf, 0xd1, 0xef, 0x31, 0x5b, 0xa8, 0x9b, 0x2f, 0x39, 0x96, 0x1d,\n\t0xe4, 0x12, 0x44, 0xce, 0x83, 0xe5, 0x06, 0xd4, 0x0f, 0x32, 0xb1, 0xc3, 0xf0, 0x21, 0x8a, 0x05,\n\t0x1b, 0x95, 0xaf, 0xed, 0xa7, 0x4b, 0xc5, 0xc1, 0xa9, 0x4a, 0x83, 0xb3, 0x05, 0x55, 0x2f, 0xf2,\n\t0xb3, 0xc3, 0xa5, 0xb6, 0x1a, 0x53, 0xab, 0x4c, 0x45, 0xa5, 0x00, 0xa4, 0x4a, 0xdf, 0x1a, 0xc0,\n\t0x0f, 0x1c, 0xc0, 0xc3, 0x90, 0x20, 0x8f, 0x9d, 0x07, 0xc0, 0xcc, 0x63, 0x21, 0xba, 0xab, 0xbe,\n\t0x69, 0x77, 0x52, 0x19, 0x6f, 0xdb, 0x5d, 0xeb, 0xc7, 0x8b, 0x50, 0x6d, 0xd3, 0x40, 0x7b, 0x0a,\n\t0xf5, 0xc2, 0x2b, 0xd0, 0x98, 0x1c, 0xda, 0xbc, 0x5f, 0x7f, 0x6f, 0xb6, 0x7f, 0x54, 0xd7, 0x53,\n\t0xa8, 0x17, 0xde, 0x42, 0x25, 0x71, 0xf3, 0xfe, 0xb2, 0xb8, 0xa5, 0x6f, 0x88, 0xc7, 0x00, 0xb9,\n\t0x8b, 0xfe, 0xdd, 0xc9, 0x5d, 0x63, 0xaf, 0x7e, 0x6b, 0x96, 0x77, 0x14, 0xb1, 0x03, 0x6a, 0xfe,\n\t0xda, 0xbb, 0x5e, 0x52, 0xc8, 0xd8, 0xad, 0xdf, 0x9e, 0xe9, 0x1e, 0x05, 0x75, 0x60, 0x59, 0xbe,\n\t0x50, 0x6e, 0x9c, 0x79, 0x1d, 0xe8, 0x77, 0xce, 0x94, 0xe4, 0x13, 0xc8, 0x47, 0xb3, 0x24, 0x81,\n\t0x24, 0x29, 0x4b, 0x30, 0xed, 0xd8, 0x38, 0xb0, 0x2c, 0x8f, 0x7e, 0x49, 0x02, 0x49, 0x52, 0x96,\n\t0x60, 0xca, 0xe4, 0xea, 0x17, 0xbf, 0x4d, 0xbf, 0x84, 0x76, 0x3e, 0x79, 0x75, 0x6c, 0x28, 0xaf,\n\t0x8f, 0x0d, 0xe5, 0xdf, 0x63, 0x43, 0xf9, 0xf9, 0xc4, 0xa8, 0xbc, 0x3e, 0x31, 0x2a, 0x7f, 0x9f,\n\t0x18, 0x95, 0x2f, 0xcd, 0x20, 0x64, 0x69, 0x1c, 0x0f, 0x47, 0x56, 0xf1, 0x93, 0x4e, 0xfe, 0x42,\n\t0x4a, 0x6f, 0x4e, 0x7a, 0x30, 0x9f, 0x7d, 0xd8, 0xdd, 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xab,\n\t0x65, 0x68, 0xbc, 0x72, 0x0b, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(ctx context.Context, in *MsgCreatePolicy, opts ...grpc.CallOption) (*MsgCreatePolicyResponse, error)\n\t// EditPolicy mutates the rules defined by a Policy.\n\t//\n\t// Relations may be added and removed to resources (if they are not required),\n\t// new resources may be added, but resources may not be removed.\n\t//\n\t// # Removing a relation removes all relationships that reference the removed relation\n\t//\n\t// A few other invariants are enforced such as:\n\t// - the name of the actor resource may not be mutated\n\t// - resources cannot be removed\n\t// - the specification of a policy cannot be mutated\n\t// Violations of these constraints will return an error.\n\tEditPolicy(ctx context.Context, in *MsgEditPolicy, opts ...grpc.CallOption) (*MsgEditPolicyResponse, error)\n\t// CheckAccess executes an Access Request for an User and stores the result of the evaluation in SourceHub.\n\t// The resulting evaluation is used to generate a cryptographic proof that the given Access Request\n\t// was valid at a particular block height.\n\tCheckAccess(ctx context.Context, in *MsgCheckAccess, opts ...grpc.CallOption) (*MsgCheckAccessResponse, error)\n\t// SignedPolicyCmd is a wrapper for a Command which is executed within the Context of a Policy.\n\t// The Command is signed by the Actor issuing it.\n\tSignedPolicyCmd(ctx context.Context, in *MsgSignedPolicyCmd, opts ...grpc.CallOption) (*MsgSignedPolicyCmdResponse, error)\n\t// The Msg authenticates the actor initiating the command through a Bearer token.\n\t// This token MUST be issued and signed by some DID Actor, the verification of the signature\n\t// is used as authentication proof.\n\t// Lastly, the Bearer token MUST be bound to some SourceHub account.\n\tBearerPolicyCmd(ctx context.Context, in *MsgBearerPolicyCmd, opts ...grpc.CallOption) (*MsgBearerPolicyCmdResponse, error)\n\tDirectPolicyCmd(ctx context.Context, in *MsgDirectPolicyCmd, opts ...grpc.CallOption) (*MsgDirectPolicyCmdResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewMsgClient(cc grpc1.ClientConn) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/UpdateParams\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreatePolicy(ctx context.Context, in *MsgCreatePolicy, opts ...grpc.CallOption) (*MsgCreatePolicyResponse, error) {\n\tout := new(MsgCreatePolicyResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/CreatePolicy\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) EditPolicy(ctx context.Context, in *MsgEditPolicy, opts ...grpc.CallOption) (*MsgEditPolicyResponse, error) {\n\tout := new(MsgEditPolicyResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/EditPolicy\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CheckAccess(ctx context.Context, in *MsgCheckAccess, opts ...grpc.CallOption) (*MsgCheckAccessResponse, error) {\n\tout := new(MsgCheckAccessResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/CheckAccess\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) SignedPolicyCmd(ctx context.Context, in *MsgSignedPolicyCmd, opts ...grpc.CallOption) (*MsgSignedPolicyCmdResponse, error) {\n\tout := new(MsgSignedPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/SignedPolicyCmd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) BearerPolicyCmd(ctx context.Context, in *MsgBearerPolicyCmd, opts ...grpc.CallOption) (*MsgBearerPolicyCmdResponse, error) {\n\tout := new(MsgBearerPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/BearerPolicyCmd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) DirectPolicyCmd(ctx context.Context, in *MsgDirectPolicyCmd, opts ...grpc.CallOption) (*MsgDirectPolicyCmdResponse, error) {\n\tout := new(MsgDirectPolicyCmdResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.acp.Msg/DirectPolicyCmd\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// CreatePolicy adds a new Policy to SourceHub.\n\t// The Policy models an aplication's high level access control rules.\n\tCreatePolicy(context.Context, *MsgCreatePolicy) (*MsgCreatePolicyResponse, error)\n\t// EditPolicy mutates the rules defined by a Policy.\n\t//\n\t// Relations may be added and removed to resources (if they are not required),\n\t// new resources may be added, but resources may not be removed.\n\t//\n\t// # Removing a relation removes all relationships that reference the removed relation\n\t//\n\t// A few other invariants are enforced such as:\n\t// - the name of the actor resource may not be mutated\n\t// - resources cannot be removed\n\t// - the specification of a policy cannot be mutated\n\t// Violations of these constraints will return an error.\n\tEditPolicy(context.Context, *MsgEditPolicy) (*MsgEditPolicyResponse, error)\n\t// CheckAccess executes an Access Request for an User and stores the result of the evaluation in SourceHub.\n\t// The resulting evaluation is used to generate a cryptographic proof that the given Access Request\n\t// was valid at a particular block height.\n\tCheckAccess(context.Context, *MsgCheckAccess) (*MsgCheckAccessResponse, error)\n\t// SignedPolicyCmd is a wrapper for a Command which is executed within the Context of a Policy.\n\t// The Command is signed by the Actor issuing it.\n\tSignedPolicyCmd(context.Context, *MsgSignedPolicyCmd) (*MsgSignedPolicyCmdResponse, error)\n\t// The Msg authenticates the actor initiating the command through a Bearer token.\n\t// This token MUST be issued and signed by some DID Actor, the verification of the signature\n\t// is used as authentication proof.\n\t// Lastly, the Bearer token MUST be bound to some SourceHub account.\n\tBearerPolicyCmd(context.Context, *MsgBearerPolicyCmd) (*MsgBearerPolicyCmdResponse, error)\n\tDirectPolicyCmd(context.Context, *MsgDirectPolicyCmd) (*MsgDirectPolicyCmdResponse, error)\n}\n\n// UnimplementedMsgServer can be embedded to have forward compatible implementations.\ntype UnimplementedMsgServer struct {\n}\n\nfunc (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (*UnimplementedMsgServer) CreatePolicy(ctx context.Context, req *MsgCreatePolicy) (*MsgCreatePolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreatePolicy not implemented\")\n}\nfunc (*UnimplementedMsgServer) EditPolicy(ctx context.Context, req *MsgEditPolicy) (*MsgEditPolicyResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method EditPolicy not implemented\")\n}\nfunc (*UnimplementedMsgServer) CheckAccess(ctx context.Context, req *MsgCheckAccess) (*MsgCheckAccessResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CheckAccess not implemented\")\n}\nfunc (*UnimplementedMsgServer) SignedPolicyCmd(ctx context.Context, req *MsgSignedPolicyCmd) (*MsgSignedPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method SignedPolicyCmd not implemented\")\n}\nfunc (*UnimplementedMsgServer) BearerPolicyCmd(ctx context.Context, req *MsgBearerPolicyCmd) (*MsgBearerPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method BearerPolicyCmd not implemented\")\n}\nfunc (*UnimplementedMsgServer) DirectPolicyCmd(ctx context.Context, req *MsgDirectPolicyCmd) (*MsgDirectPolicyCmdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DirectPolicyCmd not implemented\")\n}\n\nfunc RegisterMsgServer(s grpc1.Server, srv MsgServer) {\n\ts.RegisterService(&_Msg_serviceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/UpdateParams\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreatePolicy)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreatePolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/CreatePolicy\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreatePolicy(ctx, req.(*MsgCreatePolicy))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_EditPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgEditPolicy)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).EditPolicy(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/EditPolicy\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).EditPolicy(ctx, req.(*MsgEditPolicy))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CheckAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCheckAccess)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CheckAccess(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/CheckAccess\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CheckAccess(ctx, req.(*MsgCheckAccess))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_SignedPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgSignedPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).SignedPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/SignedPolicyCmd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).SignedPolicyCmd(ctx, req.(*MsgSignedPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_BearerPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgBearerPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).BearerPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/BearerPolicyCmd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).BearerPolicyCmd(ctx, req.(*MsgBearerPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_DirectPolicyCmd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgDirectPolicyCmd)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).DirectPolicyCmd(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.acp.Msg/DirectPolicyCmd\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).DirectPolicyCmd(ctx, req.(*MsgDirectPolicyCmd))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Msg_serviceDesc = _Msg_serviceDesc\nvar _Msg_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.acp.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreatePolicy\",\n\t\t\tHandler:    _Msg_CreatePolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"EditPolicy\",\n\t\t\tHandler:    _Msg_EditPolicy_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CheckAccess\",\n\t\t\tHandler:    _Msg_CheckAccess_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"SignedPolicyCmd\",\n\t\t\tHandler:    _Msg_SignedPolicyCmd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"BearerPolicyCmd\",\n\t\t\tHandler:    _Msg_BearerPolicyCmd_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DirectPolicyCmd\",\n\t\t\tHandler:    _Msg_DirectPolicyCmd_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/acp/tx.proto\",\n}\n\nfunc (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreatePolicy) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreatePolicy) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreatePolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.MarshalType != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.MarshalType))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Policy) > 0 {\n\t\ti -= len(m.Policy)\n\t\tcopy(dAtA[i:], m.Policy)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Policy)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreatePolicyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreatePolicyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreatePolicyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgEditPolicy) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgEditPolicy) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgEditPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.MarshalType != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.MarshalType))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif len(m.Policy) > 0 {\n\t\ti -= len(m.Policy)\n\t\tcopy(dAtA[i:], m.Policy)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Policy)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgEditPolicyResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgEditPolicyResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgEditPolicyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\t{\n\t\t\tsize, err := m.Record.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif m.RelationshipsRemoved != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.RelationshipsRemoved))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCheckAccess) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCheckAccess) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCheckAccess) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.AccessRequest != nil {\n\t\t{\n\t\t\tsize, err := m.AccessRequest.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCheckAccessResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCheckAccessResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCheckAccessResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Decision != nil {\n\t\t{\n\t\t\tsize, err := m.Decision.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgSignedPolicyCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgSignedPolicyCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgSignedPolicyCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Type != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.Type))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.Payload) > 0 {\n\t\ti -= len(m.Payload)\n\t\tcopy(dAtA[i:], m.Payload)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Payload)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgSignedPolicyCmdResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgSignedPolicyCmdResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgSignedPolicyCmdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\t{\n\t\t\tsize, err := m.Result.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgBearerPolicyCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgBearerPolicyCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgBearerPolicyCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Cmd != nil {\n\t\t{\n\t\t\tsize, err := m.Cmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.BearerToken) > 0 {\n\t\ti -= len(m.BearerToken)\n\t\tcopy(dAtA[i:], m.BearerToken)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.BearerToken)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgBearerPolicyCmdResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgBearerPolicyCmdResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgBearerPolicyCmdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\t{\n\t\t\tsize, err := m.Result.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgDirectPolicyCmd) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgDirectPolicyCmd) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgDirectPolicyCmd) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Cmd != nil {\n\t\t{\n\t\t\tsize, err := m.Cmd.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgDirectPolicyCmdResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgDirectPolicyCmdResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgDirectPolicyCmdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\t{\n\t\t\tsize, err := m.Result.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTx(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTx(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *MsgUpdateParams) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Params.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgUpdateParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgCreatePolicy) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Policy)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.MarshalType != 0 {\n\t\tn += 1 + sovTx(uint64(m.MarshalType))\n\t}\n\treturn n\n}\n\nfunc (m *MsgCreatePolicyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgEditPolicy) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Policy)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.MarshalType != 0 {\n\t\tn += 1 + sovTx(uint64(m.MarshalType))\n\t}\n\treturn n\n}\n\nfunc (m *MsgEditPolicyResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.RelationshipsRemoved != 0 {\n\t\tn += 1 + sovTx(uint64(m.RelationshipsRemoved))\n\t}\n\tif m.Record != nil {\n\t\tl = m.Record.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgCheckAccess) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.AccessRequest != nil {\n\t\tl = m.AccessRequest.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgCheckAccessResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Decision != nil {\n\t\tl = m.Decision.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgSignedPolicyCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Payload)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Type != 0 {\n\t\tn += 1 + sovTx(uint64(m.Type))\n\t}\n\treturn n\n}\n\nfunc (m *MsgSignedPolicyCmdResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\tl = m.Result.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgBearerPolicyCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.BearerToken)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Cmd != nil {\n\t\tl = m.Cmd.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgBearerPolicyCmdResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\tl = m.Result.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgDirectPolicyCmd) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Cmd != nil {\n\t\tl = m.Cmd.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgDirectPolicyCmdResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Result != nil {\n\t\tl = m.Result.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovTx(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTx(x uint64) (n int) {\n\treturn sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreatePolicy) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePolicy: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePolicy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t}\n\t\t\tm.MarshalType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreatePolicyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePolicyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &PolicyRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgEditPolicy) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgEditPolicy: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgEditPolicy: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Policy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Policy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field MarshalType\", wireType)\n\t\t\t}\n\t\t\tm.MarshalType = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.MarshalType |= types.PolicyMarshalingType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgEditPolicyResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgEditPolicyResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgEditPolicyResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RelationshipsRemoved\", wireType)\n\t\t\t}\n\t\t\tm.RelationshipsRemoved = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.RelationshipsRemoved |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Record\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Record == nil {\n\t\t\t\tm.Record = &PolicyRecord{}\n\t\t\t}\n\t\t\tif err := m.Record.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCheckAccess) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCheckAccess: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCheckAccess: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AccessRequest\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.AccessRequest == nil {\n\t\t\t\tm.AccessRequest = &types.AccessRequest{}\n\t\t\t}\n\t\t\tif err := m.AccessRequest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCheckAccessResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCheckAccessResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCheckAccessResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Decision\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Decision == nil {\n\t\t\t\tm.Decision = &AccessDecision{}\n\t\t\t}\n\t\t\tif err := m.Decision.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgSignedPolicyCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgSignedPolicyCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgSignedPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Payload = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Type\", wireType)\n\t\t\t}\n\t\t\tm.Type = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Type |= MsgSignedPolicyCmd_ContentType(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgSignedPolicyCmdResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgSignedPolicyCmdResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgSignedPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Result == nil {\n\t\t\t\tm.Result = &PolicyCmdResult{}\n\t\t\t}\n\t\t\tif err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgBearerPolicyCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgBearerPolicyCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgBearerPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Cmd == nil {\n\t\t\t\tm.Cmd = &PolicyCmd{}\n\t\t\t}\n\t\t\tif err := m.Cmd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgBearerPolicyCmdResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgBearerPolicyCmdResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgBearerPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Result == nil {\n\t\t\t\tm.Result = &PolicyCmdResult{}\n\t\t\t}\n\t\t\tif err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgDirectPolicyCmd) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgDirectPolicyCmd: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgDirectPolicyCmd: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Cmd\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Cmd == nil {\n\t\t\t\tm.Cmd = &PolicyCmd{}\n\t\t\t}\n\t\t\tif err := m.Cmd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgDirectPolicyCmdResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgDirectPolicyCmdResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgDirectPolicyCmdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Result\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Result == nil {\n\t\t\t\tm.Result = &PolicyCmdResult{}\n\t\t\t}\n\t\t\tif err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTx(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTx\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTx\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTx\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTx        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTx          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTx = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/acp/types/types.go",
    "content": "package types\n"
  },
  {
    "path": "x/acp/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/binary\"\n\t\"hash\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/acp_core/pkg/auth\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n)\n\n// HashTx produces a sha256 of a Tx bytes.\nfunc HashTx(txBytes []byte) []byte {\n\thasher := sha256.New()\n\thasher.Write(txBytes)\n\treturn hasher.Sum(nil)\n}\n\n// InjectPrincipal injects an acp core did principal in ctx and returns the new context.\nfunc InjectPrincipal(ctx sdk.Context, actorDID string) (sdk.Context, error) {\n\tprincipal, err := coretypes.NewDIDPrincipal(actorDID)\n\tif err != nil {\n\t\treturn sdk.Context{}, err\n\t}\n\tgoCtx := auth.InjectPrincipal(ctx, principal)\n\tctx = ctx.WithContext(goCtx)\n\treturn ctx, nil\n}\n\n// WriteBytes writes a length-prefixed byte slice into the given hasher.\nfunc WriteBytes(h hash.Hash, bz []byte) {\n\tvar lenBuf [8]byte\n\tbinary.BigEndian.PutUint64(lenBuf[:], uint64(len(bz)))\n\th.Write(lenBuf[:])\n\tif len(bz) > 0 {\n\t\th.Write(bz)\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/keeper/acp_utils.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// getNamespaceId adds a prefix to the namespace and returns final namespace id.\nfunc getNamespaceId(namespace string) string {\n\tif strings.HasPrefix(namespace, types.NamespaceIdPrefix) {\n\t\treturn namespace // Already prefixed, return as is\n\t}\n\treturn types.NamespaceIdPrefix + namespace\n}\n\n// AddCollaborator adds new namespace collaborator.\nfunc AddCollaborator(ctx context.Context, k *Keeper, policyId, namespaceId, collaboratorDID, ownerDID, signer string) error {\n\tif k.getCollaborator(ctx, namespaceId, collaboratorDID) != nil {\n\t\treturn types.ErrCollaboratorAlreadyExists\n\t}\n\trel := coretypes.NewActorRelationship(types.NamespaceResource, namespaceId, types.CollaboratorRelation, collaboratorDID)\n\treturn addRelationship(ctx, k, rel, policyId, namespaceId, ownerDID, signer)\n}\n\n// deleteCollaborator deletes existing namespace collaborator.\nfunc deleteCollaborator(ctx context.Context, k *Keeper, policyId, namespaceId, collaboratorDID, ownerDID, signer string) error {\n\tif k.getCollaborator(ctx, namespaceId, collaboratorDID) == nil {\n\t\treturn types.ErrCollaboratorNotFound\n\t}\n\trel := coretypes.NewActorRelationship(types.NamespaceResource, namespaceId, types.CollaboratorRelation, collaboratorDID)\n\treturn deleteRelationship(ctx, k, rel, policyId, namespaceId, ownerDID, signer)\n}\n\n// addRelationship adds new actor relationship for the specified namespace object.\nfunc addRelationship(\n\tgoCtx context.Context,\n\tk *Keeper,\n\trelation *coretypes.Relationship,\n\tpolicyId, namespaceId, ownerDID, signer string,\n) error {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tmanager := capability.NewPolicyCapabilityManager(k.GetScopedKeeper())\n\tpolCap, err := manager.Fetch(ctx, policyId)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpolicyCmd := acptypes.NewSetRelationshipCmd(relation)\n\t_, err = k.GetAcpKeeper().ModulePolicyCmdForActorDID(ctx, polCap, policyCmd, ownerDID, signer)\n\n\treturn err\n}\n\n// deleteRelationship deletes existing actor relationship for the specified namespace object.\nfunc deleteRelationship(\n\tgoCtx context.Context,\n\tk *Keeper,\n\trelation *coretypes.Relationship,\n\tpolicyId, namespaceId, ownerDID, signer string,\n) error {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tmanager := capability.NewPolicyCapabilityManager(k.GetScopedKeeper())\n\tpolCap, err := manager.Fetch(ctx, policyId)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpolicyCmd := acptypes.NewDeleteRelationshipCmd(relation)\n\t_, err = k.GetAcpKeeper().ModulePolicyCmdForActorDID(ctx, polCap, policyCmd, ownerDID, signer)\n\n\treturn err\n}\n\n// RegisterNamespace registers a new namespace object under the namespace resource.\nfunc RegisterNamespace(ctx sdk.Context, k *Keeper, policyId, namespaceId, ownerDID, signer string) error {\n\tmanager := capability.NewPolicyCapabilityManager(k.GetScopedKeeper())\n\tpolCap, err := manager.Fetch(ctx, policyId)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpolicyCmd := acptypes.NewRegisterObjectCmd(coretypes.NewObject(types.NamespaceResource, namespaceId))\n\t_, err = k.GetAcpKeeper().ModulePolicyCmdForActorDID(ctx, polCap, policyCmd, ownerDID, signer)\n\treturn err\n}\n\n// hasPermission checks if an actor has required permission for the specified namespace object.\nfunc hasPermission(goCtx context.Context, k *Keeper, policyId, namespaceId, permission, actorDID, signer string) (bool, error) {\n\treq := &acptypes.QueryVerifyAccessRequestRequest{\n\t\tPolicyId: policyId,\n\t\tAccessRequest: &coretypes.AccessRequest{\n\t\t\tOperations: []*coretypes.Operation{\n\t\t\t\t{\n\t\t\t\t\tObject:     coretypes.NewObject(types.NamespaceResource, namespaceId),\n\t\t\t\t\tPermission: permission,\n\t\t\t\t},\n\t\t\t},\n\t\t\tActor: &coretypes.Actor{\n\t\t\t\tId: actorDID,\n\t\t\t},\n\t\t},\n\t}\n\tresult, err := k.GetAcpKeeper().VerifyAccessRequest(goCtx, req)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn result.Valid, nil\n}\n"
  },
  {
    "path": "x/bulletin/keeper/bulletin.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// hasPolicy checks if the bulletin module policy exists.\nfunc (k *Keeper) hasPolicy(ctx context.Context) bool {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get([]byte(types.PolicyIdKey))\n\treturn bz != nil\n}\n\n// EnsurePolicy creates new module policy and claims the related capability if the policy does not exist.\n// Otherwise returns existing policy id.\nfunc (k Keeper) EnsurePolicy(ctx sdk.Context) (string, error) {\n\tif k.hasPolicy(ctx) {\n\t\treturn k.GetPolicyId(ctx), nil\n\t}\n\n\t_, polCap, err := k.GetAcpKeeper().CreateModulePolicy(\n\t\tctx,\n\t\ttypes.BasePolicy(),\n\t\tcoretypes.PolicyMarshalingType_YAML,\n\t\ttypes.ModuleName,\n\t)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tmanager := capability.NewPolicyCapabilityManager(k.GetScopedKeeper())\n\tif err := manager.Claim(ctx, polCap); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tpolicyId := polCap.GetPolicyId()\n\tk.SetPolicyId(ctx, policyId)\n\treturn policyId, nil\n}\n\n// hasNamespace checks if namespace with specified namespaceId exists.\nfunc (k *Keeper) hasNamespace(ctx context.Context, namespaceId string) bool {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.NamespaceKeyPrefix))\n\n\tb := store.Get([]byte(namespaceId))\n\n\treturn b != nil\n}\n\n// getPost retrieves a post based on existing namespaceId and postId.\nfunc (k *Keeper) getPost(ctx context.Context, namespaceId string, postId string) *types.Post {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix))\n\n\tkey := types.PostKey(namespaceId, postId)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar post types.Post\n\tk.cdc.MustUnmarshal(b, &post)\n\n\treturn &post\n}\n\n// getCollaborator retrieves a namespace collaborator based on existing namespaceId and collaboratorDID.\nfunc (k *Keeper) getCollaborator(ctx context.Context, namespaceId string, collaboratorDID string) *types.Collaborator {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.CollaboratorKeyPrefix))\n\n\tkey := types.CollaboratorKey(namespaceId, collaboratorDID)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar collaborator types.Collaborator\n\tk.cdc.MustUnmarshal(b, &collaborator)\n\n\treturn &collaborator\n}\n\n// mustIterateNamespaces iterates over all namespaces and performs the provided callback function.\nfunc (k *Keeper) mustIterateNamespaces(ctx sdk.Context, cb func(namespace types.Namespace)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.NamespaceKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar namespace types.Namespace\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &namespace)\n\t\tcb(namespace)\n\t}\n}\n\n// mustIterateCollaborators iterates over all collaborators and performs the provided callback function.\nfunc (k *Keeper) mustIterateCollaborators(ctx context.Context, cb func(collaborator types.Collaborator)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.CollaboratorKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar collaborator types.Collaborator\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &collaborator)\n\t\tcb(collaborator)\n\t}\n}\n\n// mustIteratePosts iterates over all posts and performs the provided callback function.\nfunc (k *Keeper) mustIteratePosts(ctx context.Context, cb func(post types.Post)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar post types.Post\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &post)\n\t\tcb(post)\n\t}\n}\n\n// mustIterateNamespacePosts iterates over namespace posts and performs the provided callback function.\nfunc (k *Keeper) mustIterateNamespacePosts(ctx context.Context, namespaceId string, cb func(namespaceId string, post types.Post)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix))\n\tsanitizedPrefix := types.SanitizeKeyPart(namespaceId) + \"/\"\n\titerator := storetypes.KVStorePrefixIterator(store, []byte(sanitizedPrefix))\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar post types.Post\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &post)\n\t\tcb(namespaceId, post)\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/keeper/bulletin_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc TestGetNamespaceId(t *testing.T) {\n\tid1 := \"ns1\"\n\tid2 := \"ns2\"\n\tid3 := \"bulletin/ns1\"\n\n\trequire.Equal(t, \"bulletin/ns1\", getNamespaceId(id1))\n\trequire.Equal(t, \"bulletin/ns2\", getNamespaceId(id2))\n\trequire.Equal(t, \"bulletin/ns1\", getNamespaceId(id3))\n\trequire.Equal(t, getNamespaceId(id1), getNamespaceId(id3))\n}\n\nfunc TestHasPolicy(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\trequire.False(t, k.hasPolicy(ctx))\n\n\tk.SetPolicyId(ctx, \"policy1\")\n\trequire.True(t, k.hasPolicy(ctx))\n}\n\nfunc TestEnsurePolicy(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\trequire.False(t, k.hasPolicy(ctx))\n\n\tk.EnsurePolicy(ctx)\n\trequire.True(t, k.hasPolicy(ctx))\n}\n\nfunc TestHasNamespace(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tdid := \"did:key:bob\"\n\n\trequire.False(t, k.hasNamespace(ctx, namespaceId))\n\n\tnamespace := types.Namespace{\n\t\tId:        namespaceId,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, namespace)\n\n\trequire.True(t, k.hasNamespace(ctx, namespaceId))\n}\n\nfunc TestGetPost(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tpostId := \"post1\"\n\tdid := \"did:key:bob\"\n\n\tgotPost := k.getPost(ctx, namespaceId, postId)\n\trequire.Nil(t, gotPost)\n\n\tpost := types.Post{\n\t\tId:         postId,\n\t\tNamespace:  namespaceId,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload123\"),\n\t}\n\tk.SetPost(ctx, post)\n\n\tgotPost = k.getPost(ctx, namespaceId, postId)\n\trequire.NotNil(t, gotPost)\n\trequire.Equal(t, post.Id, gotPost.Id)\n\trequire.Equal(t, post.Namespace, gotPost.Namespace)\n\trequire.Equal(t, post.CreatorDid, gotPost.CreatorDid)\n\trequire.Equal(t, post.Payload, gotPost.Payload)\n}\n\nfunc TestGetCollaborator(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tdid := \"did:key:bob\"\n\n\tgotCollagorator := k.getCollaborator(ctx, namespaceId, did)\n\trequire.Nil(t, gotCollagorator)\n\n\tcollaborator := types.Collaborator{\n\t\tAddress:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tDid:       did,\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, collaborator)\n\n\tgotCollagorator = k.getCollaborator(ctx, namespaceId, did)\n\trequire.NotNil(t, gotCollagorator)\n\trequire.Equal(t, collaborator.Address, gotCollagorator.Address)\n\trequire.Equal(t, collaborator.Did, gotCollagorator.Did)\n\trequire.Equal(t, collaborator.Namespace, gotCollagorator.Namespace)\n}\n\nfunc TestMustIterateNamespaces(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId1 := getNamespaceId(\"ns1\")\n\tnamespaceId2 := getNamespaceId(\"ns2\")\n\tdid := \"did:key:bob\"\n\n\tns1 := types.Namespace{\n\t\tId:        namespaceId1,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, ns1)\n\n\tns2 := types.Namespace{\n\t\tId:        namespaceId2,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, ns2)\n\n\tvar namespaces []types.Namespace\n\tk.mustIterateNamespaces(ctx, func(ns types.Namespace) {\n\t\tnamespaces = append(namespaces, ns)\n\t})\n\n\trequire.ElementsMatch(t, []types.Namespace{ns1, ns2}, namespaces)\n\trequire.Equal(t, 2, len(namespaces))\n}\n\nfunc TestMustIterateCollaborators(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\n\tc1 := types.Collaborator{\n\t\tAddress:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tDid:       \"did:key:bob\",\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, c1)\n\n\tc2 := types.Collaborator{\n\t\tAddress:   \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\tDid:       \"did:key:sam\",\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, c2)\n\n\tvar collaborators []types.Collaborator\n\tk.mustIterateCollaborators(ctx, func(c types.Collaborator) {\n\t\tcollaborators = append(collaborators, c)\n\t})\n\n\trequire.ElementsMatch(t, []types.Collaborator{c1, c2}, collaborators)\n\trequire.Equal(t, 2, len(collaborators))\n}\n\nfunc TestMustIteratePosts(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tdid := \"did:key:bob\"\n\n\tpost1 := types.Post{\n\t\tId:         \"post1\",\n\t\tNamespace:  namespaceId,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload123\"),\n\t}\n\tk.SetPost(ctx, post1)\n\n\tpost2 := types.Post{\n\t\tId:         \"post2\",\n\t\tNamespace:  namespaceId,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload456\"),\n\t}\n\tk.SetPost(ctx, post2)\n\n\tvar posts []types.Post\n\tk.mustIteratePosts(ctx, func(p types.Post) {\n\t\tposts = append(posts, p)\n\t})\n\n\trequire.ElementsMatch(t, []types.Post{post1, post2}, posts)\n\trequire.Equal(t, 2, len(posts))\n}\n\nfunc TestMustIterateNamespacePosts(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId1 := getNamespaceId(\"ns1\")\n\tnamespaceId2 := getNamespaceId(\"ns2\")\n\tdid := \"did:key:bob\"\n\n\tpost1 := types.Post{\n\t\tId:         \"post1\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload123\"),\n\t}\n\tk.SetPost(ctx, post1)\n\n\tpost2 := types.Post{\n\t\tId:         \"post2\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload456\"),\n\t}\n\tk.SetPost(ctx, post2)\n\n\tpost3 := types.Post{\n\t\tId:         \"post3\",\n\t\tNamespace:  namespaceId2,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload789\"),\n\t}\n\tk.SetPost(ctx, post3)\n\n\tvar ns1Posts []types.Post\n\tk.mustIterateNamespacePosts(ctx, namespaceId1, func(namespaceId string, p types.Post) {\n\t\trequire.Equal(t, namespaceId1, namespaceId)\n\t\tns1Posts = append(ns1Posts, p)\n\t})\n\n\trequire.ElementsMatch(t, []types.Post{post1, post2}, ns1Posts)\n\trequire.Equal(t, 2, len(ns1Posts))\n\n\tvar ns2Posts []types.Post\n\tk.mustIterateNamespacePosts(ctx, namespaceId2, func(namespaceId string, p types.Post) {\n\t\trequire.Equal(t, namespaceId2, namespaceId)\n\t\tns2Posts = append(ns2Posts, p)\n\t})\n\n\trequire.ElementsMatch(t, []types.Post{post3}, ns2Posts)\n\trequire.Equal(t, 1, len(ns2Posts))\n}\n"
  },
  {
    "path": "x/bulletin/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/store/prefix\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n\t\"github.com/sourcenetwork/sourcehub/utils\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar _ types.QueryServer = &Keeper{}\n\n// Params query returns bulletin module params.\nfunc (k *Keeper) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\treturn &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil\n}\n\n// Namespaces query returns all namespaces with pagination.\nfunc (k *Keeper) Namespaces(ctx context.Context, req *types.QueryNamespacesRequest) (*types.QueryNamespacesResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tnamespaces, pageRes, err := k.getNamespacesPaginated(ctx, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.QueryNamespacesResponse{Namespaces: namespaces, Pagination: pageRes}, nil\n}\n\n// Namespace query returns a namespace based on the specified namespace id.\nfunc (k *Keeper) Namespace(ctx context.Context, req *types.QueryNamespaceRequest) (*types.QueryNamespaceResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tnamespaceId := getNamespaceId(req.Namespace)\n\tnamespace := k.GetNamespace(ctx, namespaceId)\n\tif namespace == nil {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrNamespaceNotFound.Error())\n\t}\n\n\treturn &types.QueryNamespaceResponse{Namespace: namespace}, nil\n}\n\n// NamespaceCollaborators query returns all namespace collaborators with pagination.\nfunc (k *Keeper) NamespaceCollaborators(ctx context.Context, req *types.QueryNamespaceCollaboratorsRequest) (\n\t*types.QueryNamespaceCollaboratorsResponse, error) {\n\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tnamespaceId := getNamespaceId(req.Namespace)\n\tif !k.hasNamespace(ctx, namespaceId) {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrNamespaceNotFound.Error())\n\t}\n\n\tnamespaces, pageRes, err := k.getNamespaceCollaboratorsPaginated(ctx, namespaceId, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.QueryNamespaceCollaboratorsResponse{Collaborators: namespaces, Pagination: pageRes}, nil\n}\n\n// NamespacePosts query returns all namespace posts with pagination.\nfunc (k *Keeper) NamespacePosts(ctx context.Context, req *types.QueryNamespacePostsRequest) (\n\t*types.QueryNamespacePostsResponse, error) {\n\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tnamespaceId := getNamespaceId(req.Namespace)\n\tif !k.hasNamespace(ctx, namespaceId) {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrNamespaceNotFound.Error())\n\t}\n\n\tposts, pageRes, err := k.getNamespacePostsPaginated(ctx, namespaceId, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.QueryNamespacePostsResponse{Posts: posts, Pagination: pageRes}, nil\n}\n\n// Post query returns a post based on the specified namespace and id.\nfunc (k *Keeper) Post(ctx context.Context, req *types.QueryPostRequest) (*types.QueryPostResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tnamespaceId := getNamespaceId(req.Namespace)\n\tif !k.hasNamespace(ctx, namespaceId) {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrNamespaceNotFound.Error())\n\t}\n\n\tpost := k.getPost(ctx, namespaceId, req.Id)\n\tif post == nil {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrPostNotFound.Error())\n\t}\n\n\treturn &types.QueryPostResponse{Post: post}, nil\n}\n\n// Posts query returns all posts with pagination.\nfunc (k *Keeper) Posts(ctx context.Context, req *types.QueryPostsRequest) (*types.QueryPostsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tposts, pageRes, err := k.getAllPostsPaginated(ctx, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.QueryPostsResponse{Posts: posts, Pagination: pageRes}, nil\n}\n\n// IterateGlob returns posts matching the glob pattern within the specified namespace.\nfunc (k *Keeper) IterateGlob(goCtx context.Context, req *types.QueryIterateGlobRequest) (*types.QueryIterateGlobResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tif len(req.Namespace) == 0 {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid namespace\")\n\t}\n\n\t// Use the sanitized namespace as prefix without trailing slash to match all keys that start with it\n\tsanitizedNamespaceId := types.SanitizeKeyPart(getNamespaceId(req.Namespace))\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(goCtx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix+sanitizedNamespaceId))\n\n\tvar posts []*types.Post\n\n\t// Use the Paginate function to handle the pagination logic.\n\tpageRes, err := query.Paginate(store, req.Pagination, func(key []byte, value []byte) error {\n\t\tkeyStr := string(key)\n\n\t\t// Strip leading separator:\n\t\t// \"|\" appears when matching sub-paths within the namespace\n\t\t// \"/\" appears when matching exactly at namespace boundary with non-empty postId\n\t\tif len(keyStr) > 0 && (keyStr[0] == '|' || keyStr[0] == '/') {\n\t\t\tkeyStr = keyStr[1:]\n\t\t}\n\n\t\t// Strip trailing \"/\" before glob matching\n\t\tif len(keyStr) > 0 && keyStr[len(keyStr)-1] == '/' {\n\t\t\tkeyStr = keyStr[:len(keyStr)-1]\n\t\t}\n\n\t\t// Unsanitize the key to restore original \"/\" characters for glob matching\n\t\tkeyStr = types.UnsanitizeKeyPart(keyStr)\n\t\tmatched := utils.Glob(req.Glob, keyStr)\n\t\tif matched {\n\t\t\tvar post types.Post\n\t\t\tk.cdc.MustUnmarshal(value, &post)\n\t\t\tposts = append(posts, &post)\n\t\t}\n\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tresp := &types.QueryIterateGlobResponse{\n\t\tPosts:      posts,\n\t\tPagination: pageRes,\n\t}\n\n\treturn resp, nil\n}\n\n// getNamespacesPaginated returns all namespaces with pagination.\nfunc (k *Keeper) getNamespacesPaginated(ctx context.Context, pageReq *query.PageRequest) (\n\t[]types.Namespace, *query.PageResponse, error) {\n\n\tvar namespaces []types.Namespace\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.NamespaceKeyPrefix))\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar namespace types.Namespace\n\t\tk.cdc.MustUnmarshal(value, &namespace)\n\t\tnamespaces = append(namespaces, namespace)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, pageReq, onResult)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn namespaces, pageRes, nil\n}\n\n// getNamespaceCollaboratorsPaginated returns namespace collaborators with pagination.\nfunc (k *Keeper) getNamespaceCollaboratorsPaginated(ctx context.Context, namespaceId string, pageReq *query.PageRequest) (\n\t[]types.Collaborator, *query.PageResponse, error) {\n\n\tvar collaborators []types.Collaborator\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tnsPrefix := append(types.KeyPrefix(types.CollaboratorKeyPrefix), []byte(types.SanitizeKeyPart(namespaceId)+\"/\")...)\n\tstore := prefix.NewStore(storeAdapter, nsPrefix)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar collaborator types.Collaborator\n\t\tk.cdc.MustUnmarshal(value, &collaborator)\n\t\tcollaborators = append(collaborators, collaborator)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, pageReq, onResult)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn collaborators, pageRes, nil\n}\n\n// getNamespacePostsPaginated returns namespace posts with pagination.\nfunc (k *Keeper) getNamespacePostsPaginated(ctx context.Context, namespaceId string, pageReq *query.PageRequest) (\n\t[]types.Post, *query.PageResponse, error) {\n\n\tvar posts []types.Post\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tnsPrefix := append(types.KeyPrefix(types.PostKeyPrefix), []byte(types.SanitizeKeyPart(namespaceId)+\"/\")...)\n\tstore := prefix.NewStore(storeAdapter, nsPrefix)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar post types.Post\n\t\tk.cdc.MustUnmarshal(value, &post)\n\t\tposts = append(posts, post)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, pageReq, onResult)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn posts, pageRes, nil\n}\n\n// getAllPostsPaginated returns all posts with pagination.\nfunc (k *Keeper) getAllPostsPaginated(ctx context.Context, pageReq *query.PageRequest) (\n\t[]types.Post, *query.PageResponse, error) {\n\n\tvar posts []types.Post\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix))\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar post types.Post\n\t\tk.cdc.MustUnmarshal(value, &post)\n\t\tposts = append(posts, post)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, pageReq, onResult)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn posts, pageRes, nil\n}\n\n\n// BulletinPolicyId returns the bulletin module policy id.\nfunc (k *Keeper) BulletinPolicyId(ctx context.Context, req *types.QueryBulletinPolicyIdRequest) (*types.QueryBulletinPolicyIdResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tpolicyId := k.GetPolicyId(ctx)\n\tif policyId == \"\" {\n\t\treturn nil, status.Error(codes.NotFound, types.ErrInvalidPolicyId.Error())\n\t}\n\n\treturn &types.QueryBulletinPolicyIdResponse{PolicyId: policyId}, nil\n}\n"
  },
  {
    "path": "x/bulletin/keeper/grpc_query_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tquery \"github.com/cosmos/cosmos-sdk/types/query\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"github.com/stretchr/testify/require\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc TestParamsQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Params(ctx, &types.QueryParamsRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryParamsResponse{Params: params}, response)\n}\n\nfunc TestParamsQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Params(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestNamespacesQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace1 := \"ns1\"\n\tnamespace2 := \"ns2\"\n\n\townerDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace1,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace2,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Namespaces(ctx, &types.QueryNamespacesRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryNamespacesResponse{\n\t\tNamespaces: []types.Namespace{\n\t\t\t{\n\t\t\t\tId:       getNamespaceId(namespace1),\n\t\t\t\tCreator:  baseAcc.Address,\n\t\t\t\tOwnerDid: ownerDID,\n\t\t\t},\n\t\t\t{\n\t\t\t\tId:       getNamespaceId(namespace2),\n\t\t\t\tCreator:  baseAcc.Address,\n\t\t\t\tOwnerDid: ownerDID,\n\t\t\t},\n\t\t},\n\t\tPagination: &query.PageResponse{\n\t\t\tNextKey: nil,\n\t\t\tTotal:   2,\n\t\t},\n\t}, response)\n}\n\nfunc TestNamespaceQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace := \"ns1\"\n\n\townerDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Namespace(ctx, &types.QueryNamespaceRequest{\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryNamespaceResponse{\n\t\tNamespace: &types.Namespace{\n\t\t\tId:       getNamespaceId(namespace),\n\t\t\tCreator:  baseAcc.Address,\n\t\t\tOwnerDid: ownerDID,\n\t\t},\n\t}, response)\n}\n\nfunc TestNamespaceCollaboratorsQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tpubKey2 := secp256k1.GenPrivKey().PubKey()\n\taddr2 := sdk.AccAddress(pubKey2.Address())\n\tbaseAcc2 := authtypes.NewBaseAccount(addr2, pubKey2, 2, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc2)\n\n\tpubKey3 := secp256k1.GenPrivKey().PubKey()\n\taddr3 := sdk.AccAddress(pubKey3.Address())\n\tbaseAcc3 := authtypes.NewBaseAccount(addr3, pubKey3, 3, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc3)\n\n\tnamespace := \"ns1\"\n\n\tfirstCollaboratorDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc2.Address)\n\trequire.NoError(t, err)\n\n\tsecondCollaboratorDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc3.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\tCreator:      baseAcc.Address,\n\t\tNamespace:    namespace,\n\t\tCollaborator: baseAcc2.Address,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\tCreator:      baseAcc.Address,\n\t\tNamespace:    namespace,\n\t\tCollaborator: baseAcc3.Address,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.NamespaceCollaborators(ctx, &types.QueryNamespaceCollaboratorsRequest{\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\trequire.ElementsMatch(t, []types.Collaborator{\n\t\t{\n\t\t\tAddress:   baseAcc2.Address,\n\t\t\tDid:       firstCollaboratorDID,\n\t\t\tNamespace: getNamespaceId(namespace),\n\t\t},\n\t\t{\n\t\t\tAddress:   baseAcc3.Address,\n\t\t\tDid:       secondCollaboratorDID,\n\t\t\tNamespace: getNamespaceId(namespace),\n\t\t},\n\t}, response.Collaborators)\n}\n\nfunc TestNamespacePostsQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace := \"ns1\"\n\tpayload1 := []byte(\"post123\")\n\tpayload2 := []byte(\"post321\")\n\n\tpostId1 := types.GeneratePostId(getNamespaceId(namespace), payload1)\n\tpostId2 := types.GeneratePostId(getNamespaceId(namespace), payload2)\n\n\townerDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.CreatePost(ctx, &types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t\tPayload:   payload1,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.CreatePost(ctx, &types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t\tPayload:   payload2,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.NamespacePosts(ctx, &types.QueryNamespacePostsRequest{\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryNamespacePostsResponse{\n\t\tPosts: []types.Post{\n\t\t\t{\n\t\t\t\tId:         postId1,\n\t\t\t\tNamespace:  getNamespaceId(namespace),\n\t\t\t\tCreatorDid: ownerDID,\n\t\t\t\tPayload:    payload1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tId:         postId2,\n\t\t\t\tNamespace:  getNamespaceId(namespace),\n\t\t\t\tCreatorDid: ownerDID,\n\t\t\t\tPayload:    payload2,\n\t\t\t},\n\t\t},\n\t\tPagination: &query.PageResponse{\n\t\t\tNextKey: nil,\n\t\t\tTotal:   2,\n\t\t},\n\t}, response)\n}\n\nfunc TestPostsQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace1 := \"ns1\"\n\tnamespace2 := \"ns2\"\n\tpayload1 := []byte(\"post123\")\n\tpayload2 := []byte(\"post321\")\n\n\tpostId1 := types.GeneratePostId(getNamespaceId(namespace1), payload1)\n\tpostId2 := types.GeneratePostId(getNamespaceId(namespace2), payload2)\n\n\townerDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace1,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace2,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.CreatePost(ctx, &types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace1,\n\t\tPayload:   payload1,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.CreatePost(ctx, &types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace2,\n\t\tPayload:   payload2,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Posts(ctx, &types.QueryPostsRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryPostsResponse{\n\t\tPosts: []types.Post{\n\t\t\t{\n\t\t\t\tId:         postId1,\n\t\t\t\tNamespace:  getNamespaceId(namespace1),\n\t\t\t\tCreatorDid: ownerDID,\n\t\t\t\tPayload:    payload1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tId:         postId2,\n\t\t\t\tNamespace:  getNamespaceId(namespace2),\n\t\t\t\tCreatorDid: ownerDID,\n\t\t\t\tPayload:    payload2,\n\t\t\t},\n\t\t},\n\t\tPagination: &query.PageResponse{\n\t\t\tNextKey: nil,\n\t\t\tTotal:   2,\n\t\t},\n\t}, response)\n}\n\nfunc TestPostQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace := \"ns1\"\n\tpayload1 := []byte(\"post123\")\n\tartifact := \"artifact\"\n\n\tpostId1 := types.GeneratePostId(getNamespaceId(namespace), payload1)\n\n\townerDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\n\t_, err = k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = k.CreatePost(ctx, &types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: namespace,\n\t\tPayload:   payload1,\n\t\tArtifact: artifact,\n\t})\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Post(ctx, &types.QueryPostRequest{\n\t\tNamespace: namespace,\n\t\tId:        postId1,\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryPostResponse{\n\t\tPost: &types.Post{\n\t\t\tId:         postId1,\n\t\t\tNamespace:  getNamespaceId(namespace),\n\t\t\tCreatorDid: ownerDID,\n\t\t\tPayload:    payload1,\n\t\t},\n\t}, response)\n}\n\nfunc TestBulletinPolicyIdQuery(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tsetupTestPolicy(t, ctx, k)\n\n\tresponse, err := k.BulletinPolicyId(ctx, &types.QueryBulletinPolicyIdRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, k.GetPolicyId(ctx), response.PolicyId)\n}\n\nfunc TestBulletinPolicyIdQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tresponse, err := k.BulletinPolicyId(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Equal(t, codes.InvalidArgument, status.Code(err))\n\trequire.Nil(t, response)\n}\n\nfunc TestBulletinPolicyIdQuery_PolicyNotSet(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tresponse, err := k.BulletinPolicyId(ctx, &types.QueryBulletinPolicyIdRequest{})\n\trequire.Error(t, err)\n\trequire.Equal(t, codes.NotFound, status.Code(err))\n\trequire.Nil(t, response)\n}\n\nfunc TestIterateGlob(t *testing.T) {\n\tkeeper, ctx := setupKeeper(t)\n\n\tposts := []*types.Post{\n\t\t// sub1 set\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/foo/bar/key1\",\n\t\t\tPayload:   []byte(\"val1\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/foo/bar/key2\",\n\t\t\tPayload:   []byte(\"val2\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/foo/baz/key1\",\n\t\t\tPayload:   []byte(\"val3\"),\n\t\t},\n\n\t\t// base set\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/key1\",\n\t\t\tPayload:   []byte(\"val1\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/key2\",\n\t\t\tPayload:   []byte(\"val2\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/key3\",\n\t\t\tPayload:   []byte(\"val3\"),\n\t\t},\n\n\t\t// sub1 set\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/sub1/key1\",\n\t\t\tPayload:   []byte(\"val1\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/sub1/key2\",\n\t\t\tPayload:   []byte(\"val2\"),\n\t\t},\n\t\t{\n\t\t\tNamespace: \"bulletin/test1/sub1/key3\",\n\t\t\tPayload:   []byte(\"val3\"),\n\t\t},\n\t}\n\n\t// add posts\n\tfor _, post := range posts {\n\t\tkeeper.SetPost(ctx, *post)\n\t}\n\n\t// iterate all\n\tresp1, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts, resp1.Posts)\n\n\t// iterate sub1\n\tresp2, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"sub1*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[6:9], resp2.Posts)\n\n\t// iterate no subset\n\tresp3, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"k*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[3:6], resp3.Posts)\n\n\t// empty glob will return the empty set\n\tresp4, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Zero(t, resp4.Posts)\n\n\t// mid selector\n\tresp5, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"foo/*/key1\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t,\n\t\t[]*types.Post{\n\t\t\t{\n\t\t\t\tNamespace: \"bulletin/test1/foo/bar/key1\",\n\t\t\t\tPayload:   []byte(\"val1\"),\n\t\t\t},\n\t\t\t{\n\t\t\t\tNamespace: \"bulletin/test1/foo/baz/key1\",\n\t\t\t\tPayload:   []byte(\"val3\"),\n\t\t\t},\n\t\t}, resp5.Posts)\n\n\t// pagination\n\tresp6, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"*\",\n\t\tPagination: &query.PageRequest{\n\t\t\tLimit: 3,\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[:3], resp6.Posts)\n\n\t// continuation pagination\n\tresp7, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test1\",\n\t\tGlob:      \"*\",\n\t\tPagination: &query.PageRequest{\n\t\t\tKey: resp6.Pagination.NextKey,\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[3:], resp7.Posts)\n}\n\nfunc TestIterateGlobWithPostIds(t *testing.T) {\n\tkeeper, ctx := setupKeeper(t)\n\n\tposts := []*types.Post{\n\t\t// posts with exact namespace match and non-empty postIds\n\t\t{\n\t\t\tId:        \"post1\",\n\t\t\tNamespace: \"bulletin/test2\",\n\t\t\tPayload:   []byte(\"val1\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"post2\",\n\t\t\tNamespace: \"bulletin/test2\",\n\t\t\tPayload:   []byte(\"val2\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"post3\",\n\t\t\tNamespace: \"bulletin/test2\",\n\t\t\tPayload:   []byte(\"val3\"),\n\t\t},\n\t\t// posts with sub-paths in namespace\n\t\t{\n\t\t\tId:        \"post1\",\n\t\t\tNamespace: \"bulletin/test2/sub1\",\n\t\t\tPayload:   []byte(\"val4\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"post2\",\n\t\t\tNamespace: \"bulletin/test2/sub1\",\n\t\t\tPayload:   []byte(\"val5\"),\n\t\t},\n\t}\n\n\t// add posts\n\tfor _, post := range posts {\n\t\tkeeper.SetPost(ctx, *post)\n\t}\n\n\t// match all posts (both exact namespace and sub-paths)\n\tresp1, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test2\",\n\t\tGlob:      \"*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts, resp1.Posts)\n\n\t// match only posts with exact namespace (non-empty postIds, \"/\" separator case)\n\tresp2, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test2\",\n\t\tGlob:      \"post*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[0:3], resp2.Posts)\n\n\t// match only posts in sub1 namespace\n\tresp3, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test2\",\n\t\tGlob:      \"sub1/*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, posts[3:5], resp3.Posts)\n\n\t// match specific postId at exact namespace boundary\n\tresp4, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test2\",\n\t\tGlob:      \"post1\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, []*types.Post{posts[0]}, resp4.Posts)\n}\n\nfunc TestIterateGlobEdgeCases(t *testing.T) {\n\tkeeper, ctx := setupKeeper(t)\n\n\tposts := []*types.Post{\n\t\t{\n\t\t\tId:        \"\",\n\t\t\tNamespace: \"bulletin/test3/mixed/post1\",\n\t\t\tPayload:   []byte(\"val1\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"actualId\",\n\t\t\tNamespace: \"bulletin/test3/mixed\",\n\t\t\tPayload:   []byte(\"val2\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"my/nested/id\",\n\t\t\tNamespace: \"bulletin/test3\",\n\t\t\tPayload:   []byte(\"val3\"),\n\t\t},\n\t\t{\n\t\t\tId:        \"\",\n\t\t\tNamespace: \"bulletin/test3/a/b/c/d/key\",\n\t\t\tPayload:   []byte(\"val4\"),\n\t\t},\n\t}\n\n\t// add posts\n\tfor _, post := range posts {\n\t\tkeeper.SetPost(ctx, *post)\n\t}\n\n\t// match all posts in test3 namespace\n\tresp1, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.ElementsMatch(t, posts, resp1.Posts)\n\n\t// postId with \"/\" characters should match after unsanitization\n\tresp2, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"my/nested/id\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, []*types.Post{posts[2]}, resp2.Posts)\n\n\t// match with wildcard in postId path\n\tresp3, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"my/*/id\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, []*types.Post{posts[2]}, resp3.Posts)\n\n\t// deep nesting with multiple wildcards\n\tresp4, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"a/*/*/d/key\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, []*types.Post{posts[3]}, resp4.Posts)\n\n\t// non-matching pattern should return empty\n\tresp5, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"nonexistent/*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Empty(t, resp5.Posts)\n\n\t// exact match for namespace path with no wildcards\n\tresp6, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"mixed/post1\",\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, []*types.Post{posts[0]}, resp6.Posts)\n\n\t// match mixed posts with empty and non-empty postIds\n\tresp7, err := keeper.IterateGlob(ctx, &types.QueryIterateGlobRequest{\n\t\tNamespace: \"bulletin/test3\",\n\t\tGlob:      \"mixed*\",\n\t})\n\trequire.NoError(t, err)\n\trequire.ElementsMatch(t, []*types.Post{posts[0], posts[1]}, resp7.Posts)\n}\n"
  },
  {
    "path": "x/bulletin/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store/prefix\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\ntype (\n\tKeeper struct {\n\t\tcdc          codec.BinaryCodec\n\t\tstoreService store.KVStoreService\n\t\tlogger       log.Logger\n\n\t\t// the address capable of executing a MsgUpdateParams message. Typically, this\n\t\t// should be the x/gov module account.\n\t\tauthority string\n\n\t\taccountKeeper types.AccountKeeper\n\t\tacpKeeper     *acpkeeper.Keeper\n\t\tcapKeeper     *capabilitykeeper.ScopedKeeper\n\t}\n)\n\nfunc NewKeeper(\n\tcdc codec.BinaryCodec,\n\tstoreService store.KVStoreService,\n\tlogger log.Logger,\n\tauthority string,\n\taccountKeeper types.AccountKeeper,\n\tacpKeeper *acpkeeper.Keeper,\n\tcapKeeper *capabilitykeeper.ScopedKeeper,\n) Keeper {\n\tif _, err := sdk.AccAddressFromBech32(authority); err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid authority address: %s\", authority))\n\t}\n\n\treturn Keeper{\n\t\tcdc:           cdc,\n\t\tstoreService:  storeService,\n\t\tlogger:        logger,\n\t\tauthority:     authority,\n\t\taccountKeeper: accountKeeper,\n\t\tacpKeeper:     acpKeeper,\n\t\tcapKeeper:     capKeeper,\n\t}\n}\n\n// GetAuthority returns the module's authority.\nfunc (k *Keeper) GetAuthority() string {\n\treturn k.authority\n}\n\n// GetAcpKeeper returns the module's AcpKeeper.\nfunc (k *Keeper) GetAcpKeeper() *acpkeeper.Keeper {\n\treturn k.acpKeeper\n}\n\nfunc (k *Keeper) GetScopedKeeper() *capabilitykeeper.ScopedKeeper {\n\treturn k.capKeeper\n}\n\n// Logger returns a module-specific logger.\nfunc (k *Keeper) Logger() log.Logger {\n\treturn k.logger.With(\"module\", fmt.Sprintf(\"x/%s\", types.ModuleName))\n}\n\n// SetPolicyId stores id of the genesis bulletin policy.\nfunc (k *Keeper) SetPolicyId(ctx context.Context, policyId string) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore.Set([]byte(types.PolicyIdKey), []byte(policyId))\n}\n\n// GetPolicyId returns genesis bulletin policy id.\nfunc (k *Keeper) GetPolicyId(ctx context.Context) string {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get([]byte(types.PolicyIdKey))\n\tif bz == nil {\n\t\treturn \"\"\n\t}\n\n\treturn string(bz)\n}\n\n// SetNamespace adds new namespace to the store.\nfunc (k *Keeper) SetNamespace(ctx context.Context, namespace types.Namespace) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.NamespaceKeyPrefix))\n\tbz := k.cdc.MustMarshal(&namespace)\n\n\tstore.Set([]byte(namespace.Id), bz)\n}\n\n// GetNamespace retrieves existing namespace based on the namespaceId.\nfunc (k *Keeper) GetNamespace(ctx context.Context, namespaceId string) *types.Namespace {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.NamespaceKeyPrefix))\n\n\tb := store.Get([]byte(namespaceId))\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar namespace types.Namespace\n\tk.cdc.MustUnmarshal(b, &namespace)\n\n\treturn &namespace\n}\n\n// GetAllNamespaces returns all namespaces.\nfunc (k *Keeper) GetAllNamespaces(ctx sdk.Context) []types.Namespace {\n\tvar namespaces []types.Namespace\n\n\tnamespacesCallback := func(namespace types.Namespace) {\n\t\tnamespaces = append(namespaces, namespace)\n\t}\n\n\tk.mustIterateNamespaces(ctx, namespacesCallback)\n\n\treturn namespaces\n}\n\n// SetCollaborator adds new collaborator to the store.\nfunc (k *Keeper) SetCollaborator(ctx context.Context, collaborator types.Collaborator) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.CollaboratorKeyPrefix))\n\n\tbz := k.cdc.MustMarshal(&collaborator)\n\tkey := types.CollaboratorKey(collaborator.Namespace, collaborator.Did)\n\tstore.Set(key, bz)\n}\n\n// DeleteCollaborator removes a collaborator from the store.\nfunc (k *Keeper) DeleteCollaborator(ctx context.Context, namespaceId string, collaboratorDID string) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.CollaboratorKeyPrefix))\n\n\tkey := types.CollaboratorKey(namespaceId, collaboratorDID)\n\tstore.Delete(key)\n}\n\n// GetAllCollaborators returns all collaborators.\nfunc (k *Keeper) GetAllCollaborators(ctx context.Context) []types.Collaborator {\n\tvar collaborators []types.Collaborator\n\n\tcollaboratorsCallback := func(collaborator types.Collaborator) {\n\t\tcollaborators = append(collaborators, collaborator)\n\t}\n\n\tk.mustIterateCollaborators(ctx, collaboratorsCallback)\n\n\treturn collaborators\n}\n\n// SetPost adds new post to the store.\nfunc (k *Keeper) SetPost(ctx context.Context, post types.Post) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, types.KeyPrefix(types.PostKeyPrefix))\n\n\tbz := k.cdc.MustMarshal(&post)\n\tkey := types.PostKey(post.Namespace, post.Id)\n\tstore.Set(key, bz)\n}\n\n// GetNamespacePosts returns namespace posts.\nfunc (k *Keeper) GetNamespacePosts(ctx context.Context, namespaceId string) []types.Post {\n\tvar posts []types.Post\n\n\tpostsCallback := func(namespaceId string, post types.Post) {\n\t\tposts = append(posts, post)\n\t}\n\n\tk.mustIterateNamespacePosts(ctx, namespaceId, postsCallback)\n\n\treturn posts\n}\n\n// GetAllPosts returns all posts.\nfunc (k *Keeper) GetAllPosts(ctx context.Context) []types.Post {\n\tvar posts []types.Post\n\n\tpostsCallback := func(post types.Post) {\n\t\tposts = append(posts, post)\n\t}\n\n\tk.mustIteratePosts(ctx, postsCallback)\n\n\treturn posts\n}\n\n// InitializeCapabilityKeeper allows app to set the capability keeper after the moment of creation.\n//\n// This is supported since currently the capability module\n// does not integrate with the new module dependency injection system.\n//\n// Panics if the keeper was previously initialized (ie inner pointer != nil).\nfunc (k *Keeper) InitializeCapabilityKeeper(keeper *capabilitykeeper.ScopedKeeper) {\n\tif k.capKeeper != nil {\n\t\tpanic(\"capability keeper already initialized\")\n\t}\n\tk.capKeeper = keeper\n}\n"
  },
  {
    "path": "x/bulletin/keeper/keeper_common_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tcryptocodec \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthcodec \"github.com/cosmos/cosmos-sdk/x/auth/codec\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tcapabilitykeeper \"github.com/cosmos/ibc-go/modules/capability/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tcoretypes \"github.com/sourcenetwork/acp_core/pkg/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/acp/capability\"\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\tacptypes \"github.com/sourcenetwork/sourcehub/x/acp/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\thubtestutil \"github.com/sourcenetwork/sourcehub/x/hub/testutil\"\n)\n\nfunc setupKeeper(t testing.TB) (Keeper, sdk.Context) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tauthStoreKey := storetypes.NewKVStoreKey(authtypes.StoreKey)\n\tcapabilityStoreKey := storetypes.NewKVStoreKey(\"capkeeper\")\n\tcapabilityMemStoreKey := storetypes.NewKVStoreKey(\"capkeepermem\")\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(authStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(capabilityMemStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tauthtypes.RegisterInterfaces(registry)\n\tcryptocodec.RegisterInterfaces(registry)\n\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tbech32Prefix := \"source\"\n\taddressCodec := authcodec.NewBech32Codec(bech32Prefix)\n\n\tmaccPerms := map[string][]string{\n\t\tauthtypes.FeeCollectorName: nil,\n\t\ttypes.ModuleName:           nil,\n\t}\n\n\taccountKeeper := authkeeper.NewAccountKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(authStoreKey),\n\t\tauthtypes.ProtoBaseAccount,\n\t\tmaccPerms,\n\t\taddressCodec,\n\t\tbech32Prefix,\n\t\tauthority.String(),\n\t)\n\n\tcapKeeper := capabilitykeeper.NewKeeper(cdc, capabilityStoreKey, capabilityMemStoreKey)\n\tacpCapKeeper := capKeeper.ScopeToModule(acptypes.ModuleName)\n\tbulletinCapKeeper := capKeeper.ScopeToModule(types.ModuleName)\n\n\tacpKeeper := acpkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccountKeeper,\n\t\t&acpCapKeeper,\n\t\thubtestutil.NewHubKeeperStub(),\n\t)\n\n\tk := NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\taccountKeeper,\n\t\t&acpKeeper,\n\t\t&bulletinCapKeeper,\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\tk.SetParams(ctx, types.DefaultParams())\n\n\treturn k, ctx\n}\n\nfunc setupTestPolicy(t *testing.T, ctx sdk.Context, k Keeper) {\n\t_, polCap, err := k.GetAcpKeeper().CreateModulePolicy(\n\t\tctx,\n\t\ttypes.BasePolicy(),\n\t\tcoretypes.PolicyMarshalingType_YAML,\n\t\ttypes.ModuleName,\n\t)\n\trequire.NoError(t, err)\n\n\tpolicyId := polCap.GetPolicyId()\n\tk.SetPolicyId(ctx, policyId)\n\n\tmanager := capability.NewPolicyCapabilityManager(k.GetScopedKeeper())\n\terr = manager.Claim(ctx, polCap)\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "x/bulletin/keeper/keeper_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc TestGetPolicyId(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tpolicyId := k.GetPolicyId(ctx)\n\trequire.Equal(t, \"\", policyId)\n\n\tk.SetPolicyId(ctx, \"test-policy\")\n\n\tpolicyId = k.GetPolicyId(ctx)\n\trequire.Equal(t, \"test-policy\", policyId)\n}\n\nfunc TestGetNamespace(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tdid := \"did:key:bob\"\n\n\tnamespace := types.Namespace{\n\t\tId:        namespaceId,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, namespace)\n\n\tgotNamespace := k.GetNamespace(ctx, namespaceId)\n\trequire.NotNil(t, gotNamespace)\n\trequire.Equal(t, namespace.Id, gotNamespace.Id)\n\trequire.Equal(t, namespace.OwnerDid, gotNamespace.OwnerDid)\n\trequire.Equal(t, namespace.Creator, gotNamespace.Creator)\n\trequire.Equal(t, namespace.CreatedAt, gotNamespace.CreatedAt)\n}\n\nfunc TestGetAllNamespaces(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId1 := getNamespaceId(\"ns1\")\n\tnamespaceId2 := getNamespaceId(\"ns2\")\n\tdid := \"did:key:bob\"\n\n\tns1 := types.Namespace{\n\t\tId:        namespaceId1,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, ns1)\n\n\tns2 := types.Namespace{\n\t\tId:        namespaceId2,\n\t\tOwnerDid:  did,\n\t\tCreator:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(ctx, ns2)\n\n\tnamespaces := k.GetAllNamespaces(ctx)\n\trequire.Len(t, namespaces, 2)\n}\n\nfunc TestDeleteCollaborator(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\tdid := \"did:key:bob\"\n\n\tgotCollagorator := k.getCollaborator(ctx, namespaceId, did)\n\trequire.Nil(t, gotCollagorator)\n\n\tcollaborator := types.Collaborator{\n\t\tAddress:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tDid:       did,\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, collaborator)\n\n\tgotCollagorator = k.getCollaborator(ctx, namespaceId, did)\n\trequire.NotNil(t, gotCollagorator)\n\n\tk.DeleteCollaborator(ctx, namespaceId, did)\n\n\tgotCollagorator = k.getCollaborator(ctx, namespaceId, did)\n\trequire.Nil(t, gotCollagorator)\n}\n\nfunc TestGetAllCollaborators(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId := getNamespaceId(\"ns1\")\n\n\tc1 := types.Collaborator{\n\t\tAddress:   \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\tDid:       \"did:key:bob\",\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, c1)\n\n\tc2 := types.Collaborator{\n\t\tAddress:   \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\tDid:       \"did:key:sam\",\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(ctx, c2)\n\n\tcollaborators := k.GetAllCollaborators(ctx)\n\trequire.Len(t, collaborators, 2)\n}\n\nfunc TestGetNamespacePosts(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId1 := getNamespaceId(\"ns1\")\n\tnamespaceId2 := getNamespaceId(\"ns2\")\n\tdid := \"did:key:bob\"\n\n\tpost1 := types.Post{\n\t\tId:         \"post1\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload123\"),\n\t}\n\tk.SetPost(ctx, post1)\n\n\tpost2 := types.Post{\n\t\tId:         \"post2\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload456\"),\n\t}\n\tk.SetPost(ctx, post2)\n\n\tpost3 := types.Post{\n\t\tId:         \"post3\",\n\t\tNamespace:  namespaceId2,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload789\"),\n\t}\n\tk.SetPost(ctx, post3)\n\n\tns1Posts := k.GetNamespacePosts(ctx, namespaceId1)\n\trequire.Len(t, ns1Posts, 2)\n\tfor _, p := range ns1Posts {\n\t\trequire.Equal(t, namespaceId1, p.Namespace)\n\t}\n\n\tns2Posts := k.GetNamespacePosts(ctx, namespaceId2)\n\trequire.Len(t, ns2Posts, 1)\n\trequire.Equal(t, namespaceId2, ns2Posts[0].Namespace)\n}\n\nfunc TestGetAllPosts(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnamespaceId1 := getNamespaceId(\"ns1\")\n\tnamespaceId2 := getNamespaceId(\"ns2\")\n\tdid := \"did:key:bob\"\n\n\tpost1 := types.Post{\n\t\tId:         \"post1\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload123\"),\n\t}\n\tk.SetPost(ctx, post1)\n\n\tpost2 := types.Post{\n\t\tId:         \"post2\",\n\t\tNamespace:  namespaceId1,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload456\"),\n\t}\n\tk.SetPost(ctx, post2)\n\n\tpost3 := types.Post{\n\t\tId:         \"post3\",\n\t\tNamespace:  namespaceId2,\n\t\tCreatorDid: did,\n\t\tPayload:    []byte(\"payload789\"),\n\t}\n\tk.SetPost(ctx, post3)\n\n\tposts := k.GetAllPosts(ctx)\n\trequire.Len(t, posts, 3)\n}\n"
  },
  {
    "path": "x/bulletin/keeper/main_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nfunc TestMain(m *testing.M) {\n\tapp.SetConfig(true)\n\tos.Exit(m.Run())\n}\n"
  },
  {
    "path": "x/bulletin/keeper/msg_server.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nvar _ types.MsgServer = &Keeper{}\n\n// UpdateParams updates bulletin module params.\n// Request authority must match module authority.\nfunc (k *Keeper) UpdateParams(ctx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {\n\tif k.GetAuthority() != req.Authority {\n\t\treturn nil, errorsmod.Wrapf(types.ErrInvalidSigner, \"invalid authority; expected %s, got %s\", k.GetAuthority(), req.Authority)\n\t}\n\n\tif err := k.SetParams(ctx, req.Params); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgUpdateParamsResponse{}, nil\n}\n\n// RegisterNamespace registers a new namespace resource under the genesis bulletin policy.\n// The namespace must have a unique, non-existent namespaceId.\nfunc (k *Keeper) RegisterNamespace(goCtx context.Context, msg *types.MsgRegisterNamespace) (*types.MsgRegisterNamespaceResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\t// Create module policy and claim capability if it does not exist yet\n\tpolicyId, err := k.EnsurePolicy(ctx)\n\tif err != nil {\n\t\treturn nil, types.ErrCouldNotEnsurePolicy\n\t}\n\n\tnamespaceId := getNamespaceId(msg.Namespace)\n\tif k.hasNamespace(goCtx, namespaceId) {\n\t\treturn nil, types.ErrNamespaceAlreadyExists\n\t}\n\n\townerDID, err := k.GetAcpKeeper().GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = RegisterNamespace(ctx, k, policyId, namespaceId, ownerDID, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnamespace := types.Namespace{\n\t\tId:        namespaceId,\n\t\tOwnerDid:  ownerDID,\n\t\tCreator:   msg.Creator,\n\t\tCreatedAt: ctx.BlockTime(),\n\t}\n\tk.SetNamespace(goCtx, namespace)\n\n\tif err := ctx.EventManager().EmitTypedEvent(&types.EventNamespaceRegistered{\n\t\tNamespaceId: namespaceId,\n\t\tOwnerDid:    ownerDID,\n\t\tCreatedAt:   namespace.CreatedAt,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgRegisterNamespaceResponse{Namespace: &namespace}, nil\n}\n\n// CreatePost adds a new post to the specified (existing) namespace.\n// The signer must have permission to create posts in that namespace.\nfunc (k *Keeper) CreatePost(goCtx context.Context, msg *types.MsgCreatePost) (*types.MsgCreatePostResponse, error) {\n\tpolicyId := k.GetPolicyId(goCtx)\n\tif policyId == \"\" {\n\t\treturn nil, types.ErrInvalidPolicyId\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tnamespaceId := getNamespaceId(msg.Namespace)\n\tif !k.hasNamespace(goCtx, namespaceId) {\n\t\treturn nil, types.ErrNamespaceNotFound\n\t}\n\n\tcreatorDID, err := k.GetAcpKeeper().GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thasPermission, err := hasPermission(goCtx, k, policyId, namespaceId, types.CreatePostPermission, creatorDID, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !hasPermission {\n\t\treturn nil, types.ErrInvalidPostCreator\n\t}\n\n\tpostId := types.GeneratePostId(namespaceId, msg.Payload)\n\n\texistingPost := k.getPost(goCtx, namespaceId, postId)\n\tif existingPost != nil {\n\t\treturn nil, types.ErrPostAlreadyExists\n\t}\n\n\tpost := types.Post{\n\t\tId:         postId,\n\t\tNamespace:  namespaceId,\n\t\tCreatorDid: creatorDID,\n\t\tPayload:    msg.Payload,\n\t}\n\tk.SetPost(goCtx, post)\n\n\tb64Payload := base64.StdEncoding.EncodeToString(post.Payload)\n\tif err := ctx.EventManager().EmitTypedEvent(&types.EventPostCreated{\n\t\tNamespaceId: namespaceId,\n\t\tPostId:      postId,\n\t\tCreatorDid:  creatorDID,\n\t\tPayload:     b64Payload,\n\t\tArtifact:    msg.Artifact,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgCreatePostResponse{}, nil\n}\n\n// AddCollaborator adds a new collaborator to the specified namespace.\n// The signer must have permission to manage collaborators of that namespace object.\nfunc (k *Keeper) AddCollaborator(goCtx context.Context, msg *types.MsgAddCollaborator) (*types.MsgAddCollaboratorResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tpolicyId := k.GetPolicyId(goCtx)\n\tif policyId == \"\" {\n\t\treturn nil, types.ErrInvalidPolicyId\n\t}\n\n\tnamespaceId := getNamespaceId(msg.Namespace)\n\tif !k.hasNamespace(goCtx, namespaceId) {\n\t\treturn nil, types.ErrNamespaceNotFound\n\t}\n\n\townerDID, err := k.GetAcpKeeper().GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcollaboratorDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, msg.Collaborator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = AddCollaborator(goCtx, k, policyId, namespaceId, collaboratorDID, ownerDID, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcollaborator := types.Collaborator{\n\t\tAddress:   msg.Collaborator,\n\t\tDid:       collaboratorDID,\n\t\tNamespace: namespaceId,\n\t}\n\tk.SetCollaborator(goCtx, collaborator)\n\n\tif err := ctx.EventManager().EmitTypedEvent(&types.EventCollaboratorAdded{\n\t\tNamespaceId:     namespaceId,\n\t\tCollaboratorDid: collaboratorDID,\n\t\tAddedBy:         ownerDID,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgAddCollaboratorResponse{}, nil\n}\n\n// RemoveCollaborator removes existing collaborator from the specified namespace.\n// The signer must have permission to manage collaborators of that namespace object.\nfunc (k *Keeper) RemoveCollaborator(goCtx context.Context, msg *types.MsgRemoveCollaborator) (*types.MsgRemoveCollaboratorResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tpolicyId := k.GetPolicyId(goCtx)\n\tif policyId == \"\" {\n\t\treturn nil, types.ErrInvalidPolicyId\n\t}\n\n\tnamespaceId := getNamespaceId(msg.Namespace)\n\tif !k.hasNamespace(goCtx, namespaceId) {\n\t\treturn nil, types.ErrNamespaceNotFound\n\t}\n\n\townerDID, err := k.GetAcpKeeper().GetActorDID(ctx, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcollaboratorDID, err := k.GetAcpKeeper().IssueDIDFromAccountAddr(ctx, msg.Collaborator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = deleteCollaborator(goCtx, k, policyId, namespaceId, collaboratorDID, ownerDID, msg.Creator)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tk.DeleteCollaborator(goCtx, namespaceId, collaboratorDID)\n\n\tif err := ctx.EventManager().EmitTypedEvent(&types.EventCollaboratorRemoved{\n\t\tNamespaceId:     namespaceId,\n\t\tCollaboratorDid: collaboratorDID,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgRemoveCollaboratorResponse{}, nil\n}\n"
  },
  {
    "path": "x/bulletin/keeper/msg_server_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc TestMsgServer(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\trequire.NotNil(t, ctx)\n\trequire.NotEmpty(t, k)\n}\n\nfunc TestMsgUpdateParams(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, params))\n\twctx := sdk.UnwrapSDKContext(ctx)\n\n\t// default params\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateParams\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"invalid authority\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: \"invalid\",\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid authority\",\n\t\t},\n\t\t{\n\t\t\tname: \"send enabled param\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    types.Params{},\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"all good\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, err := k.UpdateParams(wctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgRegisterNamespace(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tnamespace := \"ns1\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgRegisterNamespace\n\t\tsetup     func()\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname:      \"register namespace (error: invalid creator address)\",\n\t\t\tinput:     &types.MsgRegisterNamespace{},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid creator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"register namespace (error: invalid namespace id)\",\n\t\t\tinput: &types.MsgRegisterNamespace{\n\t\t\t\tCreator: baseAcc.Address,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid namespace id\",\n\t\t},\n\t\t{\n\t\t\tname: \"register namespace (error: fetching capability for policy)\",\n\t\t\tinput: &types.MsgRegisterNamespace{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tk.SetPolicyId(ctx, \"policy1\")\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"fetching capability for policy\",\n\t\t},\n\t\t{\n\t\t\tname: \"register namespace (error: fetching capability for invalid policy)\",\n\t\t\tinput: &types.MsgRegisterNamespace{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tk.SetPolicyId(ctx, \"invalidPolicy1\")\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"fetching capability for policy invalidPolicy1\",\n\t\t},\n\t\t{\n\t\t\tname: \"register namespace (no error)\",\n\t\t\tinput: &types.MsgRegisterNamespace{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tsetupTestPolicy(t, ctx, k)\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"register namespace (error: namespace exists)\",\n\t\t\tinput: &types.MsgRegisterNamespace{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"namespace already exists\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\ttc.setup()\n\n\t\t\t_, err = k.RegisterNamespace(ctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgCreatePost(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tpubKey2 := secp256k1.GenPrivKey().PubKey()\n\taddr2 := sdk.AccAddress(pubKey2.Address())\n\tbaseAcc2 := authtypes.NewBaseAccount(addr2, pubKey2, 2, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc2)\n\n\tnamespace := \"ns1\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgCreatePost\n\t\tsetup     func()\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname:      \"create post (error: invalid creator address)\",\n\t\t\tinput:     &types.MsgCreatePost{},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"nvalid creator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: invalid namespace id)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator: baseAcc.Address,\n\t\t\t\tPayload: []byte(\"post123\"),\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid namespace id\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: no payload)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid post payload\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: no policy)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post123\"),\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid policy id\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: no namespace)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post123\"),\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tk.SetPolicyId(ctx, \"policy1\")\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"namespace not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (no error)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post123\"),\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tsetupTestPolicy(t, ctx, k)\n\n\t\t\t\t_, err := k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\t\tNamespace: namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: post already exists)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post123\"),\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"post already exists\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post (error: unauthorized)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc2.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post1234\"),\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"expected authorized account as a post creator\",\n\t\t},\n\t\t{\n\t\t\tname: \"create post from collaborator (no error)\",\n\t\t\tinput: &types.MsgCreatePost{\n\t\t\t\tCreator:   baseAcc2.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t\tPayload:   []byte(\"post1234\"),\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\t_, err := k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\t\tNamespace:    namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\ttc.setup()\n\n\t\t\t_, err = k.CreatePost(ctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgCreatePost_EmitsArtifactInEvent(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\t// given test policy and namespace\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\tsetupTestPolicy(t, ctx, k)\n\t_, err := k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: \"ns1\",\n\t})\n\trequire.NoError(t, err)\n\n\t// reset event manager\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\n\t// when i create post\n\tpost := types.MsgCreatePost{\n\t\tCreator:   baseAcc.Address,\n\t\tNamespace: \"ns1\",\n\t\tPayload:   []byte(\"some payload\"),\n\t\tArtifact:  \"session-id\",\n\t}\n\t_, err = k.CreatePost(ctx, &post)\n\n\t// then post emit event with artifact\n\trequire.NoError(t, err)\n\n\tevs := ctx.EventManager().Events()\n\trequire.Len(t, evs, 1)\n\n\tcreatorDid, err := k.acpKeeper.GetActorDID(ctx, baseAcc.Address)\n\trequire.NoError(t, err)\n\teventDid := \"\\\"\" + creatorDid + \"\\\"\"\n\tev := evs[0]\n\trequire.Equal(t, `\"session-id\"`, ev.Attributes[0].Value)\n\trequire.Equal(t, eventDid, ev.Attributes[1].Value)\n\trequire.Equal(t, `\"bulletin/ns1\"`, ev.Attributes[2].Value)\n}\n\nfunc TestMsgAddCollaborator(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tpubKey2 := secp256k1.GenPrivKey().PubKey()\n\taddr2 := sdk.AccAddress(pubKey2.Address())\n\tbaseAcc2 := authtypes.NewBaseAccount(addr2, pubKey2, 2, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc2)\n\n\tpubKey3 := secp256k1.GenPrivKey().PubKey()\n\taddr3 := sdk.AccAddress(pubKey3.Address())\n\tbaseAcc3 := authtypes.NewBaseAccount(addr3, pubKey3, 3, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc3)\n\n\tnamespace := \"ns1\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgAddCollaborator\n\t\tsetup     func()\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname:      \"add collaborator (error: invalid creator address)\",\n\t\t\tinput:     &types.MsgAddCollaborator{},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid creator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: invalid namespace id)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator: baseAcc.Address,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid namespace id\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: invalid collaborator address)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid collaborator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: invalid policy id)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid policy id\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: namespace not found)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tk.SetPolicyId(ctx, \"policy1\")\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"namespace not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (no error)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tsetupTestPolicy(t, ctx, k)\n\n\t\t\t\t_, err := k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\t\tNamespace: namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: collaborator already exists)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"collaborator already exists\",\n\t\t},\n\t\t{\n\t\t\tname: \"add collaborator (error: unauthorized)\",\n\t\t\tinput: &types.MsgAddCollaborator{\n\t\t\t\tCreator:      baseAcc2.Address,\n\t\t\t\tCollaborator: baseAcc3.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"actor is not a manager of relation\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\ttc.setup()\n\n\t\t\t_, err = k.AddCollaborator(ctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgRemoveCollaborator(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tpubKey := secp256k1.GenPrivKey().PubKey()\n\taddr := sdk.AccAddress(pubKey.Address())\n\tbaseAcc := authtypes.NewBaseAccount(addr, pubKey, 1, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc)\n\n\tpubKey2 := secp256k1.GenPrivKey().PubKey()\n\taddr2 := sdk.AccAddress(pubKey2.Address())\n\tbaseAcc2 := authtypes.NewBaseAccount(addr2, pubKey2, 2, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc2)\n\n\tpubKey3 := secp256k1.GenPrivKey().PubKey()\n\taddr3 := sdk.AccAddress(pubKey3.Address())\n\tbaseAcc3 := authtypes.NewBaseAccount(addr3, pubKey3, 3, 1)\n\tk.accountKeeper.SetAccount(ctx, baseAcc3)\n\n\tnamespace := \"ns1\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgRemoveCollaborator\n\t\tsetup     func()\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname:      \"remove collaborator (error: invalid creator address)\",\n\t\t\tinput:     &types.MsgRemoveCollaborator{},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid creator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: invalid namespace id)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator: baseAcc.Address,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid namespace id\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: invalid collaborator address)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\tNamespace: namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid collaborator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: invalid policy id)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid policy id\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: namespace not found)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tk.SetPolicyId(ctx, \"policy1\")\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"namespace not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (no error)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\tsetupTestPolicy(t, ctx, k)\n\n\t\t\t\t_, err := k.RegisterNamespace(ctx, &types.MsgRegisterNamespace{\n\t\t\t\t\tCreator:   baseAcc.Address,\n\t\t\t\t\tNamespace: namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t_, err = k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\t\tNamespace:    namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: collaborator not found)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup:     func() {},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"collaborator not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"remove collaborator (error: unauthorized)\",\n\t\t\tinput: &types.MsgRemoveCollaborator{\n\t\t\t\tCreator:      baseAcc2.Address,\n\t\t\t\tCollaborator: baseAcc3.Address,\n\t\t\t\tNamespace:    namespace,\n\t\t\t},\n\t\t\tsetup: func() {\n\t\t\t\t_, err := k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\t\tCollaborator: baseAcc2.Address,\n\t\t\t\t\tNamespace:    namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t_, err = k.AddCollaborator(ctx, &types.MsgAddCollaborator{\n\t\t\t\t\tCreator:      baseAcc.Address,\n\t\t\t\t\tCollaborator: baseAcc3.Address,\n\t\t\t\t\tNamespace:    namespace,\n\t\t\t\t})\n\t\t\t\trequire.NoError(t, err)\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"actor is not a manager of relation\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\ttc.setup()\n\n\t\t\t_, err = k.RemoveCollaborator(ctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/keeper/params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// GetParams get all parameters as types.Params\nfunc (k *Keeper) GetParams(ctx context.Context) (params types.Params) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.ParamsKey)\n\tif bz == nil {\n\t\treturn params\n\t}\n\n\tk.cdc.MustUnmarshal(bz, &params)\n\treturn params\n}\n\n// SetParams set the params\nfunc (k *Keeper) SetParams(ctx context.Context, params types.Params) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := k.cdc.Marshal(&params)\n\tif err != nil {\n\t\treturn err\n\t}\n\tstore.Set(types.ParamsKey, bz)\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/keeper/params_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc TestGetParams(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\tparams := types.DefaultParams()\n\n\trequire.NoError(t, k.SetParams(ctx, params))\n\trequire.EqualValues(t, params, k.GetParams(ctx))\n}\n"
  },
  {
    "path": "x/bulletin/module/autocli.go",
    "content": "package bulletin\n\nimport (\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/bulletin\"\n)\n\n// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: modulev1.Query_ServiceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Params\",\n\t\t\t\t\tUse:       \"params\",\n\t\t\t\t\tShort:     \"Shows the parameters of the module\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Namespaces\",\n\t\t\t\t\tUse:            \"namespaces\",\n\t\t\t\t\tShort:          \"Query all namespaces\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Namespace\",\n\t\t\t\t\tUse:            \"namespace [namespace]\",\n\t\t\t\t\tShort:          \"Query namespace by name\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"NamespaceCollaborators\",\n\t\t\t\t\tUse:            \"namespace-collaborators [namespace]\",\n\t\t\t\t\tShort:          \"Query all namespace collaborators\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"NamespacePosts\",\n\t\t\t\t\tUse:            \"namespace-posts [namespace]\",\n\t\t\t\t\tShort:          \"Query all posts within the namespace\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Post\",\n\t\t\t\t\tUse:            \"post [namespace] [id]\",\n\t\t\t\t\tShort:          \"Query post by namespace and id\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}, {ProtoField: \"id\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Posts\",\n\t\t\t\t\tUse:            \"posts\",\n\t\t\t\t\tShort:          \"Query all posts\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"BulletinPolicyId\",\n\t\t\t\t\tUse:       \"policy-id\",\n\t\t\t\t\tShort:     \"Query the bulletin module policy id\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{},\n\t\t\t\t},\n\t\t\t\t// this line is used by ignite scaffolding # autocli/query\n\t\t\t},\n\t\t},\n\t\tTx: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService:              modulev1.Msg_ServiceDesc.ServiceName,\n\t\t\tEnhanceCustomCommand: true, // only required if you want to use the custom command\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"UpdateParams\",\n\t\t\t\t\tSkip:      true, // skipped because authority gated\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"CreatePost\",\n\t\t\t\t\tUse:            \"create-post [namespace] [payload]\",\n\t\t\t\t\tShort:          \"Add a new post to the specified namespace\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}, {ProtoField: \"payload\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"RegisterNamespace\",\n\t\t\t\t\tUse:            \"register-namespace [namespace]\",\n\t\t\t\t\tShort:          \"Register a new namespace\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"AddCollaborator\",\n\t\t\t\t\tUse:            \"add-collaborator [namespace] [collaborator]\",\n\t\t\t\t\tShort:          \"Add a new collaborator to the specified namespace\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}, {ProtoField: \"collaborator\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"RemoveCollaborator\",\n\t\t\t\t\tUse:            \"remove-collaborator [namespace] [collaborator]\",\n\t\t\t\t\tShort:          \"Remove existing collaborator from the specified namespace\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"namespace\"}, {ProtoField: \"collaborator\"}},\n\t\t\t\t},\n\t\t\t\t// this line is used by ignite scaffolding # autocli/tx\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/module/genesis.go",
    "content": "package bulletin\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// InitGenesis initializes the module's state from a provided genesis state.\nfunc InitGenesis(ctx sdk.Context, k *keeper.Keeper, genState types.GenesisState) {\n\tif err := k.SetParams(ctx, genState.Params); err != nil {\n\t\tpanic(err)\n\t}\n\n\tpolicyId := genState.PolicyId\n\tif policyId != \"\" {\n\t\t// Reset the policy if initializing from the exported state\n\t\tpolicyId, err := k.EnsurePolicy(ctx)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tk.SetPolicyId(ctx, policyId)\n\n\t\tfor _, namespace := range genState.Namespaces {\n\t\t\terr := keeper.RegisterNamespace(ctx, k, policyId, namespace.Id, namespace.OwnerDid, namespace.Creator)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tk.SetNamespace(ctx, namespace)\n\t\t}\n\n\t\tfor _, collaborator := range genState.Collaborators {\n\t\t\tnamespace := k.GetNamespace(ctx, collaborator.Namespace)\n\t\t\terr := keeper.AddCollaborator(ctx, k, policyId, collaborator.Namespace, collaborator.Did, namespace.OwnerDid, collaborator.Address)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tk.SetCollaborator(ctx, collaborator)\n\t\t}\n\n\t\tfor _, post := range genState.Posts {\n\t\t\tk.SetPost(ctx, post)\n\t\t}\n\t}\n}\n\n// ExportGenesis returns the module's exported genesis.\nfunc ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState {\n\tgenesis := types.DefaultGenesis()\n\tgenesis.Params = k.GetParams(ctx)\n\n\tif policyId := k.GetPolicyId(ctx); policyId != \"\" {\n\t\tgenesis.PolicyId = policyId\n\t}\n\n\tgenesis.Namespaces = k.GetAllNamespaces(ctx)\n\tgenesis.Collaborators = k.GetAllCollaborators(ctx)\n\tgenesis.Posts = k.GetAllPosts(ctx)\n\n\treturn genesis\n}\n"
  },
  {
    "path": "x/bulletin/module/genesis_test.go",
    "content": "package bulletin\n\nimport (\n\t\"testing\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/nullify\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesis(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t}\n\n\tk, ctx := keepertest.BulletinKeeper(t)\n\tInitGenesis(ctx, &k, genesisState)\n\tgot := ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n"
  },
  {
    "path": "x/bulletin/module/module.go",
    "content": "package bulletin\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\n\t// this line is used by starport scaffolding # 1\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/bulletin/module\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nvar (\n\t_ module.AppModuleBasic      = (*AppModule)(nil)\n\t_ module.AppModuleSimulation = (*AppModule)(nil)\n\t_ module.HasGenesis          = (*AppModule)(nil)\n\t_ module.HasInvariants       = (*AppModule)(nil)\n\t_ module.HasConsensusVersion = (*AppModule)(nil)\n\n\t_ appmodule.AppModule       = (*AppModule)(nil)\n\t_ appmodule.HasBeginBlocker = (*AppModule)(nil)\n\t_ appmodule.HasEndBlocker   = (*AppModule)(nil)\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic implements the AppModuleBasic interface that defines the\n// independent methods a Cosmos SDK module needs to implement.\ntype AppModuleBasic struct {\n\tcdc codec.BinaryCodec\n}\n\nfunc NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic {\n\treturn AppModuleBasic{cdc: cdc}\n}\n\n// Name returns the name of the module as a string.\nfunc (AppModuleBasic) Name() string {\n\treturn types.ModuleName\n}\n\n// RegisterLegacyAminoCodec registers the amino codec for the module, which is used\n// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore.\nfunc (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}\n\n// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message.\nfunc (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {\n\ttypes.RegisterInterfaces(reg)\n}\n\n// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage.\n// The default GenesisState need to be defined by the module developer and is primarily used for testing.\nfunc (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(types.DefaultGenesis())\n}\n\n// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form.\nfunc (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {\n\tvar genState types.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &genState); err != nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal %s genesis state: %w\", types.ModuleName, err)\n\t}\n\treturn genState.Validate()\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.\nfunc (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {\n\tif err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper        *keeper.Keeper\n\taccountKeeper types.AccountKeeper\n\tbankKeeper    types.BankKeeper\n}\n\nfunc NewAppModule(\n\tcdc codec.Codec,\n\tkeeper *keeper.Keeper,\n\taccountKeeper types.AccountKeeper,\n\tbankKeeper types.BankKeeper,\n) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: NewAppModuleBasic(cdc),\n\t\tkeeper:         keeper,\n\t\taccountKeeper:  accountKeeper,\n\t\tbankKeeper:     bankKeeper,\n\t}\n}\n\n// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\t// Inject instrumentation into msg service handler\n\tdescriptor := metrics.WrapMsgServerServiceDescriptor(types.ModuleName, types.Msg_serviceDesc)\n\tcfg.MsgServer().RegisterService(&descriptor, am.keeper)\n\n\t// Inject instrumentation into query service handler\n\tdescriptor = metrics.WrapQueryServiceDescriptor(types.ModuleName, types.Query_serviceDesc)\n\tcfg.QueryServer().RegisterService(&descriptor, am.keeper)\n}\n\n// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted)\nfunc (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}\n\n// InitGenesis performs the module's genesis initialization. It returns no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) {\n\tvar genState types.GenesisState\n\t// Initialize global index to index in genesis state\n\tcdc.MustUnmarshalJSON(gs, &genState)\n\n\tInitGenesis(ctx, am.keeper, genState)\n}\n\n// ExportGenesis returns the module's exported genesis state as raw JSON bytes.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgenState := ExportGenesis(ctx, am.keeper)\n\treturn cdc.MustMarshalJSON(genState)\n}\n\n// ConsensusVersion is a sequence number for state-breaking change of the module.\n// It should be incremented on each consensus-breaking change introduced by the module.\n// To avoid wrong/empty versions, the initial version should be set to 1.\nfunc (AppModule) ConsensusVersion() uint64 { return 1 }\n\n// BeginBlock contains the logic that is automatically triggered at the beginning of each block.\n// The begin block implementation is optional.\nfunc (am AppModule) BeginBlock(_ context.Context) error {\n\treturn nil\n}\n\n// EndBlock contains the logic that is automatically triggered at the end of each block.\n// The end block implementation is optional.\nfunc (am AppModule) EndBlock(_ context.Context) error {\n\treturn nil\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// ----------------------------------------------------------------------------\n// App Wiring Setup\n// ----------------------------------------------------------------------------\n\nfunc init() {\n\tappmodule.Register(\n\t\t&modulev1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t)\n}\n\ntype ModuleInputs struct {\n\tdepinject.In\n\n\tStoreService store.KVStoreService\n\tCdc          codec.Codec\n\tConfig       *modulev1.Module\n\tLogger       log.Logger\n\n\tAccountKeeper types.AccountKeeper\n\tBankKeeper    types.BankKeeper\n\tAcpKeeper     *acpkeeper.Keeper\n}\n\ntype ModuleOutputs struct {\n\tdepinject.Out\n\n\tBulletinKeeper *keeper.Keeper\n\tModule         appmodule.AppModule\n}\n\nfunc ProvideModule(in ModuleInputs) ModuleOutputs {\n\t// default to governance authority if not provided\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tif in.Config.Authority != \"\" {\n\t\tauthority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)\n\t}\n\tk := keeper.NewKeeper(\n\t\tin.Cdc,\n\t\tin.StoreService,\n\t\tin.Logger,\n\t\tauthority.String(),\n\t\tin.AccountKeeper,\n\t\tin.AcpKeeper,\n\t\tnil,\n\t)\n\tm := NewAppModule(\n\t\tin.Cdc,\n\t\t&k,\n\t\tin.AccountKeeper,\n\t\tin.BankKeeper,\n\t)\n\n\treturn ModuleOutputs{BulletinKeeper: &k, Module: m}\n}\n"
  },
  {
    "path": "x/bulletin/module/simulation.go",
    "content": "package bulletin\n\nimport (\n\t\"math/rand\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\tbulletinsimulation \"github.com/sourcenetwork/sourcehub/x/bulletin/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\n// avoid unused import issue\nvar (\n\t_ = bulletinsimulation.FindAccount\n\t_ = rand.Rand{}\n\t_ = sample.AccAddress\n\t_ = sdk.AccAddress{}\n\t_ = simulation.MsgEntryKind\n)\n\nconst (\n\topWeightMsgCreatePost = \"op_weight_msg_create_post\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgCreatePost int = 100\n\n\t// this line is used by starport scaffolding # simapp/module/const\n)\n\n// GenerateGenesisState creates a randomized GenState of the module.\nfunc (AppModule) GenerateGenesisState(simState *module.SimulationState) {\n\taccs := make([]string, len(simState.Accounts))\n\tfor i, acc := range simState.Accounts {\n\t\taccs[i] = acc.Address.String()\n\t}\n\tbulletinGenesis := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\t// this line is used by starport scaffolding # simapp/module/genesisState\n\t}\n\tsimState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&bulletinGenesis)\n}\n\n// RegisterStoreDecoder registers a decoder.\nfunc (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {}\n\n// ProposalContents doesn't return any content functions for governance proposals.\nfunc (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent {\n\treturn nil\n}\n\n// WeightedOperations returns the all the gov module operations with their respective weights.\nfunc (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation {\n\toperations := make([]simtypes.WeightedOperation, 0)\n\n\tvar weightMsgCreatePost int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgCreatePost, &weightMsgCreatePost, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgCreatePost = defaultWeightMsgCreatePost\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgCreatePost,\n\t\tbulletinsimulation.SimulateMsgCreatePost(am.accountKeeper, am.bankKeeper, am.keeper),\n\t))\n\n\t// this line is used by starport scaffolding # simapp/module/operation\n\n\treturn operations\n}\n\n// ProposalMsgs returns msgs used for governance proposals for simulations.\nfunc (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg {\n\treturn []simtypes.WeightedProposalMsg{\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgCreatePost,\n\t\t\tdefaultWeightMsgCreatePost,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\tbulletinsimulation.SimulateMsgCreatePost(am.accountKeeper, am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\t// this line is used by starport scaffolding # simapp/module/OpMsg\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/simulation/create_post.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n)\n\nfunc SimulateMsgCreatePost(\n\tak types.AccountKeeper,\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgCreatePost{\n\t\t\tCreator: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the CreatePost simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"CreatePost simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/simulation/helpers.go",
    "content": "package simulation\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\n// FindAccount find a specific address from an account list\nfunc FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) {\n\tcreator, err := sdk.AccAddressFromBech32(address)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn simtypes.FindAccount(accs, creator)\n}\n"
  },
  {
    "path": "x/bulletin/types/codec.go",
    "content": "package types\n\nimport (\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/msgservice\"\n)\n\nfunc RegisterInterfaces(registry cdctypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgCreatePost{},\n\t\t&MsgRegisterNamespace{},\n\t\t&MsgAddCollaborator{},\n\t\t&MsgRemoveCollaborator{},\n\t\t&MsgUpdateParams{},\n\t)\n\tmsgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)\n}\n"
  },
  {
    "path": "x/bulletin/types/collaborator.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/collaborator.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Collaborator represents an actor with collaborator permissions in a namespace.\ntype Collaborator struct {\n\tAddress   string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\tDid       string `protobuf:\"bytes,2,opt,name=did,proto3\" json:\"did,omitempty\"`\n\tNamespace string `protobuf:\"bytes,3,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (m *Collaborator) Reset()         { *m = Collaborator{} }\nfunc (m *Collaborator) String() string { return proto.CompactTextString(m) }\nfunc (*Collaborator) ProtoMessage()    {}\nfunc (*Collaborator) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9513c8db419a6c7e, []int{0}\n}\nfunc (m *Collaborator) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Collaborator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Collaborator.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Collaborator) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Collaborator.Merge(m, src)\n}\nfunc (m *Collaborator) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Collaborator) XXX_DiscardUnknown() {\n\txxx_messageInfo_Collaborator.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Collaborator proto.InternalMessageInfo\n\nfunc (m *Collaborator) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *Collaborator) GetDid() string {\n\tif m != nil {\n\t\treturn m.Did\n\t}\n\treturn \"\"\n}\n\nfunc (m *Collaborator) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tproto.RegisterType((*Collaborator)(nil), \"sourcehub.bulletin.Collaborator\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/bulletin/collaborator.proto\", fileDescriptor_9513c8db419a6c7e)\n}\n\nvar fileDescriptor_9513c8db419a6c7e = []byte{\n\t// 193 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2d, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x2a, 0xcd, 0xc9, 0x49, 0x2d, 0xc9, 0xcc, 0xd3, 0x4f,\n\t0xce, 0xcf, 0xc9, 0x49, 0x4c, 0xca, 0x2f, 0x4a, 0x2c, 0xc9, 0x2f, 0xd2, 0x2b, 0x28, 0xca, 0x2f,\n\t0xc9, 0x17, 0x12, 0x82, 0x2b, 0xd3, 0x83, 0x29, 0x53, 0x8a, 0xe0, 0xe2, 0x71, 0x46, 0x52, 0x29,\n\t0x24, 0xc1, 0xc5, 0x9e, 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1,\n\t0x19, 0x04, 0xe3, 0x0a, 0x09, 0x70, 0x31, 0xa7, 0x64, 0xa6, 0x48, 0x30, 0x81, 0x45, 0x41, 0x4c,\n\t0x21, 0x19, 0x2e, 0xce, 0xbc, 0xc4, 0xdc, 0xd4, 0xe2, 0x82, 0xc4, 0xe4, 0x54, 0x09, 0x66, 0xb0,\n\t0x38, 0x42, 0xc0, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92,\n\t0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c,\n\t0xd3, 0x33, 0x4b, 0x40, 0x8e, 0x48, 0xce, 0xcf, 0xd5, 0x87, 0x38, 0x29, 0x2f, 0xb5, 0xa4, 0x3c,\n\t0xbf, 0x28, 0x5b, 0x1f, 0xe1, 0x8f, 0x0a, 0x84, 0x4f, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8,\n\t0xc0, 0x7e, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xd9, 0xe7, 0xf5, 0xb6, 0xec, 0x00, 0x00,\n\t0x00,\n}\n\nfunc (m *Collaborator) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Collaborator) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Collaborator) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintCollaborator(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Did) > 0 {\n\t\ti -= len(m.Did)\n\t\tcopy(dAtA[i:], m.Did)\n\t\ti = encodeVarintCollaborator(dAtA, i, uint64(len(m.Did)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintCollaborator(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintCollaborator(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovCollaborator(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Collaborator) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovCollaborator(uint64(l))\n\t}\n\tl = len(m.Did)\n\tif l > 0 {\n\t\tn += 1 + l + sovCollaborator(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovCollaborator(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovCollaborator(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozCollaborator(x uint64) (n int) {\n\treturn sovCollaborator(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Collaborator) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowCollaborator\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Collaborator: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Collaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCollaborator\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Did\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCollaborator\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Did = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowCollaborator\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipCollaborator(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipCollaborator(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowCollaborator\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowCollaborator\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowCollaborator\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthCollaborator\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupCollaborator\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthCollaborator\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthCollaborator        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowCollaborator          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupCollaborator = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/constants.go",
    "content": "package types\n\nconst (\n\t// CollaboratorRelation defines relation name for a collaborator.\n\tCollaboratorRelation = \"collaborator\"\n\t// CreatePostPermission defines permission name for creating a post.\n\tCreatePostPermission = \"create_post\"\n\t// NamespaceIdPrefix is the common prefix for all bulletin module namespaces.\n\tNamespaceIdPrefix = \"bulletin/\"\n\t// NamespaceResource defines a resource name for the namespace.\n\tNamespaceResource = \"namespace\"\n)\n"
  },
  {
    "path": "x/bulletin/types/errors.go",
    "content": "package types\n\n// DONTCOVER\n\nimport (\n\tsdkerrors \"cosmossdk.io/errors\"\n)\n\n// x/bulletin module sentinel errors\nvar (\n\tErrInvalidSigner             = sdkerrors.Register(ModuleName, 1100, \"expected gov account as only signer for proposal message\")\n\tErrInvalidPolicyId           = sdkerrors.Register(ModuleName, 1101, \"invalid policy id\")\n\tErrNamespaceAlreadyExists    = sdkerrors.Register(ModuleName, 1102, \"namespace already exists\")\n\tErrNamespaceNotFound         = sdkerrors.Register(ModuleName, 1103, \"namespace not found\")\n\tErrInvalidNamespaceId        = sdkerrors.Register(ModuleName, 1104, \"invalid namespace id\")\n\tErrInvalidNamespaceOwner     = sdkerrors.Register(ModuleName, 1105, \"expected authorized account as a namespace owner\")\n\tErrInvalidPostCreator        = sdkerrors.Register(ModuleName, 1106, \"expected authorized account as a post creator\")\n\tErrPostAlreadyExists         = sdkerrors.Register(ModuleName, 1107, \"post already exists\")\n\tErrPostNotFound              = sdkerrors.Register(ModuleName, 1108, \"post not found\")\n\tErrInvalidPostPayload        = sdkerrors.Register(ModuleName, 1109, \"invalid post payload\")\n\tErrCollaboratorAlreadyExists = sdkerrors.Register(ModuleName, 1111, \"collaborator already exists\")\n\tErrCollaboratorNotFound      = sdkerrors.Register(ModuleName, 1112, \"collaborator not found\")\n\tErrCouldNotEnsurePolicy      = sdkerrors.Register(ModuleName, 1113, \"could not ensure policy\")\n)\n"
  },
  {
    "path": "x/bulletin/types/events.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/events.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// EventNamespaceRegistered is emitted when a namespace is registered.\ntype EventNamespaceRegistered struct {\n\t// namespace_id is the unique identifier of the namespace.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// owner_did is the DID of the namespace owner.\n\tOwnerDid string `protobuf:\"bytes,2,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n\t// created_at is the timestamp when the namespace was created.\n\tCreatedAt time.Time `protobuf:\"bytes,3,opt,name=created_at,json=createdAt,proto3,stdtime\" json:\"created_at\"`\n}\n\nfunc (m *EventNamespaceRegistered) Reset()         { *m = EventNamespaceRegistered{} }\nfunc (m *EventNamespaceRegistered) String() string { return proto.CompactTextString(m) }\nfunc (*EventNamespaceRegistered) ProtoMessage()    {}\nfunc (*EventNamespaceRegistered) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_4702ff14c81a2bc3, []int{0}\n}\nfunc (m *EventNamespaceRegistered) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventNamespaceRegistered) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventNamespaceRegistered.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventNamespaceRegistered) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventNamespaceRegistered.Merge(m, src)\n}\nfunc (m *EventNamespaceRegistered) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventNamespaceRegistered) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventNamespaceRegistered.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventNamespaceRegistered proto.InternalMessageInfo\n\nfunc (m *EventNamespaceRegistered) GetNamespaceId() string {\n\tif m != nil {\n\t\treturn m.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventNamespaceRegistered) GetOwnerDid() string {\n\tif m != nil {\n\t\treturn m.OwnerDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventNamespaceRegistered) GetCreatedAt() time.Time {\n\tif m != nil {\n\t\treturn m.CreatedAt\n\t}\n\treturn time.Time{}\n}\n\n// EventPostCreated is emitted when a post is created.\ntype EventPostCreated struct {\n\t// namespace_id is the namespace the post belongs to.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// post_id is the unique identifier of the post.\n\tPostId string `protobuf:\"bytes,2,opt,name=post_id,json=postId,proto3\" json:\"post_id,omitempty\"`\n\t// creator_did is the DID of the post creator.\n\tCreatorDid string `protobuf:\"bytes,3,opt,name=creator_did,json=creatorDid,proto3\" json:\"creator_did,omitempty\"`\n\t// payload is the base64-encoded content of the post.\n\tPayload string `protobuf:\"bytes,4,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\t// artifact is sent with a post call for tracking purposes\n\tArtifact string `protobuf:\"bytes,5,opt,name=artifact,proto3\" json:\"artifact,omitempty\"`\n}\n\nfunc (m *EventPostCreated) Reset()         { *m = EventPostCreated{} }\nfunc (m *EventPostCreated) String() string { return proto.CompactTextString(m) }\nfunc (*EventPostCreated) ProtoMessage()    {}\nfunc (*EventPostCreated) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_4702ff14c81a2bc3, []int{1}\n}\nfunc (m *EventPostCreated) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventPostCreated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventPostCreated.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventPostCreated) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventPostCreated.Merge(m, src)\n}\nfunc (m *EventPostCreated) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventPostCreated) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventPostCreated.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventPostCreated proto.InternalMessageInfo\n\nfunc (m *EventPostCreated) GetNamespaceId() string {\n\tif m != nil {\n\t\treturn m.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventPostCreated) GetPostId() string {\n\tif m != nil {\n\t\treturn m.PostId\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventPostCreated) GetCreatorDid() string {\n\tif m != nil {\n\t\treturn m.CreatorDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventPostCreated) GetPayload() string {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventPostCreated) GetArtifact() string {\n\tif m != nil {\n\t\treturn m.Artifact\n\t}\n\treturn \"\"\n}\n\n// EventCollaboratorAdded is emitted when a collaborator is added to a namespace.\ntype EventCollaboratorAdded struct {\n\t// namespace_id is the namespace the collaborator was added to.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// collaborator_did is the DID of the collaborator.\n\tCollaboratorDid string `protobuf:\"bytes,2,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n\t// added_by is the DID of the user who added the collaborator.\n\tAddedBy string `protobuf:\"bytes,3,opt,name=added_by,json=addedBy,proto3\" json:\"added_by,omitempty\"`\n}\n\nfunc (m *EventCollaboratorAdded) Reset()         { *m = EventCollaboratorAdded{} }\nfunc (m *EventCollaboratorAdded) String() string { return proto.CompactTextString(m) }\nfunc (*EventCollaboratorAdded) ProtoMessage()    {}\nfunc (*EventCollaboratorAdded) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_4702ff14c81a2bc3, []int{2}\n}\nfunc (m *EventCollaboratorAdded) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventCollaboratorAdded) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventCollaboratorAdded.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventCollaboratorAdded) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventCollaboratorAdded.Merge(m, src)\n}\nfunc (m *EventCollaboratorAdded) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventCollaboratorAdded) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventCollaboratorAdded.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventCollaboratorAdded proto.InternalMessageInfo\n\nfunc (m *EventCollaboratorAdded) GetNamespaceId() string {\n\tif m != nil {\n\t\treturn m.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventCollaboratorAdded) GetCollaboratorDid() string {\n\tif m != nil {\n\t\treturn m.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventCollaboratorAdded) GetAddedBy() string {\n\tif m != nil {\n\t\treturn m.AddedBy\n\t}\n\treturn \"\"\n}\n\n// EventCollaboratorRemoved is emitted when a collaborator is removed from a namespace.\ntype EventCollaboratorRemoved struct {\n\t// namespace_id is the namespace the collaborator was removed from.\n\tNamespaceId string `protobuf:\"bytes,1,opt,name=namespace_id,json=namespaceId,proto3\" json:\"namespace_id,omitempty\"`\n\t// collaborator_did is the DID of the collaborator.\n\tCollaboratorDid string `protobuf:\"bytes,2,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (m *EventCollaboratorRemoved) Reset()         { *m = EventCollaboratorRemoved{} }\nfunc (m *EventCollaboratorRemoved) String() string { return proto.CompactTextString(m) }\nfunc (*EventCollaboratorRemoved) ProtoMessage()    {}\nfunc (*EventCollaboratorRemoved) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_4702ff14c81a2bc3, []int{3}\n}\nfunc (m *EventCollaboratorRemoved) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventCollaboratorRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventCollaboratorRemoved.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventCollaboratorRemoved) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventCollaboratorRemoved.Merge(m, src)\n}\nfunc (m *EventCollaboratorRemoved) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventCollaboratorRemoved) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventCollaboratorRemoved.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventCollaboratorRemoved proto.InternalMessageInfo\n\nfunc (m *EventCollaboratorRemoved) GetNamespaceId() string {\n\tif m != nil {\n\t\treturn m.NamespaceId\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventCollaboratorRemoved) GetCollaboratorDid() string {\n\tif m != nil {\n\t\treturn m.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tproto.RegisterType((*EventNamespaceRegistered)(nil), \"sourcehub.bulletin.EventNamespaceRegistered\")\n\tproto.RegisterType((*EventPostCreated)(nil), \"sourcehub.bulletin.EventPostCreated\")\n\tproto.RegisterType((*EventCollaboratorAdded)(nil), \"sourcehub.bulletin.EventCollaboratorAdded\")\n\tproto.RegisterType((*EventCollaboratorRemoved)(nil), \"sourcehub.bulletin.EventCollaboratorRemoved\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/events.proto\", fileDescriptor_4702ff14c81a2bc3) }\n\nvar fileDescriptor_4702ff14c81a2bc3 = []byte{\n\t// 419 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xc1, 0x6e, 0xd3, 0x40,\n\t0x10, 0x86, 0xb3, 0x14, 0x9a, 0x64, 0x83, 0x44, 0x65, 0x21, 0x30, 0x41, 0xb2, 0x4b, 0x4e, 0xe5,\n\t0x62, 0x4b, 0xf4, 0x09, 0x9a, 0xc0, 0xa1, 0x07, 0x10, 0x8a, 0x38, 0x71, 0xb1, 0xd6, 0xde, 0xa9,\n\t0xbb, 0xc2, 0xf6, 0x58, 0xbb, 0x93, 0x96, 0x1c, 0x79, 0x83, 0xbe, 0x01, 0x27, 0xde, 0xa5, 0xc7,\n\t0x1e, 0x39, 0x01, 0x4a, 0x5e, 0x04, 0xed, 0xda, 0x4e, 0x7d, 0xcc, 0xa1, 0x37, 0xff, 0xff, 0xcc,\n\t0xfc, 0xfa, 0x6c, 0xff, 0x3c, 0x34, 0xb8, 0xd2, 0x19, 0x5c, 0xae, 0xd2, 0x38, 0x5d, 0x15, 0x05,\n\t0x90, 0xaa, 0x62, 0xb8, 0x82, 0x8a, 0x4c, 0x54, 0x6b, 0x24, 0xf4, 0xbc, 0xdd, 0x42, 0xd4, 0x2d,\n\t0x4c, 0x9f, 0xe7, 0x98, 0xa3, 0x1b, 0xc7, 0xf6, 0xa9, 0xd9, 0x9c, 0x86, 0x39, 0x62, 0x5e, 0x40,\n\t0xec, 0x54, 0xba, 0xba, 0x88, 0x49, 0x95, 0x60, 0x48, 0x94, 0x75, 0xb3, 0x30, 0xfb, 0xc9, 0xb8,\n\t0xff, 0xc1, 0x66, 0x7f, 0x12, 0x25, 0x98, 0x5a, 0x64, 0xb0, 0x84, 0x5c, 0x19, 0x02, 0x0d, 0xd2,\n\t0x7b, 0xc3, 0x9f, 0x56, 0x9d, 0x9d, 0x28, 0xe9, 0xb3, 0x63, 0x76, 0x32, 0x5e, 0x4e, 0x76, 0xde,\n\t0xb9, 0xf4, 0x5e, 0xf3, 0x31, 0x5e, 0x57, 0xa0, 0x13, 0xa9, 0xa4, 0xff, 0xc8, 0xcd, 0x47, 0xce,\n\t0x78, 0xaf, 0xa4, 0xb7, 0xe0, 0x3c, 0xd3, 0x20, 0x08, 0x64, 0x22, 0xc8, 0x3f, 0x38, 0x66, 0x27,\n\t0x93, 0x77, 0xd3, 0xa8, 0x41, 0x8a, 0x3a, 0xa4, 0xe8, 0x4b, 0x87, 0x34, 0x1f, 0xdd, 0xfe, 0x09,\n\t0x07, 0x37, 0x7f, 0x43, 0xb6, 0x1c, 0xb7, 0x77, 0x67, 0x34, 0xfb, 0xc5, 0xf8, 0x91, 0x23, 0xfc,\n\t0x8c, 0x86, 0x16, 0x8d, 0xbd, 0x0f, 0xd9, 0x4b, 0x3e, 0xac, 0xd1, 0x50, 0xb2, 0xe3, 0x3a, 0xb4,\n\t0xf2, 0x5c, 0x7a, 0x21, 0x9f, 0xb8, 0x74, 0x6c, 0xa0, 0x0f, 0xdc, 0x90, 0xb7, 0x96, 0xc5, 0xf6,\n\t0xf9, 0xb0, 0x16, 0xeb, 0x02, 0x85, 0xf4, 0x1f, 0xbb, 0x61, 0x27, 0xbd, 0x29, 0x1f, 0x09, 0x4d,\n\t0xea, 0x42, 0x64, 0xe4, 0x3f, 0x69, 0x5e, 0xb6, 0xd3, 0xb3, 0x1f, 0x8c, 0xbf, 0x70, 0x9c, 0x0b,\n\t0x2c, 0x0a, 0x91, 0xa2, 0xb6, 0x71, 0x67, 0x52, 0xee, 0x47, 0xfb, 0x96, 0x1f, 0x65, 0xbd, 0xbb,\n\t0xde, 0xe7, 0x7c, 0xd6, 0xf7, 0x2d, 0xde, 0x2b, 0x3e, 0x12, 0x36, 0x36, 0x49, 0xd7, 0x2d, 0xfc,\n\t0xd0, 0xe9, 0xf9, 0x7a, 0x76, 0xd9, 0xfe, 0xcc, 0x3e, 0xc2, 0x12, 0x4a, 0xbc, 0x7a, 0x68, 0x88,\n\t0xf9, 0xc7, 0xdb, 0x4d, 0xc0, 0xee, 0x36, 0x01, 0xfb, 0xb7, 0x09, 0xd8, 0xcd, 0x36, 0x18, 0xdc,\n\t0x6d, 0x83, 0xc1, 0xef, 0x6d, 0x30, 0xf8, 0x7a, 0x9a, 0x2b, 0xb2, 0xcd, 0xcc, 0xb0, 0x8c, 0x9b,\n\t0x9e, 0x56, 0x40, 0xd7, 0xa8, 0xbf, 0xc5, 0xf7, 0xb5, 0xfe, 0x7e, 0x5f, 0x6c, 0x5a, 0xd7, 0x60,\n\t0xd2, 0x43, 0xd7, 0x86, 0xd3, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xc8, 0x68, 0x78, 0xfb,\n\t0x02, 0x00, 0x00,\n}\n\nfunc (m *EventNamespaceRegistered) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventNamespaceRegistered) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventNamespaceRegistered) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CreatedAt):])\n\tif err1 != nil {\n\t\treturn 0, err1\n\t}\n\ti -= n1\n\ti = encodeVarintEvents(dAtA, i, uint64(n1))\n\ti--\n\tdAtA[i] = 0x1a\n\tif len(m.OwnerDid) > 0 {\n\t\ti -= len(m.OwnerDid)\n\t\tcopy(dAtA[i:], m.OwnerDid)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.OwnerDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.NamespaceId) > 0 {\n\t\ti -= len(m.NamespaceId)\n\t\tcopy(dAtA[i:], m.NamespaceId)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.NamespaceId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventPostCreated) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventPostCreated) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventPostCreated) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Artifact) > 0 {\n\t\ti -= len(m.Artifact)\n\t\tcopy(dAtA[i:], m.Artifact)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.Artifact)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Payload) > 0 {\n\t\ti -= len(m.Payload)\n\t\tcopy(dAtA[i:], m.Payload)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.Payload)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.CreatorDid) > 0 {\n\t\ti -= len(m.CreatorDid)\n\t\tcopy(dAtA[i:], m.CreatorDid)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.CreatorDid)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.PostId) > 0 {\n\t\ti -= len(m.PostId)\n\t\tcopy(dAtA[i:], m.PostId)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.PostId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.NamespaceId) > 0 {\n\t\ti -= len(m.NamespaceId)\n\t\tcopy(dAtA[i:], m.NamespaceId)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.NamespaceId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventCollaboratorAdded) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventCollaboratorAdded) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventCollaboratorAdded) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.AddedBy) > 0 {\n\t\ti -= len(m.AddedBy)\n\t\tcopy(dAtA[i:], m.AddedBy)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.AddedBy)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.CollaboratorDid) > 0 {\n\t\ti -= len(m.CollaboratorDid)\n\t\tcopy(dAtA[i:], m.CollaboratorDid)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.CollaboratorDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.NamespaceId) > 0 {\n\t\ti -= len(m.NamespaceId)\n\t\tcopy(dAtA[i:], m.NamespaceId)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.NamespaceId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventCollaboratorRemoved) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventCollaboratorRemoved) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventCollaboratorRemoved) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.CollaboratorDid) > 0 {\n\t\ti -= len(m.CollaboratorDid)\n\t\tcopy(dAtA[i:], m.CollaboratorDid)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.CollaboratorDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.NamespaceId) > 0 {\n\t\ti -= len(m.NamespaceId)\n\t\tcopy(dAtA[i:], m.NamespaceId)\n\t\ti = encodeVarintEvents(dAtA, i, uint64(len(m.NamespaceId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintEvents(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovEvents(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *EventNamespaceRegistered) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.NamespaceId)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.OwnerDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CreatedAt)\n\tn += 1 + l + sovEvents(uint64(l))\n\treturn n\n}\n\nfunc (m *EventPostCreated) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.NamespaceId)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.PostId)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.CreatorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.Payload)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.Artifact)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *EventCollaboratorAdded) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.NamespaceId)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.CollaboratorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.AddedBy)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *EventCollaboratorRemoved) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.NamespaceId)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\tl = len(m.CollaboratorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovEvents(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovEvents(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozEvents(x uint64) (n int) {\n\treturn sovEvents(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *EventNamespaceRegistered) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventNamespaceRegistered: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventNamespaceRegistered: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CreatedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEvents(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventPostCreated) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventPostCreated: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventPostCreated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PostId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PostId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CreatorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Payload = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Artifact\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Artifact = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEvents(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventCollaboratorAdded) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventCollaboratorAdded: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventCollaboratorAdded: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AddedBy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.AddedBy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEvents(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventCollaboratorRemoved) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventCollaboratorRemoved: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventCollaboratorRemoved: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field NamespaceId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.NamespaceId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipEvents(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipEvents(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowEvents\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowEvents\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthEvents\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupEvents\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthEvents\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthEvents        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowEvents          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupEvents = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/expected_keepers.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// AccountKeeper defines the expected interface for the Account module.\ntype AccountKeeper interface {\n\tGetAccount(context.Context, sdk.AccAddress) sdk.AccountI // only used for simulation\n\tGetModuleAccount(context.Context, string) sdk.ModuleAccountI\n\tSetAccount(context.Context, sdk.AccountI)\n\t// Methods imported from account should be defined here\n}\n\n// BankKeeper defines the expected interface for the Bank module.\ntype BankKeeper interface {\n\tSpendableCoins(context.Context, sdk.AccAddress) sdk.Coins\n\t// Methods imported from bank should be defined here\n}\n\n// ParamSubspace defines the expected Subspace interface for parameters.\ntype ParamSubspace interface {\n\tGet(context.Context, []byte, interface{})\n\tSet(context.Context, []byte, interface{})\n}\n"
  },
  {
    "path": "x/bulletin/types/genesis.go",
    "content": "package types\n\n// this line is used by starport scaffolding # genesis/types/import\n\n// DefaultIndex is the default global index\nconst DefaultIndex uint64 = 1\n\n// DefaultGenesis returns the default genesis state\nfunc DefaultGenesis() *GenesisState {\n\treturn &GenesisState{\n\t\t// this line is used by starport scaffolding # genesis/types/default\n\t\tParams:        DefaultParams(),\n\t\tPolicyId:      \"\",\n\t\tNamespaces:    []Namespace{},\n\t\tCollaborators: []Collaborator{},\n\t\tPosts:         []Post{},\n\t}\n}\n\n// Validate performs basic genesis state validation returning an error upon any\n// failure.\nfunc (gs GenesisState) Validate() error {\n\t// this line is used by starport scaffolding # genesis/types/validate\n\n\treturn gs.Params.Validate()\n}\n"
  },
  {
    "path": "x/bulletin/types/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/genesis.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// GenesisState defines the bulletin module's genesis state.\ntype GenesisState struct {\n\t// params defines all the parameters of the module.\n\tParams        Params         `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n\tPolicyId      string         `protobuf:\"bytes,2,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n\tNamespaces    []Namespace    `protobuf:\"bytes,3,rep,name=namespaces,proto3\" json:\"namespaces\"`\n\tCollaborators []Collaborator `protobuf:\"bytes,4,rep,name=collaborators,proto3\" json:\"collaborators\"`\n\tPosts         []Post         `protobuf:\"bytes,5,rep,name=posts,proto3\" json:\"posts\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_965742a13a30694e, []int{0}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\nfunc (m *GenesisState) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\nfunc (m *GenesisState) GetNamespaces() []Namespace {\n\tif m != nil {\n\t\treturn m.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetCollaborators() []Collaborator {\n\tif m != nil {\n\t\treturn m.Collaborators\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetPosts() []Post {\n\tif m != nil {\n\t\treturn m.Posts\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*GenesisState)(nil), \"sourcehub.bulletin.GenesisState\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/genesis.proto\", fileDescriptor_965742a13a30694e) }\n\nvar fileDescriptor_965742a13a30694e = []byte{\n\t// 349 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xb1, 0x4e, 0xf3, 0x30,\n\t0x10, 0xc7, 0xe3, 0xf6, 0x6b, 0xf5, 0xd5, 0x85, 0x01, 0x8b, 0x21, 0x0a, 0x6a, 0x1a, 0x55, 0x42,\n\t0xaa, 0x18, 0x12, 0xa9, 0x9d, 0x18, 0x58, 0xca, 0x00, 0x0c, 0x20, 0x28, 0x1b, 0x0b, 0x72, 0x52,\n\t0x2b, 0x44, 0x24, 0xb9, 0x28, 0x76, 0x05, 0x7d, 0x0b, 0x1e, 0x83, 0x91, 0x67, 0x60, 0xea, 0xd8,\n\t0x91, 0x09, 0xa1, 0x76, 0xe0, 0x35, 0x50, 0xe2, 0xb4, 0x35, 0xc2, 0x4b, 0x74, 0xba, 0xfc, 0xee,\n\t0x77, 0xf9, 0xe7, 0xb0, 0xc3, 0x61, 0x9a, 0x07, 0xec, 0x61, 0xea, 0x7b, 0xfe, 0x34, 0x8e, 0x99,\n\t0x88, 0x52, 0x2f, 0x64, 0x29, 0xe3, 0x11, 0x77, 0xb3, 0x1c, 0x04, 0x10, 0xb2, 0x21, 0xdc, 0x35,\n\t0x61, 0xed, 0xd1, 0x24, 0x4a, 0xc1, 0x2b, 0x9f, 0x12, 0xb3, 0xf6, 0x43, 0x08, 0xa1, 0x2c, 0xbd,\n\t0xa2, 0xaa, 0xba, 0x5d, 0x8d, 0x3e, 0xa3, 0x39, 0x4d, 0x2a, 0xbb, 0xd5, 0xd3, 0x00, 0x29, 0x4d,\n\t0x18, 0xcf, 0x68, 0xc0, 0x2a, 0xe6, 0x50, 0xc3, 0x04, 0x10, 0xc7, 0xd4, 0x87, 0x9c, 0x0a, 0xc8,\n\t0x2b, 0xac, 0xa3, 0xdb, 0x05, 0x5c, 0xc8, 0xd7, 0xbd, 0xf7, 0x1a, 0xde, 0x39, 0x93, 0xc9, 0x6e,\n\t0x05, 0x15, 0x8c, 0x9c, 0xe0, 0xa6, 0xfc, 0x14, 0x13, 0x39, 0xa8, 0xdf, 0x1e, 0x58, 0xee, 0xdf,\n\t0xa4, 0xee, 0x75, 0x49, 0x8c, 0x5a, 0xf3, 0xcf, 0xae, 0xf1, 0xfa, 0xfd, 0x76, 0x84, 0xc6, 0xd5,\n\t0x10, 0x39, 0xc0, 0xad, 0x0c, 0xe2, 0x28, 0x98, 0xdd, 0x47, 0x13, 0xb3, 0xe6, 0xa0, 0x7e, 0x6b,\n\t0xfc, 0x5f, 0x36, 0x2e, 0x26, 0xe4, 0x1c, 0xe3, 0x4d, 0x0a, 0x6e, 0xd6, 0x9d, 0x7a, 0xbf, 0x3d,\n\t0xe8, 0xe8, 0xfc, 0x57, 0x6b, 0x4a, 0x5d, 0xa1, 0xcc, 0x92, 0x1b, 0xbc, 0xab, 0x66, 0xe5, 0xe6,\n\t0xbf, 0x52, 0xe6, 0xe8, 0x64, 0xa7, 0x0a, 0xa8, 0xfa, 0x7e, 0x1b, 0xc8, 0x31, 0x6e, 0x14, 0xff,\n\t0x85, 0x9b, 0x8d, 0x52, 0x65, 0x6a, 0x73, 0x03, 0x17, 0xaa, 0x42, 0x4e, 0x8c, 0x2e, 0xe7, 0x4b,\n\t0x1b, 0x2d, 0x96, 0x36, 0xfa, 0x5a, 0xda, 0xe8, 0x65, 0x65, 0x1b, 0x8b, 0x95, 0x6d, 0x7c, 0xac,\n\t0x6c, 0xe3, 0x6e, 0x18, 0x46, 0xa2, 0x30, 0x04, 0x90, 0x78, 0xd2, 0x97, 0x32, 0xf1, 0x04, 0xf9,\n\t0xa3, 0xb7, 0x3d, 0xcb, 0xf3, 0xf6, 0x30, 0x62, 0x96, 0x31, 0xee, 0x37, 0xcb, 0xd3, 0x0c, 0x7f,\n\t0x02, 0x00, 0x00, 0xff, 0xff, 0x66, 0x0b, 0x6b, 0x3a, 0x86, 0x02, 0x00, 0x00,\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Posts) > 0 {\n\t\tfor iNdEx := len(m.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Posts[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.Collaborators) > 0 {\n\t\tfor iNdEx := len(m.Collaborators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Collaborators[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovGenesis(uint64(l))\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovGenesis(uint64(l))\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor _, e := range m.Namespaces {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.Collaborators) > 0 {\n\t\tfor _, e := range m.Collaborators {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.Posts) > 0 {\n\t\tfor _, e := range m.Posts {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespaces = append(m.Namespaces, Namespace{})\n\t\t\tif err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Collaborators\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Collaborators = append(m.Collaborators, Collaborator{})\n\t\t\tif err := m.Collaborators[len(m.Collaborators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Posts = append(m.Posts, Post{})\n\t\t\tif err := m.Posts[len(m.Posts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/genesis_test.go",
    "content": "package types_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/bulletin/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesisState_Validate(t *testing.T) {\n\ttests := []struct {\n\t\tdesc     string\n\t\tgenState *types.GenesisState\n\t\tvalid    bool\n\t}{\n\t\t{\n\t\t\tdesc:     \"default is valid\",\n\t\t\tgenState: types.DefaultGenesis(),\n\t\t\tvalid:    true,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"valid genesis state\",\n\t\t\tgenState: &types.GenesisState{\n\n\t\t\t\t// this line is used by starport scaffolding # types/genesis/validField\n\t\t\t},\n\t\t\tvalid: true,\n\t\t},\n\t\t// this line is used by starport scaffolding # types/genesis/testcase\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.desc, func(t *testing.T) {\n\t\t\terr := tc.genState.Validate()\n\t\t\tif tc.valid {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Error(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/bulletin/types/keys.go",
    "content": "package types\n\nimport (\n\t\"bytes\"\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"strings\"\n)\n\nconst (\n\t// ModuleName defines the module name\n\tModuleName = \"bulletin\"\n\n\t// StoreKey defines the primary module store key\n\tStoreKey = ModuleName\n\n\tPolicyIdKey = \"policy_id\"\n\n\tPostKeyPrefix = \"post/\"\n\n\tNamespaceKeyPrefix = \"namespace/\"\n\n\tCollaboratorKeyPrefix = \"collaborator/\"\n)\n\nvar (\n\tParamsKey = []byte(\"p_bulletin\")\n)\n\nfunc KeyPrefix(p string) []byte {\n\treturn []byte(p)\n}\n\n// SanitizeKeyPart replaces \"/\" with \"|\" in key parts to prevent key collisions.\nfunc SanitizeKeyPart(part string) string {\n\treturn strings.ReplaceAll(part, \"/\", \"|\")\n}\n\n// UnsanitizeKeyPart restores \"/\" from \"|\" in key parts.\nfunc UnsanitizeKeyPart(part string) string {\n\treturn strings.ReplaceAll(part, \"|\", \"/\")\n}\n\n// PostKey builds and returns the store key to store/retrieve the Post.\nfunc PostKey(namespaceId string, postId string) []byte {\n\tsanitizedNamespaceId := SanitizeKeyPart(namespaceId)\n\tsanitizedPostId := SanitizeKeyPart(postId)\n\n\t// Precompute buffer size\n\tsize := len(sanitizedNamespaceId) + 1 + len(sanitizedPostId)\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, sanitizedNamespaceId...)\n\tbuf = append(buf, '/')\n\tbuf = append(buf, sanitizedPostId...)\n\n\treturn buf\n}\n\n// CollaboratorKey builds and returns the store key to store/retrieve the Actor.\nfunc CollaboratorKey(namespaceId string, collaboratorDID string) []byte {\n\tsanitizedNamespaceId := SanitizeKeyPart(namespaceId)\n\tsanitizedCollaboratorDID := SanitizeKeyPart(collaboratorDID)\n\n\t// Precompute buffer size\n\tsize := len(sanitizedNamespaceId) + 1 + len(sanitizedCollaboratorDID)\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, sanitizedNamespaceId...)\n\tbuf = append(buf, '/')\n\tbuf = append(buf, sanitizedCollaboratorDID...)\n\n\treturn buf\n}\n\n// ParsePostKey retrieves namespaceId and postId from the Post key.\nfunc ParsePostKey(key []byte) (namespaceId string, postId string) {\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 2 {\n\t\tpanic(\"invalid post key format: expected format namespaceId/postId\")\n\t}\n\n\tnamespaceId = UnsanitizeKeyPart(string(parts[0]))\n\tpostId = UnsanitizeKeyPart(string(parts[1]))\n\n\treturn namespaceId, postId\n}\n\n// ParseCollaboratorKey retrieves namespaceId and actorDID from the Collaborator key.\nfunc ParseCollaboratorKey(key []byte) (namespaceId string, actorDID string) {\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 2 {\n\t\tpanic(\"invalid collaborator key format: expected format namespaceId/actorDID\")\n\t}\n\n\tnamespaceId = UnsanitizeKeyPart(string(parts[0]))\n\tactorDID = UnsanitizeKeyPart(string(parts[1]))\n\n\treturn namespaceId, actorDID\n}\n\n// GeneratePostId generates deterministic post id from namespaceId and post payload.\nfunc GeneratePostId(namespaceId string, payload []byte) string {\n\thash := sha256.Sum256([]byte(namespaceId + string(payload)))\n\treturn hex.EncodeToString(hash[:])\n}\n"
  },
  {
    "path": "x/bulletin/types/message_add_collaborator.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ sdk.Msg = &MsgAddCollaborator{}\n\nfunc NewMsgAddCollaborator(creator string, namespace string, collaborator string) *MsgAddCollaborator {\n\treturn &MsgAddCollaborator{\n\t\tCreator:      creator,\n\t\tNamespace:    namespace,\n\t\tCollaborator: collaborator,\n\t}\n}\n\nfunc (msg *MsgAddCollaborator) ValidateBasic() error {\n\t_, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid creator address (%s)\", err)\n\t}\n\n\tif msg.Namespace == \"\" {\n\t\treturn ErrInvalidNamespaceId\n\t}\n\n\t_, err = sdk.AccAddressFromBech32(msg.Collaborator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid collaborator address (%s)\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/message_create_post.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ sdk.Msg = &MsgCreatePost{}\n\nfunc NewMsgCreatePost(creator string, namespace string, payload []byte) *MsgCreatePost {\n\treturn &MsgCreatePost{\n\t\tCreator:   creator,\n\t\tNamespace: namespace,\n\t\tPayload:   payload,\n\t}\n}\n\nfunc (msg *MsgCreatePost) ValidateBasic() error {\n\t_, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid creator address (%s)\", err)\n\t}\n\n\tif msg.Namespace == \"\" {\n\t\treturn ErrInvalidNamespaceId\n\t}\n\n\tif len(msg.Payload) == 0 {\n\t\treturn ErrInvalidPostPayload\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/message_register_namespace.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ sdk.Msg = &MsgRegisterNamespace{}\n\nfunc NewMsgRegisterNamespace(creator string, namespace string) *MsgRegisterNamespace {\n\treturn &MsgRegisterNamespace{\n\t\tCreator:   creator,\n\t\tNamespace: namespace,\n\t}\n}\n\nfunc (msg *MsgRegisterNamespace) ValidateBasic() error {\n\t_, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid creator address (%s)\", err)\n\t}\n\n\tif msg.Namespace == \"\" {\n\t\treturn ErrInvalidNamespaceId\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/message_remove_collaborator.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ sdk.Msg = &MsgRemoveCollaborator{}\n\nfunc NewMsgRemoveCollaborator(creator string, namespace string, collaborator string) *MsgRemoveCollaborator {\n\treturn &MsgRemoveCollaborator{\n\t\tCreator:      creator,\n\t\tNamespace:    namespace,\n\t\tCollaborator: collaborator,\n\t}\n}\n\nfunc (msg *MsgRemoveCollaborator) ValidateBasic() error {\n\t_, err := sdk.AccAddressFromBech32(msg.Creator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid creator address (%s)\", err)\n\t}\n\n\tif msg.Namespace == \"\" {\n\t\treturn ErrInvalidNamespaceId\n\t}\n\n\t_, err = sdk.AccAddressFromBech32(msg.Collaborator)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, \"invalid collaborator address (%s)\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/msg_update_params.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgUpdateParams{}\n\n// ValidateBasic does a sanity check on the provided data.\nfunc (m *MsgUpdateParams) ValidateBasic() error {\n\tif _, err := sdk.AccAddressFromBech32(m.Authority); err != nil {\n\t\treturn errorsmod.Wrap(err, \"invalid authority address\")\n\t}\n\n\tif err := m.Params.Validate(); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/namespace.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/namespace.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Namespace represents a logical bulletin space used to group posts.\ntype Namespace struct {\n\tId        string    `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tCreator   string    `protobuf:\"bytes,2,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tOwnerDid  string    `protobuf:\"bytes,3,opt,name=owner_did,json=ownerDid,proto3\" json:\"owner_did,omitempty\"`\n\tCreatedAt time.Time `protobuf:\"bytes,4,opt,name=created_at,json=createdAt,proto3,stdtime\" json:\"created_at\"`\n}\n\nfunc (m *Namespace) Reset()         { *m = Namespace{} }\nfunc (m *Namespace) String() string { return proto.CompactTextString(m) }\nfunc (*Namespace) ProtoMessage()    {}\nfunc (*Namespace) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f47a8bc38972fd19, []int{0}\n}\nfunc (m *Namespace) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Namespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Namespace.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Namespace) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Namespace.Merge(m, src)\n}\nfunc (m *Namespace) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Namespace) XXX_DiscardUnknown() {\n\txxx_messageInfo_Namespace.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Namespace proto.InternalMessageInfo\n\nfunc (m *Namespace) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\nfunc (m *Namespace) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *Namespace) GetOwnerDid() string {\n\tif m != nil {\n\t\treturn m.OwnerDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *Namespace) GetCreatedAt() time.Time {\n\tif m != nil {\n\t\treturn m.CreatedAt\n\t}\n\treturn time.Time{}\n}\n\nfunc init() {\n\tproto.RegisterType((*Namespace)(nil), \"sourcehub.bulletin.Namespace\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/bulletin/namespace.proto\", fileDescriptor_f47a8bc38972fd19)\n}\n\nvar fileDescriptor_f47a8bc38972fd19 = []byte{\n\t// 284 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xb1, 0x4e, 0xc3, 0x30,\n\t0x10, 0x86, 0xe3, 0x80, 0xa0, 0x31, 0x12, 0x83, 0xc5, 0x10, 0x05, 0xe1, 0x54, 0x9d, 0x3a, 0xc5,\n\t0x12, 0x7d, 0x02, 0x0a, 0x2b, 0x0c, 0x15, 0x13, 0x4b, 0x95, 0xc4, 0x26, 0x58, 0x24, 0xb9, 0xc8,\n\t0xb9, 0xa8, 0xf0, 0x16, 0xdd, 0x78, 0xa5, 0x8e, 0x1d, 0x99, 0x00, 0x25, 0x2f, 0x82, 0xea, 0x34,\n\t0x74, 0x61, 0xf3, 0xdd, 0xff, 0x59, 0xff, 0xff, 0x1f, 0x9d, 0xd4, 0xd0, 0x98, 0x54, 0xbd, 0x34,\n\t0x89, 0x48, 0x9a, 0x3c, 0x57, 0xa8, 0x4b, 0x51, 0xc6, 0x85, 0xaa, 0xab, 0x38, 0x55, 0x51, 0x65,\n\t0x00, 0x81, 0xb1, 0x3f, 0x26, 0x1a, 0x98, 0xe0, 0x22, 0x83, 0x0c, 0xac, 0x2c, 0x76, 0xaf, 0x9e,\n\t0x0c, 0xc2, 0x0c, 0x20, 0xcb, 0x95, 0xb0, 0x53, 0xd2, 0x3c, 0x0b, 0xd4, 0x85, 0xaa, 0x31, 0x2e,\n\t0xaa, 0x3d, 0x70, 0xf5, 0x8f, 0x5d, 0x05, 0x35, 0xf6, 0xf2, 0xe4, 0x83, 0x50, 0xef, 0x61, 0x70,\n\t0x67, 0xe7, 0xd4, 0xd5, 0xd2, 0x27, 0x63, 0x32, 0xf5, 0x16, 0xae, 0x96, 0xcc, 0xa7, 0xa7, 0xa9,\n\t0x51, 0x31, 0x82, 0xf1, 0x5d, 0xbb, 0x1c, 0x46, 0x76, 0x49, 0x3d, 0x58, 0x95, 0xca, 0x2c, 0xa5,\n\t0x96, 0xfe, 0x91, 0xd5, 0x46, 0x76, 0x71, 0xa7, 0x25, 0xbb, 0xa5, 0xd4, 0x72, 0x4a, 0x2e, 0x63,\n\t0xf4, 0x8f, 0xc7, 0x64, 0x7a, 0x76, 0x1d, 0x44, 0x7d, 0xd2, 0x68, 0x48, 0x1a, 0x3d, 0x0e, 0x49,\n\t0xe7, 0xa3, 0xcd, 0x57, 0xe8, 0xac, 0xbf, 0x43, 0xb2, 0xf0, 0xf6, 0xff, 0x6e, 0x70, 0x7e, 0xbf,\n\t0x69, 0x39, 0xd9, 0xb6, 0x9c, 0xfc, 0xb4, 0x9c, 0xac, 0x3b, 0xee, 0x6c, 0x3b, 0xee, 0x7c, 0x76,\n\t0xdc, 0x79, 0x9a, 0x65, 0x1a, 0x77, 0xa7, 0x49, 0xa1, 0x10, 0x7d, 0xbb, 0x52, 0xe1, 0x0a, 0xcc,\n\t0xab, 0x38, 0x74, 0x7d, 0x3b, 0xb4, 0xc5, 0xf7, 0x4a, 0xd5, 0xc9, 0x89, 0xf5, 0x9d, 0xfd, 0x06,\n\t0x00, 0x00, 0xff, 0xff, 0x96, 0x1a, 0x35, 0xde, 0x7f, 0x01, 0x00, 0x00,\n}\n\nfunc (m *Namespace) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Namespace) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Namespace) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CreatedAt):])\n\tif err1 != nil {\n\t\treturn 0, err1\n\t}\n\ti -= n1\n\ti = encodeVarintNamespace(dAtA, i, uint64(n1))\n\ti--\n\tdAtA[i] = 0x22\n\tif len(m.OwnerDid) > 0 {\n\t\ti -= len(m.OwnerDid)\n\t\tcopy(dAtA[i:], m.OwnerDid)\n\t\ti = encodeVarintNamespace(dAtA, i, uint64(len(m.OwnerDid)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintNamespace(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintNamespace(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintNamespace(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovNamespace(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Namespace) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovNamespace(uint64(l))\n\t}\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovNamespace(uint64(l))\n\t}\n\tl = len(m.OwnerDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovNamespace(uint64(l))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CreatedAt)\n\tn += 1 + l + sovNamespace(uint64(l))\n\treturn n\n}\n\nfunc sovNamespace(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozNamespace(x uint64) (n int) {\n\treturn sovNamespace(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Namespace) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowNamespace\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Namespace: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Namespace: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field OwnerDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.OwnerDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CreatedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipNamespace(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipNamespace(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowNamespace\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowNamespace\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthNamespace\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupNamespace\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthNamespace\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthNamespace        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowNamespace          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupNamespace = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/params.go",
    "content": "package types\n\nimport (\n\tparamtypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n)\n\nvar _ paramtypes.ParamSet = (*Params)(nil)\n\n// ParamKeyTable the param key table for launch module\nfunc ParamKeyTable() paramtypes.KeyTable {\n\treturn paramtypes.NewKeyTable().RegisterParamSet(&Params{})\n}\n\n// NewParams creates a new Params instance\nfunc NewParams() Params {\n\treturn Params{}\n}\n\n// DefaultParams returns a default set of parameters\nfunc DefaultParams() Params {\n\treturn NewParams()\n}\n\n// ParamSetPairs get the params.ParamSet\nfunc (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {\n\treturn paramtypes.ParamSetPairs{}\n}\n\n// Validate validates the set of params\nfunc (p Params) Validate() error {\n\treturn nil\n}\n"
  },
  {
    "path": "x/bulletin/types/params.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/params.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Params defines the parameters for the module.\ntype Params struct {\n}\n\nfunc (m *Params) Reset()         { *m = Params{} }\nfunc (m *Params) String() string { return proto.CompactTextString(m) }\nfunc (*Params) ProtoMessage()    {}\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_98c7f4c44449305d, []int{0}\n}\nfunc (m *Params) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Params.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Params) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Params.Merge(m, src)\n}\nfunc (m *Params) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Params) XXX_DiscardUnknown() {\n\txxx_messageInfo_Params.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Params proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*Params)(nil), \"sourcehub.bulletin.Params\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/params.proto\", fileDescriptor_98c7f4c44449305d) }\n\nvar fileDescriptor_98c7f4c44449305d = []byte{\n\t// 175 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2f, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x2a, 0xcd, 0xc9, 0x49, 0x2d, 0xc9, 0xcc, 0xd3, 0x2f,\n\t0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0x2b, 0xd0,\n\t0x83, 0x29, 0x90, 0x12, 0x4c, 0xcc, 0xcd, 0xcc, 0xcb, 0xd7, 0x07, 0x93, 0x10, 0x65, 0x52, 0x22,\n\t0xe9, 0xf9, 0xe9, 0xf9, 0x60, 0xa6, 0x3e, 0x88, 0x05, 0x11, 0x55, 0xd2, 0xe3, 0x62, 0x0b, 0x00,\n\t0x1b, 0x66, 0xa5, 0xf2, 0x62, 0x81, 0x3c, 0x63, 0xd7, 0xf3, 0x0d, 0x5a, 0xd2, 0x08, 0x0b, 0x2b,\n\t0x10, 0x56, 0x42, 0x54, 0x39, 0xf9, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83,\n\t0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43,\n\t0x94, 0x71, 0x7a, 0x66, 0x09, 0xc8, 0x0d, 0xc9, 0xf9, 0xb9, 0xfa, 0x10, 0x13, 0xf2, 0x52, 0x4b,\n\t0xca, 0xf3, 0x8b, 0xb2, 0xf5, 0xb1, 0x9a, 0x57, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x76,\n\t0x85, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x23, 0x1e, 0xdc, 0x69, 0xe5, 0x00, 0x00, 0x00,\n}\n\nfunc (this *Params) Equal(that interface{}) bool {\n\tif that == nil {\n\t\treturn this == nil\n\t}\n\n\tthat1, ok := that.(*Params)\n\tif !ok {\n\t\tthat2, ok := that.(Params)\n\t\tif ok {\n\t\t\tthat1 = &that2\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif that1 == nil {\n\t\treturn this == nil\n\t} else if this == nil {\n\t\treturn false\n\t}\n\treturn true\n}\nfunc (m *Params) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Params) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintParams(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovParams(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Params) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc sovParams(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozParams(x uint64) (n int) {\n\treturn sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Params) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipParams(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipParams(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthParams\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupParams\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthParams\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthParams        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowParams          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupParams = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/policy.go",
    "content": "package types\n\n// BasePolicy defines base policy for the bulletin module namespaces.\nfunc BasePolicy() string {\n\tpolicyStr := `\ndescription: Base policy that defines permissions for bulletin namespaces\nname: Bulletin Policy\nresources:\n- name: namespace\n  permissions:\n  - expr: collaborator\n    name: create_post\n  relations:\n  - name: collaborator\n    types:\n    - actor\n`\n\n\treturn policyStr\n}\n"
  },
  {
    "path": "x/bulletin/types/post.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/post.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Post represents a bulletin entry created within a specific namespace.\ntype Post struct {\n\tId         string `protobuf:\"bytes,1,opt,name=id,proto3\" json:\"id,omitempty\"`\n\tNamespace  string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCreatorDid string `protobuf:\"bytes,3,opt,name=creator_did,json=creatorDid,proto3\" json:\"creator_did,omitempty\"`\n\tPayload    []byte `protobuf:\"bytes,4,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n}\n\nfunc (m *Post) Reset()         { *m = Post{} }\nfunc (m *Post) String() string { return proto.CompactTextString(m) }\nfunc (*Post) ProtoMessage()    {}\nfunc (*Post) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_cc9c705aa9b79fa2, []int{0}\n}\nfunc (m *Post) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Post) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Post.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Post) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Post.Merge(m, src)\n}\nfunc (m *Post) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Post) XXX_DiscardUnknown() {\n\txxx_messageInfo_Post.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Post proto.InternalMessageInfo\n\nfunc (m *Post) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\nfunc (m *Post) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *Post) GetCreatorDid() string {\n\tif m != nil {\n\t\treturn m.CreatorDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *Post) GetPayload() []byte {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*Post)(nil), \"sourcehub.bulletin.Post\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/post.proto\", fileDescriptor_cc9c705aa9b79fa2) }\n\nvar fileDescriptor_cc9c705aa9b79fa2 = []byte{\n\t// 212 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x44, 0x8f, 0xb1, 0x4e, 0x86, 0x30,\n\t0x14, 0x46, 0x29, 0xfe, 0xd1, 0x50, 0x8d, 0x43, 0xa7, 0x0e, 0x5a, 0x89, 0x13, 0x13, 0x1d, 0x78,\n\t0x03, 0xe3, 0x6a, 0x62, 0x18, 0x5d, 0x4c, 0x69, 0x1b, 0x6d, 0x04, 0x6e, 0xd3, 0x5e, 0xa2, 0xbc,\n\t0x85, 0x8f, 0xe5, 0xc8, 0xe8, 0x68, 0xe0, 0x45, 0x8c, 0x28, 0x32, 0x7e, 0xe7, 0x2c, 0xdf, 0xa1,\n\t0x97, 0x11, 0x86, 0xa0, 0xed, 0xf3, 0xd0, 0xc8, 0x66, 0x68, 0x5b, 0x8b, 0xae, 0x97, 0x1e, 0x22,\n\t0x96, 0x3e, 0x00, 0x02, 0x63, 0xff, 0xba, 0xdc, 0xf4, 0x35, 0xd0, 0xc3, 0x3d, 0x44, 0x64, 0xe7,\n\t0x34, 0x75, 0x86, 0x93, 0x9c, 0x14, 0x59, 0x9d, 0x3a, 0xc3, 0x2e, 0x68, 0xd6, 0xab, 0xce, 0x46,\n\t0xaf, 0xb4, 0xe5, 0xe9, 0x8a, 0x77, 0xc0, 0xae, 0xe8, 0xa9, 0x0e, 0x56, 0x21, 0x84, 0x47, 0xe3,\n\t0x0c, 0x3f, 0x5a, 0x3d, 0xfd, 0x43, 0xb7, 0xce, 0x30, 0x4e, 0x4f, 0xbc, 0x1a, 0x5b, 0x50, 0x86,\n\t0x1f, 0x72, 0x52, 0x9c, 0xd5, 0xdb, 0xbc, 0xb9, 0xfb, 0x98, 0x05, 0x99, 0x66, 0x41, 0xbe, 0x66,\n\t0x41, 0xde, 0x17, 0x91, 0x4c, 0x8b, 0x48, 0x3e, 0x17, 0x91, 0x3c, 0x54, 0x4f, 0x0e, 0x7f, 0xbe,\n\t0x69, 0xe8, 0xe4, 0xef, 0xd3, 0xde, 0xe2, 0x2b, 0x84, 0x17, 0xb9, 0x67, 0xbd, 0xed, 0x61, 0x38,\n\t0x7a, 0x1b, 0x9b, 0xe3, 0x35, 0xad, 0xfa, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x9e, 0x0e, 0x34,\n\t0xfb, 0x00, 0x00, 0x00,\n}\n\nfunc (m *Post) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Post) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Post) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Payload) > 0 {\n\t\ti -= len(m.Payload)\n\t\tcopy(dAtA[i:], m.Payload)\n\t\ti = encodeVarintPost(dAtA, i, uint64(len(m.Payload)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.CreatorDid) > 0 {\n\t\ti -= len(m.CreatorDid)\n\t\tcopy(dAtA[i:], m.CreatorDid)\n\t\ti = encodeVarintPost(dAtA, i, uint64(len(m.CreatorDid)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintPost(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintPost(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintPost(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovPost(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Post) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovPost(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovPost(uint64(l))\n\t}\n\tl = len(m.CreatorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovPost(uint64(l))\n\t}\n\tl = len(m.Payload)\n\tif l > 0 {\n\t\tn += 1 + l + sovPost(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovPost(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozPost(x uint64) (n int) {\n\treturn sovPost(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Post) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowPost\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Post: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Post: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreatorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CreatorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Payload = append(m.Payload[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Payload == nil {\n\t\t\t\tm.Payload = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipPost(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthPost\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipPost(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowPost\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowPost\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthPost\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupPost\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthPost\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthPost        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowPost          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupPost = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/query.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\tquery \"github.com/cosmos/cosmos-sdk/types/query\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n}\n\nfunc (m *QueryParamsRequest) Reset()         { *m = QueryParamsRequest{} }\nfunc (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsRequest) ProtoMessage()    {}\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{0}\n}\nfunc (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsRequest.Merge(m, src)\n}\nfunc (m *QueryParamsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\t// params holds all the parameters of this module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *QueryParamsResponse) Reset()         { *m = QueryParamsResponse{} }\nfunc (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsResponse) ProtoMessage()    {}\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{1}\n}\nfunc (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsResponse.Merge(m, src)\n}\nfunc (m *QueryParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo\n\nfunc (m *QueryParamsResponse) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\ntype QueryNamespaceRequest struct {\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (m *QueryNamespaceRequest) Reset()         { *m = QueryNamespaceRequest{} }\nfunc (m *QueryNamespaceRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespaceRequest) ProtoMessage()    {}\nfunc (*QueryNamespaceRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{2}\n}\nfunc (m *QueryNamespaceRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespaceRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespaceRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespaceRequest.Merge(m, src)\n}\nfunc (m *QueryNamespaceRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespaceRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespaceRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespaceRequest proto.InternalMessageInfo\n\nfunc (m *QueryNamespaceRequest) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\ntype QueryNamespaceResponse struct {\n\tNamespace *Namespace `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (m *QueryNamespaceResponse) Reset()         { *m = QueryNamespaceResponse{} }\nfunc (m *QueryNamespaceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespaceResponse) ProtoMessage()    {}\nfunc (*QueryNamespaceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{3}\n}\nfunc (m *QueryNamespaceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespaceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespaceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespaceResponse.Merge(m, src)\n}\nfunc (m *QueryNamespaceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespaceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespaceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespaceResponse proto.InternalMessageInfo\n\nfunc (m *QueryNamespaceResponse) GetNamespace() *Namespace {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn nil\n}\n\ntype QueryNamespacesRequest struct {\n\tPagination *query.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespacesRequest) Reset()         { *m = QueryNamespacesRequest{} }\nfunc (m *QueryNamespacesRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespacesRequest) ProtoMessage()    {}\nfunc (*QueryNamespacesRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{4}\n}\nfunc (m *QueryNamespacesRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespacesRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespacesRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespacesRequest.Merge(m, src)\n}\nfunc (m *QueryNamespacesRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespacesRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespacesRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespacesRequest proto.InternalMessageInfo\n\nfunc (m *QueryNamespacesRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacesResponse struct {\n\tNamespaces []Namespace         `protobuf:\"bytes,1,rep,name=namespaces,proto3\" json:\"namespaces\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespacesResponse) Reset()         { *m = QueryNamespacesResponse{} }\nfunc (m *QueryNamespacesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespacesResponse) ProtoMessage()    {}\nfunc (*QueryNamespacesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{5}\n}\nfunc (m *QueryNamespacesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespacesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespacesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespacesResponse.Merge(m, src)\n}\nfunc (m *QueryNamespacesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespacesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespacesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespacesResponse proto.InternalMessageInfo\n\nfunc (m *QueryNamespacesResponse) GetNamespaces() []Namespace {\n\tif m != nil {\n\t\treturn m.Namespaces\n\t}\n\treturn nil\n}\n\nfunc (m *QueryNamespacesResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespaceCollaboratorsRequest struct {\n\tNamespace  string             `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) Reset()         { *m = QueryNamespaceCollaboratorsRequest{} }\nfunc (m *QueryNamespaceCollaboratorsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespaceCollaboratorsRequest) ProtoMessage()    {}\nfunc (*QueryNamespaceCollaboratorsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{6}\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespaceCollaboratorsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespaceCollaboratorsRequest.Merge(m, src)\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespaceCollaboratorsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespaceCollaboratorsRequest proto.InternalMessageInfo\n\nfunc (m *QueryNamespaceCollaboratorsRequest) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespaceCollaboratorsResponse struct {\n\tCollaborators []Collaborator      `protobuf:\"bytes,1,rep,name=collaborators,proto3\" json:\"collaborators\"`\n\tPagination    *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) Reset()         { *m = QueryNamespaceCollaboratorsResponse{} }\nfunc (m *QueryNamespaceCollaboratorsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespaceCollaboratorsResponse) ProtoMessage()    {}\nfunc (*QueryNamespaceCollaboratorsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{7}\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespaceCollaboratorsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespaceCollaboratorsResponse.Merge(m, src)\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespaceCollaboratorsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespaceCollaboratorsResponse proto.InternalMessageInfo\n\nfunc (m *QueryNamespaceCollaboratorsResponse) GetCollaborators() []Collaborator {\n\tif m != nil {\n\t\treturn m.Collaborators\n\t}\n\treturn nil\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacePostsRequest struct {\n\tNamespace  string             `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespacePostsRequest) Reset()         { *m = QueryNamespacePostsRequest{} }\nfunc (m *QueryNamespacePostsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespacePostsRequest) ProtoMessage()    {}\nfunc (*QueryNamespacePostsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{8}\n}\nfunc (m *QueryNamespacePostsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespacePostsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespacePostsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespacePostsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespacePostsRequest.Merge(m, src)\n}\nfunc (m *QueryNamespacePostsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespacePostsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespacePostsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespacePostsRequest proto.InternalMessageInfo\n\nfunc (m *QueryNamespacePostsRequest) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryNamespacePostsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryNamespacePostsResponse struct {\n\tPosts      []Post              `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryNamespacePostsResponse) Reset()         { *m = QueryNamespacePostsResponse{} }\nfunc (m *QueryNamespacePostsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryNamespacePostsResponse) ProtoMessage()    {}\nfunc (*QueryNamespacePostsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{9}\n}\nfunc (m *QueryNamespacePostsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryNamespacePostsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryNamespacePostsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryNamespacePostsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryNamespacePostsResponse.Merge(m, src)\n}\nfunc (m *QueryNamespacePostsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryNamespacePostsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryNamespacePostsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryNamespacePostsResponse proto.InternalMessageInfo\n\nfunc (m *QueryNamespacePostsResponse) GetPosts() []Post {\n\tif m != nil {\n\t\treturn m.Posts\n\t}\n\treturn nil\n}\n\nfunc (m *QueryNamespacePostsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPostRequest struct {\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tId        string `protobuf:\"bytes,2,opt,name=id,proto3\" json:\"id,omitempty\"`\n}\n\nfunc (m *QueryPostRequest) Reset()         { *m = QueryPostRequest{} }\nfunc (m *QueryPostRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPostRequest) ProtoMessage()    {}\nfunc (*QueryPostRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{10}\n}\nfunc (m *QueryPostRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPostRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPostRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPostRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPostRequest.Merge(m, src)\n}\nfunc (m *QueryPostRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPostRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPostRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPostRequest proto.InternalMessageInfo\n\nfunc (m *QueryPostRequest) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryPostRequest) GetId() string {\n\tif m != nil {\n\t\treturn m.Id\n\t}\n\treturn \"\"\n}\n\ntype QueryPostResponse struct {\n\tPost *Post `protobuf:\"bytes,1,opt,name=post,proto3\" json:\"post,omitempty\"`\n}\n\nfunc (m *QueryPostResponse) Reset()         { *m = QueryPostResponse{} }\nfunc (m *QueryPostResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPostResponse) ProtoMessage()    {}\nfunc (*QueryPostResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{11}\n}\nfunc (m *QueryPostResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPostResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPostResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPostResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPostResponse.Merge(m, src)\n}\nfunc (m *QueryPostResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPostResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPostResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPostResponse proto.InternalMessageInfo\n\nfunc (m *QueryPostResponse) GetPost() *Post {\n\tif m != nil {\n\t\treturn m.Post\n\t}\n\treturn nil\n}\n\ntype QueryPostsRequest struct {\n\tPagination *query.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryPostsRequest) Reset()         { *m = QueryPostsRequest{} }\nfunc (m *QueryPostsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPostsRequest) ProtoMessage()    {}\nfunc (*QueryPostsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{12}\n}\nfunc (m *QueryPostsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPostsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPostsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPostsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPostsRequest.Merge(m, src)\n}\nfunc (m *QueryPostsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPostsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPostsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPostsRequest proto.InternalMessageInfo\n\nfunc (m *QueryPostsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\ntype QueryPostsResponse struct {\n\tPosts      []Post              `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryPostsResponse) Reset()         { *m = QueryPostsResponse{} }\nfunc (m *QueryPostsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryPostsResponse) ProtoMessage()    {}\nfunc (*QueryPostsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{13}\n}\nfunc (m *QueryPostsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryPostsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryPostsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryPostsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryPostsResponse.Merge(m, src)\n}\nfunc (m *QueryPostsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryPostsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryPostsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryPostsResponse proto.InternalMessageInfo\n\nfunc (m *QueryPostsResponse) GetPosts() []Post {\n\tif m != nil {\n\t\treturn m.Posts\n\t}\n\treturn nil\n}\n\nfunc (m *QueryPostsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryBulletinPolicyIdRequest is request type for the Query/BulletinPolicyId RPC method.\ntype QueryBulletinPolicyIdRequest struct {\n}\n\nfunc (m *QueryBulletinPolicyIdRequest) Reset()         { *m = QueryBulletinPolicyIdRequest{} }\nfunc (m *QueryBulletinPolicyIdRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryBulletinPolicyIdRequest) ProtoMessage()    {}\nfunc (*QueryBulletinPolicyIdRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{14}\n}\nfunc (m *QueryBulletinPolicyIdRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryBulletinPolicyIdRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryBulletinPolicyIdRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryBulletinPolicyIdRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryBulletinPolicyIdRequest.Merge(m, src)\n}\nfunc (m *QueryBulletinPolicyIdRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryBulletinPolicyIdRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryBulletinPolicyIdRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryBulletinPolicyIdRequest proto.InternalMessageInfo\n\n// QueryBulletinPolicyIdResponse is response type for the Query/BulletinPolicyId RPC method.\ntype QueryBulletinPolicyIdResponse struct {\n\tPolicyId string `protobuf:\"bytes,1,opt,name=policy_id,json=policyId,proto3\" json:\"policy_id,omitempty\"`\n}\n\nfunc (m *QueryBulletinPolicyIdResponse) Reset()         { *m = QueryBulletinPolicyIdResponse{} }\nfunc (m *QueryBulletinPolicyIdResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryBulletinPolicyIdResponse) ProtoMessage()    {}\nfunc (*QueryBulletinPolicyIdResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{15}\n}\nfunc (m *QueryBulletinPolicyIdResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryBulletinPolicyIdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryBulletinPolicyIdResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryBulletinPolicyIdResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryBulletinPolicyIdResponse.Merge(m, src)\n}\nfunc (m *QueryBulletinPolicyIdResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryBulletinPolicyIdResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryBulletinPolicyIdResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryBulletinPolicyIdResponse proto.InternalMessageInfo\n\nfunc (m *QueryBulletinPolicyIdResponse) GetPolicyId() string {\n\tif m != nil {\n\t\treturn m.PolicyId\n\t}\n\treturn \"\"\n}\n\n// QueryIterateGlobRequest\ntype QueryIterateGlobRequest struct {\n\tNamespace string `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tGlob      string `protobuf:\"bytes,2,opt,name=glob,proto3\" json:\"glob,omitempty\"`\n\t// pagination defines an optional pagination for the request.\n\tPagination *query.PageRequest `protobuf:\"bytes,3,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryIterateGlobRequest) Reset()         { *m = QueryIterateGlobRequest{} }\nfunc (m *QueryIterateGlobRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryIterateGlobRequest) ProtoMessage()    {}\nfunc (*QueryIterateGlobRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{16}\n}\nfunc (m *QueryIterateGlobRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryIterateGlobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryIterateGlobRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryIterateGlobRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryIterateGlobRequest.Merge(m, src)\n}\nfunc (m *QueryIterateGlobRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryIterateGlobRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryIterateGlobRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryIterateGlobRequest proto.InternalMessageInfo\n\nfunc (m *QueryIterateGlobRequest) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryIterateGlobRequest) GetGlob() string {\n\tif m != nil {\n\t\treturn m.Glob\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryIterateGlobRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryIterateGlobResponse\ntype QueryIterateGlobResponse struct {\n\tPosts      []*Post             `protobuf:\"bytes,1,rep,name=posts,proto3\" json:\"posts,omitempty\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryIterateGlobResponse) Reset()         { *m = QueryIterateGlobResponse{} }\nfunc (m *QueryIterateGlobResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryIterateGlobResponse) ProtoMessage()    {}\nfunc (*QueryIterateGlobResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_ba1b70df5dd0f019, []int{17}\n}\nfunc (m *QueryIterateGlobResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryIterateGlobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryIterateGlobResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryIterateGlobResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryIterateGlobResponse.Merge(m, src)\n}\nfunc (m *QueryIterateGlobResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryIterateGlobResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryIterateGlobResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryIterateGlobResponse proto.InternalMessageInfo\n\nfunc (m *QueryIterateGlobResponse) GetPosts() []*Post {\n\tif m != nil {\n\t\treturn m.Posts\n\t}\n\treturn nil\n}\n\nfunc (m *QueryIterateGlobResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryParamsRequest)(nil), \"sourcehub.bulletin.QueryParamsRequest\")\n\tproto.RegisterType((*QueryParamsResponse)(nil), \"sourcehub.bulletin.QueryParamsResponse\")\n\tproto.RegisterType((*QueryNamespaceRequest)(nil), \"sourcehub.bulletin.QueryNamespaceRequest\")\n\tproto.RegisterType((*QueryNamespaceResponse)(nil), \"sourcehub.bulletin.QueryNamespaceResponse\")\n\tproto.RegisterType((*QueryNamespacesRequest)(nil), \"sourcehub.bulletin.QueryNamespacesRequest\")\n\tproto.RegisterType((*QueryNamespacesResponse)(nil), \"sourcehub.bulletin.QueryNamespacesResponse\")\n\tproto.RegisterType((*QueryNamespaceCollaboratorsRequest)(nil), \"sourcehub.bulletin.QueryNamespaceCollaboratorsRequest\")\n\tproto.RegisterType((*QueryNamespaceCollaboratorsResponse)(nil), \"sourcehub.bulletin.QueryNamespaceCollaboratorsResponse\")\n\tproto.RegisterType((*QueryNamespacePostsRequest)(nil), \"sourcehub.bulletin.QueryNamespacePostsRequest\")\n\tproto.RegisterType((*QueryNamespacePostsResponse)(nil), \"sourcehub.bulletin.QueryNamespacePostsResponse\")\n\tproto.RegisterType((*QueryPostRequest)(nil), \"sourcehub.bulletin.QueryPostRequest\")\n\tproto.RegisterType((*QueryPostResponse)(nil), \"sourcehub.bulletin.QueryPostResponse\")\n\tproto.RegisterType((*QueryPostsRequest)(nil), \"sourcehub.bulletin.QueryPostsRequest\")\n\tproto.RegisterType((*QueryPostsResponse)(nil), \"sourcehub.bulletin.QueryPostsResponse\")\n\tproto.RegisterType((*QueryBulletinPolicyIdRequest)(nil), \"sourcehub.bulletin.QueryBulletinPolicyIdRequest\")\n\tproto.RegisterType((*QueryBulletinPolicyIdResponse)(nil), \"sourcehub.bulletin.QueryBulletinPolicyIdResponse\")\n\tproto.RegisterType((*QueryIterateGlobRequest)(nil), \"sourcehub.bulletin.QueryIterateGlobRequest\")\n\tproto.RegisterType((*QueryIterateGlobResponse)(nil), \"sourcehub.bulletin.QueryIterateGlobResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/query.proto\", fileDescriptor_ba1b70df5dd0f019) }\n\nvar fileDescriptor_ba1b70df5dd0f019 = []byte{\n\t// 954 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x97, 0xcf, 0x6f, 0xdc, 0x44,\n\t0x14, 0xc7, 0x77, 0xb6, 0x49, 0xc4, 0xbe, 0x15, 0x55, 0x3b, 0x94, 0x12, 0xb9, 0x89, 0x5b, 0x19,\n\t0x9a, 0xb4, 0xdb, 0x60, 0x27, 0x59, 0xda, 0xaa, 0x0a, 0x15, 0x90, 0x4a, 0x84, 0x1c, 0x40, 0x9b,\n\t0x15, 0x5c, 0xe0, 0x10, 0xec, 0x5d, 0xcb, 0x58, 0x78, 0x3d, 0x8e, 0x67, 0x16, 0x88, 0xa2, 0x5c,\n\t0x72, 0x41, 0x82, 0x0b, 0x52, 0x38, 0x20, 0x71, 0x01, 0x71, 0xe1, 0x10, 0x21, 0xfe, 0x05, 0x6e,\n\t0x39, 0x45, 0x91, 0xb8, 0x70, 0x42, 0x28, 0x41, 0xe2, 0xdf, 0x40, 0x1e, 0x8f, 0xbd, 0xf6, 0xae,\n\t0x1d, 0x7b, 0xa3, 0x15, 0xe2, 0x12, 0x59, 0x9e, 0xf7, 0xe3, 0xf3, 0xbe, 0xf3, 0xfc, 0x5e, 0x16,\n\t0x64, 0x4a, 0xfa, 0x7e, 0xc7, 0xfc, 0xa4, 0x6f, 0x68, 0x46, 0xdf, 0x71, 0x4c, 0x66, 0xbb, 0xda,\n\t0x4e, 0xdf, 0xf4, 0x77, 0x55, 0xcf, 0x27, 0x8c, 0x60, 0x1c, 0x9f, 0xab, 0xd1, 0xb9, 0x74, 0x5d,\n\t0xef, 0xd9, 0x2e, 0xd1, 0xf8, 0xdf, 0xd0, 0x4c, 0x6a, 0x74, 0x08, 0xed, 0x11, 0xaa, 0x19, 0x3a,\n\t0x35, 0x43, 0x7f, 0xed, 0xb3, 0x15, 0xc3, 0x64, 0xfa, 0x8a, 0xe6, 0xe9, 0x96, 0xed, 0xea, 0xcc,\n\t0x26, 0xae, 0xb0, 0xbd, 0x61, 0x11, 0x8b, 0xf0, 0x47, 0x2d, 0x78, 0x12, 0x6f, 0xe7, 0x2c, 0x42,\n\t0x2c, 0xc7, 0xd4, 0x74, 0xcf, 0xd6, 0x74, 0xd7, 0x25, 0x8c, 0xbb, 0x50, 0x71, 0x7a, 0x3b, 0x03,\n\t0xd3, 0xd3, 0x7d, 0xbd, 0x17, 0x19, 0x28, 0x19, 0x06, 0xae, 0xde, 0x33, 0xa9, 0xa7, 0x77, 0x4c,\n\t0x61, 0x73, 0x37, 0xc3, 0xa6, 0x43, 0x1c, 0x47, 0x37, 0x88, 0xaf, 0x33, 0xe2, 0x0b, 0xb3, 0xf9,\n\t0xac, 0x5c, 0x84, 0xb2, 0xf0, 0x58, 0xb9, 0x01, 0x78, 0x2b, 0x28, 0xb0, 0xc5, 0xd3, 0xb7, 0xcd,\n\t0x9d, 0xbe, 0x49, 0x99, 0xf2, 0x3e, 0xbc, 0x90, 0x7a, 0x4b, 0x3d, 0xe2, 0x52, 0x13, 0x3f, 0x85,\n\t0x99, 0x10, 0x73, 0x16, 0xdd, 0x41, 0xf7, 0xea, 0xab, 0x92, 0x3a, 0xaa, 0xa7, 0x1a, 0xfa, 0xac,\n\t0xd7, 0x8e, 0xff, 0xbc, 0x5d, 0xf9, 0xf9, 0x9f, 0x5f, 0x1b, 0xa8, 0x2d, 0x9c, 0x94, 0x87, 0xf0,\n\t0x22, 0x8f, 0xfa, 0x5e, 0x54, 0x89, 0x48, 0x87, 0xe7, 0xa0, 0x16, 0x57, 0xc7, 0x43, 0xd7, 0xda,\n\t0x83, 0x17, 0xca, 0x07, 0x70, 0x73, 0xd8, 0x4d, 0xf0, 0xac, 0x0d, 0xfb, 0xd5, 0x57, 0xe7, 0xb3,\n\t0x90, 0x06, 0x9e, 0x89, 0xb0, 0x1f, 0x0f, 0x87, 0x8d, 0xaa, 0xc7, 0x6f, 0x03, 0x0c, 0xae, 0x59,\n\t0xc4, 0x5d, 0x50, 0xc3, 0x9e, 0x50, 0x83, 0x9e, 0x50, 0xc3, 0x9e, 0x12, 0x3d, 0xa1, 0xb6, 0x74,\n\t0x2b, 0x2a, 0xa5, 0x9d, 0xf0, 0x54, 0x8e, 0x10, 0xbc, 0x34, 0x92, 0x42, 0xa0, 0xbf, 0x03, 0x10,\n\t0xa3, 0x04, 0x72, 0x5e, 0x29, 0x64, 0x4f, 0x2a, 0x9a, 0xf0, 0xc5, 0x1b, 0x29, 0xda, 0x2a, 0xa7,\n\t0x5d, 0x2c, 0xa4, 0x0d, 0x31, 0x52, 0xb8, 0x5f, 0x21, 0x50, 0xd2, 0xb8, 0xcf, 0x12, 0xed, 0x44,\n\t0x4b, 0x5d, 0xd6, 0x90, 0x76, 0xd5, 0x4b, 0x6b, 0xf7, 0x1b, 0x82, 0x97, 0x2f, 0x84, 0x11, 0x3a,\n\t0x6e, 0xc1, 0xf3, 0xc9, 0xa6, 0x8f, 0xa4, 0xbc, 0x93, 0x25, 0x65, 0x32, 0x42, 0x52, 0xcd, 0x74,\n\t0x84, 0xc9, 0x09, 0x7a, 0x80, 0x40, 0x4a, 0xd7, 0xd0, 0x22, 0x94, 0xfd, 0xc7, 0x42, 0xfe, 0x88,\n\t0xe0, 0x56, 0x26, 0x84, 0x10, 0xf0, 0x09, 0x4c, 0x07, 0xe3, 0x20, 0x12, 0x6e, 0x36, 0xf3, 0x93,\n\t0x26, 0x94, 0x25, 0x05, 0x0b, 0x3d, 0x26, 0x27, 0xd4, 0x9b, 0x70, 0x2d, 0x1c, 0x37, 0x84, 0xb2,\n\t0x72, 0xea, 0x5c, 0x85, 0xaa, 0xdd, 0xe5, 0x29, 0x6b, 0xed, 0xaa, 0xdd, 0x55, 0xde, 0x82, 0xeb,\n\t0x89, 0x08, 0xa2, 0xb4, 0x25, 0x98, 0x0a, 0x40, 0xc5, 0x17, 0x9c, 0x5b, 0x59, 0x9b, 0x5b, 0x29,\n\t0x1f, 0x25, 0x42, 0x4c, 0x7c, 0x14, 0x7c, 0x87, 0xa2, 0x39, 0xfb, 0xbf, 0x13, 0x5f, 0x86, 0x39,\n\t0x4e, 0xb6, 0x2e, 0x12, 0xb6, 0x88, 0x63, 0x77, 0x76, 0x37, 0xbb, 0xd1, 0x2e, 0x78, 0x1d, 0xe6,\n\t0x73, 0xce, 0x45, 0x11, 0xb7, 0xa0, 0xe6, 0xf1, 0x77, 0xdb, 0x76, 0x57, 0xdc, 0xd4, 0x73, 0x9e,\n\t0x30, 0x52, 0x0e, 0xa3, 0x19, 0xb8, 0xc9, 0x4c, 0x5f, 0x67, 0xe6, 0x86, 0x43, 0x8c, 0x72, 0x57,\n\t0x8c, 0x61, 0xca, 0x72, 0x88, 0x21, 0x2e, 0x99, 0x3f, 0x0f, 0x5d, 0xc7, 0x95, 0x4b, 0x5f, 0xc7,\n\t0x21, 0x82, 0xd9, 0x51, 0x2a, 0x51, 0x8f, 0x5a, 0xf2, 0x52, 0x26, 0x7d, 0x13, 0xab, 0x27, 0x75,\n\t0x98, 0xe6, 0x54, 0xf8, 0x6b, 0x04, 0x33, 0xe1, 0x1e, 0xc5, 0x0b, 0x59, 0xe9, 0x47, 0x57, 0xb6,\n\t0xb4, 0x58, 0x68, 0x17, 0x66, 0x54, 0x96, 0x0f, 0x7e, 0xff, 0xfb, 0xb0, 0xda, 0xc0, 0xf7, 0xb4,\n\t0xd0, 0xc1, 0x35, 0xd9, 0xe7, 0xc4, 0xff, 0x54, 0xcb, 0xfd, 0x9f, 0x04, 0xff, 0x84, 0xa0, 0x16,\n\t0x4f, 0x0f, 0x7c, 0x3f, 0x37, 0xd1, 0xf0, 0x5e, 0x97, 0x1a, 0x65, 0x4c, 0x05, 0xd6, 0x1b, 0x1c,\n\t0xeb, 0x09, 0x7e, 0x5c, 0x8c, 0x15, 0xf7, 0x88, 0xb6, 0x17, 0x3f, 0xee, 0xe3, 0xef, 0x11, 0xc0,\n\t0x60, 0xd1, 0xe2, 0x12, 0xb9, 0x63, 0xed, 0x1e, 0x94, 0xb2, 0x15, 0xa0, 0xaf, 0x71, 0x50, 0x15,\n\t0x2f, 0x8d, 0x01, 0x4a, 0xf1, 0x09, 0x82, 0x9b, 0xd9, 0xab, 0x0c, 0x3f, 0x2a, 0xce, 0x9e, 0xb5,\n\t0x88, 0xa5, 0xc7, 0x63, 0xfb, 0x89, 0x0a, 0x9e, 0xf1, 0x0a, 0x9e, 0xe2, 0xb5, 0xe2, 0x0a, 0x52,\n\t0x9b, 0x31, 0x25, 0xf7, 0x2f, 0x08, 0xae, 0xa6, 0x57, 0x0a, 0x56, 0x8b, 0x81, 0x92, 0xc3, 0x55,\n\t0xd2, 0x4a, 0xdb, 0x0b, 0xf0, 0x35, 0x0e, 0xfe, 0x10, 0x37, 0x4b, 0xb4, 0x6e, 0xe0, 0x98, 0x02,\n\t0xfe, 0x16, 0xc1, 0x54, 0x10, 0x0e, 0xbf, 0x92, 0xff, 0xa5, 0x0c, 0xf6, 0x8f, 0x74, 0xb7, 0xc0,\n\t0x6a, 0xfc, 0xb6, 0x0d, 0x90, 0x92, 0x44, 0xda, 0x9e, 0xdd, 0xdd, 0xc7, 0x5f, 0x22, 0x98, 0x0e,\n\t0xe5, 0xbb, 0x38, 0x63, 0xac, 0xda, 0x42, 0x91, 0x99, 0x20, 0xd3, 0x38, 0xd9, 0x7d, 0xbc, 0x58,\n\t0x52, 0x2c, 0xfc, 0x03, 0x82, 0x7a, 0x62, 0x1e, 0xe2, 0xfc, 0xaf, 0x62, 0x74, 0x96, 0x4b, 0x4b,\n\t0xe5, 0x8c, 0x05, 0xdb, 0x23, 0xce, 0xb6, 0x8c, 0xd5, 0x62, 0x36, 0x3b, 0x74, 0xdf, 0xe6, 0xf3,\n\t0xff, 0x08, 0xc1, 0xb5, 0xe1, 0x3d, 0x84, 0x97, 0x73, 0x53, 0xe7, 0xac, 0x34, 0x69, 0x65, 0x0c,\n\t0x0f, 0x41, 0xdc, 0xe4, 0xc4, 0xaf, 0xe2, 0x07, 0x65, 0xd4, 0x14, 0xcb, 0x70, 0xfd, 0xdd, 0xe3,\n\t0x33, 0x19, 0x9d, 0x9e, 0xc9, 0xe8, 0xaf, 0x33, 0x19, 0x7d, 0x73, 0x2e, 0x57, 0x4e, 0xcf, 0xe5,\n\t0xca, 0x1f, 0xe7, 0x72, 0xe5, 0xc3, 0xa6, 0x65, 0xb3, 0x20, 0x7b, 0x87, 0xf4, 0x72, 0x03, 0x7e,\n\t0x31, 0x08, 0xc9, 0x76, 0x3d, 0x93, 0x1a, 0x33, 0xfc, 0x27, 0x5b, 0xf3, 0xdf, 0x00, 0x00, 0x00,\n\t0xff, 0xff, 0xab, 0xca, 0x46, 0xc1, 0xe6, 0x0e, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Queries a namespace based on the specified namespace id.\n\tNamespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error)\n\t// Queries all namespaces.\n\tNamespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error)\n\t// Queries all namespace collaborators.\n\tNamespaceCollaborators(ctx context.Context, in *QueryNamespaceCollaboratorsRequest, opts ...grpc.CallOption) (*QueryNamespaceCollaboratorsResponse, error)\n\t// Queries all namespace posts.\n\tNamespacePosts(ctx context.Context, in *QueryNamespacePostsRequest, opts ...grpc.CallOption) (*QueryNamespacePostsResponse, error)\n\t// Queries a post based on the specified namespace and post id.\n\tPost(ctx context.Context, in *QueryPostRequest, opts ...grpc.CallOption) (*QueryPostResponse, error)\n\t// Queries all posts.\n\tPosts(ctx context.Context, in *QueryPostsRequest, opts ...grpc.CallOption) (*QueryPostsResponse, error)\n\t// Glob iteration over a namespace\n\tIterateGlob(ctx context.Context, in *QueryIterateGlobRequest, opts ...grpc.CallOption) (*QueryIterateGlobResponse, error)\n\t// Queries the bulletin module policy id.\n\tBulletinPolicyId(ctx context.Context, in *QueryBulletinPolicyIdRequest, opts ...grpc.CallOption) (*QueryBulletinPolicyIdResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/Params\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Namespace(ctx context.Context, in *QueryNamespaceRequest, opts ...grpc.CallOption) (*QueryNamespaceResponse, error) {\n\tout := new(QueryNamespaceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/Namespace\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Namespaces(ctx context.Context, in *QueryNamespacesRequest, opts ...grpc.CallOption) (*QueryNamespacesResponse, error) {\n\tout := new(QueryNamespacesResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/Namespaces\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) NamespaceCollaborators(ctx context.Context, in *QueryNamespaceCollaboratorsRequest, opts ...grpc.CallOption) (*QueryNamespaceCollaboratorsResponse, error) {\n\tout := new(QueryNamespaceCollaboratorsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/NamespaceCollaborators\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) NamespacePosts(ctx context.Context, in *QueryNamespacePostsRequest, opts ...grpc.CallOption) (*QueryNamespacePostsResponse, error) {\n\tout := new(QueryNamespacePostsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/NamespacePosts\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Post(ctx context.Context, in *QueryPostRequest, opts ...grpc.CallOption) (*QueryPostResponse, error) {\n\tout := new(QueryPostResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/Post\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Posts(ctx context.Context, in *QueryPostsRequest, opts ...grpc.CallOption) (*QueryPostsResponse, error) {\n\tout := new(QueryPostsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/Posts\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) IterateGlob(ctx context.Context, in *QueryIterateGlobRequest, opts ...grpc.CallOption) (*QueryIterateGlobResponse, error) {\n\tout := new(QueryIterateGlobResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/IterateGlob\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) BulletinPolicyId(ctx context.Context, in *QueryBulletinPolicyIdRequest, opts ...grpc.CallOption) (*QueryBulletinPolicyIdResponse, error) {\n\tout := new(QueryBulletinPolicyIdResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Query/BulletinPolicyId\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Queries a namespace based on the specified namespace id.\n\tNamespace(context.Context, *QueryNamespaceRequest) (*QueryNamespaceResponse, error)\n\t// Queries all namespaces.\n\tNamespaces(context.Context, *QueryNamespacesRequest) (*QueryNamespacesResponse, error)\n\t// Queries all namespace collaborators.\n\tNamespaceCollaborators(context.Context, *QueryNamespaceCollaboratorsRequest) (*QueryNamespaceCollaboratorsResponse, error)\n\t// Queries all namespace posts.\n\tNamespacePosts(context.Context, *QueryNamespacePostsRequest) (*QueryNamespacePostsResponse, error)\n\t// Queries a post based on the specified namespace and post id.\n\tPost(context.Context, *QueryPostRequest) (*QueryPostResponse, error)\n\t// Queries all posts.\n\tPosts(context.Context, *QueryPostsRequest) (*QueryPostsResponse, error)\n\t// Glob iteration over a namespace\n\tIterateGlob(context.Context, *QueryIterateGlobRequest) (*QueryIterateGlobResponse, error)\n\t// Queries the bulletin module policy id.\n\tBulletinPolicyId(context.Context, *QueryBulletinPolicyIdRequest) (*QueryBulletinPolicyIdResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (*UnimplementedQueryServer) Namespace(ctx context.Context, req *QueryNamespaceRequest) (*QueryNamespaceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Namespace not implemented\")\n}\nfunc (*UnimplementedQueryServer) Namespaces(ctx context.Context, req *QueryNamespacesRequest) (*QueryNamespacesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Namespaces not implemented\")\n}\nfunc (*UnimplementedQueryServer) NamespaceCollaborators(ctx context.Context, req *QueryNamespaceCollaboratorsRequest) (*QueryNamespaceCollaboratorsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method NamespaceCollaborators not implemented\")\n}\nfunc (*UnimplementedQueryServer) NamespacePosts(ctx context.Context, req *QueryNamespacePostsRequest) (*QueryNamespacePostsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method NamespacePosts not implemented\")\n}\nfunc (*UnimplementedQueryServer) Post(ctx context.Context, req *QueryPostRequest) (*QueryPostResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Post not implemented\")\n}\nfunc (*UnimplementedQueryServer) Posts(ctx context.Context, req *QueryPostsRequest) (*QueryPostsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Posts not implemented\")\n}\nfunc (*UnimplementedQueryServer) IterateGlob(ctx context.Context, req *QueryIterateGlobRequest) (*QueryIterateGlobResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method IterateGlob not implemented\")\n}\nfunc (*UnimplementedQueryServer) BulletinPolicyId(ctx context.Context, req *QueryBulletinPolicyIdRequest) (*QueryBulletinPolicyIdResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method BulletinPolicyId not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/Params\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Namespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespaceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Namespace(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/Namespace\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Namespace(ctx, req.(*QueryNamespaceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Namespaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespacesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Namespaces(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/Namespaces\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Namespaces(ctx, req.(*QueryNamespacesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_NamespaceCollaborators_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespaceCollaboratorsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).NamespaceCollaborators(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/NamespaceCollaborators\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).NamespaceCollaborators(ctx, req.(*QueryNamespaceCollaboratorsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_NamespacePosts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryNamespacePostsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).NamespacePosts(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/NamespacePosts\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).NamespacePosts(ctx, req.(*QueryNamespacePostsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Post_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPostRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Post(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/Post\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Post(ctx, req.(*QueryPostRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Posts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryPostsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Posts(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/Posts\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Posts(ctx, req.(*QueryPostsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_IterateGlob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryIterateGlobRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).IterateGlob(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/IterateGlob\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).IterateGlob(ctx, req.(*QueryIterateGlobRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_BulletinPolicyId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryBulletinPolicyIdRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).BulletinPolicyId(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Query/BulletinPolicyId\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).BulletinPolicyId(ctx, req.(*QueryBulletinPolicyIdRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.bulletin.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Namespace\",\n\t\t\tHandler:    _Query_Namespace_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Namespaces\",\n\t\t\tHandler:    _Query_Namespaces_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"NamespaceCollaborators\",\n\t\t\tHandler:    _Query_NamespaceCollaborators_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"NamespacePosts\",\n\t\t\tHandler:    _Query_NamespacePosts_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Post\",\n\t\t\tHandler:    _Query_Post_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Posts\",\n\t\t\tHandler:    _Query_Posts_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"IterateGlob\",\n\t\t\tHandler:    _Query_IterateGlob_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"BulletinPolicyId\",\n\t\t\tHandler:    _Query_BulletinPolicyId_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/bulletin/query.proto\",\n}\n\nfunc (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespaceRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespaceRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespaceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespaceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Namespace != nil {\n\t\t{\n\t\t\tsize, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespacesRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespacesRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespacesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespacesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Namespaces) > 0 {\n\t\tfor iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Namespaces[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Collaborators) > 0 {\n\t\tfor iNdEx := len(m.Collaborators) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Collaborators[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespacePostsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespacePostsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespacePostsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryNamespacePostsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryNamespacePostsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryNamespacePostsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Posts) > 0 {\n\t\tfor iNdEx := len(m.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Posts[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPostRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPostRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPostRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Id) > 0 {\n\t\ti -= len(m.Id)\n\t\tcopy(dAtA[i:], m.Id)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Id)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPostResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPostResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPostResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Post != nil {\n\t\t{\n\t\t\tsize, err := m.Post.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPostsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPostsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPostsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryPostsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryPostsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryPostsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Posts) > 0 {\n\t\tfor iNdEx := len(m.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Posts[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryBulletinPolicyIdRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryBulletinPolicyIdRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryBulletinPolicyIdRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryBulletinPolicyIdResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryBulletinPolicyIdResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryBulletinPolicyIdResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.PolicyId) > 0 {\n\t\ti -= len(m.PolicyId)\n\t\tcopy(dAtA[i:], m.PolicyId)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.PolicyId)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryIterateGlobRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryIterateGlobRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryIterateGlobRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Glob) > 0 {\n\t\ti -= len(m.Glob)\n\t\tcopy(dAtA[i:], m.Glob)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Glob)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryIterateGlobResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryIterateGlobResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryIterateGlobResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Posts) > 0 {\n\t\tfor iNdEx := len(m.Posts) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Posts[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryParamsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc (m *QueryNamespaceRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespaceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Namespace != nil {\n\t\tl = m.Namespace.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespacesRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespacesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Namespaces) > 0 {\n\t\tfor _, e := range m.Namespaces {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespaceCollaboratorsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespaceCollaboratorsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Collaborators) > 0 {\n\t\tfor _, e := range m.Collaborators {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespacePostsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryNamespacePostsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Posts) > 0 {\n\t\tfor _, e := range m.Posts {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPostRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.Id)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPostResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Post != nil {\n\t\tl = m.Post.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPostsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryPostsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Posts) > 0 {\n\t\tfor _, e := range m.Posts {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryBulletinPolicyIdRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryBulletinPolicyIdResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.PolicyId)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryIterateGlobRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.Glob)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryIterateGlobResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Posts) > 0 {\n\t\tfor _, e := range m.Posts {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryParamsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespaceRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespaceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Namespace == nil {\n\t\t\t\tm.Namespace = &Namespace{}\n\t\t\t}\n\t\t\tif err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespacesRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacesRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespacesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespaces\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespaces = append(m.Namespaces, Namespace{})\n\t\t\tif err := m.Namespaces[len(m.Namespaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespaceCollaboratorsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceCollaboratorsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceCollaboratorsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespaceCollaboratorsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceCollaboratorsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespaceCollaboratorsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Collaborators\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Collaborators = append(m.Collaborators, Collaborator{})\n\t\t\tif err := m.Collaborators[len(m.Collaborators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespacePostsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacePostsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacePostsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryNamespacePostsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacePostsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryNamespacePostsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Posts = append(m.Posts, Post{})\n\t\t\tif err := m.Posts[len(m.Posts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPostRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Id\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Id = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPostResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Post\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Post == nil {\n\t\t\t\tm.Post = &Post{}\n\t\t\t}\n\t\t\tif err := m.Post.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPostsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryPostsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryPostsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Posts = append(m.Posts, Post{})\n\t\t\tif err := m.Posts[len(m.Posts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryBulletinPolicyIdRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryBulletinPolicyIdRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryBulletinPolicyIdRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryBulletinPolicyIdResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryBulletinPolicyIdResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryBulletinPolicyIdResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PolicyId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PolicyId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryIterateGlobRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryIterateGlobRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryIterateGlobRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Glob\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Glob = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryIterateGlobResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryIterateGlobResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryIterateGlobResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Posts\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Posts = append(m.Posts, &Post{})\n\t\t\tif err := m.Posts[len(m.Posts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: sourcehub/bulletin/query.proto\n\n/*\nPackage types is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage types\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.Params(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_Namespace_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespaceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tmsg, err := client.Namespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Namespace_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespaceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tmsg, err := server.Namespace(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_Namespaces_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_Namespaces_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespacesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Namespaces_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.Namespaces(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Namespaces_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespacesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Namespaces_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.Namespaces(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_NamespaceCollaborators_0 = &utilities.DoubleArray{Encoding: map[string]int{\"namespace\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_NamespaceCollaborators_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespaceCollaboratorsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NamespaceCollaborators_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.NamespaceCollaborators(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_NamespaceCollaborators_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespaceCollaboratorsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NamespaceCollaborators_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.NamespaceCollaborators(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_NamespacePosts_0 = &utilities.DoubleArray{Encoding: map[string]int{\"namespace\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_NamespacePosts_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespacePostsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NamespacePosts_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.NamespacePosts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_NamespacePosts_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryNamespacePostsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_NamespacePosts_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.NamespacePosts(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_Post_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPostRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := client.Post(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Post_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPostRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"namespace\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"namespace\")\n\t}\n\n\tprotoReq.Namespace, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"namespace\", err)\n\t}\n\n\tval, ok = pathParams[\"id\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"id\")\n\t}\n\n\tprotoReq.Id, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"id\", err)\n\t}\n\n\tmsg, err := server.Post(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_Posts_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_Posts_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPostsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Posts_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.Posts(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Posts_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryPostsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Posts_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.Posts(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_IterateGlob_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_IterateGlob_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryIterateGlobRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_IterateGlob_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.IterateGlob(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_IterateGlob_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryIterateGlobRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_IterateGlob_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.IterateGlob(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_BulletinPolicyId_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryBulletinPolicyIdRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.BulletinPolicyId(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_BulletinPolicyId_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryBulletinPolicyIdRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.BulletinPolicyId(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Namespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Namespace_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Namespace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Namespaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Namespaces_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Namespaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_NamespaceCollaborators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_NamespaceCollaborators_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_NamespaceCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_NamespacePosts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_NamespacePosts_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_NamespacePosts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Post_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Post_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Post_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Posts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Posts_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Posts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_IterateGlob_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_IterateGlob_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_IterateGlob_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_BulletinPolicyId_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_BulletinPolicyId_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_BulletinPolicyId_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Namespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Namespace_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Namespace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Namespaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Namespaces_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Namespaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_NamespaceCollaborators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_NamespaceCollaborators_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_NamespaceCollaborators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_NamespacePosts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_NamespacePosts_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_NamespacePosts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Post_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Post_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Post_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Posts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Posts_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Posts_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_IterateGlob_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_IterateGlob_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_IterateGlob_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_BulletinPolicyId_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_BulletinPolicyId_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_BulletinPolicyId_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"params\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Namespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"namespace\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Namespaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"namespaces\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_NamespaceCollaborators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"collaborators\", \"namespace\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_NamespacePosts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"posts\", \"namespace\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Post_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"post\", \"namespace\", \"id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Posts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"posts\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_IterateGlob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"iterate_glob\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_BulletinPolicyId_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"bulletin\", \"policy_id\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_Params_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Namespace_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Namespaces_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_NamespaceCollaborators_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_NamespacePosts_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Post_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Posts_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_IterateGlob_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_BulletinPolicyId_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/bulletin/types/tx.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/bulletin/tx.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *MsgUpdateParams) Reset()         { *m = MsgUpdateParams{} }\nfunc (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParams) ProtoMessage()    {}\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{0}\n}\nfunc (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParams) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParams.Merge(m, src)\n}\nfunc (m *MsgUpdateParams) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParams) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo\n\nfunc (m *MsgUpdateParams) GetAuthority() string {\n\tif m != nil {\n\t\treturn m.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateParams) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n}\n\nfunc (m *MsgUpdateParamsResponse) Reset()         { *m = MsgUpdateParamsResponse{} }\nfunc (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParamsResponse) ProtoMessage()    {}\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{1}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo\n\ntype MsgCreatePost struct {\n\tCreator   string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tPayload   []byte `protobuf:\"bytes,3,opt,name=payload,proto3\" json:\"payload,omitempty\"`\n\tArtifact  string `protobuf:\"bytes,5,opt,name=artifact,proto3\" json:\"artifact,omitempty\"`\n}\n\nfunc (m *MsgCreatePost) Reset()         { *m = MsgCreatePost{} }\nfunc (m *MsgCreatePost) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreatePost) ProtoMessage()    {}\nfunc (*MsgCreatePost) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{2}\n}\nfunc (m *MsgCreatePost) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreatePost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreatePost.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreatePost) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreatePost.Merge(m, src)\n}\nfunc (m *MsgCreatePost) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreatePost) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreatePost.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreatePost proto.InternalMessageInfo\n\nfunc (m *MsgCreatePost) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCreatePost) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCreatePost) GetPayload() []byte {\n\tif m != nil {\n\t\treturn m.Payload\n\t}\n\treturn nil\n}\n\nfunc (m *MsgCreatePost) GetArtifact() string {\n\tif m != nil {\n\t\treturn m.Artifact\n\t}\n\treturn \"\"\n}\n\ntype MsgCreatePostResponse struct {\n}\n\nfunc (m *MsgCreatePostResponse) Reset()         { *m = MsgCreatePostResponse{} }\nfunc (m *MsgCreatePostResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreatePostResponse) ProtoMessage()    {}\nfunc (*MsgCreatePostResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{3}\n}\nfunc (m *MsgCreatePostResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreatePostResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreatePostResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreatePostResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreatePostResponse.Merge(m, src)\n}\nfunc (m *MsgCreatePostResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreatePostResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreatePostResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreatePostResponse proto.InternalMessageInfo\n\ntype MsgRegisterNamespace struct {\n\tCreator   string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (m *MsgRegisterNamespace) Reset()         { *m = MsgRegisterNamespace{} }\nfunc (m *MsgRegisterNamespace) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRegisterNamespace) ProtoMessage()    {}\nfunc (*MsgRegisterNamespace) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{4}\n}\nfunc (m *MsgRegisterNamespace) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRegisterNamespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRegisterNamespace.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRegisterNamespace) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRegisterNamespace.Merge(m, src)\n}\nfunc (m *MsgRegisterNamespace) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRegisterNamespace) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRegisterNamespace.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRegisterNamespace proto.InternalMessageInfo\n\nfunc (m *MsgRegisterNamespace) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRegisterNamespace) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\ntype MsgRegisterNamespaceResponse struct {\n\tNamespace *Namespace `protobuf:\"bytes,1,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n}\n\nfunc (m *MsgRegisterNamespaceResponse) Reset()         { *m = MsgRegisterNamespaceResponse{} }\nfunc (m *MsgRegisterNamespaceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRegisterNamespaceResponse) ProtoMessage()    {}\nfunc (*MsgRegisterNamespaceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{5}\n}\nfunc (m *MsgRegisterNamespaceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRegisterNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRegisterNamespaceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRegisterNamespaceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRegisterNamespaceResponse.Merge(m, src)\n}\nfunc (m *MsgRegisterNamespaceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRegisterNamespaceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRegisterNamespaceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRegisterNamespaceResponse proto.InternalMessageInfo\n\nfunc (m *MsgRegisterNamespaceResponse) GetNamespace() *Namespace {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn nil\n}\n\ntype MsgAddCollaborator struct {\n\tCreator      string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace    string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCollaborator string `protobuf:\"bytes,3,opt,name=collaborator,proto3\" json:\"collaborator,omitempty\"`\n}\n\nfunc (m *MsgAddCollaborator) Reset()         { *m = MsgAddCollaborator{} }\nfunc (m *MsgAddCollaborator) String() string { return proto.CompactTextString(m) }\nfunc (*MsgAddCollaborator) ProtoMessage()    {}\nfunc (*MsgAddCollaborator) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{6}\n}\nfunc (m *MsgAddCollaborator) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgAddCollaborator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgAddCollaborator.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgAddCollaborator) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgAddCollaborator.Merge(m, src)\n}\nfunc (m *MsgAddCollaborator) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgAddCollaborator) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgAddCollaborator.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgAddCollaborator proto.InternalMessageInfo\n\nfunc (m *MsgAddCollaborator) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgAddCollaborator) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgAddCollaborator) GetCollaborator() string {\n\tif m != nil {\n\t\treturn m.Collaborator\n\t}\n\treturn \"\"\n}\n\ntype MsgAddCollaboratorResponse struct {\n\tCollaboratorDid string `protobuf:\"bytes,1,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (m *MsgAddCollaboratorResponse) Reset()         { *m = MsgAddCollaboratorResponse{} }\nfunc (m *MsgAddCollaboratorResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgAddCollaboratorResponse) ProtoMessage()    {}\nfunc (*MsgAddCollaboratorResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{7}\n}\nfunc (m *MsgAddCollaboratorResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgAddCollaboratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgAddCollaboratorResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgAddCollaboratorResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgAddCollaboratorResponse.Merge(m, src)\n}\nfunc (m *MsgAddCollaboratorResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgAddCollaboratorResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgAddCollaboratorResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgAddCollaboratorResponse proto.InternalMessageInfo\n\nfunc (m *MsgAddCollaboratorResponse) GetCollaboratorDid() string {\n\tif m != nil {\n\t\treturn m.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\ntype MsgRemoveCollaborator struct {\n\tCreator      string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\tNamespace    string `protobuf:\"bytes,2,opt,name=namespace,proto3\" json:\"namespace,omitempty\"`\n\tCollaborator string `protobuf:\"bytes,3,opt,name=collaborator,proto3\" json:\"collaborator,omitempty\"`\n}\n\nfunc (m *MsgRemoveCollaborator) Reset()         { *m = MsgRemoveCollaborator{} }\nfunc (m *MsgRemoveCollaborator) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveCollaborator) ProtoMessage()    {}\nfunc (*MsgRemoveCollaborator) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{8}\n}\nfunc (m *MsgRemoveCollaborator) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveCollaborator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveCollaborator.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveCollaborator) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveCollaborator.Merge(m, src)\n}\nfunc (m *MsgRemoveCollaborator) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveCollaborator) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveCollaborator.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveCollaborator proto.InternalMessageInfo\n\nfunc (m *MsgRemoveCollaborator) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRemoveCollaborator) GetNamespace() string {\n\tif m != nil {\n\t\treturn m.Namespace\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRemoveCollaborator) GetCollaborator() string {\n\tif m != nil {\n\t\treturn m.Collaborator\n\t}\n\treturn \"\"\n}\n\ntype MsgRemoveCollaboratorResponse struct {\n\tCollaboratorDid string `protobuf:\"bytes,1,opt,name=collaborator_did,json=collaboratorDid,proto3\" json:\"collaborator_did,omitempty\"`\n}\n\nfunc (m *MsgRemoveCollaboratorResponse) Reset()         { *m = MsgRemoveCollaboratorResponse{} }\nfunc (m *MsgRemoveCollaboratorResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveCollaboratorResponse) ProtoMessage()    {}\nfunc (*MsgRemoveCollaboratorResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_0497d0f203b2b5e8, []int{9}\n}\nfunc (m *MsgRemoveCollaboratorResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveCollaboratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveCollaboratorResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveCollaboratorResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveCollaboratorResponse.Merge(m, src)\n}\nfunc (m *MsgRemoveCollaboratorResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveCollaboratorResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveCollaboratorResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveCollaboratorResponse proto.InternalMessageInfo\n\nfunc (m *MsgRemoveCollaboratorResponse) GetCollaboratorDid() string {\n\tif m != nil {\n\t\treturn m.CollaboratorDid\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tproto.RegisterType((*MsgUpdateParams)(nil), \"sourcehub.bulletin.MsgUpdateParams\")\n\tproto.RegisterType((*MsgUpdateParamsResponse)(nil), \"sourcehub.bulletin.MsgUpdateParamsResponse\")\n\tproto.RegisterType((*MsgCreatePost)(nil), \"sourcehub.bulletin.MsgCreatePost\")\n\tproto.RegisterType((*MsgCreatePostResponse)(nil), \"sourcehub.bulletin.MsgCreatePostResponse\")\n\tproto.RegisterType((*MsgRegisterNamespace)(nil), \"sourcehub.bulletin.MsgRegisterNamespace\")\n\tproto.RegisterType((*MsgRegisterNamespaceResponse)(nil), \"sourcehub.bulletin.MsgRegisterNamespaceResponse\")\n\tproto.RegisterType((*MsgAddCollaborator)(nil), \"sourcehub.bulletin.MsgAddCollaborator\")\n\tproto.RegisterType((*MsgAddCollaboratorResponse)(nil), \"sourcehub.bulletin.MsgAddCollaboratorResponse\")\n\tproto.RegisterType((*MsgRemoveCollaborator)(nil), \"sourcehub.bulletin.MsgRemoveCollaborator\")\n\tproto.RegisterType((*MsgRemoveCollaboratorResponse)(nil), \"sourcehub.bulletin.MsgRemoveCollaboratorResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/bulletin/tx.proto\", fileDescriptor_0497d0f203b2b5e8) }\n\nvar fileDescriptor_0497d0f203b2b5e8 = []byte{\n\t// 638 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0x4f, 0x4f, 0xd4, 0x5e,\n\t0x14, 0x9d, 0xf7, 0xe3, 0x07, 0xda, 0xeb, 0x18, 0xa4, 0xc1, 0x50, 0x2a, 0x14, 0xac, 0xc6, 0x0c,\n\t0x18, 0xa7, 0x02, 0x89, 0x26, 0x18, 0x17, 0x80, 0x89, 0x89, 0x49, 0x8d, 0xa9, 0x71, 0x83, 0x26,\n\t0xf8, 0xa6, 0x7d, 0x96, 0xc6, 0x69, 0x5f, 0xf3, 0xde, 0x1b, 0x84, 0x8d, 0x51, 0x97, 0xba, 0x71,\n\t0xed, 0x27, 0x70, 0xc9, 0xc2, 0x2f, 0xe0, 0x8e, 0x25, 0x71, 0xe5, 0xca, 0x18, 0x58, 0xf0, 0x35,\n\t0x4c, 0xff, 0x97, 0x4e, 0x27, 0x4e, 0xd8, 0xb8, 0x99, 0x99, 0x7b, 0xef, 0xb9, 0xf7, 0x9c, 0xf3,\n\t0x5e, 0x6f, 0x07, 0xae, 0x70, 0xda, 0x63, 0x36, 0xd9, 0xee, 0x75, 0x8c, 0x4e, 0xaf, 0xdb, 0x25,\n\t0xc2, 0x0b, 0x0c, 0xb1, 0xdb, 0x0e, 0x19, 0x15, 0x54, 0x96, 0xf3, 0x62, 0x3b, 0x2b, 0xaa, 0x13,\n\t0xd8, 0xf7, 0x02, 0x6a, 0xc4, 0x9f, 0x09, 0x4c, 0x9d, 0xb2, 0x29, 0xf7, 0x29, 0x37, 0x7c, 0xee,\n\t0x1a, 0x3b, 0x4b, 0xd1, 0x57, 0x5a, 0x98, 0x4e, 0x0a, 0x5b, 0x71, 0x64, 0x24, 0x41, 0x5a, 0x9a,\n\t0x74, 0xa9, 0x4b, 0x93, 0x7c, 0xf4, 0x2b, 0xcd, 0xce, 0xd5, 0xa8, 0x09, 0x31, 0xc3, 0x7e, 0xd6,\n\t0xa6, 0xd7, 0x00, 0x02, 0xec, 0x13, 0x1e, 0x62, 0x9b, 0x24, 0x18, 0xfd, 0x3b, 0x82, 0x71, 0x93,\n\t0xbb, 0xcf, 0x42, 0x07, 0x0b, 0xf2, 0x24, 0xee, 0x96, 0xef, 0x80, 0x84, 0x7b, 0x62, 0x9b, 0x32,\n\t0x4f, 0xec, 0x29, 0x68, 0x1e, 0xb5, 0xa4, 0x75, 0xe5, 0xc7, 0xb7, 0x5b, 0x93, 0xa9, 0xa6, 0x35,\n\t0xc7, 0x61, 0x84, 0xf3, 0xa7, 0x82, 0x79, 0x81, 0x6b, 0x15, 0x50, 0xf9, 0x3e, 0x8c, 0x25, 0xfc,\n\t0xca, 0x7f, 0xf3, 0xa8, 0x75, 0x61, 0x59, 0x6d, 0xf7, 0x1f, 0x49, 0x3b, 0xe1, 0x58, 0x97, 0x0e,\n\t0x7e, 0xcd, 0x35, 0xbe, 0x9e, 0xec, 0x2f, 0x22, 0x2b, 0x6d, 0x5a, 0xbd, 0xfb, 0xe1, 0x64, 0x7f,\n\t0xb1, 0x18, 0xf7, 0xf1, 0x64, 0x7f, 0xf1, 0x7a, 0xe1, 0x60, 0xb7, 0xf0, 0x50, 0xd1, 0xab, 0x4f,\n\t0xc3, 0x54, 0x25, 0x65, 0x11, 0x1e, 0xd2, 0x80, 0x13, 0xfd, 0x13, 0x82, 0x8b, 0x26, 0x77, 0x37,\n\t0x18, 0x89, 0x6a, 0x94, 0x0b, 0x59, 0x81, 0x73, 0x76, 0x14, 0x51, 0x96, 0x58, 0xb3, 0xb2, 0x50,\n\t0x9e, 0x01, 0x29, 0x3f, 0x9d, 0xd8, 0x81, 0x64, 0x15, 0x89, 0xa8, 0x2f, 0xc4, 0x7b, 0x5d, 0x8a,\n\t0x1d, 0x65, 0x64, 0x1e, 0xb5, 0x9a, 0x56, 0x16, 0xca, 0x2a, 0x9c, 0xc7, 0x4c, 0x78, 0xaf, 0xb0,\n\t0x2d, 0x94, 0xd1, 0xb8, 0x2d, 0x8f, 0x57, 0x9b, 0x91, 0xa7, 0x8c, 0x41, 0x9f, 0x82, 0xcb, 0xa7,\n\t0xc4, 0xe4, 0x32, 0x5f, 0xc0, 0xa4, 0xc9, 0x5d, 0x8b, 0xb8, 0x1e, 0x17, 0x84, 0x3d, 0x2e, 0x93,\n\t0x9e, 0x45, 0x6c, 0x85, 0xf6, 0x39, 0xcc, 0xd4, 0x4d, 0xcf, 0xd8, 0xe5, 0x7b, 0xe5, 0x59, 0x28,\n\t0xbe, 0xba, 0xd9, 0xba, 0xab, 0x2b, 0x3a, 0x0b, 0xbc, 0xfe, 0x16, 0x64, 0x93, 0xbb, 0x6b, 0x8e,\n\t0xb3, 0x41, 0xbb, 0x5d, 0xdc, 0xa1, 0x2c, 0x96, 0x77, 0xd6, 0x53, 0xd6, 0xa1, 0x69, 0x97, 0xe6,\n\t0xc4, 0x47, 0x2d, 0x59, 0xa7, 0x72, 0x15, 0x73, 0x0f, 0x41, 0xed, 0xe7, 0xcf, 0xad, 0x2d, 0xc0,\n\t0xa5, 0x72, 0xef, 0x96, 0xe3, 0x39, 0xa9, 0xa0, 0xf1, 0x72, 0xfe, 0x81, 0xe7, 0xe8, 0xef, 0x51,\n\t0x7c, 0x3b, 0x16, 0xf1, 0xe9, 0x0e, 0xf9, 0x47, 0x66, 0x1e, 0xc1, 0x6c, 0xad, 0x84, 0x33, 0xf8,\n\t0x59, 0xfe, 0xf2, 0x3f, 0x8c, 0x98, 0xdc, 0x95, 0x5f, 0x42, 0xf3, 0xd4, 0x76, 0x5f, 0xab, 0xbb,\n\t0xda, 0xca, 0xfe, 0xa8, 0x37, 0x87, 0x00, 0xe5, 0xa2, 0x36, 0x01, 0x4a, 0x0b, 0x76, 0x75, 0x40,\n\t0x6b, 0x01, 0x51, 0x17, 0xfe, 0x0a, 0xc9, 0x67, 0x53, 0x98, 0xe8, 0x5f, 0x8b, 0xd6, 0x80, 0xfe,\n\t0x3e, 0xa4, 0x7a, 0x7b, 0x58, 0x64, 0x4e, 0xe8, 0xc1, 0x78, 0xf5, 0x61, 0xbe, 0x31, 0x60, 0x48,\n\t0x05, 0xa7, 0xb6, 0x87, 0xc3, 0xe5, 0x54, 0x0c, 0xe4, 0x9a, 0xa7, 0x6d, 0x61, 0xa0, 0xe4, 0x2a,\n\t0x54, 0x5d, 0x1a, 0x1a, 0x9a, 0x71, 0xaa, 0xa3, 0xef, 0xa2, 0x77, 0xee, 0xba, 0x79, 0x70, 0xa4,\n\t0xa1, 0xc3, 0x23, 0x0d, 0xfd, 0x3e, 0xd2, 0xd0, 0xe7, 0x63, 0xad, 0x71, 0x78, 0xac, 0x35, 0x7e,\n\t0x1e, 0x6b, 0x8d, 0xcd, 0x15, 0xd7, 0x13, 0xd1, 0x3c, 0x9b, 0xfa, 0x46, 0x32, 0x3d, 0x20, 0xe2,\n\t0x0d, 0x65, 0xaf, 0x8d, 0xda, 0x77, 0xb1, 0xd8, 0x0b, 0x09, 0xef, 0x8c, 0xc5, 0x7f, 0x26, 0x2b,\n\t0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x26, 0x0c, 0x21, 0xfb, 0x21, 0x07, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\tCreatePost(ctx context.Context, in *MsgCreatePost, opts ...grpc.CallOption) (*MsgCreatePostResponse, error)\n\tRegisterNamespace(ctx context.Context, in *MsgRegisterNamespace, opts ...grpc.CallOption) (*MsgRegisterNamespaceResponse, error)\n\tAddCollaborator(ctx context.Context, in *MsgAddCollaborator, opts ...grpc.CallOption) (*MsgAddCollaboratorResponse, error)\n\tRemoveCollaborator(ctx context.Context, in *MsgRemoveCollaborator, opts ...grpc.CallOption) (*MsgRemoveCollaboratorResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewMsgClient(cc grpc1.ClientConn) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Msg/UpdateParams\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreatePost(ctx context.Context, in *MsgCreatePost, opts ...grpc.CallOption) (*MsgCreatePostResponse, error) {\n\tout := new(MsgCreatePostResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Msg/CreatePost\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RegisterNamespace(ctx context.Context, in *MsgRegisterNamespace, opts ...grpc.CallOption) (*MsgRegisterNamespaceResponse, error) {\n\tout := new(MsgRegisterNamespaceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Msg/RegisterNamespace\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) AddCollaborator(ctx context.Context, in *MsgAddCollaborator, opts ...grpc.CallOption) (*MsgAddCollaboratorResponse, error) {\n\tout := new(MsgAddCollaboratorResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Msg/AddCollaborator\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveCollaborator(ctx context.Context, in *MsgRemoveCollaborator, opts ...grpc.CallOption) (*MsgRemoveCollaboratorResponse, error) {\n\tout := new(MsgRemoveCollaboratorResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.bulletin.Msg/RemoveCollaborator\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\tCreatePost(context.Context, *MsgCreatePost) (*MsgCreatePostResponse, error)\n\tRegisterNamespace(context.Context, *MsgRegisterNamespace) (*MsgRegisterNamespaceResponse, error)\n\tAddCollaborator(context.Context, *MsgAddCollaborator) (*MsgAddCollaboratorResponse, error)\n\tRemoveCollaborator(context.Context, *MsgRemoveCollaborator) (*MsgRemoveCollaboratorResponse, error)\n}\n\n// UnimplementedMsgServer can be embedded to have forward compatible implementations.\ntype UnimplementedMsgServer struct {\n}\n\nfunc (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (*UnimplementedMsgServer) CreatePost(ctx context.Context, req *MsgCreatePost) (*MsgCreatePostResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreatePost not implemented\")\n}\nfunc (*UnimplementedMsgServer) RegisterNamespace(ctx context.Context, req *MsgRegisterNamespace) (*MsgRegisterNamespaceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RegisterNamespace not implemented\")\n}\nfunc (*UnimplementedMsgServer) AddCollaborator(ctx context.Context, req *MsgAddCollaborator) (*MsgAddCollaboratorResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AddCollaborator not implemented\")\n}\nfunc (*UnimplementedMsgServer) RemoveCollaborator(ctx context.Context, req *MsgRemoveCollaborator) (*MsgRemoveCollaboratorResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveCollaborator not implemented\")\n}\n\nfunc RegisterMsgServer(s grpc1.Server, srv MsgServer) {\n\ts.RegisterService(&_Msg_serviceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Msg/UpdateParams\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreatePost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreatePost)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreatePost(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Msg/CreatePost\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreatePost(ctx, req.(*MsgCreatePost))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RegisterNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRegisterNamespace)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RegisterNamespace(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Msg/RegisterNamespace\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RegisterNamespace(ctx, req.(*MsgRegisterNamespace))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_AddCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgAddCollaborator)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).AddCollaborator(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Msg/AddCollaborator\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).AddCollaborator(ctx, req.(*MsgAddCollaborator))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveCollaborator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveCollaborator)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveCollaborator(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.bulletin.Msg/RemoveCollaborator\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveCollaborator(ctx, req.(*MsgRemoveCollaborator))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Msg_serviceDesc = _Msg_serviceDesc\nvar _Msg_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.bulletin.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreatePost\",\n\t\t\tHandler:    _Msg_CreatePost_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RegisterNamespace\",\n\t\t\tHandler:    _Msg_RegisterNamespace_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AddCollaborator\",\n\t\t\tHandler:    _Msg_AddCollaborator_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveCollaborator\",\n\t\t\tHandler:    _Msg_RemoveCollaborator_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/bulletin/tx.proto\",\n}\n\nfunc (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreatePost) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreatePost) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreatePost) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Artifact) > 0 {\n\t\ti -= len(m.Artifact)\n\t\tcopy(dAtA[i:], m.Artifact)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Artifact)))\n\t\ti--\n\t\tdAtA[i] = 0x2a\n\t}\n\tif len(m.Payload) > 0 {\n\t\ti -= len(m.Payload)\n\t\tcopy(dAtA[i:], m.Payload)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Payload)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreatePostResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreatePostResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreatePostResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRegisterNamespace) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRegisterNamespace) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRegisterNamespace) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRegisterNamespaceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRegisterNamespaceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRegisterNamespaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Namespace != nil {\n\t\t{\n\t\t\tsize, err := m.Namespace.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgAddCollaborator) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgAddCollaborator) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgAddCollaborator) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Collaborator) > 0 {\n\t\ti -= len(m.Collaborator)\n\t\tcopy(dAtA[i:], m.Collaborator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Collaborator)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgAddCollaboratorResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgAddCollaboratorResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgAddCollaboratorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.CollaboratorDid) > 0 {\n\t\ti -= len(m.CollaboratorDid)\n\t\tcopy(dAtA[i:], m.CollaboratorDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.CollaboratorDid)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveCollaborator) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveCollaborator) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveCollaborator) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Collaborator) > 0 {\n\t\ti -= len(m.Collaborator)\n\t\tcopy(dAtA[i:], m.Collaborator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Collaborator)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Namespace) > 0 {\n\t\ti -= len(m.Namespace)\n\t\tcopy(dAtA[i:], m.Namespace)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Namespace)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveCollaboratorResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveCollaboratorResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveCollaboratorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.CollaboratorDid) > 0 {\n\t\ti -= len(m.CollaboratorDid)\n\t\tcopy(dAtA[i:], m.CollaboratorDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.CollaboratorDid)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTx(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTx(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *MsgUpdateParams) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Params.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgUpdateParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgCreatePost) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Payload)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Artifact)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgCreatePostResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgRegisterNamespace) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRegisterNamespaceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Namespace != nil {\n\t\tl = m.Namespace.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgAddCollaborator) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Collaborator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgAddCollaboratorResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.CollaboratorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRemoveCollaborator) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Namespace)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Collaborator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRemoveCollaboratorResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.CollaboratorDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovTx(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTx(x uint64) (n int) {\n\treturn sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreatePost) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePost: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePost: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Payload\", wireType)\n\t\t\t}\n\t\t\tvar byteLen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tbyteLen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif byteLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + byteLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Payload = append(m.Payload[:0], dAtA[iNdEx:postIndex]...)\n\t\t\tif m.Payload == nil {\n\t\t\t\tm.Payload = []byte{}\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Artifact\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Artifact = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreatePostResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePostResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreatePostResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRegisterNamespace) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRegisterNamespace: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRegisterNamespace: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRegisterNamespaceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRegisterNamespaceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRegisterNamespaceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Namespace == nil {\n\t\t\t\tm.Namespace = &Namespace{}\n\t\t\t}\n\t\t\tif err := m.Namespace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgAddCollaborator) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddCollaborator: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddCollaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Collaborator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Collaborator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgAddCollaboratorResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddCollaboratorResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddCollaboratorResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveCollaborator) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveCollaborator: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveCollaborator: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Namespace\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Namespace = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Collaborator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Collaborator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveCollaboratorResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveCollaboratorResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveCollaboratorResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CollaboratorDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.CollaboratorDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTx(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTx\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTx\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTx\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTx        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTx          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTx = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/bulletin/types/types.go",
    "content": "package types\n"
  },
  {
    "path": "x/epochs/README.md",
    "content": "# Epochs\n\n## Abstract\n\nOften in the SDK, we would like to run certain code every-so often. The\npurpose of `epochs` module is to allow other modules to set that they\nwould like to be signaled once every period. So another module can\nspecify it wants to execute code once a week, starting at UTC-time = x.\n`epochs` creates a generalized epoch interface to other modules so that\nthey can easily be signalled upon such events.\n\n## Contents\n\n1. **[Concept](#concepts)**\n2. **[State](#state)**\n3. **[Events](#events)**\n4. **[Keeper](#keepers)**\n5. **[Hooks](#hooks)**\n6. **[Queries](#queries)**\n\n## Concepts\n\nThe epochs module defines on-chain timers, that execute at fixed time intervals.\nOther SDK modules can then register logic to be executed at the timer ticks.\nWe refer to the period in between two timer ticks as an \"epoch\".\n\nEvery timer has a unique identifier.\nEvery epoch will have a start time, and an end time, where `end time = start time + timer interval`.\nOn Osmosis mainnet, we only utilize one identifier, with a time interval of `one day`.\n\nThe timer will tick at the first block whose blocktime is greater than the timer end time,\nand set the start as the prior timer end time. (Notably, its not set to the block time!)\nThis means that if the chain has been down for awhile, you will get one timer tick per block,\nuntil the timer has caught up.\n\n## State\n\nThe Epochs module keeps a single [`EpochInfo`](https://github.com/sourcenetwork/sourcehub/blob/b4befe4f3eb97ebb477323234b910c4afafab9b7/proto/osmosis/epochs/genesis.proto#L12) per identifier.\nThis contains the current state of the timer with the corresponding identifier.\nIts fields are modified at every timer tick.\nEpochInfos are initialized as part of genesis initialization or upgrade logic,\nand are only modified on begin blockers.\n\n## Events\n\nThe `epochs` module emits the following events:\n\n### BeginBlocker\n\n| Type        | Attribute Key | Attribute Value |\n| ----------- | ------------- | --------------- |\n| epoch_start | epoch_number  | {epoch_number}  |\n| epoch_start | start_time    | {start_time}    |\n\n### EndBlocker\n\n| Type      | Attribute Key | Attribute Value |\n| --------- | ------------- | --------------- |\n| epoch_end | epoch_number  | {epoch_number}  |\n\n## Keepers\n\n### Keeper functions\n\nEpochs keeper module provides utility functions to manage epochs.\n\n```go\n// Keeper is the interface for epochs module keeper\ntype Keeper interface {\n  // GetEpochInfo returns epoch info by identifier\n  GetEpochInfo(ctx sdk.Context, identifier string) types.EpochInfo\n  // SetEpochInfo set epoch info\n  SetEpochInfo(ctx sdk.Context, epoch types.EpochInfo)\n  // DeleteEpochInfo delete epoch info\n  DeleteEpochInfo(ctx sdk.Context, identifier string)\n  // IterateEpochInfo iterate through epochs\n  IterateEpochInfo(ctx sdk.Context, fn func(index int64, epochInfo types.EpochInfo) (stop bool))\n  // Get all epoch infos\n  AllEpochInfos(ctx sdk.Context) []types.EpochInfo\n}\n```\n\n## Hooks\n\n```go\n  // the first block whose timestamp is after the duration is counted as the end of the epoch\n  AfterEpochEnd(ctx sdk.Context, epochIdentifier string, epochNumber int64)\n  // new epoch is next block of epoch end block\n  BeforeEpochStart(ctx sdk.Context, epochIdentifier string, epochNumber int64)\n```\n\n### How modules receive hooks\n\nOn hook receiver function of other modules, they need to filter\n`epochIdentifier` and only do executions for only specific\nepochIdentifier. Filtering epochIdentifier could be in `Params` of other\nmodules so that they can be modified by governance.\n\nThis is the standard dev UX of this:\n\n```golang\nfunc (k MyModuleKeeper) AfterEpochEnd(ctx sdk.Context, epochIdentifier string, epochNumber int64) {\n    params := k.GetParams(ctx)\n    if epochIdentifier == params.DistrEpochIdentifier {\n    // my logic\n  }\n}\n```\n\n### Panic isolation\n\nIf a given epoch hook panics, its state update is reverted, but we keep\nproceeding through the remaining hooks. This allows more advanced epoch\nlogic to be used, without concern over state machine halting, or halting\nsubsequent modules.\n\nThis does mean that if there is behavior you expect from a prior epoch\nhook, and that epoch hook reverted, your hook may also have an issue. So\ndo keep in mind \"what if a prior hook didn't get executed\" in the safety\nchecks you consider for a new epoch hook.\n\n## Queries\n\nEpochs module is providing below queries to check the module's state.\n\n```protobuf\nservice Query {\n  // EpochInfos provide running epochInfos\n  rpc EpochInfos(QueryEpochsInfoRequest) returns (QueryEpochsInfoResponse) {}\n  // CurrentEpoch provide current epoch of specified identifier\n  rpc CurrentEpoch(QueryCurrentEpochRequest) returns (QueryCurrentEpochResponse) {}\n}\n```\n\n### Epoch Infos\n\nQuery the currently running epochInfos\n\n```sh\nosmosisd query epochs epoch-infos\n```\n\n::: details Example\n\nAn example output:\n\n```sh\nepochs:\n- current_epoch: \"183\"\n  current_epoch_start_height: \"2438409\"\n  current_epoch_start_time: \"2021-12-18T17:16:09.898160996Z\"\n  duration: 86400s\n  epoch_counting_started: true\n  identifier: day\n  start_time: \"2021-06-18T17:00:00Z\"\n- current_epoch: \"26\"\n  current_epoch_start_height: \"2424854\"\n  current_epoch_start_time: \"2021-12-17T17:02:07.229632445Z\"\n  duration: 604800s\n  epoch_counting_started: true\n  identifier: week\n  start_time: \"2021-06-18T17:00:00Z\"\n```\n\n:::\n\n### Current Epoch\n\nQuery the current epoch by the specified identifier\n\n```sh\nosmosisd query epochs current-epoch [identifier]\n```\n\n::: details Example\n\nQuery the current `day` epoch:\n\n```sh\nosmosisd query epochs current-epoch day\n```\n\nWhich in this example outputs:\n\n```sh\ncurrent_epoch: \"183\"\n```\n"
  },
  {
    "path": "x/epochs/keeper/abci.go",
    "content": "package keeper\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// BeginBlocker of epochs module.\nfunc (k Keeper) BeginBlocker(ctx sdk.Context) {\n\tdefer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker)\n\tk.IterateEpochInfo(ctx, func(index int64, epochInfo types.EpochInfo) (stop bool) {\n\t\tlogger := k.Logger()\n\n\t\t// If blocktime < initial epoch start time, return\n\t\tif ctx.BlockTime().Before(epochInfo.StartTime) {\n\t\t\treturn\n\t\t}\n\t\t// if epoch counting hasn't started, signal we need to start.\n\t\tshouldInitialEpochStart := !epochInfo.EpochCountingStarted\n\n\t\tepochEndTime := epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration)\n\t\tshouldEpochStart := (ctx.BlockTime().After(epochEndTime)) || shouldInitialEpochStart\n\n\t\tif !shouldEpochStart {\n\t\t\treturn false\n\t\t}\n\t\tepochInfo.CurrentEpochStartHeight = ctx.BlockHeight()\n\n\t\tif shouldInitialEpochStart {\n\t\t\tepochInfo.EpochCountingStarted = true\n\t\t\tepochInfo.CurrentEpoch = 1\n\t\t\tepochInfo.CurrentEpochStartTime = epochInfo.StartTime\n\t\t\tlogger.Info(fmt.Sprintf(\"Starting new epoch with identifier %s epoch number %d\", epochInfo.Identifier, epochInfo.CurrentEpoch))\n\t\t} else {\n\t\t\tctx.EventManager().EmitEvent(\n\t\t\t\tsdk.NewEvent(\n\t\t\t\t\ttypes.EventTypeEpochEnd,\n\t\t\t\t\tsdk.NewAttribute(types.AttributeEpochNumber, fmt.Sprintf(\"%d\", epochInfo.CurrentEpoch)),\n\t\t\t\t),\n\t\t\t)\n\t\t\tk.AfterEpochEnd(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch)\n\t\t\tepochInfo.CurrentEpoch += 1\n\t\t\tepochInfo.CurrentEpochStartTime = epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration)\n\t\t\tlogger.Info(fmt.Sprintf(\"Starting epoch with identifier %s epoch number %d\", epochInfo.Identifier, epochInfo.CurrentEpoch))\n\t\t}\n\n\t\t// emit new epoch start event, set epoch info, and run BeforeEpochStart hook\n\t\tctx.EventManager().EmitEvent(\n\t\t\tsdk.NewEvent(\n\t\t\t\ttypes.EventTypeEpochStart,\n\t\t\t\tsdk.NewAttribute(types.AttributeEpochNumber, fmt.Sprintf(\"%d\", epochInfo.CurrentEpoch)),\n\t\t\t\tsdk.NewAttribute(types.AttributeEpochStartTime, fmt.Sprintf(\"%d\", epochInfo.CurrentEpochStartTime.Unix())),\n\t\t\t),\n\t\t)\n\t\tk.SetEpochInfo(ctx, epochInfo)\n\t\tk.BeforeEpochStart(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch)\n\n\t\treturn false\n\t})\n}\n"
  },
  {
    "path": "x/epochs/keeper/abci_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/osmoutils\"\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\n\t\"golang.org/x/exp/maps\"\n)\n\n// This test is responsible for testing how epochs increment based off\n// of their initial conditions, and subsequent block height / times.\nfunc (suite *KeeperTestSuite) TestEpochInfoBeginBlockChanges() {\n\tblock1Time := time.Unix(1656907200, 0).UTC()\n\tconst defaultIdentifier = \"hourly\"\n\tconst defaultDuration = time.Hour\n\t// eps is short for epsilon - in this case a negligible amount of time.\n\tconst eps = time.Nanosecond\n\n\ttests := map[string]struct {\n\t\t// if identifier, duration is not set, we make it defaultIdentifier and defaultDuration.\n\t\t// EpochCountingStarted, if unspecified, is inferred by CurrentEpoch == 0\n\t\t// StartTime is inferred to be block1Time if left blank.\n\t\tinitialEpochInfo     types.EpochInfo\n\t\tblockHeightTimePairs map[int]time.Time\n\t\texpEpochInfo         types.EpochInfo\n\t}{\n\t\t\"First block running at exactly start time sets epoch tick\": {\n\t\t\tinitialEpochInfo: types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\texpEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 1, CurrentEpochStartTime: block1Time, CurrentEpochStartHeight: 1},\n\t\t},\n\t\t\"First block run sets start time, subsequent blocks within timer interval do not cause timer tick\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(time.Second), 3: block1Time.Add(time.Minute), 4: block1Time.Add(30 * time.Minute)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 1, CurrentEpochStartTime: block1Time, CurrentEpochStartHeight: 1},\n\t\t},\n\t\t\"Second block at exactly timer interval later does not tick\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(defaultDuration)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 1, CurrentEpochStartTime: block1Time, CurrentEpochStartHeight: 1},\n\t\t},\n\t\t\"Second block at timer interval + epsilon later does tick\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(defaultDuration).Add(eps)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 2, CurrentEpochStartTime: block1Time.Add(time.Hour), CurrentEpochStartHeight: 2},\n\t\t},\n\t\t\"Downtime recovery (many intervals), first block causes 1 tick and sets current start time 1 interval ahead\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(24 * time.Hour)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 2, CurrentEpochStartTime: block1Time.Add(time.Hour), CurrentEpochStartHeight: 2},\n\t\t},\n\t\t\"Downtime recovery (many intervals), second block is at tick 2, w/ start time 2 intervals ahead\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(24 * time.Hour), 3: block1Time.Add(24 * time.Hour).Add(eps)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 3, CurrentEpochStartTime: block1Time.Add(2 * time.Hour), CurrentEpochStartHeight: 3},\n\t\t},\n\t\t\"Many blocks between first and second tick\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{StartTime: block1Time, CurrentEpoch: 1, CurrentEpochStartTime: block1Time},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(time.Second), 3: block1Time.Add(2 * time.Second), 4: block1Time.Add(time.Hour).Add(eps)},\n\t\t\texpEpochInfo:         types.EpochInfo{StartTime: block1Time, CurrentEpoch: 2, CurrentEpochStartTime: block1Time.Add(time.Hour), CurrentEpochStartHeight: 4},\n\t\t},\n\t\t\"Distinct identifier and duration still works\": {\n\t\t\tinitialEpochInfo:     types.EpochInfo{Identifier: \"hello\", Duration: time.Minute, StartTime: block1Time, CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\tblockHeightTimePairs: map[int]time.Time{2: block1Time.Add(time.Second), 3: block1Time.Add(time.Minute).Add(eps)},\n\t\t\texpEpochInfo:         types.EpochInfo{Identifier: \"hello\", Duration: time.Minute, StartTime: block1Time, CurrentEpoch: 2, CurrentEpochStartTime: block1Time.Add(time.Minute), CurrentEpochStartHeight: 3},\n\t\t},\n\t\t\"StartTime in future won't get ticked on first block\": {\n\t\t\tinitialEpochInfo: types.EpochInfo{StartTime: block1Time.Add(time.Second), CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\t// currentEpochStartHeight is 1 because that's when the timer was created on-chain\n\t\t\texpEpochInfo: types.EpochInfo{StartTime: block1Time.Add(time.Second), CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}, CurrentEpochStartHeight: 1},\n\t\t},\n\t\t\"StartTime in past will get ticked on first block\": {\n\t\t\tinitialEpochInfo: types.EpochInfo{StartTime: block1Time.Add(-time.Second), CurrentEpoch: 0, CurrentEpochStartTime: time.Time{}},\n\t\t\texpEpochInfo:     types.EpochInfo{StartTime: block1Time.Add(-time.Second), CurrentEpoch: 1, CurrentEpochStartTime: block1Time.Add(-time.Second), CurrentEpochStartHeight: 1},\n\t\t},\n\t}\n\tfor name, test := range tests {\n\t\tsuite.Run(name, func() {\n\t\t\tsuite.SetupTest()\n\t\t\tsuite.Ctx = suite.Ctx.WithBlockHeight(1).WithBlockTime(block1Time)\n\t\t\tinitialEpoch := initializeBlankEpochInfoFields(test.initialEpochInfo, defaultIdentifier, defaultDuration)\n\t\t\tsuite.EpochsKeeper.AddEpochInfo(suite.Ctx, initialEpoch)\n\t\t\tsuite.EpochsKeeper.BeginBlocker(suite.Ctx)\n\n\t\t\t// get sorted heights\n\t\t\theights := maps.Keys(test.blockHeightTimePairs)\n\t\t\tosmoutils.SortSlice(heights)\n\t\t\tfor _, h := range heights {\n\t\t\t\t// for each height in order, run begin block\n\t\t\t\tsuite.Ctx = suite.Ctx.WithBlockHeight(int64(h)).WithBlockTime(test.blockHeightTimePairs[h])\n\t\t\t\tsuite.EpochsKeeper.BeginBlocker(suite.Ctx)\n\t\t\t}\n\t\t\texpEpoch := initializeBlankEpochInfoFields(test.expEpochInfo, initialEpoch.Identifier, initialEpoch.Duration)\n\t\t\tactEpoch := suite.EpochsKeeper.GetEpochInfo(suite.Ctx, initialEpoch.Identifier)\n\t\t\tsuite.Require().Equal(expEpoch, actEpoch)\n\t\t})\n\t}\n}\n\n// initializeBlankEpochInfoFields set identifier, duration and epochCountingStarted if blank in epoch\nfunc initializeBlankEpochInfoFields(epoch types.EpochInfo, identifier string, duration time.Duration) types.EpochInfo {\n\tif epoch.Identifier == \"\" {\n\t\tepoch.Identifier = identifier\n\t}\n\tif epoch.Duration == time.Duration(0) {\n\t\tepoch.Duration = duration\n\t}\n\tepoch.EpochCountingStarted = (epoch.CurrentEpoch != 0)\n\treturn epoch\n}\n\nfunc TestEpochStartingOneMonthAfterInitGenesis(t *testing.T) {\n\tctx, epochsKeeper := Setup()\n\t// On init genesis, default epochs information is set\n\t// To check init genesis again, should make it fresh status\n\tepochInfos := epochsKeeper.AllEpochInfos(ctx)\n\tfor _, epochInfo := range epochInfos {\n\t\tepochsKeeper.DeleteEpochInfo(ctx, epochInfo.Identifier)\n\t}\n\n\tnow := time.Now()\n\tweek := time.Hour * 24 * 7\n\tmonth := time.Hour * 24 * 30\n\tinitialBlockHeight := int64(1)\n\tctx = ctx.WithBlockHeight(initialBlockHeight).WithBlockTime(now)\n\n\tepochsKeeper.InitGenesis(ctx, types.GenesisState{\n\t\tEpochs: []types.EpochInfo{\n\t\t\t{\n\t\t\t\tIdentifier:              \"monthly\",\n\t\t\t\tStartTime:               now.Add(month),\n\t\t\t\tDuration:                time.Hour * 24 * 30,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: ctx.BlockHeight(),\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    false,\n\t\t\t},\n\t\t},\n\t})\n\n\t// epoch not started yet\n\tepochInfo := epochsKeeper.GetEpochInfo(ctx, \"monthly\")\n\trequire.Equal(t, epochInfo.CurrentEpoch, int64(0))\n\trequire.Equal(t, epochInfo.CurrentEpochStartHeight, initialBlockHeight)\n\trequire.Equal(t, epochInfo.CurrentEpochStartTime, time.Time{})\n\trequire.Equal(t, epochInfo.EpochCountingStarted, false)\n\n\t// after 1 week\n\tctx = ctx.WithBlockHeight(2).WithBlockTime(now.Add(week))\n\tepochsKeeper.BeginBlocker(ctx)\n\n\t// epoch not started yet\n\tepochInfo = epochsKeeper.GetEpochInfo(ctx, \"monthly\")\n\trequire.Equal(t, epochInfo.CurrentEpoch, int64(0))\n\trequire.Equal(t, epochInfo.CurrentEpochStartHeight, initialBlockHeight)\n\trequire.Equal(t, epochInfo.CurrentEpochStartTime, time.Time{})\n\trequire.Equal(t, epochInfo.EpochCountingStarted, false)\n\n\t// after 1 month\n\tctx = ctx.WithBlockHeight(3).WithBlockTime(now.Add(month))\n\tepochsKeeper.BeginBlocker(ctx)\n\n\t// epoch started\n\tepochInfo = epochsKeeper.GetEpochInfo(ctx, \"monthly\")\n\trequire.Equal(t, epochInfo.CurrentEpoch, int64(1))\n\trequire.Equal(t, epochInfo.CurrentEpochStartHeight, ctx.BlockHeight())\n\trequire.Equal(t, epochInfo.CurrentEpochStartTime.UTC().String(), now.Add(month).UTC().String())\n\trequire.Equal(t, epochInfo.EpochCountingStarted, true)\n}\n"
  },
  {
    "path": "x/epochs/keeper/epoch.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/cosmos/gogoproto/proto\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// GetEpochInfo returns epoch info by identifier.\nfunc (k Keeper) GetEpochInfo(ctx context.Context, identifier string) types.EpochInfo {\n\tepoch := types.EpochInfo{}\n\tstore := k.epochStore(ctx)\n\tb := store.Get(append(types.KeyPrefixEpoch, []byte(identifier)...))\n\tif b == nil {\n\t\treturn epoch\n\t}\n\terr := proto.Unmarshal(b, &epoch)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn epoch\n}\n\n// AddEpochInfo adds a new epoch info. Will return an error if the epoch fails validation,\n// or re-uses an existing identifier.\n// This method also sets the start time if left unset, and sets the epoch start height.\nfunc (k Keeper) AddEpochInfo(ctx context.Context, epoch types.EpochInfo) error {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\terr := epoch.Validate()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Check if identifier already exists\n\tif (k.GetEpochInfo(ctx, epoch.Identifier) != types.EpochInfo{}) {\n\t\treturn fmt.Errorf(\"epoch with identifier %s already exists\", epoch.Identifier)\n\t}\n\n\t// Initialize empty and default epoch values\n\tif epoch.StartTime.Equal(time.Time{}) {\n\t\tepoch.StartTime = sdkCtx.BlockTime()\n\t}\n\tepoch.CurrentEpochStartHeight = sdkCtx.BlockHeight()\n\tk.SetEpochInfo(ctx, epoch)\n\treturn nil\n}\n\n// SetEpochInfo set epoch info.\nfunc (k Keeper) SetEpochInfo(ctx context.Context, epoch types.EpochInfo) {\n\tstore := k.epochStore(ctx)\n\tvalue, err := proto.Marshal(&epoch)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tstore.Set(append(types.KeyPrefixEpoch, []byte(epoch.Identifier)...), value)\n}\n\n// DeleteEpochInfo delete epoch info.\nfunc (k Keeper) DeleteEpochInfo(ctx context.Context, identifier string) {\n\tstore := k.epochStore(ctx)\n\tstore.Delete(append(types.KeyPrefixEpoch, []byte(identifier)...))\n}\n\n// IterateEpochInfo iterate through epochs.\nfunc (k Keeper) IterateEpochInfo(ctx context.Context, fn func(index int64, epochInfo types.EpochInfo) (stop bool)) {\n\tstore := k.epochStore(ctx)\n\n\titerator := storetypes.KVStorePrefixIterator(store, types.KeyPrefixEpoch)\n\tdefer iterator.Close()\n\n\ti := int64(0)\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tepoch := types.EpochInfo{}\n\t\terr := proto.Unmarshal(iterator.Value(), &epoch)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tstop := fn(i, epoch)\n\n\t\tif stop {\n\t\t\tbreak\n\t\t}\n\t\ti++\n\t}\n}\n\n// AllEpochInfos iterate through epochs to return all epochs info.\nfunc (k Keeper) AllEpochInfos(ctx sdk.Context) []types.EpochInfo {\n\tepochs := []types.EpochInfo{}\n\tk.IterateEpochInfo(ctx, func(index int64, epochInfo types.EpochInfo) (stop bool) {\n\t\tepochs = append(epochs, epochInfo)\n\t\treturn false\n\t})\n\treturn epochs\n}\n\n// NumBlocksSinceEpochStart returns the number of blocks since the epoch started.\n// if the epoch started on block N, then calling this during block N (after BeforeEpochStart)\n// would return 0.\n// Calling it any point in block N+1 (assuming the epoch doesn't increment) would return 1.\nfunc (k Keeper) NumBlocksSinceEpochStart(ctx sdk.Context, identifier string) (int64, error) {\n\tepoch := k.GetEpochInfo(ctx, identifier)\n\tif (epoch == types.EpochInfo{}) {\n\t\treturn 0, fmt.Errorf(\"epoch with identifier %s not found\", identifier)\n\t}\n\treturn ctx.BlockHeight() - epoch.CurrentEpochStartHeight, nil\n}\n\nfunc (k Keeper) epochStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, types.KeyPrefix())\n\n}\n"
  },
  {
    "path": "x/epochs/keeper/epoch_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"time\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nfunc (s *KeeperTestSuite) TestAddEpochInfo() {\n\tdefaultIdentifier := \"default_add_epoch_info_id\"\n\tdefaultDuration := time.Hour\n\tstartBlockHeight := int64(100)\n\tstartBlockTime := time.Unix(1656907200, 0).UTC()\n\ttests := map[string]struct {\n\t\taddedEpochInfo types.EpochInfo\n\t\texpErr         bool\n\t\texpEpochInfo   types.EpochInfo\n\t}{\n\t\t\"simple_add\": {\n\t\t\taddedEpochInfo: types.EpochInfo{\n\t\t\t\tIdentifier:              defaultIdentifier,\n\t\t\t\tStartTime:               time.Time{},\n\t\t\t\tDuration:                defaultDuration,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: 0,\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    false,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t\texpEpochInfo: types.EpochInfo{\n\t\t\t\tIdentifier:              defaultIdentifier,\n\t\t\t\tStartTime:               startBlockTime,\n\t\t\t\tDuration:                defaultDuration,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: startBlockHeight,\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    false,\n\t\t\t},\n\t\t},\n\t\t\"zero_duration\": {\n\t\t\taddedEpochInfo: types.EpochInfo{\n\t\t\t\tIdentifier:              defaultIdentifier,\n\t\t\t\tStartTime:               time.Time{},\n\t\t\t\tDuration:                time.Duration(0),\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: 0,\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    false,\n\t\t\t},\n\t\t\texpErr: true,\n\t\t},\n\t}\n\tfor name, test := range tests {\n\t\ts.Run(name, func() {\n\t\t\ts.SetupTest()\n\t\t\ts.Ctx = s.Ctx.WithBlockHeight(startBlockHeight).WithBlockTime(startBlockTime)\n\t\t\terr := s.EpochsKeeper.AddEpochInfo(s.Ctx, test.addedEpochInfo)\n\t\t\tif !test.expErr {\n\t\t\t\ts.Require().NoError(err)\n\t\t\t\tactualEpochInfo := s.EpochsKeeper.GetEpochInfo(s.Ctx, test.addedEpochInfo.Identifier)\n\t\t\t\ts.Require().Equal(test.expEpochInfo, actualEpochInfo)\n\t\t\t} else {\n\t\t\t\ts.Require().Error(err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (s *KeeperTestSuite) TestDuplicateAddEpochInfo() {\n\tidentifier := \"duplicate_add_epoch_info\"\n\tepochInfo := types.NewGenesisEpochInfo(identifier, time.Hour*24*30)\n\terr := s.EpochsKeeper.AddEpochInfo(s.Ctx, epochInfo)\n\ts.Require().NoError(err)\n\terr = s.EpochsKeeper.AddEpochInfo(s.Ctx, epochInfo)\n\ts.Require().Error(err)\n}\n\nfunc (s *KeeperTestSuite) TestEpochLifeCycle() {\n\ts.SetupTest()\n\n\tepochInfo := types.NewGenesisEpochInfo(\"monthly\", time.Hour*24*30)\n\ts.EpochsKeeper.AddEpochInfo(s.Ctx, epochInfo)\n\tepochInfoSaved := s.EpochsKeeper.GetEpochInfo(s.Ctx, \"monthly\")\n\t// setup expected epoch info\n\texpectedEpochInfo := epochInfo\n\texpectedEpochInfo.StartTime = s.Ctx.BlockTime()\n\texpectedEpochInfo.CurrentEpochStartHeight = s.Ctx.BlockHeight()\n\ts.Require().Equal(expectedEpochInfo, epochInfoSaved)\n\n\tallEpochs := s.EpochsKeeper.AllEpochInfos(s.Ctx)\n\ts.Require().Len(allEpochs, 4)\n\ts.Require().Equal(allEpochs[0].Identifier, \"day\") // alphabetical order\n\ts.Require().Equal(allEpochs[1].Identifier, \"hour\")\n\ts.Require().Equal(allEpochs[2].Identifier, \"monthly\")\n\ts.Require().Equal(allEpochs[3].Identifier, \"week\")\n}\n"
  },
  {
    "path": "x/epochs/keeper/genesis.go",
    "content": "package keeper\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\n// InitGenesis sets epoch info from genesis\nfunc (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) {\n\tfor _, epoch := range genState.Epochs {\n\t\terr := k.AddEpochInfo(ctx, epoch)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n\n// ExportGenesis returns the capability module's exported genesis.\nfunc (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {\n\tgenesis := types.DefaultGenesis()\n\tgenesis.Epochs = k.AllEpochInfos(ctx)\n\treturn genesis\n}\n"
  },
  {
    "path": "x/epochs/keeper/genesis_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nfunc TestEpochsExportGenesis(t *testing.T) {\n\tctx, epochsKeeper := Setup()\n\n\tchainStartTime := ctx.BlockTime()\n\tchainStartHeight := ctx.BlockHeight()\n\n\tgenesis := epochsKeeper.ExportGenesis(ctx)\n\trequire.Len(t, genesis.Epochs, 3)\n\n\texpectedEpochs := types.DefaultGenesis().Epochs\n\tfor i := 0; i < len(expectedEpochs); i++ {\n\t\texpectedEpochs[i].CurrentEpochStartHeight = chainStartHeight\n\t\texpectedEpochs[i].CurrentEpochStartTime = chainStartTime\n\t}\n\trequire.Equal(t, expectedEpochs, genesis.Epochs)\n}\n\nfunc TestEpochsInitGenesis(t *testing.T) {\n\tctx, epochsKeeper := Setup()\n\n\t// On init genesis, default epochs information is set\n\t// To check init genesis again, should make it fresh status\n\tepochInfos := epochsKeeper.AllEpochInfos(ctx)\n\tfor _, epochInfo := range epochInfos {\n\t\tepochsKeeper.DeleteEpochInfo(ctx, epochInfo.Identifier)\n\t}\n\n\tnow := time.Now()\n\tctx = ctx.WithBlockHeight(1)\n\tctx = ctx.WithBlockTime(now)\n\n\t// test genesisState validation\n\tgenesisState := types.GenesisState{\n\t\tEpochs: []types.EpochInfo{\n\t\t\t{\n\t\t\t\tIdentifier:              \"monthly\",\n\t\t\t\tStartTime:               time.Time{},\n\t\t\t\tDuration:                time.Hour * 24,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: ctx.BlockHeight(),\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tIdentifier:              \"monthly\",\n\t\t\t\tStartTime:               time.Time{},\n\t\t\t\tDuration:                time.Hour * 24,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: ctx.BlockHeight(),\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    true,\n\t\t\t},\n\t\t},\n\t}\n\trequire.EqualError(t, genesisState.Validate(), \"epoch identifier should be unique\")\n\n\tgenesisState = types.GenesisState{\n\t\tEpochs: []types.EpochInfo{\n\t\t\t{\n\t\t\t\tIdentifier:              \"monthly\",\n\t\t\t\tStartTime:               time.Time{},\n\t\t\t\tDuration:                time.Hour * 24,\n\t\t\t\tCurrentEpoch:            0,\n\t\t\t\tCurrentEpochStartHeight: ctx.BlockHeight(),\n\t\t\t\tCurrentEpochStartTime:   time.Time{},\n\t\t\t\tEpochCountingStarted:    true,\n\t\t\t},\n\t\t},\n\t}\n\n\tepochsKeeper.InitGenesis(ctx, genesisState)\n\tepochInfo := epochsKeeper.GetEpochInfo(ctx, \"monthly\")\n\trequire.Equal(t, epochInfo.Identifier, \"monthly\")\n\trequire.Equal(t, epochInfo.StartTime.UTC().String(), now.UTC().String())\n\trequire.Equal(t, epochInfo.Duration, time.Hour*24)\n\trequire.Equal(t, epochInfo.CurrentEpoch, int64(0))\n\trequire.Equal(t, epochInfo.CurrentEpochStartHeight, ctx.BlockHeight())\n\trequire.Equal(t, epochInfo.CurrentEpochStartTime.UTC().String(), time.Time{}.String())\n\trequire.Equal(t, epochInfo.EpochCountingStarted, true)\n}\n"
  },
  {
    "path": "x/epochs/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nvar _ types.QueryServer = Querier{}\n\n// Querier defines a wrapper around the x/epochs keeper providing gRPC method\n// handlers.\ntype Querier struct {\n\t*Keeper\n}\n\n// NewQuerier initializes new querier.\nfunc NewQuerier(k *Keeper) Querier {\n\treturn Querier{Keeper: k}\n}\n\n// EpochInfos provide running epochInfos.\nfunc (q Querier) EpochInfos(c context.Context, _ *types.QueryEpochsInfoRequest) (*types.QueryEpochsInfoResponse, error) {\n\tctx := sdk.UnwrapSDKContext(c)\n\n\treturn &types.QueryEpochsInfoResponse{\n\t\tEpochs: q.Keeper.AllEpochInfos(ctx),\n\t}, nil\n}\n\n// CurrentEpoch provides current epoch of specified identifier.\nfunc (q Querier) CurrentEpoch(c context.Context, req *types.QueryCurrentEpochRequest) (*types.QueryCurrentEpochResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"empty request\")\n\t}\n\tif req.Identifier == \"\" {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"identifier is empty\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tinfo := q.Keeper.GetEpochInfo(ctx, req.Identifier)\n\tif info.Identifier != req.Identifier {\n\t\treturn nil, errors.New(\"not available identifier\")\n\t}\n\n\treturn &types.QueryCurrentEpochResponse{\n\t\tCurrentEpoch: info.CurrentEpoch,\n\t}, nil\n}\n"
  },
  {
    "path": "x/epochs/keeper/grpc_query_test.go",
    "content": "package keeper_test\n\nimport (\n\tgocontext \"context\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nfunc (s *KeeperTestSuite) TestQueryEpochInfos() {\n\ts.SetupTest()\n\tqueryClient := s.queryClient\n\n\t// Check that querying epoch infos on default genesis returns the default genesis epoch infos\n\tepochInfosResponse, err := queryClient.EpochInfos(gocontext.Background(), &types.QueryEpochsInfoRequest{})\n\ts.Require().NoError(err)\n\ts.Require().Len(epochInfosResponse.Epochs, 3)\n\texpectedEpochs := types.DefaultGenesis().Epochs\n\tfor id := range expectedEpochs {\n\t\texpectedEpochs[id].StartTime = s.Ctx.BlockTime()\n\t\texpectedEpochs[id].CurrentEpochStartHeight = s.Ctx.BlockHeight()\n\t}\n\n\ts.Require().Equal(expectedEpochs, epochInfosResponse.Epochs)\n}\n"
  },
  {
    "path": "x/epochs/keeper/hooks.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n)\n\n// AfterEpochEnd gets called at the end of the epoch, end of epoch is the timestamp of first block produced after epoch duration.\nfunc (k Keeper) AfterEpochEnd(ctx context.Context, identifier string, epochNumber int64) {\n\t// Error is not handled as AfterEpochEnd Hooks use ApplyFuncIfNoError()\n\t_ = k.hooks.AfterEpochEnd(ctx, identifier, epochNumber)\n}\n\n// BeforeEpochStart new epoch is next block of epoch end block\nfunc (k Keeper) BeforeEpochStart(ctx context.Context, identifier string, epochNumber int64) {\n\t// Error is not handled as BeforeEpochStart Hooks use ApplyFuncIfNoError()\n\t_ = k.hooks.BeforeEpochStart(ctx, identifier, epochNumber)\n}\n"
  },
  {
    "path": "x/epochs/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/log\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\ntype (\n\tKeeper struct {\n\t\tstoreService store.KVStoreService\n\t\thooks        types.EpochHooks\n\t\tlogger       log.Logger\n\t}\n)\n\n// NewKeeper returns a new keeper by codec and storeKey inputs.\nfunc NewKeeper(\n\tstoreService store.KVStoreService,\n\tlogger log.Logger,\n) *Keeper {\n\treturn &Keeper{\n\t\tstoreService: storeService,\n\t\tlogger:       logger,\n\t}\n}\n\n// Set the epoch hooks.\nfunc (k *Keeper) SetHooks(eh types.EpochHooks) *Keeper {\n\tif k.hooks != nil {\n\t\tpanic(\"cannot set epochs hooks twice\")\n\t}\n\n\tk.hooks = eh\n\n\treturn k\n}\n\nfunc (k Keeper) Logger() log.Logger {\n\treturn k.logger.With(\"module\", fmt.Sprintf(\"x/%s\", types.ModuleName))\n}\n"
  },
  {
    "path": "x/epochs/keeper/keeper_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/log\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\n\t\"github.com/stretchr/testify/suite\"\n\n\tcdcutil \"github.com/cosmos/cosmos-sdk/codec/testutil\"\n\n\tepochskeeper \"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\ntype KeeperTestSuite struct {\n\tsuite.Suite\n\tCtx          sdk.Context\n\tEpochsKeeper *epochskeeper.Keeper\n\tqueryClient  types.QueryClient\n}\n\nfunc (s *KeeperTestSuite) SetupTest() {\n\tctx, epochsKeeper := Setup()\n\ts.Ctx = ctx\n\ts.EpochsKeeper = epochsKeeper\n\tqueryRouter := baseapp.NewGRPCQueryRouter()\n\tcfg := module.NewConfigurator(nil, nil, queryRouter)\n\ttypes.RegisterQueryServer(cfg.QueryServer(), epochskeeper.NewQuerier(s.EpochsKeeper))\n\tgrpcQueryService := &baseapp.QueryServiceTestHelper{\n\t\tGRPCQueryRouter: queryRouter,\n\t\tCtx:             s.Ctx,\n\t}\n\tinterfaceRegistry := cdcutil.CodecOptions{AccAddressPrefix: \"osmo\", ValAddressPrefix: \"osmovaloper\"}.NewInterfaceRegistry()\n\tgrpcQueryService.SetInterfaceRegistry(interfaceRegistry)\n\ts.queryClient = types.NewQueryClient(grpcQueryService)\n}\n\nfunc TestKeeperTestSuite(t *testing.T) {\n\tsuite.Run(t, new(KeeperTestSuite))\n}\n\nfunc Setup() (sdk.Context, *epochskeeper.Keeper) {\n\tepochsStoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tstoreService := runtime.NewKVStoreService(epochsStoreKey)\n\tctx := testutil.DefaultContext(epochsStoreKey, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tepochsKeeper := epochskeeper.NewKeeper(storeService, log.NewNopLogger())\n\tepochsKeeper.SetHooks(types.NewMultiEpochHooks())\n\tctx.WithBlockHeight(1).WithChainID(\"osmosis-1\").WithBlockTime(time.Now().UTC())\n\tepochsKeeper.InitGenesis(ctx, *types.DefaultGenesis())\n\tSetEpochStartTime(ctx, epochsKeeper)\n\treturn ctx, epochsKeeper\n}\n\nfunc SetEpochStartTime(ctx sdk.Context, epochsKeeper *epochskeeper.Keeper) {\n\tfor _, epoch := range epochsKeeper.AllEpochInfos(ctx) {\n\t\tepoch.StartTime = ctx.BlockTime()\n\t\tepochsKeeper.DeleteEpochInfo(ctx, epoch.Identifier)\n\t\terr := epochsKeeper.AddEpochInfo(ctx, epoch)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "x/epochs/module/abci.go",
    "content": "package epochs\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nfunc BeginBlocker(ctx sdk.Context, k *keeper.Keeper) error {\n\n\tdefer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker)\n\tk.IterateEpochInfo(ctx, func(index int64, epochInfo types.EpochInfo) (stop bool) {\n\t\tlogger := k.Logger()\n\n\t\t// If blocktime < initial epoch start time, return\n\t\tif ctx.BlockTime().Before(epochInfo.StartTime) {\n\t\t\treturn\n\t\t}\n\t\t// if epoch counting hasn't started, signal we need to start.\n\t\tshouldInitialEpochStart := !epochInfo.EpochCountingStarted\n\n\t\tepochEndTime := epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration)\n\t\tshouldEpochStart := (ctx.BlockTime().After(epochEndTime)) || shouldInitialEpochStart\n\n\t\tif !shouldEpochStart {\n\t\t\treturn false\n\t\t}\n\t\tepochInfo.CurrentEpochStartHeight = ctx.BlockHeight()\n\n\t\tif shouldInitialEpochStart {\n\t\t\tepochInfo.EpochCountingStarted = true\n\t\t\tepochInfo.CurrentEpoch = 1\n\t\t\tepochInfo.CurrentEpochStartTime = epochInfo.StartTime\n\t\t\tlogger.Info(fmt.Sprintf(\"Starting new epoch with identifier %s epoch number %d\", epochInfo.Identifier, epochInfo.CurrentEpoch))\n\t\t} else {\n\t\t\tctx.EventManager().EmitEvent(\n\t\t\t\tsdk.NewEvent(\n\t\t\t\t\ttypes.EventTypeEpochEnd,\n\t\t\t\t\tsdk.NewAttribute(types.AttributeEpochNumber, fmt.Sprintf(\"%d\", epochInfo.CurrentEpoch)),\n\t\t\t\t),\n\t\t\t)\n\t\t\tk.AfterEpochEnd(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch)\n\t\t\tepochInfo.CurrentEpoch += 1\n\t\t\tepochInfo.CurrentEpochStartTime = epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration)\n\t\t\tlogger.Info(fmt.Sprintf(\"Starting epoch with identifier %s epoch number %d\", epochInfo.Identifier, epochInfo.CurrentEpoch))\n\t\t}\n\n\t\t// emit new epoch start event, set epoch info, and run BeforeEpochStart hook\n\t\tctx.EventManager().EmitEvent(\n\t\t\tsdk.NewEvent(\n\t\t\t\ttypes.EventTypeEpochStart,\n\t\t\t\tsdk.NewAttribute(types.AttributeEpochNumber, fmt.Sprintf(\"%d\", epochInfo.CurrentEpoch)),\n\t\t\t\tsdk.NewAttribute(types.AttributeEpochStartTime, fmt.Sprintf(\"%d\", epochInfo.CurrentEpochStartTime.Unix())),\n\t\t\t),\n\t\t)\n\t\tk.SetEpochInfo(ctx, epochInfo)\n\t\tk.BeforeEpochStart(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch)\n\n\t\treturn false\n\t})\n\treturn nil\n}\n"
  },
  {
    "path": "x/epochs/module/autocli.go",
    "content": "package epochs\n\nimport (\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\tmodulev1beta1 \"github.com/sourcenetwork/sourcehub/api/osmosis/epochs/v1beta1\"\n)\n\n// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: modulev1beta1.Query_ServiceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"EpochInfos\",\n\t\t\t\t\tUse:       \"epoch-infos\",\n\t\t\t\t\tShort:     \"Query running epoch infos.\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"CurrentEpoch\",\n\t\t\t\t\tUse:            \"current-epoch\",\n\t\t\t\t\tShort:          \"Query current epoch by specified identifier.\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"identifier\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/epochs/module/module.go",
    "content": "/*\nOften in the SDK, we would like to run certain code every-so often. The\npurpose of `epochs` module is to allow other modules to set that they\nwould like to be signaled once every period. So another module can\nspecify it wants to execute code once a week, starting at UTC-time = x.\n`epochs` creates a generalized epoch interface to other modules so that\nthey can easily be signalled upon such events.\n  - Contains functionality for querying epoch.\n  - Events for BeginBlock and EndBlock.\n  - Initialization for epoch-related infos.\n*/\n\npackage epochs\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"sort\"\n\n\t\"golang.org/x/exp/maps\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\tabci \"github.com/cometbft/cometbft/abci/types\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\n\tmodulev1beta1 \"github.com/sourcenetwork/sourcehub/api/osmosis/epochs/module/v1beta1\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\nvar (\n\t_ module.AppModule      = AppModule{}\n\t_ module.AppModuleBasic = AppModuleBasic{}\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic implements the AppModuleBasic interface for the epochs module.\ntype AppModuleBasic struct{}\n\nfunc NewAppModuleBasic() AppModuleBasic {\n\treturn AppModuleBasic{}\n}\n\n// Name returns the epochs module's name.\nfunc (AppModuleBasic) Name() string {\n\treturn types.ModuleName\n}\n\n// RegisterLegacyAminoCodec registers the module's Amino codec that properly handles protobuf types with Any's.\nfunc (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}\n\n// RegisterInterfaces registers the module's interface types.\nfunc (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {}\n\n// DefaultGenesis returns the epochs module's default genesis state.\nfunc (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(types.DefaultGenesis())\n}\n\n// ValidateGenesis performs genesis state validation for the epochs module.\nfunc (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {\n\tvar genState types.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &genState); err != nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal %s genesis state: %w\", types.ModuleName, err)\n\t}\n\treturn genState.Validate()\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.\nfunc (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {\n\ttypes.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements the AppModule interface for the epochs module.\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper *keeper.Keeper\n}\n\nfunc NewAppModule(keeper *keeper.Keeper) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: NewAppModuleBasic(),\n\t\tkeeper:         keeper,\n\t}\n}\n\n// Name returns the epochs module's name.\nfunc (am AppModule) Name() string {\n\treturn am.AppModuleBasic.Name()\n}\n\n// QuerierRoute returns the epochs module's query routing key.\nfunc (AppModule) QuerierRoute() string { return types.QuerierRoute }\n\n// RegisterServices registers a GRPC query service to respond to the\n// module-specific GRPC queries.\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\ttypes.RegisterQueryServer(cfg.QueryServer(), keeper.NewQuerier(am.keeper))\n}\n\n// RegisterInvariants registers the epochs module's invariants.\nfunc (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}\n\n// InitGenesis performs the epochs module's genesis initialization. It returns\n// no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate {\n\tvar genState types.GenesisState\n\t// Initialize global index to index in genesis state\n\tcdc.MustUnmarshalJSON(gs, &genState)\n\n\tam.keeper.InitGenesis(ctx, genState)\n\n\treturn []abci.ValidatorUpdate{}\n}\n\n// ExportGenesis returns the epochs module's exported genesis state as raw JSON bytes.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgenState := am.keeper.ExportGenesis(ctx)\n\treturn cdc.MustMarshalJSON(genState)\n}\n\n// ConsensusVersion implements AppModule/ConsensusVersion.\nfunc (AppModule) ConsensusVersion() uint64 { return 1 }\n\n// BeginBlock contains the logic that is automatically triggered at the beginning of each block.\n// The begin block implementation is optional.\nfunc (am AppModule) BeginBlock(ctx context.Context) error {\n\n\tc := sdk.UnwrapSDKContext(ctx)\n\treturn BeginBlocker(c, am.keeper)\n}\n\n// EndBlock contains the logic that is automatically triggered at the end of each block.\n// The end block implementation is optional.\nfunc (am AppModule) EndBlock(_ context.Context) error {\n\treturn nil\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// ----------------------------------------------------------------------------\n// App Wiring Setup\n// ----------------------------------------------------------------------------\n\nfunc init() {\n\tappmodule.Register(\n\t\t&modulev1beta1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t\tappmodule.Invoke(InvokeSetEpochsHooks),\n\t)\n}\n\ntype ModuleInputs struct {\n\tdepinject.In\n\n\tConfig       *modulev1beta1.Module\n\tStoreService store.KVStoreService\n\tLogger       log.Logger\n}\n\ntype ModuleOutputs struct {\n\tdepinject.Out\n\n\tEpochsKeeper *keeper.Keeper\n\tModule       appmodule.AppModule\n}\n\nfunc ProvideModule(in ModuleInputs) ModuleOutputs {\n\n\tk := keeper.NewKeeper(\n\t\tin.StoreService,\n\t\tin.Logger)\n\n\tm := NewAppModule(\n\t\tk,\n\t)\n\n\treturn ModuleOutputs{EpochsKeeper: k, Module: m}\n}\n\nfunc InvokeSetEpochsHooks(\n\tconfig *modulev1beta1.Module,\n\tkeeper *keeper.Keeper,\n\tepochsHooks map[string]types.EpochsHooksWrapper,\n) error {\n\t// all arguments to invokers are optional\n\tif keeper == nil || config == nil {\n\t\treturn nil\n\t}\n\n\tmodNames := maps.Keys(epochsHooks)\n\torder := config.HooksOrder\n\tif len(order) == 0 {\n\t\torder = modNames\n\t\tsort.Strings(order)\n\t}\n\n\tif len(order) != len(modNames) {\n\t\treturn fmt.Errorf(\"len(hooks_order: %v) != len(hooks modules: %v)\", order, modNames)\n\t}\n\n\tif len(modNames) == 0 {\n\t\treturn nil\n\t}\n\n\tvar multiHooks types.MultiEpochHooks\n\tfor _, modName := range order {\n\t\thook, ok := epochsHooks[modName]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"can't find epoch hooks for module %s\", modName)\n\t\t}\n\n\t\tmultiHooks = append(multiHooks, hook)\n\t}\n\n\tkeeper.SetHooks(multiHooks)\n\treturn nil\n}\n"
  },
  {
    "path": "x/epochs/osmoutils/cache_ctx.go",
    "content": "package osmoutils\n\nimport (\n\tcontext \"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\n\t\"cosmossdk.io/store/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// This function lets you run the function f, but if there's an error or panic\n// drop the state machine change and log the error.\n// If there is no error, proceeds as normal (but with some slowdown due to SDK store weirdness)\n// Try to avoid usage of iterators in f.\n//\n// If its an out of gas panic, this function will also panic like in normal tx execution flow.\n// This is still safe for beginblock / endblock code though, as they do not have out of gas panics.\nfunc ApplyFuncIfNoError(ctx context.Context, f func(ctx context.Context) error) (err error) {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\treturn applyFunc(ctx, f, sdkCtx.Logger().Error)\n}\n\n// ApplyFuncIfNoErrorLogToDebug is the same as ApplyFuncIfNoError, but sends logs to debug instead of error if there is an error.\nfunc ApplyFuncIfNoErrorLogToDebug(ctx context.Context, f func(ctx context.Context) error) (err error) {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\treturn applyFunc(ctx, f, sdkCtx.Logger().Debug)\n}\n\nfunc applyFunc(ctx context.Context, f func(ctx context.Context) error, logFunc func(string, ...interface{})) (err error) {\n\t// Add a panic safeguard\n\tdefer func() {\n\t\tif recoveryError := recover(); recoveryError != nil {\n\t\t\tif isErr, _ := IsOutOfGasError(recoveryError); isErr {\n\t\t\t\t// We panic with the same error, to replicate the normal tx execution flow.\n\t\t\t\tpanic(recoveryError)\n\t\t\t} else {\n\t\t\t\tPrintPanicRecoveryError(ctx, recoveryError)\n\t\t\t\terr = errors.New(\"panic occurred during execution\")\n\t\t\t}\n\t\t}\n\t}()\n\t// makes a new cache context, which all state changes get wrapped inside of.\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tcacheCtx, write := sdkCtx.CacheContext()\n\terr = f(cacheCtx)\n\tif err != nil {\n\t\tlogFunc(err.Error())\n\t} else {\n\t\t// no error, write the output of f\n\t\twrite()\n\t}\n\treturn err\n}\n\n// Frustratingly, this has to return the error descriptor, not an actual error itself\n// because the SDK errors here are not actually errors. (They don't implement error interface)\nfunc IsOutOfGasError(err any) (bool, string) {\n\tswitch e := err.(type) {\n\tcase types.ErrorOutOfGas:\n\t\treturn true, e.Descriptor\n\tcase types.ErrorGasOverflow:\n\t\treturn true, e.Descriptor\n\tdefault:\n\t\treturn false, \"\"\n\t}\n}\n\n// PrintPanicRecoveryError error logs the recoveryError, along with the stacktrace, if it can be parsed.\n// If not emits them to stdout.\nfunc PrintPanicRecoveryError(ctx context.Context, recoveryError interface{}) {\n\tlogger := sdk.UnwrapSDKContext(ctx).Logger()\n\terrStackTrace := string(debug.Stack())\n\tswitch e := recoveryError.(type) {\n\tcase types.ErrorOutOfGas:\n\t\tlogger.Debug(\"out of gas error inside panic recovery block: \" + e.Descriptor)\n\t\treturn\n\tcase string:\n\t\tlogger.Error(\"Recovering from (string) panic: \" + e)\n\tcase runtime.Error:\n\t\tlogger.Error(\"recovered (runtime.Error) panic: \" + e.Error())\n\tcase error:\n\t\tlogger.Error(\"recovered (error) panic: \" + e.Error())\n\tdefault:\n\t\tlogger.Error(\"recovered (default) panic. Could not capture logs in ctx, see stdout\")\n\t\tfmt.Println(\"Recovering from panic \", recoveryError)\n\t\tdebug.PrintStack()\n\t\treturn\n\t}\n\tlogger.Error(\"stack trace: \" + errStackTrace)\n}\n"
  },
  {
    "path": "x/epochs/osmoutils/slice_helper.go",
    "content": "package osmoutils\n\nimport (\n\t\"math/rand\"\n\t\"reflect\"\n\t\"sort\"\n\n\t\"golang.org/x/exp/constraints\"\n)\n\n// SortSlice sorts a slice of type T elements that implement constraints.Ordered.\n// Mutates input slice s\nfunc SortSlice[T constraints.Ordered](s []T) {\n\tsort.Slice(s, func(i, j int) bool {\n\t\treturn s[i] < s[j]\n\t})\n}\n\nfunc Filter[T interface{}](filter func(T) bool, s []T) []T {\n\tfilteredSlice := []T{}\n\tfor _, s := range s {\n\t\tif filter(s) {\n\t\t\tfilteredSlice = append(filteredSlice, s)\n\t\t}\n\t}\n\treturn filteredSlice\n}\n\n// ReverseSlice reverses the input slice in place.\n// Does mutate argument.\nfunc ReverseSlice[T any](s []T) []T {\n\tmaxIndex := len(s)\n\tfor i := 0; i < maxIndex/2; i++ {\n\t\ttemp := s[i]\n\t\ts[i] = s[maxIndex-i-1]\n\t\ts[maxIndex-1-i] = temp\n\t}\n\treturn s\n}\n\n// ContainsDuplicate checks if there are any duplicate\n// elements in the slice.\nfunc ContainsDuplicate[T any](arr []T) bool {\n\tvisited := make(map[any]bool, 0)\n\tfor i := 0; i < len(arr); i++ {\n\t\tif visited[arr[i]] {\n\t\t\treturn true\n\t\t} else {\n\t\t\tvisited[arr[i]] = true\n\t\t}\n\t}\n\treturn false\n}\n\n// ContainsDuplicateDeepEqual returns true if there are duplicates\n// in the slice by performing deep comparison. This is useful\n// for comparing matrices or slices of pointers.\n// Returns false if there are no deep equal duplicates.\nfunc ContainsDuplicateDeepEqual[T any](multihops []T) bool {\n\tfor i := 0; i < len(multihops)-1; i++ {\n\t\tif reflect.DeepEqual(multihops[i], multihops[i+1]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype LessFunc[T any] func(a, b T) bool\n\n// MergeSlices efficiently merges two sorted slices into a single sorted slice.\n// The resulting slice contains all elements from slice1 and slice2, sorted according to the less function.\n// The input slices must be sorted in ascending order according to the less function.\n// The less function takes two elements of type T and returns a boolean value indicating whether the first element is less than the second element.\n// The function returns a new slice containing all elements from slice1 and slice2, sorted according to the less function.\n// The function does not modify the input slices.\nfunc MergeSlices[T any](slice1, slice2 []T, less LessFunc[T]) []T {\n\tresult := make([]T, 0, len(slice1)+len(slice2))\n\ti, j := 0, 0\n\n\tfor i < len(slice1) && j < len(slice2) {\n\t\tif less(slice1[i], slice2[j]) {\n\t\t\tresult = append(result, slice1[i])\n\t\t\ti++\n\t\t} else {\n\t\t\tresult = append(result, slice2[j])\n\t\t\tj++\n\t\t}\n\t}\n\n\t// Append any remaining elements from slice1 and slice2\n\tresult = append(result, slice1[i:]...)\n\tresult = append(result, slice2[j:]...)\n\n\treturn result\n}\n\n// Contains returns true if the slice contains the item, false otherwise.\nfunc Contains[T comparable](slice []T, item T) bool {\n\tfor _, a := range slice {\n\t\tif a == item {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// GetRandomSubset returns a random subset of the given slice\nfunc GetRandomSubset[T any](slice []T) []T {\n\tif len(slice) == 0 {\n\t\treturn []T{}\n\t}\n\n\trand.Shuffle(len(slice), func(i, j int) {\n\t\tslice[i], slice[j] = slice[j], slice[i]\n\t})\n\n\tn := rand.Intn(len(slice))\n\treturn slice[:n]\n}\n"
  },
  {
    "path": "x/epochs/types/cache_ctx.go",
    "content": "package types\n\nimport (\n\tcontext \"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"runtime/debug\"\n\n\t\"cosmossdk.io/store/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// This function lets you run the function f, but if there's an error or panic\n// drop the state machine change and log the error.\n// If there is no error, proceeds as normal (but with some slowdown due to SDK store weirdness)\n// Try to avoid usage of iterators in f.\n//\n// If its an out of gas panic, this function will also panic like in normal tx execution flow.\n// This is still safe for beginblock / endblock code though, as they do not have out of gas panics.\nfunc ApplyFuncIfNoError(ctx context.Context, f func(ctx context.Context) error) (err error) {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\treturn applyFunc(ctx, f, sdkCtx.Logger().Error)\n}\n\n// ApplyFuncIfNoErrorLogToDebug is the same as ApplyFuncIfNoError, but sends logs to debug instead of error if there is an error.\nfunc ApplyFuncIfNoErrorLogToDebug(ctx context.Context, f func(ctx context.Context) error) (err error) {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\treturn applyFunc(ctx, f, sdkCtx.Logger().Debug)\n}\n\nfunc applyFunc(ctx context.Context, f func(ctx context.Context) error, logFunc func(string, ...interface{})) (err error) {\n\t// Add a panic safeguard\n\tdefer func() {\n\t\tif recoveryError := recover(); recoveryError != nil {\n\t\t\tif isErr, _ := IsOutOfGasError(recoveryError); isErr {\n\t\t\t\t// We panic with the same error, to replicate the normal tx execution flow.\n\t\t\t\tpanic(recoveryError)\n\t\t\t} else {\n\t\t\t\tPrintPanicRecoveryError(ctx, recoveryError)\n\t\t\t\terr = errors.New(\"panic occurred during execution\")\n\t\t\t}\n\t\t}\n\t}()\n\t// makes a new cache context, which all state changes get wrapped inside of.\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tcacheCtx, write := sdkCtx.CacheContext()\n\terr = f(cacheCtx)\n\tif err != nil {\n\t\tlogFunc(err.Error())\n\t} else {\n\t\t// no error, write the output of f\n\t\twrite()\n\t}\n\treturn err\n}\n\n// Frustratingly, this has to return the error descriptor, not an actual error itself\n// because the SDK errors here are not actually errors. (They don't implement error interface)\nfunc IsOutOfGasError(err any) (bool, string) {\n\tswitch e := err.(type) {\n\tcase types.ErrorOutOfGas:\n\t\treturn true, e.Descriptor\n\tcase types.ErrorGasOverflow:\n\t\treturn true, e.Descriptor\n\tdefault:\n\t\treturn false, \"\"\n\t}\n}\n\n// PrintPanicRecoveryError error logs the recoveryError, along with the stacktrace, if it can be parsed.\n// If not emits them to stdout.\nfunc PrintPanicRecoveryError(ctx context.Context, recoveryError interface{}) {\n\tlogger := sdk.UnwrapSDKContext(ctx).Logger()\n\terrStackTrace := string(debug.Stack())\n\tswitch e := recoveryError.(type) {\n\tcase types.ErrorOutOfGas:\n\t\tlogger.Debug(\"out of gas error inside panic recovery block: \" + e.Descriptor)\n\t\treturn\n\tcase string:\n\t\tlogger.Error(\"Recovering from (string) panic: \" + e)\n\tcase runtime.Error:\n\t\tlogger.Error(\"recovered (runtime.Error) panic: \" + e.Error())\n\tcase error:\n\t\tlogger.Error(\"recovered (error) panic: \" + e.Error())\n\tdefault:\n\t\tlogger.Error(\"recovered (default) panic. Could not capture logs in ctx, see stdout\")\n\t\tfmt.Println(\"Recovering from panic \", recoveryError)\n\t\tdebug.PrintStack()\n\t\treturn\n\t}\n\tlogger.Error(\"stack trace: \" + errStackTrace)\n}\n"
  },
  {
    "path": "x/epochs/types/doc.go",
    "content": "/*\nPackage types translates gRPC into RESTful JSON APIs.\n*/\npackage types\n"
  },
  {
    "path": "x/epochs/types/events.go",
    "content": "package types\n\nconst (\n\tEventTypeEpochEnd   = \"epoch_end\"\n\tEventTypeEpochStart = \"epoch_start\"\n\n\tAttributeEpochNumber    = \"epoch_number\"\n\tAttributeEpochStartTime = \"start_time\"\n)\n"
  },
  {
    "path": "x/epochs/types/expected_keepers.go",
    "content": "package types\n\n// EpochsHooksWrapper is a wrapper for modules to inject EpochsHooks using depinject.\ntype EpochsHooksWrapper struct{ EpochHooks }\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (EpochsHooksWrapper) IsOnePerModuleType() {}\n"
  },
  {
    "path": "x/epochs/types/genesis.go",
    "content": "package types\n\nimport (\n\t\"errors\"\n\t\"time\"\n)\n\n// DefaultIndex is the default epochs global index.\nconst DefaultIndex uint64 = 1\n\nfunc NewGenesisState(epochs []EpochInfo) *GenesisState {\n\treturn &GenesisState{Epochs: epochs}\n}\n\n// DefaultGenesis returns the default epochs genesis state.\nfunc DefaultGenesis() *GenesisState {\n\tepochs := []EpochInfo{\n\t\tNewGenesisEpochInfo(\"day\", time.Hour*24), // alphabetical order\n\t\tNewGenesisEpochInfo(\"hour\", time.Hour),\n\t\tNewGenesisEpochInfo(\"week\", time.Hour*24*7),\n\t}\n\treturn NewGenesisState(epochs)\n}\n\n// Validate performs basic genesis state validation returning an error upon any\n// failure.\nfunc (gs GenesisState) Validate() error {\n\tepochIdentifiers := map[string]bool{}\n\tfor _, epoch := range gs.Epochs {\n\t\tif err := epoch.Validate(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif epochIdentifiers[epoch.Identifier] {\n\t\t\treturn errors.New(\"epoch identifier should be unique\")\n\t\t}\n\t\tepochIdentifiers[epoch.Identifier] = true\n\t}\n\treturn nil\n}\n\n// Validate also validates epoch info.\nfunc (epoch EpochInfo) Validate() error {\n\tif epoch.Identifier == \"\" {\n\t\treturn errors.New(\"epoch identifier should NOT be empty\")\n\t}\n\tif epoch.Duration == 0 {\n\t\treturn errors.New(\"epoch duration should NOT be 0\")\n\t}\n\tif epoch.CurrentEpoch < 0 {\n\t\treturn errors.New(\"epoch CurrentEpoch must be non-negative\")\n\t}\n\tif epoch.CurrentEpochStartHeight < 0 {\n\t\treturn errors.New(\"epoch CurrentEpochStartHeight must be non-negative\")\n\t}\n\treturn nil\n}\n\nfunc NewGenesisEpochInfo(identifier string, duration time.Duration) EpochInfo {\n\treturn EpochInfo{\n\t\tIdentifier:              identifier,\n\t\tStartTime:               time.Time{},\n\t\tDuration:                duration,\n\t\tCurrentEpoch:            0,\n\t\tCurrentEpochStartHeight: 0,\n\t\tCurrentEpochStartTime:   time.Time{},\n\t\tEpochCountingStarted:    false,\n\t}\n}\n"
  },
  {
    "path": "x/epochs/types/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: osmosis/epochs/v1beta1/genesis.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// EpochInfo is a struct that describes the data going into\n// a timer defined by the x/epochs module.\ntype EpochInfo struct {\n\t// identifier is a unique reference to this particular timer.\n\tIdentifier string `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n\t// start_time is the time at which the timer first ever ticks.\n\t// If start_time is in the future, the epoch will not begin until the start\n\t// time.\n\tStartTime time.Time `protobuf:\"bytes,2,opt,name=start_time,json=startTime,proto3,stdtime\" json:\"start_time\" yaml:\"start_time\"`\n\t// duration is the time in between epoch ticks.\n\t// In order for intended behavior to be met, duration should\n\t// be greater than the chains expected block time.\n\t// Duration must be non-zero.\n\tDuration time.Duration `protobuf:\"bytes,3,opt,name=duration,proto3,stdduration\" json:\"duration,omitempty\" yaml:\"duration\"`\n\t// current_epoch is the current epoch number, or in other words,\n\t// how many times has the timer 'ticked'.\n\t// The first tick (current_epoch=1) is defined as\n\t// the first block whose blocktime is greater than the EpochInfo start_time.\n\tCurrentEpoch int64 `protobuf:\"varint,4,opt,name=current_epoch,json=currentEpoch,proto3\" json:\"current_epoch,omitempty\"`\n\t// current_epoch_start_time describes the start time of the current timer\n\t// interval. The interval is (current_epoch_start_time,\n\t// current_epoch_start_time + duration] When the timer ticks, this is set to\n\t// current_epoch_start_time = last_epoch_start_time + duration only one timer\n\t// tick for a given identifier can occur per block.\n\t//\n\t// NOTE! The current_epoch_start_time may diverge significantly from the\n\t// wall-clock time the epoch began at. Wall-clock time of epoch start may be\n\t// >> current_epoch_start_time. Suppose current_epoch_start_time = 10,\n\t// duration = 5. Suppose the chain goes offline at t=14, and comes back online\n\t// at t=30, and produces blocks at every successive time. (t=31, 32, etc.)\n\t// * The t=30 block will start the epoch for (10, 15]\n\t// * The t=31 block will start the epoch for (15, 20]\n\t// * The t=32 block will start the epoch for (20, 25]\n\t// * The t=33 block will start the epoch for (25, 30]\n\t// * The t=34 block will start the epoch for (30, 35]\n\t// * The **t=36** block will start the epoch for (35, 40]\n\tCurrentEpochStartTime time.Time `protobuf:\"bytes,5,opt,name=current_epoch_start_time,json=currentEpochStartTime,proto3,stdtime\" json:\"current_epoch_start_time\" yaml:\"current_epoch_start_time\"`\n\t// epoch_counting_started is a boolean, that indicates whether this\n\t// epoch timer has began yet.\n\tEpochCountingStarted bool `protobuf:\"varint,6,opt,name=epoch_counting_started,json=epochCountingStarted,proto3\" json:\"epoch_counting_started,omitempty\"`\n\t// current_epoch_start_height is the block height at which the current epoch\n\t// started. (The block height at which the timer last ticked)\n\tCurrentEpochStartHeight int64 `protobuf:\"varint,8,opt,name=current_epoch_start_height,json=currentEpochStartHeight,proto3\" json:\"current_epoch_start_height,omitempty\"`\n}\n\nfunc (m *EpochInfo) Reset()         { *m = EpochInfo{} }\nfunc (m *EpochInfo) String() string { return proto.CompactTextString(m) }\nfunc (*EpochInfo) ProtoMessage()    {}\nfunc (*EpochInfo) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_7dd2db84ad8300ca, []int{0}\n}\nfunc (m *EpochInfo) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EpochInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EpochInfo.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EpochInfo) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EpochInfo.Merge(m, src)\n}\nfunc (m *EpochInfo) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EpochInfo) XXX_DiscardUnknown() {\n\txxx_messageInfo_EpochInfo.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EpochInfo proto.InternalMessageInfo\n\nfunc (m *EpochInfo) GetIdentifier() string {\n\tif m != nil {\n\t\treturn m.Identifier\n\t}\n\treturn \"\"\n}\n\nfunc (m *EpochInfo) GetStartTime() time.Time {\n\tif m != nil {\n\t\treturn m.StartTime\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *EpochInfo) GetDuration() time.Duration {\n\tif m != nil {\n\t\treturn m.Duration\n\t}\n\treturn 0\n}\n\nfunc (m *EpochInfo) GetCurrentEpoch() int64 {\n\tif m != nil {\n\t\treturn m.CurrentEpoch\n\t}\n\treturn 0\n}\n\nfunc (m *EpochInfo) GetCurrentEpochStartTime() time.Time {\n\tif m != nil {\n\t\treturn m.CurrentEpochStartTime\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *EpochInfo) GetEpochCountingStarted() bool {\n\tif m != nil {\n\t\treturn m.EpochCountingStarted\n\t}\n\treturn false\n}\n\nfunc (m *EpochInfo) GetCurrentEpochStartHeight() int64 {\n\tif m != nil {\n\t\treturn m.CurrentEpochStartHeight\n\t}\n\treturn 0\n}\n\n// GenesisState defines the epochs module's genesis state.\ntype GenesisState struct {\n\tEpochs []EpochInfo `protobuf:\"bytes,1,rep,name=epochs,proto3\" json:\"epochs\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_7dd2db84ad8300ca, []int{1}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetEpochs() []EpochInfo {\n\tif m != nil {\n\t\treturn m.Epochs\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*EpochInfo)(nil), \"osmosis.epochs.v1beta1.EpochInfo\")\n\tproto.RegisterType((*GenesisState)(nil), \"osmosis.epochs.v1beta1.GenesisState\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"osmosis/epochs/v1beta1/genesis.proto\", fileDescriptor_7dd2db84ad8300ca)\n}\n\nvar fileDescriptor_7dd2db84ad8300ca = []byte{\n\t// 485 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0x3f, 0x8f, 0xd3, 0x30,\n\t0x18, 0xc6, 0x6b, 0x5a, 0x4a, 0xeb, 0x3b, 0x04, 0x44, 0xc7, 0x11, 0x2a, 0x91, 0x84, 0xc0, 0x10,\n\t0x09, 0xe4, 0xa8, 0x07, 0x13, 0x0c, 0x48, 0x05, 0xc4, 0xbf, 0x01, 0x29, 0x65, 0x40, 0x2c, 0x55,\n\t0x92, 0xba, 0x89, 0xc5, 0x25, 0x8e, 0xe2, 0x37, 0x40, 0x37, 0x3e, 0x42, 0x47, 0x3e, 0xd2, 0x8d,\n\t0x37, 0x32, 0x15, 0xd4, 0x6e, 0x8c, 0xf7, 0x09, 0x50, 0x6c, 0xa7, 0x14, 0xee, 0xd0, 0x6d, 0xb1,\n\t0x9f, 0xdf, 0xfb, 0x3c, 0x7e, 0x5f, 0xbd, 0xc1, 0x77, 0xb9, 0xc8, 0xb8, 0x60, 0xc2, 0xa7, 0x05,\n\t0x8f, 0x53, 0xe1, 0x7f, 0x1a, 0x46, 0x14, 0xc2, 0xa1, 0x9f, 0xd0, 0x9c, 0x0a, 0x26, 0x48, 0x51,\n\t0x72, 0xe0, 0xc6, 0xbe, 0xa6, 0x88, 0xa2, 0x88, 0xa6, 0x06, 0x7b, 0x09, 0x4f, 0xb8, 0x44, 0xfc,\n\t0xfa, 0x4b, 0xd1, 0x03, 0x2b, 0xe1, 0x3c, 0x39, 0xa4, 0xbe, 0x3c, 0x45, 0xd5, 0xcc, 0x9f, 0x56,\n\t0x65, 0x08, 0x8c, 0xe7, 0x5a, 0xb7, 0xff, 0xd5, 0x81, 0x65, 0x54, 0x40, 0x98, 0x15, 0x0a, 0x70,\n\t0x17, 0x1d, 0xdc, 0x7f, 0x5e, 0x27, 0xbd, 0xca, 0x67, 0xdc, 0xb0, 0x30, 0x66, 0x53, 0x9a, 0x03,\n\t0x9b, 0x31, 0x5a, 0x9a, 0xc8, 0x41, 0x5e, 0x3f, 0xd8, 0xba, 0x31, 0xde, 0x63, 0x2c, 0x20, 0x2c,\n\t0x61, 0x52, 0xdb, 0x98, 0x17, 0x1c, 0xe4, 0xed, 0x1c, 0x0c, 0x88, 0xca, 0x20, 0x4d, 0x06, 0x79,\n\t0xd7, 0x64, 0x8c, 0x6e, 0x1d, 0x2d, 0xed, 0xd6, 0xc9, 0xd2, 0xbe, 0x36, 0x0f, 0xb3, 0xc3, 0x47,\n\t0xee, 0x9f, 0x5a, 0x77, 0xf1, 0xc3, 0x46, 0x41, 0x5f, 0x5e, 0xd4, 0xb8, 0x91, 0xe2, 0x5e, 0xf3,\n\t0x74, 0xb3, 0x2d, 0x7d, 0x6f, 0x9e, 0xf2, 0x7d, 0xa6, 0x81, 0xd1, 0xb0, 0xb6, 0xfd, 0xb5, 0xb4,\n\t0x8d, 0xa6, 0xe4, 0x3e, 0xcf, 0x18, 0xd0, 0xac, 0x80, 0xf9, 0xc9, 0xd2, 0xbe, 0xa2, 0xc2, 0x1a,\n\t0xcd, 0xfd, 0x56, 0x47, 0x6d, 0xdc, 0x8d, 0x3b, 0xf8, 0x72, 0x5c, 0x95, 0x25, 0xcd, 0x61, 0x22,\n\t0x47, 0x6c, 0x76, 0x1c, 0xe4, 0xb5, 0x83, 0x5d, 0x7d, 0x29, 0x87, 0x61, 0x7c, 0x45, 0xd8, 0xfc,\n\t0x8b, 0x9a, 0x6c, 0xf5, 0x7d, 0xf1, 0xdc, 0xbe, 0xef, 0xe9, 0xbe, 0x6d, 0xf5, 0x94, 0xff, 0x39,\n\t0xa9, 0x29, 0x5c, 0xdf, 0x4e, 0x1e, 0x6f, 0x26, 0xf2, 0x10, 0xef, 0x2b, 0x3e, 0xe6, 0x55, 0x0e,\n\t0x2c, 0x4f, 0x54, 0x21, 0x9d, 0x9a, 0x5d, 0x07, 0x79, 0xbd, 0x60, 0x4f, 0xaa, 0x4f, 0xb5, 0x38,\n\t0x56, 0x9a, 0xf1, 0x18, 0x0f, 0xce, 0x4a, 0x4b, 0x29, 0x4b, 0x52, 0x30, 0x7b, 0xb2, 0xd5, 0x1b,\n\t0xa7, 0x02, 0x5f, 0x4a, 0xf9, 0x75, 0xa7, 0x77, 0xe9, 0x6a, 0xcf, 0x7d, 0x8b, 0x77, 0x5f, 0xa8,\n\t0x95, 0x1c, 0x43, 0x08, 0xd4, 0x78, 0x82, 0xbb, 0x6a, 0x17, 0x4d, 0xe4, 0xb4, 0xbd, 0x9d, 0x83,\n\t0xdb, 0xe4, 0xec, 0x15, 0x25, 0x9b, 0x3d, 0x1a, 0x75, 0xea, 0xfe, 0x03, 0x5d, 0x36, 0x7a, 0x73,\n\t0xb4, 0xb2, 0xd0, 0xf1, 0xca, 0x42, 0x3f, 0x57, 0x16, 0x5a, 0xac, 0xad, 0xd6, 0xf1, 0xda, 0x6a,\n\t0x7d, 0x5f, 0x5b, 0xad, 0x0f, 0xc3, 0x84, 0x41, 0x5a, 0x45, 0x24, 0xe6, 0x99, 0x2f, 0x78, 0x55,\n\t0xc6, 0x34, 0xa7, 0xf0, 0x99, 0x97, 0x1f, 0xf5, 0x29, 0xad, 0x22, 0xff, 0x4b, 0xf3, 0xbf, 0xc0,\n\t0xbc, 0xa0, 0x22, 0xea, 0xca, 0x71, 0x3f, 0xf8, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x0b, 0xa3, 0x6b,\n\t0xf7, 0x4e, 0x03, 0x00, 0x00,\n}\n\nfunc (m *EpochInfo) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EpochInfo) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EpochInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.CurrentEpochStartHeight != 0 {\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(m.CurrentEpochStartHeight))\n\t\ti--\n\t\tdAtA[i] = 0x40\n\t}\n\tif m.EpochCountingStarted {\n\t\ti--\n\t\tif m.EpochCountingStarted {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CurrentEpochStartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CurrentEpochStartTime):])\n\tif err1 != nil {\n\t\treturn 0, err1\n\t}\n\ti -= n1\n\ti = encodeVarintGenesis(dAtA, i, uint64(n1))\n\ti--\n\tdAtA[i] = 0x2a\n\tif m.CurrentEpoch != 0 {\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(m.CurrentEpoch))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tn2, err2 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.Duration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Duration):])\n\tif err2 != nil {\n\t\treturn 0, err2\n\t}\n\ti -= n2\n\ti = encodeVarintGenesis(dAtA, i, uint64(n2))\n\ti--\n\tdAtA[i] = 0x1a\n\tn3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):])\n\tif err3 != nil {\n\t\treturn 0, err3\n\t}\n\ti -= n3\n\ti = encodeVarintGenesis(dAtA, i, uint64(n3))\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Identifier) > 0 {\n\t\ti -= len(m.Identifier)\n\t\tcopy(dAtA[i:], m.Identifier)\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(len(m.Identifier)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Epochs) > 0 {\n\t\tfor iNdEx := len(m.Epochs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Epochs[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *EpochInfo) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Identifier)\n\tif l > 0 {\n\t\tn += 1 + l + sovGenesis(uint64(l))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime)\n\tn += 1 + l + sovGenesis(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Duration)\n\tn += 1 + l + sovGenesis(uint64(l))\n\tif m.CurrentEpoch != 0 {\n\t\tn += 1 + sovGenesis(uint64(m.CurrentEpoch))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CurrentEpochStartTime)\n\tn += 1 + l + sovGenesis(uint64(l))\n\tif m.EpochCountingStarted {\n\t\tn += 2\n\t}\n\tif m.CurrentEpochStartHeight != 0 {\n\t\tn += 1 + sovGenesis(uint64(m.CurrentEpochStartHeight))\n\t}\n\treturn n\n}\n\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Epochs) > 0 {\n\t\tfor _, e := range m.Epochs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *EpochInfo) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EpochInfo: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EpochInfo: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Identifier\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Identifier = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StartTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Duration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.Duration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpoch\", wireType)\n\t\t\t}\n\t\t\tm.CurrentEpoch = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CurrentEpoch |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpochStartTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CurrentEpochStartTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field EpochCountingStarted\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.EpochCountingStarted = bool(v != 0)\n\t\tcase 8:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpochStartHeight\", wireType)\n\t\t\t}\n\t\t\tm.CurrentEpochStartHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CurrentEpochStartHeight |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Epochs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Epochs = append(m.Epochs, EpochInfo{})\n\t\t\tif err := m.Epochs[len(m.Epochs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/epochs/types/hooks.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\tfmt \"fmt\"\n\t\"strconv\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\t\"github.com/hashicorp/go-metrics\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\ntype EpochHooks interface {\n\t// the first block whose timestamp is after the duration is counted as the end of the epoch\n\tAfterEpochEnd(ctx context.Context, epochIdentifier string, epochNumber int64) error\n\t// new epoch is next block of epoch end block\n\tBeforeEpochStart(ctx context.Context, epochIdentifier string, epochNumber int64) error\n\t// Returns the name of the module implementing epoch hook.\n\tGetModuleName() string\n}\n\nconst (\n\t// flag indicating whether this is a before epoch hook\n\tisBeforeEpoch = true\n)\n\nvar _ EpochHooks = MultiEpochHooks{}\n\n// combine multiple epoch hooks, all hook functions are run in array sequence.\ntype MultiEpochHooks []EpochHooks\n\n// GetModuleName implements EpochHooks.\nfunc (MultiEpochHooks) GetModuleName() string {\n\treturn ModuleName\n}\n\nfunc NewMultiEpochHooks(hooks ...EpochHooks) MultiEpochHooks {\n\treturn hooks\n}\n\n// AfterEpochEnd is called when epoch is going to be ended, epochNumber is the number of epoch that is ending.\nfunc (h MultiEpochHooks) AfterEpochEnd(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tfor _, hook := range h {\n\t\tpanicCatchingEpochHook(ctx, hook.AfterEpochEnd, epochIdentifier, epochNumber, hook.GetModuleName(), !isBeforeEpoch)\n\t}\n\treturn nil\n}\n\n// BeforeEpochStart is called when epoch is going to be started, epochNumber is the number of epoch that is starting.\nfunc (h MultiEpochHooks) BeforeEpochStart(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tfor _, hook := range h {\n\t\tpanicCatchingEpochHook(ctx, hook.BeforeEpochStart, epochIdentifier, epochNumber, hook.GetModuleName(), isBeforeEpoch)\n\t}\n\treturn nil\n}\n\nfunc panicCatchingEpochHook(\n\tctx context.Context,\n\thookFn func(ctx context.Context, epochIdentifier string, epochNumber int64) error,\n\tepochIdentifier string,\n\tepochNumber int64,\n\tmoduleName string,\n\tisBeforeEpoch bool,\n) {\n\twrappedHookFn := func(ctx context.Context) error {\n\t\treturn hookFn(ctx, epochIdentifier, epochNumber)\n\t}\n\t// TODO: Thread info for which hook this is, may be dependent on larger hook system refactoring\n\terr := ApplyFuncIfNoError(ctx, wrappedHookFn)\n\tif err != nil {\n\t\ttelemetry.IncrCounterWithLabels([]string{EpochHookFailedMetricName}, 1, []metrics.Label{\n\t\t\t{\n\t\t\t\tName:  \"module_name\",\n\t\t\t\tValue: moduleName,\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:  \"error\",\n\t\t\t\tValue: err.Error(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:  \"is_before_hook\",\n\t\t\t\tValue: strconv.FormatBool(isBeforeEpoch),\n\t\t\t},\n\t\t})\n\t\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\t\tsdkCtx.Logger().Error(fmt.Sprintf(\"error in epoch hook %v\", err))\n\t}\n}\n"
  },
  {
    "path": "x/epochs/types/hooks_test.go",
    "content": "package types_test\n\nimport (\n\tcontext \"context\"\n\t\"strconv\"\n\t\"testing\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n)\n\ntype KeeperTestSuite struct {\n\tsuite.Suite\n\tCtx sdk.Context\n}\n\nfunc TestKeeperTestSuite(t *testing.T) {\n\tsuite.Run(t, new(KeeperTestSuite))\n}\n\nfunc (s *KeeperTestSuite) SetupTest() {\n\ts.Ctx = testutil.DefaultContext(storetypes.NewKVStoreKey(types.StoreKey), storetypes.NewTransientStoreKey(\"transient_test\"))\n}\n\nfunc dummyAfterEpochEndEvent(epochIdentifier string, epochNumber int64) sdk.Event {\n\treturn sdk.NewEvent(\n\t\t\"afterEpochEnd\",\n\t\tsdk.NewAttribute(\"epochIdentifier\", epochIdentifier),\n\t\tsdk.NewAttribute(\"epochNumber\", strconv.FormatInt(epochNumber, 10)),\n\t)\n}\n\nfunc dummyBeforeEpochStartEvent(epochIdentifier string, epochNumber int64) sdk.Event {\n\treturn sdk.NewEvent(\n\t\t\"beforeEpochStart\",\n\t\tsdk.NewAttribute(\"epochIdentifier\", epochIdentifier),\n\t\tsdk.NewAttribute(\"epochNumber\", strconv.FormatInt(epochNumber, 10)),\n\t)\n}\n\nvar dummyErr = errorsmod.New(\"9\", 9, \"dummyError\")\n\n// dummyEpochHook is a struct satisfying the epoch hook interface,\n// that maintains a counter for how many times its been successfully called,\n// and a boolean for whether it should panic during its execution.\ntype dummyEpochHook struct {\n\tsuccessCounter int\n\tshouldPanic    bool\n\tshouldError    bool\n}\n\n// GetModuleName implements types.EpochHooks.\nfunc (*dummyEpochHook) GetModuleName() string {\n\treturn \"dummy\"\n}\n\nfunc (hook *dummyEpochHook) AfterEpochEnd(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tif hook.shouldPanic {\n\t\tpanic(\"dummyEpochHook is panicking\")\n\t}\n\tif hook.shouldError {\n\t\treturn dummyErr\n\t}\n\thook.successCounter += 1\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tsdkCtx.EventManager().EmitEvent(dummyAfterEpochEndEvent(epochIdentifier, epochNumber))\n\treturn nil\n}\n\nfunc (hook *dummyEpochHook) BeforeEpochStart(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tif hook.shouldPanic {\n\t\tpanic(\"dummyEpochHook is panicking\")\n\t}\n\tif hook.shouldError {\n\t\treturn dummyErr\n\t}\n\thook.successCounter += 1\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tsdkCtx.EventManager().EmitEvent(dummyBeforeEpochStartEvent(epochIdentifier, epochNumber))\n\treturn nil\n}\n\nfunc (hook *dummyEpochHook) Clone() *dummyEpochHook {\n\tnewHook := dummyEpochHook{shouldPanic: hook.shouldPanic, successCounter: hook.successCounter, shouldError: hook.shouldError}\n\treturn &newHook\n}\n\nvar _ types.EpochHooks = &dummyEpochHook{}\n\nfunc (s *KeeperTestSuite) TestHooksPanicRecovery() {\n\tpanicHook := dummyEpochHook{shouldPanic: true}\n\tnoPanicHook := dummyEpochHook{shouldPanic: false}\n\terrorHook := dummyEpochHook{shouldError: true}\n\tnoErrorHook := dummyEpochHook{shouldError: false} // same as nopanic\n\tsimpleHooks := []dummyEpochHook{panicHook, noPanicHook, errorHook, noErrorHook}\n\n\ttests := []struct {\n\t\thooks                 []dummyEpochHook\n\t\texpectedCounterValues []int\n\t\tlenEvents             int\n\t}{\n\t\t{[]dummyEpochHook{noPanicHook}, []int{1}, 1},\n\t\t{[]dummyEpochHook{panicHook}, []int{0}, 0},\n\t\t{[]dummyEpochHook{errorHook}, []int{0}, 0},\n\t\t{simpleHooks, []int{0, 1, 0, 1}, 2},\n\t}\n\n\tfor tcIndex, tc := range tests {\n\t\tfor epochActionSelector := 0; epochActionSelector < 2; epochActionSelector++ {\n\t\t\ts.SetupTest()\n\t\t\thookRefs := []types.EpochHooks{}\n\n\t\t\tfor _, hook := range tc.hooks {\n\t\t\t\thookRefs = append(hookRefs, hook.Clone())\n\t\t\t}\n\n\t\t\thooks := types.NewMultiEpochHooks(hookRefs...)\n\n\t\t\tevents := func(epochID string, epochNumber int64, dummyEvent func(id string, number int64) sdk.Event) sdk.Events {\n\t\t\t\tevts := make(sdk.Events, tc.lenEvents)\n\t\t\t\tfor i := 0; i < tc.lenEvents; i++ {\n\t\t\t\t\tevts[i] = dummyEvent(epochID, epochNumber)\n\t\t\t\t}\n\t\t\t\treturn evts\n\t\t\t}\n\n\t\t\ts.NotPanics(func() {\n\t\t\t\tif epochActionSelector == 0 {\n\t\t\t\t\thooks.BeforeEpochStart(s.Ctx, \"id\", 0)\n\t\t\t\t\ts.Require().Equal(events(\"id\", 0, dummyBeforeEpochStartEvent), s.Ctx.EventManager().Events(),\n\t\t\t\t\t\t\"test case index %d, before epoch event check\", tcIndex)\n\t\t\t\t} else if epochActionSelector == 1 {\n\t\t\t\t\thooks.AfterEpochEnd(s.Ctx, \"id\", 0)\n\t\t\t\t\ts.Require().Equal(events(\"id\", 0, dummyAfterEpochEndEvent), s.Ctx.EventManager().Events(),\n\t\t\t\t\t\t\"test case index %d, after epoch event check\", tcIndex)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tfor i := 0; i < len(hooks); i++ {\n\t\t\t\tepochHook := hookRefs[i].(*dummyEpochHook)\n\t\t\t\ts.Require().Equal(tc.expectedCounterValues[i], epochHook.successCounter, \"test case index %d\", tcIndex)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "x/epochs/types/identifier.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n)\n\nfunc ValidateEpochIdentifierInterface(i interface{}) error {\n\tv, ok := i.(string)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif err := ValidateEpochIdentifierString(v); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc ValidateEpochIdentifierString(s string) error {\n\tif s == \"\" {\n\t\treturn fmt.Errorf(\"empty distribution epoch identifier: %+v\", s)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "x/epochs/types/keys.go",
    "content": "package types\n\nconst (\n\t// ModuleName defines the module name.\n\tModuleName = \"epochs\"\n\n\t// StoreKey defines the primary module store key.\n\tStoreKey = ModuleName\n\n\t// RouterKey is the message route for epochs.\n\tRouterKey = ModuleName\n\n\t// QuerierRoute defines the module's query routing key.\n\tQuerierRoute = ModuleName\n)\n\n// KeyPrefixEpoch defines prefix key for storing epochs.\nvar KeyPrefixEpoch = []byte{0x01}\n\nfunc KeyPrefix() []byte {\n\treturn []byte(StoreKey)\n}\n"
  },
  {
    "path": "x/epochs/types/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: osmosis/epochs/v1beta1/query.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\ntype QueryEpochsInfoRequest struct {\n}\n\nfunc (m *QueryEpochsInfoRequest) Reset()         { *m = QueryEpochsInfoRequest{} }\nfunc (m *QueryEpochsInfoRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryEpochsInfoRequest) ProtoMessage()    {}\nfunc (*QueryEpochsInfoRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_82bf2f47d6aaa9fa, []int{0}\n}\nfunc (m *QueryEpochsInfoRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryEpochsInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryEpochsInfoRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryEpochsInfoRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryEpochsInfoRequest.Merge(m, src)\n}\nfunc (m *QueryEpochsInfoRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryEpochsInfoRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryEpochsInfoRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryEpochsInfoRequest proto.InternalMessageInfo\n\ntype QueryEpochsInfoResponse struct {\n\tEpochs []EpochInfo `protobuf:\"bytes,1,rep,name=epochs,proto3\" json:\"epochs\"`\n}\n\nfunc (m *QueryEpochsInfoResponse) Reset()         { *m = QueryEpochsInfoResponse{} }\nfunc (m *QueryEpochsInfoResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryEpochsInfoResponse) ProtoMessage()    {}\nfunc (*QueryEpochsInfoResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_82bf2f47d6aaa9fa, []int{1}\n}\nfunc (m *QueryEpochsInfoResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryEpochsInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryEpochsInfoResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryEpochsInfoResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryEpochsInfoResponse.Merge(m, src)\n}\nfunc (m *QueryEpochsInfoResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryEpochsInfoResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryEpochsInfoResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryEpochsInfoResponse proto.InternalMessageInfo\n\nfunc (m *QueryEpochsInfoResponse) GetEpochs() []EpochInfo {\n\tif m != nil {\n\t\treturn m.Epochs\n\t}\n\treturn nil\n}\n\ntype QueryCurrentEpochRequest struct {\n\tIdentifier string `protobuf:\"bytes,1,opt,name=identifier,proto3\" json:\"identifier,omitempty\"`\n}\n\nfunc (m *QueryCurrentEpochRequest) Reset()         { *m = QueryCurrentEpochRequest{} }\nfunc (m *QueryCurrentEpochRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryCurrentEpochRequest) ProtoMessage()    {}\nfunc (*QueryCurrentEpochRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_82bf2f47d6aaa9fa, []int{2}\n}\nfunc (m *QueryCurrentEpochRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryCurrentEpochRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryCurrentEpochRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryCurrentEpochRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryCurrentEpochRequest.Merge(m, src)\n}\nfunc (m *QueryCurrentEpochRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryCurrentEpochRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryCurrentEpochRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryCurrentEpochRequest proto.InternalMessageInfo\n\nfunc (m *QueryCurrentEpochRequest) GetIdentifier() string {\n\tif m != nil {\n\t\treturn m.Identifier\n\t}\n\treturn \"\"\n}\n\ntype QueryCurrentEpochResponse struct {\n\tCurrentEpoch int64 `protobuf:\"varint,1,opt,name=current_epoch,json=currentEpoch,proto3\" json:\"current_epoch,omitempty\"`\n}\n\nfunc (m *QueryCurrentEpochResponse) Reset()         { *m = QueryCurrentEpochResponse{} }\nfunc (m *QueryCurrentEpochResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryCurrentEpochResponse) ProtoMessage()    {}\nfunc (*QueryCurrentEpochResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_82bf2f47d6aaa9fa, []int{3}\n}\nfunc (m *QueryCurrentEpochResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryCurrentEpochResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryCurrentEpochResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryCurrentEpochResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryCurrentEpochResponse.Merge(m, src)\n}\nfunc (m *QueryCurrentEpochResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryCurrentEpochResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryCurrentEpochResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryCurrentEpochResponse proto.InternalMessageInfo\n\nfunc (m *QueryCurrentEpochResponse) GetCurrentEpoch() int64 {\n\tif m != nil {\n\t\treturn m.CurrentEpoch\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryEpochsInfoRequest)(nil), \"osmosis.epochs.v1beta1.QueryEpochsInfoRequest\")\n\tproto.RegisterType((*QueryEpochsInfoResponse)(nil), \"osmosis.epochs.v1beta1.QueryEpochsInfoResponse\")\n\tproto.RegisterType((*QueryCurrentEpochRequest)(nil), \"osmosis.epochs.v1beta1.QueryCurrentEpochRequest\")\n\tproto.RegisterType((*QueryCurrentEpochResponse)(nil), \"osmosis.epochs.v1beta1.QueryCurrentEpochResponse\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"osmosis/epochs/v1beta1/query.proto\", fileDescriptor_82bf2f47d6aaa9fa)\n}\n\nvar fileDescriptor_82bf2f47d6aaa9fa = []byte{\n\t// 396 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcf, 0x6e, 0xd3, 0x30,\n\t0x1c, 0xc7, 0xe3, 0x16, 0x2a, 0x61, 0xca, 0xc5, 0x42, 0x25, 0x44, 0xc8, 0x94, 0xf0, 0xaf, 0x17,\n\t0x62, 0x52, 0x6e, 0x5c, 0x40, 0x45, 0x1c, 0x10, 0x27, 0x72, 0xec, 0x05, 0x25, 0xc1, 0x4d, 0x23,\n\t0xa8, 0x7f, 0x69, 0xec, 0x00, 0xbd, 0xee, 0x09, 0x26, 0x4d, 0x7b, 0x81, 0x3d, 0xcb, 0x0e, 0x3d,\n\t0x56, 0xda, 0x65, 0xa7, 0x69, 0x6a, 0xf7, 0x20, 0x53, 0x1c, 0x6f, 0xea, 0xb4, 0x64, 0xda, 0x6e,\n\t0xb1, 0xfd, 0xf9, 0xfe, 0xf1, 0x2f, 0xc6, 0x2e, 0xc8, 0x19, 0xc8, 0x54, 0x32, 0x9e, 0x41, 0x3c,\n\t0x95, 0xec, 0xaf, 0x1f, 0x71, 0x15, 0xfa, 0x6c, 0x5e, 0xf0, 0x7c, 0xe1, 0x65, 0x39, 0x28, 0x20,\n\t0x3d, 0xc3, 0x78, 0x15, 0xe3, 0x19, 0xc6, 0x79, 0x9c, 0x40, 0x02, 0x1a, 0x61, 0xe5, 0x57, 0x45,\n\t0x3b, 0xcf, 0x12, 0x80, 0xe4, 0x0f, 0x67, 0x61, 0x96, 0xb2, 0x50, 0x08, 0x50, 0xa1, 0x4a, 0x41,\n\t0x48, 0x73, 0xfa, 0xaa, 0x21, 0x2f, 0xe1, 0x82, 0x97, 0x11, 0x9a, 0x72, 0x6d, 0xdc, 0xfb, 0x51,\n\t0x16, 0xf8, 0xaa, 0xa1, 0x6f, 0x62, 0x02, 0x01, 0x9f, 0x17, 0x5c, 0x2a, 0x77, 0x8c, 0x9f, 0x5c,\n\t0x3b, 0x91, 0x19, 0x08, 0xc9, 0xc9, 0x27, 0xdc, 0xa9, 0x4c, 0x6d, 0xd4, 0x6f, 0x0f, 0x1e, 0x0e,\n\t0x5f, 0x78, 0xf5, 0xbd, 0x3d, 0xad, 0x2d, 0xa5, 0xa3, 0x7b, 0xcb, 0x93, 0xe7, 0x56, 0x60, 0x64,\n\t0xee, 0x47, 0x6c, 0x6b, 0xef, 0x2f, 0x45, 0x9e, 0x73, 0xa1, 0x34, 0x66, 0x72, 0x09, 0xc5, 0x38,\n\t0xfd, 0xc5, 0x85, 0x4a, 0x27, 0x29, 0xcf, 0x6d, 0xd4, 0x47, 0x83, 0x07, 0xc1, 0xd6, 0x8e, 0xfb,\n\t0x19, 0x3f, 0xad, 0xd1, 0x9a, 0x66, 0x2f, 0xf1, 0xa3, 0xb8, 0xda, 0xff, 0xa9, 0xa3, 0xb4, 0xbe,\n\t0x1d, 0x74, 0xe3, 0x2d, 0x78, 0x78, 0xd8, 0xc2, 0xf7, 0xb5, 0x05, 0xd9, 0x47, 0x18, 0x5f, 0x76,\n\t0x94, 0xc4, 0x6b, 0xba, 0x47, 0xfd, 0x88, 0x1c, 0x76, 0x6b, 0xbe, 0xaa, 0xe7, 0xbe, 0xd9, 0x39,\n\t0x3a, 0xdb, 0x6b, 0xf5, 0x09, 0x65, 0x0d, 0x3f, 0xa7, 0x5a, 0x92, 0x03, 0x84, 0xbb, 0xdb, 0xf7,\n\t0x23, 0xef, 0x6f, 0x4c, 0xaa, 0x19, 0xa3, 0xe3, 0xdf, 0x41, 0x61, 0xda, 0xbd, 0xd3, 0xed, 0xde,\n\t0x92, 0xd7, 0x4d, 0xed, 0xae, 0x8c, 0x76, 0xf4, 0x7d, 0xb9, 0xa6, 0x68, 0xb5, 0xa6, 0xe8, 0x74,\n\t0x4d, 0xd1, 0xee, 0x86, 0x5a, 0xab, 0x0d, 0xb5, 0x8e, 0x37, 0xd4, 0x1a, 0xfb, 0x49, 0xaa, 0xa6,\n\t0x45, 0xe4, 0xc5, 0x30, 0x63, 0x12, 0x8a, 0x3c, 0xe6, 0x82, 0xab, 0x7f, 0x90, 0xff, 0x36, 0xab,\n\t0x69, 0x11, 0xb1, 0xff, 0x17, 0xe6, 0x6a, 0x91, 0x71, 0x19, 0x75, 0xf4, 0x73, 0xfc, 0x70, 0x1e,\n\t0x00, 0x00, 0xff, 0xff, 0x7f, 0x67, 0xda, 0x89, 0x26, 0x03, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// EpochInfos provide running epochInfos\n\tEpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error)\n\t// CurrentEpoch provide current epoch of specified identifier\n\tCurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) EpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error) {\n\tout := new(QueryEpochsInfoResponse)\n\terr := c.cc.Invoke(ctx, \"/osmosis.epochs.v1beta1.Query/EpochInfos\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) CurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error) {\n\tout := new(QueryCurrentEpochResponse)\n\terr := c.cc.Invoke(ctx, \"/osmosis.epochs.v1beta1.Query/CurrentEpoch\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// EpochInfos provide running epochInfos\n\tEpochInfos(context.Context, *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error)\n\t// CurrentEpoch provide current epoch of specified identifier\n\tCurrentEpoch(context.Context, *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) EpochInfos(ctx context.Context, req *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method EpochInfos not implemented\")\n}\nfunc (*UnimplementedQueryServer) CurrentEpoch(ctx context.Context, req *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CurrentEpoch not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_EpochInfos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryEpochsInfoRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).EpochInfos(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/osmosis.epochs.v1beta1.Query/EpochInfos\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).EpochInfos(ctx, req.(*QueryEpochsInfoRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_CurrentEpoch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryCurrentEpochRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).CurrentEpoch(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/osmosis.epochs.v1beta1.Query/CurrentEpoch\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).CurrentEpoch(ctx, req.(*QueryCurrentEpochRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"osmosis.epochs.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"EpochInfos\",\n\t\t\tHandler:    _Query_EpochInfos_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CurrentEpoch\",\n\t\t\tHandler:    _Query_CurrentEpoch_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"osmosis/epochs/v1beta1/query.proto\",\n}\n\nfunc (m *QueryEpochsInfoRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryEpochsInfoRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryEpochsInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryEpochsInfoResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryEpochsInfoResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryEpochsInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Epochs) > 0 {\n\t\tfor iNdEx := len(m.Epochs) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Epochs[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryCurrentEpochRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryCurrentEpochRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryCurrentEpochRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Identifier) > 0 {\n\t\ti -= len(m.Identifier)\n\t\tcopy(dAtA[i:], m.Identifier)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Identifier)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryCurrentEpochResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryCurrentEpochResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryCurrentEpochResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.CurrentEpoch != 0 {\n\t\ti = encodeVarintQuery(dAtA, i, uint64(m.CurrentEpoch))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryEpochsInfoRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryEpochsInfoResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Epochs) > 0 {\n\t\tfor _, e := range m.Epochs {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *QueryCurrentEpochRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Identifier)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryCurrentEpochResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CurrentEpoch != 0 {\n\t\tn += 1 + sovQuery(uint64(m.CurrentEpoch))\n\t}\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryEpochsInfoRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryEpochsInfoRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryEpochsInfoRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryEpochsInfoResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryEpochsInfoResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryEpochsInfoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Epochs\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Epochs = append(m.Epochs, EpochInfo{})\n\t\t\tif err := m.Epochs[len(m.Epochs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryCurrentEpochRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryCurrentEpochRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryCurrentEpochRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Identifier\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Identifier = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryCurrentEpochResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryCurrentEpochResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryCurrentEpochResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CurrentEpoch\", wireType)\n\t\t\t}\n\t\t\tm.CurrentEpoch = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CurrentEpoch |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/epochs/types/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: osmosis/epochs/v1beta1/query.proto\n\n/*\nPackage types is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage types\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_EpochInfos_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryEpochsInfoRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.EpochInfos(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_EpochInfos_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryEpochsInfoRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.EpochInfos(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_CurrentEpoch_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_CurrentEpoch_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryCurrentEpochRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CurrentEpoch_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.CurrentEpoch(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_CurrentEpoch_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryCurrentEpochRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CurrentEpoch_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.CurrentEpoch(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_EpochInfos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_EpochInfos_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_EpochInfos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_CurrentEpoch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_CurrentEpoch_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_CurrentEpoch_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_EpochInfos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_EpochInfos_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_EpochInfos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_CurrentEpoch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_CurrentEpoch_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_CurrentEpoch_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_EpochInfos_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 1}, []string{\"osmosis\", \"epochs\", \"v1beta1\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_CurrentEpoch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"osmosis\", \"epochs\", \"v1beta1\", \"current_epoch\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_EpochInfos_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_CurrentEpoch_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/epochs/types/telemetry.go",
    "content": "package types\n\nvar (\n\t// epoch_hook_failed\n\t//\n\t// counter that is increased if epoch hook fails\n\t//\n\t// Has the following labels:\n\t// * module_name - the name of the module that errored or panicked\n\t// * err - the error or panic returned\n\t// * is_before_hook - true if this is a before epoch hook. False otherwise.\n\tEpochHookFailedMetricName = formatEpochMetricName(\"hook_failed\")\n)\n\n// formatTxFeesMetricName formats the epochs module metric name.\nfunc formatEpochMetricName(metricName string) string {\n\treturn FormatMetricName(ModuleName, metricName)\n}\n\n// FormatMetricName helper to format a metric name given SDK module name and extension.\nfunc FormatMetricName(moduleName, extension string) string {\n\treturn moduleName + \"_\" + extension\n}\n"
  },
  {
    "path": "x/feegrant/basic_fee.go",
    "content": "package feegrant\n\nimport (\n\t\"context\"\n\ttime \"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ FeeAllowanceI = (*BasicAllowance)(nil)\n\n// Accept can use fee payment requested as well as timestamp of the current block\n// to determine whether or not to process this. This is checked in\n// Keeper.UseGrantedFees and the return values should match how it is handled there.\n//\n// If it returns an error, the fee payment is rejected, otherwise it is accepted.\n// The FeeAllowance implementation is expected to update its internal state\n// and will be saved again after an acceptance.\n//\n// If remove is true (regardless of the error), the FeeAllowance will be deleted from storage\n// (eg. when it is used up). (See call to RevokeAllowance in Keeper.UseGrantedFees)\nfunc (a *BasicAllowance) Accept(ctx context.Context, fee sdk.Coins, _ []sdk.Msg) (bool, error) {\n\tif a.Expiration != nil && a.Expiration.Before(sdk.UnwrapSDKContext(ctx).BlockTime()) {\n\t\treturn true, errorsmod.Wrap(ErrFeeLimitExpired, \"basic allowance\")\n\t}\n\n\tif a.SpendLimit != nil {\n\t\tleft, invalid := a.SpendLimit.SafeSub(fee...)\n\t\tif invalid {\n\t\t\treturn false, errorsmod.Wrap(ErrFeeLimitExceeded, \"basic allowance\")\n\t\t}\n\n\t\ta.SpendLimit = left\n\t\treturn left.IsZero(), nil\n\t}\n\n\treturn false, nil\n}\n\n// ValidateBasic implements FeeAllowance and enforces basic sanity checks\nfunc (a BasicAllowance) ValidateBasic() error {\n\tif a.SpendLimit != nil {\n\t\tif !a.SpendLimit.IsValid() {\n\t\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, \"send amount is invalid: %s\", a.SpendLimit)\n\t\t}\n\t\tif !a.SpendLimit.IsAllPositive() {\n\t\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidCoins, \"spend limit must be positive\")\n\t\t}\n\t}\n\n\tif a.Expiration != nil && a.Expiration.Unix() < 0 {\n\t\treturn errorsmod.Wrap(ErrInvalidDuration, \"expiration time cannot be negative\")\n\t}\n\n\treturn nil\n}\n\n// ExpiresAt returns the expiry time of the BasicAllowance.\nfunc (a BasicAllowance) ExpiresAt() (*time.Time, error) {\n\treturn a.Expiration, nil\n}\n"
  },
  {
    "path": "x/feegrant/basic_fee_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc TestBasicFeeValidAllow(t *testing.T) {\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\n\tctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Height: 1})\n\n\tbadTime := ctx.BlockTime().AddDate(0, 0, -1)\n\tallowace := &feegrant.BasicAllowance{\n\t\tExpiration: &badTime,\n\t}\n\trequire.Error(t, allowace.ValidateBasic())\n\n\tctx = ctx.WithBlockHeader(cmtproto.Header{\n\t\tTime: time.Now(),\n\t})\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 10))\n\tatom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 555))\n\tsmallAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 43))\n\tbigAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 1000))\n\tleftAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 512))\n\tnow := ctx.BlockTime()\n\toneHour := now.Add(1 * time.Hour)\n\n\tcases := map[string]struct {\n\t\tallowance *feegrant.BasicAllowance\n\t\t// all other checks are ignored if valid=false\n\t\tfee       sdk.Coins\n\t\tblockTime time.Time\n\t\tvalid     bool\n\t\taccept    bool\n\t\tremove    bool\n\t\tremains   sdk.Coins\n\t}{\n\t\t\"empty\": {\n\t\t\tallowance: &feegrant.BasicAllowance{},\n\t\t\taccept:    true,\n\t\t},\n\t\t\"small fee without expire\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t},\n\t\t\tfee:     smallAtom,\n\t\t\taccept:  true,\n\t\t\tremove:  false,\n\t\t\tremains: leftAtom,\n\t\t},\n\t\t\"all fee without expire\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: smallAtom,\n\t\t\t},\n\t\t\tfee:    smallAtom,\n\t\t\taccept: true,\n\t\t\tremove: true,\n\t\t},\n\t\t\"wrong fee\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: smallAtom,\n\t\t\t},\n\t\t\tfee:    eth,\n\t\t\taccept: false,\n\t\t},\n\t\t\"non-expired\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       smallAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    true,\n\t\t\tremove:    false,\n\t\t\tremains:   leftAtom,\n\t\t},\n\t\t\"expired\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       smallAtom,\n\t\t\tblockTime: oneHour,\n\t\t\taccept:    false,\n\t\t\tremove:    true,\n\t\t},\n\t\t\"fee more than allowed\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    false,\n\t\t},\n\t\t\"with out spend limit\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    true,\n\t\t},\n\t\t\"expired no spend limit\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: oneHour,\n\t\t\taccept:    false,\n\t\t},\n\t}\n\n\tfor name, stc := range cases {\n\t\ttc := stc // to make scopelint happy\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\terr := tc.allowance.ValidateBasic()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tctx := testCtx.Ctx.WithBlockTime(tc.blockTime)\n\n\t\t\t// now try to deduct\n\t\t\tremoved, err := tc.allowance.Accept(ctx, tc.fee, []sdk.Msg{})\n\t\t\tif !tc.accept {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, tc.remove, removed)\n\t\t\tif !removed {\n\t\t\t\tassert.Equal(t, tc.allowance.SpendLimit, tc.remains)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/client/cli/tx.go",
    "content": "package cli\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/spf13/cobra\"\n\n\t\"cosmossdk.io/core/address\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\t\"github.com/cosmos/cosmos-sdk/client/tx\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/version\"\n)\n\n// flag for feegrant module\nconst (\n\tFlagExpiration  = \"expiration\"\n\tFlagPeriod      = \"period\"\n\tFlagPeriodLimit = \"period-limit\"\n\tFlagSpendLimit  = \"spend-limit\"\n\tFlagAllowedMsgs = \"allowed-messages\"\n)\n\n// GetTxCmd returns the transaction commands for feegrant module\nfunc GetTxCmd(ac address.Codec) *cobra.Command {\n\tfeegrantTxCmd := &cobra.Command{\n\t\tUse:                        feegrant.ModuleName,\n\t\tShort:                      \"Feegrant transactions sub-commands\",\n\t\tLong:                       \"Grant and revoke fee allowance for a grantee by a granter\",\n\t\tDisableFlagParsing:         true,\n\t\tSuggestionsMinimumDistance: 2,\n\t\tRunE:                       client.ValidateCmd,\n\t}\n\n\tfeegrantTxCmd.AddCommand(\n\t\tNewCmdFeeGrant(ac),\n\t\tNewCmdFeeGrantDID(ac),\n\t)\n\n\treturn feegrantTxCmd\n}\n\n// NewCmdFeeGrant returns a CLI command handler to create a MsgGrantAllowance transaction.\n// This command is more powerful than AutoCLI generated command as it allows a better input validation.\nfunc NewCmdFeeGrant(ac address.Codec) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:     \"grant [granter_key_or_address] [grantee]\",\n\t\tAliases: []string{\"grant-allowance\"},\n\t\tShort:   \"Grant Fee allowance to an address\",\n\t\tLong: strings.TrimSpace(\n\t\t\tfmt.Sprintf(\n\t\t\t\t`Grant authorization to pay fees from your address. Note, the '--from' flag is\n\t\t\t\tignored as it is implied from [granter].\n\nExamples:\n%s tx %s grant source1skjw... source1skjw... --spend-limit 100uopen --expiration 2022-01-30T15:04:05Z or\n%s tx %s grant source1skjw... source1skjw... --spend-limit 100uopen --period 3600 --period-limit 10uopen --expiration 2022-01-30T15:04:05Z or\n%s tx %s grant source1skjw... source1skjw... --spend-limit 100uopen --expiration 2022-01-30T15:04:05Z \n\t--allowed-messages \"/cosmos.gov.v1beta1.MsgSubmitProposal,/cosmos.gov.v1beta1.MsgVote\"\n\t\t\t\t`, version.AppName, feegrant.ModuleName, version.AppName, feegrant.ModuleName, version.AppName, feegrant.ModuleName,\n\t\t\t),\n\t\t),\n\t\tArgs: cobra.ExactArgs(2),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tif err := cmd.Flags().Set(flags.FlagFrom, args[0]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tgrantee, err := ac.StringToBytes(args[1])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tgranter := clientCtx.GetFromAddress()\n\t\t\tsl, err := cmd.Flags().GetString(FlagSpendLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// if `FlagSpendLimit` isn't set, limit will be nil.\n\t\t\t// Hence, there won't be any spendlimit for the grantee.\n\t\t\tlimit, err := sdk.ParseCoinsNormalized(sl)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\texp, err := cmd.Flags().GetString(FlagExpiration)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tbasic := feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: limit,\n\t\t\t}\n\n\t\t\tvar expiresAtTime time.Time\n\t\t\tif exp != \"\" {\n\t\t\t\texpiresAtTime, err = time.Parse(time.RFC3339, exp)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tbasic.Expiration = &expiresAtTime\n\t\t\t}\n\n\t\t\tvar grant feegrant.FeeAllowanceI\n\t\t\tgrant = &basic\n\n\t\t\tperiodClock, err := cmd.Flags().GetInt64(FlagPeriod)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tperiodLimitVal, err := cmd.Flags().GetString(FlagPeriodLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// check any of period or periodLimit flags are set,\n\t\t\t// if set consider it as periodic fee allowance.\n\t\t\tif periodClock > 0 || periodLimitVal != \"\" {\n\t\t\t\tperiodLimit, err := sdk.ParseCoinsNormalized(periodLimitVal)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tif periodClock <= 0 {\n\t\t\t\t\treturn fmt.Errorf(\"period clock was not set\")\n\t\t\t\t}\n\n\t\t\t\tif periodLimit == nil {\n\t\t\t\t\treturn fmt.Errorf(\"period limit was not set\")\n\t\t\t\t}\n\n\t\t\t\tperiodReset := getPeriodReset(periodClock)\n\t\t\t\tif exp != \"\" && periodReset.Sub(expiresAtTime) > 0 {\n\t\t\t\t\treturn fmt.Errorf(\"period (%d) cannot reset after expiration (%v)\", periodClock, exp)\n\t\t\t\t}\n\n\t\t\t\tperiodic := feegrant.PeriodicAllowance{\n\t\t\t\t\tBasic:            basic,\n\t\t\t\t\tPeriod:           getPeriod(periodClock),\n\t\t\t\t\tPeriodReset:      getPeriodReset(periodClock),\n\t\t\t\t\tPeriodSpendLimit: periodLimit,\n\t\t\t\t\tPeriodCanSpend:   periodLimit,\n\t\t\t\t}\n\n\t\t\t\tgrant = &periodic\n\t\t\t}\n\n\t\t\tallowedMsgs, err := cmd.Flags().GetStringSlice(FlagAllowedMsgs)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif len(allowedMsgs) > 0 {\n\t\t\t\tgrant, err = feegrant.NewAllowedMsgAllowance(grant, allowedMsgs)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmsg, err := feegrant.NewMsgGrantAllowance(grant, granter, grantee)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\tcmd.Flags().StringSlice(FlagAllowedMsgs, []string{}, \"Set of allowed messages for fee allowance\")\n\tcmd.Flags().String(FlagExpiration, \"\", \"The RFC 3339 timestamp after which the grant expires for the user\")\n\tcmd.Flags().String(FlagSpendLimit, \"\", \"Spend limit specifies the max limit can be used, if not mentioned there is no limit\")\n\tcmd.Flags().Int64(FlagPeriod, 0, \"period specifies the time duration(in seconds) in which period_limit coins can be spent before that allowance is reset (ex: 3600)\")\n\tcmd.Flags().String(FlagPeriodLimit, \"\", \"period limit specifies the maximum number of coins that can be spent in the period\")\n\n\treturn cmd\n}\n\nfunc getPeriodReset(duration int64) time.Time {\n\treturn time.Now().Add(getPeriod(duration))\n}\n\nfunc getPeriod(duration int64) time.Duration {\n\treturn time.Duration(duration) * time.Second\n}\n\n// NewCmdFeeGrantDID returns a CLI command handler to create a MsgGrantDIDAllowance transaction.\nfunc NewCmdFeeGrantDID(ac address.Codec) *cobra.Command {\n\tcmd := &cobra.Command{\n\t\tUse:     \"grant-did [granter_key] [grantee_did]\",\n\t\tAliases: []string{\"grant-did-allowance\"},\n\t\tShort:   \"Grant Fee allowance to a DID\",\n\t\tLong: strings.TrimSpace(\n\t\t\tfmt.Sprintf(\n\t\t\t\t`Grant authorization to pay fees from your address to a DID. Note, the '--from' flag is\n\t\t\t\tignored as it is implied from [granter].\n\nExamples:\n%s tx %s grant-did faucet did:key:alice --spend-limit 100uopen --expiration 2022-01-30T15:04:05Z or\n%s tx %s grant-did developer did:key:bob --spend-limit 100ucredit --period 3600 --period-limit 10ucredit --expiration 2022-01-30T15:04:05Z\n\t\t\t\t`, version.AppName, feegrant.ModuleName, version.AppName, feegrant.ModuleName,\n\t\t\t),\n\t\t),\n\t\tArgs: cobra.ExactArgs(2),\n\t\tRunE: func(cmd *cobra.Command, args []string) error {\n\t\t\tif err := cmd.Flags().Set(flags.FlagFrom, args[0]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tclientCtx, err := client.GetClientTxContext(cmd)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tgranteeDID := args[1]\n\t\t\tif granteeDID == \"\" {\n\t\t\t\treturn fmt.Errorf(\"grantee DID cannot be empty\")\n\t\t\t}\n\n\t\t\tgranter := clientCtx.GetFromAddress()\n\t\t\tsl, err := cmd.Flags().GetString(FlagSpendLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// if `FlagSpendLimit` isn't set, limit will be nil.\n\t\t\t// Hence, there won't be any spendlimit for the grantee.\n\t\t\tlimit, err := sdk.ParseCoinsNormalized(sl)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\texp, err := cmd.Flags().GetString(FlagExpiration)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tbasic := feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: limit,\n\t\t\t}\n\n\t\t\tvar expiresAtTime time.Time\n\t\t\tif exp != \"\" {\n\t\t\t\texpiresAtTime, err = time.Parse(time.RFC3339, exp)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tbasic.Expiration = &expiresAtTime\n\t\t\t}\n\n\t\t\tvar grant feegrant.FeeAllowanceI\n\t\t\tgrant = &basic\n\n\t\t\tperiodClock, err := cmd.Flags().GetInt64(FlagPeriod)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tperiodLimitVal, err := cmd.Flags().GetString(FlagPeriodLimit)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// check any of period or periodLimit flags are set,\n\t\t\t// if set consider it as periodic fee allowance.\n\t\t\tif periodClock > 0 || periodLimitVal != \"\" {\n\t\t\t\tperiodLimit, err := sdk.ParseCoinsNormalized(periodLimitVal)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tif periodClock <= 0 {\n\t\t\t\t\treturn fmt.Errorf(\"period clock was not set\")\n\t\t\t\t}\n\n\t\t\t\tif periodLimit == nil {\n\t\t\t\t\treturn fmt.Errorf(\"period limit was not set\")\n\t\t\t\t}\n\n\t\t\t\tperiodReset := getPeriodReset(periodClock)\n\t\t\t\tif exp != \"\" && periodReset.Sub(expiresAtTime) > 0 {\n\t\t\t\t\treturn fmt.Errorf(\"period (%d) cannot reset after expiration (%v)\", periodClock, exp)\n\t\t\t\t}\n\n\t\t\t\tperiodic := feegrant.PeriodicAllowance{\n\t\t\t\t\tBasic:            basic,\n\t\t\t\t\tPeriod:           getPeriod(periodClock),\n\t\t\t\t\tPeriodReset:      getPeriodReset(periodClock),\n\t\t\t\t\tPeriodSpendLimit: periodLimit,\n\t\t\t\t\tPeriodCanSpend:   periodLimit,\n\t\t\t\t}\n\n\t\t\t\tgrant = &periodic\n\t\t\t}\n\n\t\t\tallowedMsgs, err := cmd.Flags().GetStringSlice(FlagAllowedMsgs)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif len(allowedMsgs) > 0 {\n\t\t\t\tgrant, err = feegrant.NewAllowedMsgAllowance(grant, allowedMsgs)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmsg, err := feegrant.NewMsgGrantDIDAllowance(grant, granter, granteeDID)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\treturn tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)\n\t\t},\n\t}\n\n\tflags.AddTxFlagsToCmd(cmd)\n\tcmd.Flags().StringSlice(FlagAllowedMsgs, []string{}, \"Set of allowed messages for fee allowance\")\n\tcmd.Flags().String(FlagExpiration, \"\", \"The RFC 3339 timestamp after which the grant expires for the DID\")\n\tcmd.Flags().String(FlagSpendLimit, \"\", \"Spend limit specifies the max limit can be used, if not mentioned there is no limit\")\n\tcmd.Flags().Int64(FlagPeriod, 0, \"period specifies the time duration(in seconds) in which period_limit coins can be spent before that allowance is reset (ex: 3600)\")\n\tcmd.Flags().String(FlagPeriodLimit, \"\", \"period limit specifies the maximum number of coins that can be spent in the period\")\n\n\treturn cmd\n}\n"
  },
  {
    "path": "x/feegrant/client/cli/tx_test.go",
    "content": "package cli_test\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tabci \"github.com/cometbft/cometbft/abci/types\"\n\trpcclientmock \"github.com/cometbft/cometbft/rpc/client/mock\"\n\t\"github.com/cosmos/gogoproto/proto\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t_ \"cosmossdk.io/api/cosmos/gov/v1beta1\"\n\tsdkmath \"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/client/cli\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/client/flags\"\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/hd\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keyring\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tclitestutil \"github.com/cosmos/cosmos-sdk/testutil/cli\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ttestutilmod \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tgovcli \"github.com/cosmos/cosmos-sdk/x/gov/client/cli\"\n\tgovv1 \"github.com/cosmos/cosmos-sdk/x/gov/types/v1\"\n\tgovv1beta1 \"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\"\n)\n\nconst (\n\toneYear  = 365 * 24 * 60 * 60\n\ttenHours = 10 * 60 * 60\n\toneHour  = 60 * 60\n)\n\ntype CLITestSuite struct {\n\tsuite.Suite\n\n\taddedGranter sdk.AccAddress\n\taddedGrantee sdk.AccAddress\n\taddedGrant   feegrant.Grant\n\n\tkr        keyring.Keyring\n\tbaseCtx   client.Context\n\tencCfg    testutilmod.TestEncodingConfig\n\tclientCtx client.Context\n\n\taccounts []sdk.AccAddress\n}\n\nfunc TestCLITestSuite(t *testing.T) {\n\tsuite.Run(t, new(CLITestSuite))\n}\n\nfunc (s *CLITestSuite) SetupSuite() {\n\ts.T().Log(\"setting up integration test suite\")\n\n\ts.encCfg = testutilmod.MakeTestEncodingConfig(module.AppModuleBasic{})\n\ts.kr = keyring.NewInMemory(s.encCfg.Codec)\n\ts.baseCtx = client.Context{}.\n\t\tWithKeyring(s.kr).\n\t\tWithTxConfig(s.encCfg.TxConfig).\n\t\tWithCodec(s.encCfg.Codec).\n\t\tWithClient(clitestutil.MockCometRPC{Client: rpcclientmock.Client{}}).\n\t\tWithAccountRetriever(client.MockAccountRetriever{}).\n\t\tWithOutput(io.Discard).\n\t\tWithChainID(\"test-chain\")\n\n\tctxGen := func() client.Context {\n\t\tbz, _ := s.encCfg.Codec.Marshal(&sdk.TxResponse{})\n\t\tc := clitestutil.NewMockCometRPC(abci.ResponseQuery{\n\t\t\tValue: bz,\n\t\t})\n\n\t\treturn s.baseCtx.WithClient(c)\n\t}\n\ts.clientCtx = ctxGen()\n\n\tif testing.Short() {\n\t\ts.T().Skip(\"skipping test in unit-tests mode.\")\n\t}\n\n\taccounts := testutil.CreateKeyringAccounts(s.T(), s.kr, 2)\n\n\tgranter := accounts[0].Address\n\tgrantee := accounts[1].Address\n\n\ts.createGrant(granter, grantee)\n\n\tgrant, err := feegrant.NewGrant(granter, grantee, &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(100))),\n\t})\n\ts.Require().NoError(err)\n\n\ts.addedGrant = grant\n\ts.addedGranter = granter\n\ts.addedGrantee = grantee\n\tfor _, v := range accounts {\n\t\ts.accounts = append(s.accounts, v.Address)\n\t}\n\ts.accounts[1] = accounts[1].Address\n}\n\n// createGrant creates a new basic allowance fee grant from granter to grantee.\nfunc (s *CLITestSuite) createGrant(granter, grantee sdk.Address) {\n\tcommonFlags := []string{\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(100))).String()),\n\t}\n\n\tfee := sdk.NewCoin(\"stake\", sdkmath.NewInt(100))\n\n\targs := append(\n\t\t[]string{\n\t\t\tgranter.String(),\n\t\t\tgrantee.String(),\n\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, fee.String()),\n\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(oneYear)),\n\t\t},\n\t\tcommonFlags...,\n\t)\n\n\tcmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec(\"cosmos\"))\n\tout, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, args)\n\ts.Require().NoError(err)\n\n\tvar resp sdk.TxResponse\n\ts.Require().NoError(s.clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String())\n\ts.Require().Equal(resp.Code, uint32(0))\n}\n\nfunc (s *CLITestSuite) TestNewCmdFeeGrant() {\n\tgranter := s.accounts[0]\n\talreadyExistedGrantee := s.addedGrantee\n\tclientCtx := s.clientCtx\n\n\tfromAddr, fromName, _, err := client.GetFromFields(s.baseCtx, s.kr, granter.String())\n\ts.Require().Equal(fromAddr, granter)\n\ts.Require().NoError(err)\n\n\tcommonFlags := []string{\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(10))).String()),\n\t}\n\n\ttestCases := []struct {\n\t\tname         string\n\t\targs         []string\n\t\texpectErr    bool\n\t\texpectedCode uint32\n\t\trespType     proto.Message\n\t}{\n\t\t{\n\t\t\t\"wrong granter address\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\t\"wrong_granter\",\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"wrong grantee address\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"wrong_grantee\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"wrong granter key name\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\t\"invalid_granter\",\n\t\t\t\t\t\"cosmos16dun6ehcc86e03wreqqww89ey569wuj4em572w\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant with granter key name\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tfromName,\n\t\t\t\t\t\"cosmos16dun6ehcc86e03wreqqww89ey569wuj4em572w\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, fromName),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant with amino\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1v57fx2l2rt6ehujuu99u2fw05779m5e2ux4z2h\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant without spend limit\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos17h5lzptx3ghvsuhk7wx4c4hnl7rsswxjer97em\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant without expiration\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos16dlc38dcqt0uralyd8hksxyrny6kaeqfjvjwp5\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid basic fee grant without spend-limit and expiration\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1ku40qup9vwag4wtf8cls9mkszxfthaklxkp3c8\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"try to add existed grant\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\talreadyExistedGrantee.String(),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 18, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"invalid number of args(periodic fee grant)\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(tenHours)),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"period mentioned and period limit omitted, invalid periodic grant\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, tenHours),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(oneHour)),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"period cannot be greater than the actual expiration(periodic fee grant)\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, tenHours),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(oneHour)),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t\t{\n\t\t\t\"valid periodic fee grant\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1w55kgcf3ltaqdy4ww49nge3klxmrdavrr6frmp\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, oneHour),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(tenHours)),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid periodic fee grant without spend-limit\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1vevyks8pthkscvgazc97qyfjt40m6g9xe85ry8\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, oneHour),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(tenHours)),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid periodic fee grant without expiration\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos14cm33pvnrv2497tyt8sp9yavhmw83nwej3m0e8\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, oneHour),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"valid periodic fee grant without spend-limit and expiration\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos12nyk4pcf4arshznkpz882e4l4ts0lt0ap8ce54\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, oneHour),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\tfalse, 0, &sdk.TxResponse{},\n\t\t},\n\t\t{\n\t\t\t\"invalid expiration\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"cosmos1vevyks8pthkscvgazc97qyfjt40m6g9xe85ry8\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%d\", cli.FlagPeriod, oneHour),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagPeriodLimit, \"10stake\"),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, \"invalid\"),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\ttrue, 0, nil,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\n\t\ts.Run(tc.name, func() {\n\t\t\tcmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec(\"cosmos\"))\n\t\t\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)\n\n\t\t\tif tc.expectErr {\n\t\t\t\ts.Require().Error(err)\n\t\t\t} else {\n\t\t\t\ts.Require().NoError(err)\n\t\t\t\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), tc.respType), out.String())\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (s *CLITestSuite) TestTxWithFeeGrant() {\n\tclientCtx := s.clientCtx\n\tgranter := s.addedGranter\n\n\t// creating an account manually (This account won't be exist in state)\n\tk, _, err := s.baseCtx.Keyring.NewMnemonic(\"grantee\", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)\n\ts.Require().NoError(err)\n\tpub, err := k.GetPubKey()\n\ts.Require().NoError(err)\n\tgrantee := sdk.AccAddress(pub.Address())\n\n\tcommonFlags := []string{\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(10))).String()),\n\t}\n\n\tfee := sdk.NewCoin(\"stake\", sdkmath.NewInt(100))\n\n\targs := append(\n\t\t[]string{\n\t\t\tgranter.String(),\n\t\t\tgrantee.String(),\n\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, fee.String()),\n\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagExpiration, getFormattedExpiration(oneYear)),\n\t\t},\n\t\tcommonFlags...,\n\t)\n\n\tcmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec(\"cosmos\"))\n\n\tvar res sdk.TxResponse\n\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)\n\ts.Require().NoError(err)\n\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res), out.String())\n\n\ttestcases := []struct {\n\t\tname       string\n\t\tfrom       string\n\t\tflags      []string\n\t\texpErrCode uint32\n\t}{\n\t\t{\n\t\t\tname:  \"granted fee allowance for an account which is not in state and creating any tx with it by using --fee-granter shouldn't fail\",\n\t\t\tfrom:  grantee.String(),\n\t\t\tflags: []string{fmt.Sprintf(\"--%s=%s\", flags.FlagFeeGranter, granter.String())},\n\t\t},\n\t\t{\n\t\t\tname:       \"--fee-payer should also sign the tx (direct)\",\n\t\t\tfrom:       grantee.String(),\n\t\t\tflags:      []string{fmt.Sprintf(\"--%s=%s\", flags.FlagFeePayer, granter.String())},\n\t\t\texpErrCode: 4,\n\t\t},\n\t\t{\n\t\t\tname: \"--fee-payer should also sign the tx (amino-json)\",\n\t\t\tfrom: grantee.String(),\n\t\t\tflags: []string{\n\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeePayer, granter.String()),\n\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),\n\t\t\t},\n\t\t\texpErrCode: 4,\n\t\t},\n\t\t{\n\t\t\tname: \"use --fee-payer and --fee-granter together works\",\n\t\t\tfrom: grantee.String(),\n\t\t\tflags: []string{\n\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeePayer, grantee.String()),\n\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeeGranter, granter.String()),\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testcases {\n\t\ts.Run(tc.name, func() {\n\t\t\terr := s.msgSubmitLegacyProposal(s.baseCtx, tc.from,\n\t\t\t\t\"Text Proposal\", \"No desc\", govv1beta1.ProposalTypeText,\n\t\t\t\ttc.flags...,\n\t\t\t)\n\t\t\ts.Require().NoError(err)\n\n\t\t\tvar resp sdk.TxResponse\n\t\t\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String())\n\t\t})\n\t}\n}\n\nfunc (s *CLITestSuite) msgSubmitLegacyProposal(clientCtx client.Context, from, title, description, proposalType string, extraArgs ...string) error {\n\tcommonArgs := []string{\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10))).String()),\n\t}\n\n\targs := append([]string{\n\t\tfmt.Sprintf(\"--%s=%s\", govcli.FlagTitle, title),\n\t\tfmt.Sprintf(\"--%s=%s\", govcli.FlagDescription, description),   //nolint:staticcheck // SA1019: govcli.FlagDescription is deprecated: use FlagDescription instead\n\t\tfmt.Sprintf(\"--%s=%s\", govcli.FlagProposalType, proposalType), //nolint:staticcheck // SA1019: govcli.FlagProposalType is deprecated: use FlagProposalType instead\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, from),\n\t}, commonArgs...)\n\n\targs = append(args, extraArgs...)\n\n\tcmd := govcli.NewCmdSubmitLegacyProposal()\n\n\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)\n\ts.Require().NoError(err)\n\tvar resp sdk.TxResponse\n\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &resp), out.String())\n\n\treturn err\n}\n\nfunc (s *CLITestSuite) TestFilteredFeeAllowance() {\n\tgranter := s.addedGranter\n\tk, _, err := s.baseCtx.Keyring.NewMnemonic(\"grantee1\", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)\n\ts.Require().NoError(err)\n\tpub, err := k.GetPubKey()\n\ts.Require().NoError(err)\n\tgrantee := sdk.AccAddress(pub.Address())\n\tclientCtx := s.clientCtx\n\n\tcommonFlags := []string{\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),\n\t}\n\tspendLimit := sdk.NewCoin(\"stake\", sdkmath.NewInt(1000))\n\tallowMsgs := strings.Join([]string{sdk.MsgTypeURL(&govv1beta1.MsgSubmitProposal{}), sdk.MsgTypeURL(&govv1.MsgVoteWeighted{})}, \",\")\n\n\ttestCases := []struct {\n\t\tname         string\n\t\targs         []string\n\t\texpectErrMsg string\n\t}{\n\t\t{\n\t\t\t\"invalid granter address\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\t\"not an address\",\n\t\t\t\t\t\"cosmos1nph3cfzk6trsmfxkeu943nvach5qw4vwstnvkl\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagAllowedMsgs, allowMsgs),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, spendLimit.String()),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\t\"key not found\",\n\t\t},\n\t\t{\n\t\t\t\"invalid grantee address\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\t\"not an address\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagAllowedMsgs, allowMsgs),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, spendLimit.String()),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"valid filter fee grant\",\n\t\t\tappend(\n\t\t\t\t[]string{\n\t\t\t\t\tgranter.String(),\n\t\t\t\t\tgrantee.String(),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagAllowedMsgs, allowMsgs),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, spendLimit.String()),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, granter),\n\t\t\t\t},\n\t\t\t\tcommonFlags...,\n\t\t\t),\n\t\t\t\"\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\n\t\ts.Run(tc.name, func() {\n\t\t\tcmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec(\"cosmos\"))\n\t\t\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)\n\t\t\tif tc.expectErrMsg != \"\" {\n\t\t\t\ts.Require().Error(err)\n\t\t\t\ts.Require().Contains(err.Error(), tc.expectErrMsg)\n\t\t\t} else {\n\t\t\t\ts.Require().NoError(err)\n\t\t\t\tmsg := &sdk.TxResponse{}\n\t\t\t\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), msg), out.String())\n\t\t\t}\n\t\t})\n\t}\n\n\t// exec filtered fee allowance\n\tcases := []struct {\n\t\tname     string\n\t\tmalleate func() error\n\t}{\n\t\t{\n\t\t\t\"valid proposal tx\",\n\t\t\tfunc() error {\n\t\t\t\treturn s.msgSubmitLegacyProposal(s.baseCtx, grantee.String(),\n\t\t\t\t\t\"Text Proposal\", \"No desc\", govv1beta1.ProposalTypeText,\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeeGranter, granter.String()),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),\n\t\t\t\t)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid weighted_vote tx\",\n\t\t\tfunc() error {\n\t\t\t\treturn s.msgVote(s.baseCtx, grantee.String(), \"0\", \"yes\",\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeeGranter, granter.String()),\n\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100))).String()),\n\t\t\t\t)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"should fail with unauthorized msgs\",\n\t\t\tfunc() error {\n\t\t\t\targs := append(\n\t\t\t\t\t[]string{\n\t\t\t\t\t\tgrantee.String(),\n\t\t\t\t\t\t\"cosmos14cm33pvnrv2497tyt8sp9yavhmw83nwej3m0e8\",\n\t\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", cli.FlagSpendLimit, \"100stake\"),\n\t\t\t\t\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFeeGranter, granter),\n\t\t\t\t\t},\n\t\t\t\t\tcommonFlags...,\n\t\t\t\t)\n\n\t\t\t\tcmd := cli.NewCmdFeeGrant(codecaddress.NewBech32Codec(\"cosmos\"))\n\t\t\t\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)\n\t\t\t\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &sdk.TxResponse{}), out.String())\n\n\t\t\t\treturn err\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range cases {\n\t\ttc := tc\n\n\t\ts.Run(tc.name, func() {\n\t\t\terr := tc.malleate()\n\t\t\ts.Require().NoError(err)\n\t\t})\n\t}\n}\n\n// msgVote votes for a proposal\nfunc (s *CLITestSuite) msgVote(clientCtx client.Context, from, id, vote string, extraArgs ...string) error {\n\tcommonArgs := []string{\n\t\tfmt.Sprintf(\"--%s=true\", flags.FlagSkipConfirmation),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagBroadcastMode, flags.BroadcastSync),\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(10))).String()),\n\t}\n\targs := append([]string{\n\t\tid,\n\t\tvote,\n\t\tfmt.Sprintf(\"--%s=%s\", flags.FlagFrom, from),\n\t}, commonArgs...)\n\n\targs = append(args, extraArgs...)\n\tcmd := govcli.NewCmdWeightedVote()\n\n\tout, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)\n\n\ts.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &sdk.TxResponse{}), out.String())\n\n\treturn err\n}\n\nfunc getFormattedExpiration(duration int64) string {\n\treturn time.Now().Add(time.Duration(duration) * time.Second).Format(time.RFC3339)\n}\n"
  },
  {
    "path": "x/feegrant/codec.go",
    "content": "package feegrant\n\nimport (\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/codec/legacy\"\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/msgservice\"\n)\n\n// RegisterLegacyAminoCodec registers the necessary x/feegrant interfaces and concrete types\n// on the provided LegacyAmino codec. These types are used for Amino JSON serialization.\nfunc RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {\n\tlegacy.RegisterAminoMsg(cdc, &MsgGrantAllowance{}, \"cosmos-sdk/MsgGrantAllowance\")\n\tlegacy.RegisterAminoMsg(cdc, &MsgRevokeAllowance{}, \"cosmos-sdk/MsgRevokeAllowance\")\n\n\tcdc.RegisterInterface((*FeeAllowanceI)(nil), nil)\n\tcdc.RegisterConcrete(&BasicAllowance{}, \"cosmos-sdk/BasicAllowance\", nil)\n\tcdc.RegisterConcrete(&PeriodicAllowance{}, \"cosmos-sdk/PeriodicAllowance\", nil)\n\tcdc.RegisterConcrete(&AllowedMsgAllowance{}, \"cosmos-sdk/AllowedMsgAllowance\", nil)\n}\n\n// RegisterInterfaces registers the interfaces types with the interface registry\nfunc RegisterInterfaces(registry types.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgGrantAllowance{},\n\t\t&MsgRevokeAllowance{},\n\t\t&MsgGrantDIDAllowance{},\n\t\t&MsgExpireDIDAllowance{},\n\t\t&MsgPruneDIDAllowances{},\n\t)\n\n\tregistry.RegisterInterface(\n\t\t\"sourcehub.feegrant.v1beta1.FeeAllowanceI\",\n\t\t(*FeeAllowanceI)(nil),\n\t\t&BasicAllowance{},\n\t\t&PeriodicAllowance{},\n\t\t&AllowedMsgAllowance{},\n\t)\n\n\tmsgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)\n}\n"
  },
  {
    "path": "x/feegrant/doc.go",
    "content": "/*\nPackage feegrant provides functionality for authorizing the payment of transaction\nfees from one account (key) to another account (key).\n\nEffectively, this allows for a user to pay fees using the balance of an account\ndifferent from their own. Example use cases would be allowing a key on a device to\npay for fees using a master wallet, or a third party service allowing users to\npay for transactions without ever really holding their own coins. This package\nprovides ways for specifying fee allowances such that authorizing fee payment to\nanother account can be done with clear and safe restrictions.\n\nA user would authorize granting fee payment to another user using\nMsgGrantAllowance and revoke that delegation using MsgRevokeAllowance.\nIn both cases, Granter is the one who is authorizing fee payment and Grantee is\nthe one who is receiving the fee payment authorization. So grantee would correspond\nto the one who is signing a transaction and the granter would be the address that\npays the fees.\n\nThe fee allowance that a grantee receives is specified by an implementation of\nthe FeeAllowance interface. Two FeeAllowance implementations are provided in\nthis package: BasicAllowance and PeriodicAllowance.\n*/\npackage feegrant\n"
  },
  {
    "path": "x/feegrant/errors.go",
    "content": "package feegrant\n\nimport \"cosmossdk.io/errors\"\n\n// Codes for feegrant errors\nconst (\n\tDefaultCodespace = ModuleName\n)\n\nvar (\n\t// ErrFeeLimitExceeded error if there are not enough allowance to cover the fees\n\tErrFeeLimitExceeded = errors.Register(DefaultCodespace, 2, \"fee limit exceeded\")\n\t// ErrFeeLimitExpired error if the allowance has expired\n\tErrFeeLimitExpired = errors.Register(DefaultCodespace, 3, \"fee allowance expired\")\n\t// ErrInvalidDuration error if the Duration is invalid or doesn't match the expiration\n\tErrInvalidDuration = errors.Register(DefaultCodespace, 4, \"invalid duration\")\n\t// ErrNoAllowance error if there is no allowance for that pair\n\tErrNoAllowance = errors.Register(DefaultCodespace, 5, \"no allowance\")\n\t// ErrNoMessages error if there is no message\n\tErrNoMessages = errors.Register(DefaultCodespace, 6, \"allowed messages are empty\")\n\t// ErrMessageNotAllowed error if message is not allowed\n\tErrMessageNotAllowed = errors.Register(DefaultCodespace, 7, \"message not allowed\")\n\t// ErrInvalidDID error if a DID is not valid\n\tErrInvalidDID = errors.Register(DefaultCodespace, 8, \"invalid DID\")\n)\n"
  },
  {
    "path": "x/feegrant/events.go",
    "content": "package feegrant\n\n// feegrant module events\nconst (\n\tEventTypeUseFeeGrant       = \"use_feegrant\"\n\tEventTypeUseDIDFeeGrant    = \"use_did_feegrant\"\n\tEventTypeRevokeFeeGrant    = \"revoke_feegrant\"\n\tEventTypeRevokeDIDFeeGrant = \"revoke_did_feegrant\"\n\tEventTypeExpireDIDFeeGrant = \"expire_did_feegrant\"\n\tEventTypeSetFeeGrant       = \"set_feegrant\"\n\tEventTypeSetDIDFeeGrant    = \"set_did_feegrant\"\n\tEventTypeUpdateFeeGrant    = \"update_feegrant\"\n\tEventTypeUpdateDIDFeeGrant = \"update_did_feegrant\"\n\tEventTypePruneFeeGrant     = \"prune_feegrant\"\n\tEventTypePruneDIDFeeGrant  = \"prune_did_feegrant\"\n\n\tAttributeKeyExpirationTime = \"expiration_time\"\n\tAttributeKeyGranter        = \"granter\"\n\tAttributeKeyGrantee        = \"grantee\"\n\tAttributeKeyGranteeDid     = \"grantee_did\"\n\tAttributeKeyPruner         = \"pruner\"\n)\n"
  },
  {
    "path": "x/feegrant/expected_keepers.go",
    "content": "package feegrant\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/core/address\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// AccountKeeper defines the expected auth Account Keeper (noalias)\ntype AccountKeeper interface {\n\tAddressCodec() address.Codec\n\n\tGetModuleAddress(moduleName string) sdk.AccAddress\n\tGetModuleAccount(ctx context.Context, moduleName string) sdk.ModuleAccountI\n\n\tNewAccountWithAddress(ctx context.Context, addr sdk.AccAddress) sdk.AccountI\n\tGetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI\n\tSetAccount(ctx context.Context, acc sdk.AccountI)\n}\n\n// BankKeeper defines the expected supply Keeper (noalias)\ntype BankKeeper interface {\n\tSpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins\n\tSendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error\n\tBlockedAddr(addr sdk.AccAddress) bool\n}\n"
  },
  {
    "path": "x/feegrant/feegrant.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/feegrant/v1beta1/feegrant.proto\n\npackage feegrant\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\ttypes2 \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tgithub_com_cosmos_cosmos_sdk_types \"github.com/cosmos/cosmos-sdk/types\"\n\ttypes \"github.com/cosmos/cosmos-sdk/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// BasicAllowance implements Allowance with a one-time grant of coins\n// that optionally expires. The grantee can use up to SpendLimit to cover fees.\ntype BasicAllowance struct {\n\t// spend_limit specifies the maximum amount of coins that can be spent\n\t// by this allowance and will be updated as coins are spent. If it is\n\t// empty, there is no spend limit and any amount of coins can be spent.\n\tSpendLimit github_com_cosmos_cosmos_sdk_types.Coins `protobuf:\"bytes,1,rep,name=spend_limit,json=spendLimit,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins\" json:\"spend_limit\"`\n\t// expiration specifies an optional time when this allowance expires\n\tExpiration *time.Time `protobuf:\"bytes,2,opt,name=expiration,proto3,stdtime\" json:\"expiration,omitempty\"`\n}\n\nfunc (m *BasicAllowance) Reset()         { *m = BasicAllowance{} }\nfunc (m *BasicAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*BasicAllowance) ProtoMessage()    {}\nfunc (*BasicAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_30097885dd4859f3, []int{0}\n}\nfunc (m *BasicAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *BasicAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_BasicAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *BasicAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_BasicAllowance.Merge(m, src)\n}\nfunc (m *BasicAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *BasicAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_BasicAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_BasicAllowance proto.InternalMessageInfo\n\nfunc (m *BasicAllowance) GetSpendLimit() github_com_cosmos_cosmos_sdk_types.Coins {\n\tif m != nil {\n\t\treturn m.SpendLimit\n\t}\n\treturn nil\n}\n\nfunc (m *BasicAllowance) GetExpiration() *time.Time {\n\tif m != nil {\n\t\treturn m.Expiration\n\t}\n\treturn nil\n}\n\n// PeriodicAllowance extends Allowance to allow for both a maximum cap,\n// as well as a limit per time period.\ntype PeriodicAllowance struct {\n\t// basic specifies a struct of `BasicAllowance`\n\tBasic BasicAllowance `protobuf:\"bytes,1,opt,name=basic,proto3\" json:\"basic\"`\n\t// period specifies the time duration in which period_spend_limit coins can\n\t// be spent before that allowance is reset\n\tPeriod time.Duration `protobuf:\"bytes,2,opt,name=period,proto3,stdduration\" json:\"period\"`\n\t// period_spend_limit specifies the maximum number of coins that can be spent\n\t// in the period\n\tPeriodSpendLimit github_com_cosmos_cosmos_sdk_types.Coins `protobuf:\"bytes,3,rep,name=period_spend_limit,json=periodSpendLimit,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins\" json:\"period_spend_limit\"`\n\t// period_can_spend is the number of coins left to be spent before the period_reset time\n\tPeriodCanSpend github_com_cosmos_cosmos_sdk_types.Coins `protobuf:\"bytes,4,rep,name=period_can_spend,json=periodCanSpend,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins\" json:\"period_can_spend\"`\n\t// period_reset is the time at which this period resets and a new one begins,\n\t// it is calculated from the start time of the first transaction after the\n\t// last period ended\n\tPeriodReset time.Time `protobuf:\"bytes,5,opt,name=period_reset,json=periodReset,proto3,stdtime\" json:\"period_reset\"`\n}\n\nfunc (m *PeriodicAllowance) Reset()         { *m = PeriodicAllowance{} }\nfunc (m *PeriodicAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*PeriodicAllowance) ProtoMessage()    {}\nfunc (*PeriodicAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_30097885dd4859f3, []int{1}\n}\nfunc (m *PeriodicAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *PeriodicAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_PeriodicAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *PeriodicAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_PeriodicAllowance.Merge(m, src)\n}\nfunc (m *PeriodicAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *PeriodicAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_PeriodicAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_PeriodicAllowance proto.InternalMessageInfo\n\nfunc (m *PeriodicAllowance) GetBasic() BasicAllowance {\n\tif m != nil {\n\t\treturn m.Basic\n\t}\n\treturn BasicAllowance{}\n}\n\nfunc (m *PeriodicAllowance) GetPeriod() time.Duration {\n\tif m != nil {\n\t\treturn m.Period\n\t}\n\treturn 0\n}\n\nfunc (m *PeriodicAllowance) GetPeriodSpendLimit() github_com_cosmos_cosmos_sdk_types.Coins {\n\tif m != nil {\n\t\treturn m.PeriodSpendLimit\n\t}\n\treturn nil\n}\n\nfunc (m *PeriodicAllowance) GetPeriodCanSpend() github_com_cosmos_cosmos_sdk_types.Coins {\n\tif m != nil {\n\t\treturn m.PeriodCanSpend\n\t}\n\treturn nil\n}\n\nfunc (m *PeriodicAllowance) GetPeriodReset() time.Time {\n\tif m != nil {\n\t\treturn m.PeriodReset\n\t}\n\treturn time.Time{}\n}\n\n// AllowedMsgAllowance creates allowance only for specified message types.\ntype AllowedMsgAllowance struct {\n\t// allowance can be any of basic and periodic fee allowance.\n\tAllowance *types2.Any `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n\t// allowed_messages are the messages for which the grantee has the access.\n\tAllowedMessages []string `protobuf:\"bytes,2,rep,name=allowed_messages,json=allowedMessages,proto3\" json:\"allowed_messages,omitempty\"`\n}\n\nfunc (m *AllowedMsgAllowance) Reset()         { *m = AllowedMsgAllowance{} }\nfunc (m *AllowedMsgAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*AllowedMsgAllowance) ProtoMessage()    {}\nfunc (*AllowedMsgAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_30097885dd4859f3, []int{2}\n}\nfunc (m *AllowedMsgAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *AllowedMsgAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_AllowedMsgAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *AllowedMsgAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_AllowedMsgAllowance.Merge(m, src)\n}\nfunc (m *AllowedMsgAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *AllowedMsgAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_AllowedMsgAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_AllowedMsgAllowance proto.InternalMessageInfo\n\n// Grant is stored in the KVStore to record a grant with full context\ntype Grant struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *types2.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *Grant) Reset()         { *m = Grant{} }\nfunc (m *Grant) String() string { return proto.CompactTextString(m) }\nfunc (*Grant) ProtoMessage()    {}\nfunc (*Grant) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_30097885dd4859f3, []int{3}\n}\nfunc (m *Grant) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Grant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Grant.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Grant) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Grant.Merge(m, src)\n}\nfunc (m *Grant) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Grant) XXX_DiscardUnknown() {\n\txxx_messageInfo_Grant.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Grant proto.InternalMessageInfo\n\nfunc (m *Grant) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *Grant) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (m *Grant) GetAllowance() *types2.Any {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\n// DIDGrant is stored in the KVStore to record a grant with DID as grantee\ntype DIDGrant struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID of the user being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *types2.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *DIDGrant) Reset()         { *m = DIDGrant{} }\nfunc (m *DIDGrant) String() string { return proto.CompactTextString(m) }\nfunc (*DIDGrant) ProtoMessage()    {}\nfunc (*DIDGrant) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_30097885dd4859f3, []int{4}\n}\nfunc (m *DIDGrant) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DIDGrant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DIDGrant.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DIDGrant) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DIDGrant.Merge(m, src)\n}\nfunc (m *DIDGrant) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DIDGrant) XXX_DiscardUnknown() {\n\txxx_messageInfo_DIDGrant.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DIDGrant proto.InternalMessageInfo\n\nfunc (m *DIDGrant) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *DIDGrant) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *DIDGrant) GetAllowance() *types2.Any {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*BasicAllowance)(nil), \"sourcehub.feegrant.v1beta1.BasicAllowance\")\n\tproto.RegisterType((*PeriodicAllowance)(nil), \"sourcehub.feegrant.v1beta1.PeriodicAllowance\")\n\tproto.RegisterType((*AllowedMsgAllowance)(nil), \"sourcehub.feegrant.v1beta1.AllowedMsgAllowance\")\n\tproto.RegisterType((*Grant)(nil), \"sourcehub.feegrant.v1beta1.Grant\")\n\tproto.RegisterType((*DIDGrant)(nil), \"sourcehub.feegrant.v1beta1.DIDGrant\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/feegrant/v1beta1/feegrant.proto\", fileDescriptor_30097885dd4859f3)\n}\n\nvar fileDescriptor_30097885dd4859f3 = []byte{\n\t// 697 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xbf, 0x4f, 0xdb, 0x40,\n\t0x14, 0xce, 0x11, 0xa0, 0xcd, 0x85, 0x52, 0x70, 0x19, 0x92, 0xa8, 0xb2, 0x51, 0xa6, 0x10, 0x35,\n\t0xb6, 0xa0, 0x1b, 0x13, 0x98, 0x08, 0x44, 0x0b, 0x52, 0x65, 0x3a, 0x75, 0x71, 0x2f, 0xf6, 0xe1,\n\t0x9e, 0x88, 0x7d, 0x91, 0xcf, 0x29, 0x64, 0xed, 0x54, 0xb5, 0x43, 0x19, 0xab, 0x4e, 0x95, 0xba,\n\t0x54, 0x9d, 0x18, 0xf8, 0x07, 0xba, 0xa1, 0x4e, 0xb4, 0x53, 0xa7, 0xa6, 0x82, 0x81, 0x3f, 0xa1,\n\t0x6b, 0xe5, 0xbb, 0xb3, 0x63, 0xa0, 0xbf, 0xa8, 0x04, 0x4b, 0xe2, 0xf7, 0xee, 0x7d, 0xef, 0x7d,\n\t0xdf, 0x7b, 0xcf, 0x3e, 0x38, 0xc3, 0x68, 0x37, 0x74, 0xf0, 0x93, 0x6e, 0xcb, 0xd8, 0xc4, 0xd8,\n\t0x0b, 0x51, 0x10, 0x19, 0x4f, 0x67, 0x5b, 0x38, 0x42, 0xb3, 0xa9, 0x43, 0xef, 0x84, 0x34, 0xa2,\n\t0x4a, 0x25, 0x0d, 0xd5, 0xd3, 0x13, 0x19, 0x5a, 0x99, 0xf2, 0xa8, 0x47, 0x79, 0x98, 0x11, 0x3f,\n\t0x09, 0x44, 0xa5, 0xec, 0x51, 0xea, 0xb5, 0xb1, 0xc1, 0xad, 0x56, 0x77, 0xd3, 0x40, 0x41, 0x2f,\n\t0x39, 0x72, 0x28, 0xf3, 0x29, 0xb3, 0x05, 0x46, 0x18, 0xf2, 0x48, 0x15, 0x96, 0xd1, 0x42, 0x0c,\n\t0xa7, 0x5c, 0x1c, 0x4a, 0x02, 0x79, 0x3e, 0x89, 0x7c, 0x12, 0x50, 0x83, 0xff, 0x4a, 0x97, 0x76,\n\t0xb6, 0x50, 0x44, 0x7c, 0xcc, 0x22, 0xe4, 0x77, 0x92, 0x9c, 0x67, 0x03, 0xdc, 0x6e, 0x88, 0x22,\n\t0x42, 0x65, 0xce, 0xea, 0xbb, 0x21, 0x38, 0x6e, 0x22, 0x46, 0x9c, 0xc5, 0x76, 0x9b, 0x6e, 0xa3,\n\t0xc0, 0xc1, 0xca, 0x33, 0x00, 0x8b, 0xac, 0x83, 0x03, 0xd7, 0x6e, 0x13, 0x9f, 0x44, 0x25, 0x30,\n\t0x9d, 0xaf, 0x15, 0xe7, 0xca, 0xba, 0xe4, 0x1a, 0xb3, 0x4b, 0xe4, 0xeb, 0x4b, 0x94, 0x04, 0xe6,\n\t0xf2, 0xc1, 0x37, 0x2d, 0xf7, 0xa1, 0xaf, 0xd5, 0x3c, 0x12, 0xc5, 0x4d, 0x72, 0xa8, 0x2f, 0x85,\n\t0xc9, 0xbf, 0x06, 0x73, 0xb7, 0x8c, 0xa8, 0xd7, 0xc1, 0x8c, 0x03, 0xd8, 0x9b, 0x93, 0xbd, 0xfa,\n\t0x58, 0x1b, 0x7b, 0xc8, 0xe9, 0xd9, 0xb1, 0x3e, 0xf6, 0xfe, 0x64, 0xaf, 0x0e, 0x2c, 0xc8, 0xab,\n\t0xae, 0xc5, 0x45, 0x95, 0x05, 0x08, 0xf1, 0x4e, 0x87, 0x08, 0xae, 0xa5, 0xa1, 0x69, 0x50, 0x2b,\n\t0xce, 0x55, 0x74, 0x21, 0x46, 0x4f, 0xc4, 0xe8, 0x0f, 0x13, 0xb5, 0xe6, 0xf0, 0x6e, 0x5f, 0x03,\n\t0x56, 0x06, 0x33, 0x7f, 0xef, 0xd3, 0x7e, 0xa3, 0xf6, 0xfb, 0xc9, 0xe9, 0xcb, 0x18, 0xa7, 0x9a,\n\t0x57, 0x5f, 0x9c, 0xec, 0xd5, 0xcb, 0x19, 0xb2, 0xa7, 0x5b, 0x52, 0xed, 0x0f, 0xc3, 0xc9, 0x07,\n\t0x38, 0x24, 0xd4, 0xcd, 0x36, 0xea, 0x3e, 0x1c, 0x69, 0xc5, 0x71, 0x25, 0xc0, 0xe9, 0xd5, 0xf5,\n\t0x3f, 0x54, 0x3b, 0x9d, 0xd0, 0x2c, 0xc4, 0x2d, 0x13, 0xaa, 0x45, 0x0e, 0x65, 0x01, 0x8e, 0x76,\n\t0x78, 0x05, 0x29, 0xb6, 0x7c, 0x4e, 0x6c, 0x53, 0x4e, 0xce, 0xbc, 0x11, 0x83, 0x5f, 0xf7, 0x35,\n\t0x20, 0x12, 0x48, 0x9c, 0xf2, 0x0a, 0x40, 0x45, 0x3c, 0xda, 0xd9, 0xf1, 0xe5, 0xaf, 0x6a, 0x7c,\n\t0x13, 0xa2, 0xf8, 0xc6, 0x60, 0x88, 0x2f, 0x01, 0x94, 0x4e, 0xdb, 0x41, 0x81, 0x60, 0x55, 0x1a,\n\t0xbe, 0x2a, 0x3e, 0xe3, 0xa2, 0xf4, 0x12, 0x0a, 0x38, 0x25, 0x65, 0x0d, 0x8e, 0x49, 0x32, 0x21,\n\t0x66, 0x38, 0x2a, 0x8d, 0xfc, 0x75, 0xa9, 0x78, 0xa3, 0x77, 0xd3, 0x46, 0x17, 0x05, 0xdc, 0x8a,\n\t0xd1, 0xf3, 0xeb, 0x17, 0x5d, 0xaf, 0xdb, 0x19, 0xf2, 0xe7, 0x76, 0xa9, 0xfa, 0x03, 0xc0, 0x5b,\n\t0xdc, 0xc2, 0xee, 0x3a, 0xf3, 0x06, 0x3b, 0xf6, 0x18, 0x16, 0x50, 0x62, 0xc8, 0x3d, 0x9b, 0x3a,\n\t0xc7, 0x78, 0x31, 0xe8, 0x99, 0x77, 0x2e, 0xc2, 0xc7, 0x1a, 0x24, 0x55, 0x66, 0xe0, 0x04, 0x12,\n\t0x85, 0x6d, 0x1f, 0x33, 0x86, 0x3c, 0xcc, 0x4a, 0x43, 0xd3, 0xf9, 0x5a, 0xc1, 0xba, 0x29, 0xfd,\n\t0xeb, 0xd2, 0x3d, 0xbf, 0xf1, 0xfc, 0xad, 0x96, 0xbb, 0xa8, 0x6e, 0x35, 0xa3, 0xfb, 0x17, 0x0a,\n\t0xab, 0x9f, 0x01, 0x1c, 0x59, 0x89, 0x53, 0x28, 0x73, 0xf0, 0x1a, 0xcf, 0x85, 0x43, 0xae, 0xb4,\n\t0x60, 0x96, 0xbe, 0xec, 0x37, 0xa6, 0xe4, 0x9e, 0x2c, 0xba, 0x6e, 0x88, 0x19, 0xdb, 0x88, 0x42,\n\t0x12, 0x78, 0x56, 0x12, 0x38, 0xc0, 0x60, 0xfe, 0xde, 0xfc, 0x03, 0xe6, 0x4c, 0x4f, 0xf3, 0x97,\n\t0xd0, 0xd3, 0xea, 0x47, 0x00, 0xaf, 0x37, 0x57, 0x9b, 0xff, 0x2f, 0x4b, 0x83, 0x45, 0xc9, 0xd6,\n\t0x76, 0x89, 0xf8, 0x24, 0x14, 0x2c, 0x28, 0x5d, 0x4d, 0xe2, 0x5e, 0xbe, 0x06, 0x73, 0xe5, 0xe0,\n\t0x48, 0x05, 0x87, 0x47, 0x2a, 0xf8, 0x7e, 0xa4, 0x82, 0xdd, 0x63, 0x35, 0x77, 0x78, 0xac, 0xe6,\n\t0xbe, 0x1e, 0xab, 0xb9, 0x47, 0x8d, 0xcc, 0x8b, 0x29, 0x32, 0x07, 0x38, 0xda, 0xa6, 0xe1, 0x96,\n\t0x31, 0xb8, 0x53, 0x77, 0xd2, 0x4b, 0xb4, 0x35, 0xca, 0xf9, 0xdc, 0xfd, 0x19, 0x00, 0x00, 0xff,\n\t0xff, 0xb5, 0x4e, 0x09, 0x66, 0x72, 0x07, 0x00, 0x00,\n}\n\nfunc (m *BasicAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *BasicAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *BasicAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Expiration != nil {\n\t\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.Expiration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration):])\n\t\tif err1 != nil {\n\t\t\treturn 0, err1\n\t\t}\n\t\ti -= n1\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(n1))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.SpendLimit) > 0 {\n\t\tfor iNdEx := len(m.SpendLimit) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.SpendLimit[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *PeriodicAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *PeriodicAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *PeriodicAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.PeriodReset, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.PeriodReset):])\n\tif err2 != nil {\n\t\treturn 0, err2\n\t}\n\ti -= n2\n\ti = encodeVarintFeegrant(dAtA, i, uint64(n2))\n\ti--\n\tdAtA[i] = 0x2a\n\tif len(m.PeriodCanSpend) > 0 {\n\t\tfor iNdEx := len(m.PeriodCanSpend) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.PeriodCanSpend[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.PeriodSpendLimit) > 0 {\n\t\tfor iNdEx := len(m.PeriodSpendLimit) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.PeriodSpendLimit[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tn3, err3 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.Period, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Period):])\n\tif err3 != nil {\n\t\treturn 0, err3\n\t}\n\ti -= n3\n\ti = encodeVarintFeegrant(dAtA, i, uint64(n3))\n\ti--\n\tdAtA[i] = 0x12\n\t{\n\t\tsize, err := m.Basic.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *AllowedMsgAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *AllowedMsgAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *AllowedMsgAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.AllowedMessages) > 0 {\n\t\tfor iNdEx := len(m.AllowedMessages) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\ti -= len(m.AllowedMessages[iNdEx])\n\t\t\tcopy(dAtA[i:], m.AllowedMessages[iNdEx])\n\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(len(m.AllowedMessages[iNdEx])))\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Grant) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Grant) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Grant) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DIDGrant) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DIDGrant) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DIDGrant) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintFeegrant(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintFeegrant(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintFeegrant(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovFeegrant(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *BasicAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.SpendLimit) > 0 {\n\t\tfor _, e := range m.SpendLimit {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t\t}\n\t}\n\tif m.Expiration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.Expiration)\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *PeriodicAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Basic.Size()\n\tn += 1 + l + sovFeegrant(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Period)\n\tn += 1 + l + sovFeegrant(uint64(l))\n\tif len(m.PeriodSpendLimit) > 0 {\n\t\tfor _, e := range m.PeriodSpendLimit {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t\t}\n\t}\n\tif len(m.PeriodCanSpend) > 0 {\n\t\tfor _, e := range m.PeriodCanSpend {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t\t}\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.PeriodReset)\n\tn += 1 + l + sovFeegrant(uint64(l))\n\treturn n\n}\n\nfunc (m *AllowedMsgAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\tif len(m.AllowedMessages) > 0 {\n\t\tfor _, s := range m.AllowedMessages {\n\t\t\tl = len(s)\n\t\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *Grant) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DIDGrant) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovFeegrant(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovFeegrant(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozFeegrant(x uint64) (n int) {\n\treturn sovFeegrant(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *BasicAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: BasicAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: BasicAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SpendLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.SpendLimit = append(m.SpendLimit, types.Coin{})\n\t\t\tif err := m.SpendLimit[len(m.SpendLimit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Expiration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Expiration == nil {\n\t\t\t\tm.Expiration = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.Expiration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFeegrant(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *PeriodicAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: PeriodicAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: PeriodicAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Basic\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Basic.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.Period, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeriodSpendLimit\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeriodSpendLimit = append(m.PeriodSpendLimit, types.Coin{})\n\t\t\tif err := m.PeriodSpendLimit[len(m.PeriodSpendLimit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeriodCanSpend\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.PeriodCanSpend = append(m.PeriodCanSpend, types.Coin{})\n\t\t\tif err := m.PeriodCanSpend[len(m.PeriodCanSpend)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field PeriodReset\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.PeriodReset, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFeegrant(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *AllowedMsgAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: AllowedMsgAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: AllowedMsgAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &types2.Any{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AllowedMessages\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.AllowedMessages = append(m.AllowedMessages, string(dAtA[iNdEx:postIndex]))\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFeegrant(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Grant) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Grant: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Grant: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &types2.Any{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFeegrant(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DIDGrant) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DIDGrant: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DIDGrant: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &types2.Any{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipFeegrant(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipFeegrant(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowFeegrant\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowFeegrant\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthFeegrant\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupFeegrant\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthFeegrant\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthFeegrant        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowFeegrant          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupFeegrant = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/feegrant/fees.go",
    "content": "package feegrant\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// FeeAllowance implementations are tied to a given fee delegator and delegatee,\n// and are used to enforce feegrant limits.\ntype FeeAllowanceI interface {\n\t// Accept can use fee payment requested as well as timestamp of the current block\n\t// to determine whether or not to process this. This is checked in\n\t// Keeper.UseGrantedFees and the return values should match how it is handled there.\n\t//\n\t// If it returns an error, the fee payment is rejected, otherwise it is accepted.\n\t// The FeeAllowance implementation is expected to update its internal state\n\t// and will be saved again after an acceptance.\n\t//\n\t// If remove is true (regardless of the error), the FeeAllowance will be deleted from storage\n\t// (eg. when it is used up). (See call to RevokeAllowance in Keeper.UseGrantedFees)\n\tAccept(ctx context.Context, fee sdk.Coins, msgs []sdk.Msg) (remove bool, err error)\n\n\t// ValidateBasic should evaluate this FeeAllowance for internal consistency.\n\t// Don't allow negative amounts, or negative periods for example.\n\tValidateBasic() error\n\n\t// ExpiresAt returns the expiry time of the allowance.\n\tExpiresAt() (*time.Time, error)\n}\n"
  },
  {
    "path": "x/feegrant/filtered_fee.go",
    "content": "package feegrant\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/cosmos/gogoproto/proto\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\n// TODO: Revisit this once we have proper gas fee framework.\n// Tracking issues https://github.com/cosmos/cosmos-sdk/issues/9054, https://github.com/cosmos/cosmos-sdk/discussions/9072\nconst (\n\tgasCostPerIteration = uint64(10)\n)\n\nvar (\n\t_ FeeAllowanceI                 = (*AllowedMsgAllowance)(nil)\n\t_ types.UnpackInterfacesMessage = (*AllowedMsgAllowance)(nil)\n)\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces\nfunc (a *AllowedMsgAllowance) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tvar allowance FeeAllowanceI\n\treturn unpacker.UnpackAny(a.Allowance, &allowance)\n}\n\n// NewAllowedMsgFeeAllowance creates new filtered fee allowance.\nfunc NewAllowedMsgAllowance(allowance FeeAllowanceI, allowedMsgs []string) (*AllowedMsgAllowance, error) {\n\tmsg, ok := allowance.(proto.Message)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", msg)\n\t}\n\tany, err := types.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &AllowedMsgAllowance{\n\t\tAllowance:       any,\n\t\tAllowedMessages: allowedMsgs,\n\t}, nil\n}\n\n// GetAllowance returns allowed fee allowance.\nfunc (a *AllowedMsgAllowance) GetAllowance() (FeeAllowanceI, error) {\n\tallowance, ok := a.Allowance.GetCachedValue().(FeeAllowanceI)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrap(ErrNoAllowance, \"failed to get allowance\")\n\t}\n\n\treturn allowance, nil\n}\n\n// SetAllowance sets allowed fee allowance.\nfunc (a *AllowedMsgAllowance) SetAllowance(allowance FeeAllowanceI) error {\n\tvar err error\n\ta.Allowance, err = types.NewAnyWithValue(allowance.(proto.Message))\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", allowance)\n\t}\n\n\treturn nil\n}\n\n// Accept method checks for the filtered messages has valid expiry\nfunc (a *AllowedMsgAllowance) Accept(ctx context.Context, fee sdk.Coins, msgs []sdk.Msg) (bool, error) {\n\tif !a.allMsgTypesAllowed(sdk.UnwrapSDKContext(ctx), msgs) {\n\t\treturn false, errorsmod.Wrap(ErrMessageNotAllowed, \"message does not exist in allowed messages\")\n\t}\n\n\tallowance, err := a.GetAllowance()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tremove, err := allowance.Accept(ctx, fee, msgs)\n\tif err == nil && !remove {\n\t\tif err = a.SetAllowance(allowance); err != nil {\n\t\t\treturn false, err\n\t\t}\n\t}\n\treturn remove, err\n}\n\nfunc (a *AllowedMsgAllowance) allowedMsgsToMap(ctx sdk.Context) map[string]bool {\n\tmsgsMap := make(map[string]bool, len(a.AllowedMessages))\n\tfor _, msg := range a.AllowedMessages {\n\t\tctx.GasMeter().ConsumeGas(gasCostPerIteration, \"check msg\")\n\t\tmsgsMap[msg] = true\n\t}\n\n\treturn msgsMap\n}\n\nfunc (a *AllowedMsgAllowance) allMsgTypesAllowed(ctx sdk.Context, msgs []sdk.Msg) bool {\n\tmsgsMap := a.allowedMsgsToMap(ctx)\n\n\tfor _, msg := range msgs {\n\t\tctx.GasMeter().ConsumeGas(gasCostPerIteration, \"check msg\")\n\t\tif !msgsMap[sdk.MsgTypeURL(msg)] {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\n// ValidateBasic implements FeeAllowance and enforces basic sanity checks\nfunc (a *AllowedMsgAllowance) ValidateBasic() error {\n\tif a.Allowance == nil {\n\t\treturn errorsmod.Wrap(ErrNoAllowance, \"allowance should not be empty\")\n\t}\n\tif len(a.AllowedMessages) == 0 {\n\t\treturn errorsmod.Wrap(ErrNoMessages, \"allowed messages shouldn't be empty\")\n\t}\n\n\tallowance, err := a.GetAllowance()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn allowance.ValidateBasic()\n}\n\n// ExpiresAt returns the expiry time of the AllowedMsgAllowance.\nfunc (a *AllowedMsgAllowance) ExpiresAt() (*time.Time, error) {\n\tallowance, err := a.GetAllowance()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn allowance.ExpiresAt()\n}\n"
  },
  {
    "path": "x/feegrant/filtered_fee_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tocproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n)\n\nfunc TestFilteredFeeValidAllow(t *testing.T) {\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\tctx := testCtx.Ctx.WithBlockHeader(ocproto.Header{Time: time.Now()})\n\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 10))\n\tatom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 555))\n\tsmallAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 43))\n\tbigAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 1000))\n\tleftAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 512))\n\tnow := ctx.BlockTime()\n\toneHour := now.Add(1 * time.Hour)\n\n\t// msg we will call in the all cases\n\tcall := banktypes.MsgSend{}\n\tcases := map[string]struct {\n\t\tallowance *feegrant.BasicAllowance\n\t\tmsgs      []string\n\t\tfee       sdk.Coins\n\t\tblockTime time.Time\n\t\taccept    bool\n\t\tremove    bool\n\t\tremains   sdk.Coins\n\t}{\n\t\t\"msg contained\": {\n\t\t\tallowance: &feegrant.BasicAllowance{},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\taccept:    true,\n\t\t},\n\t\t\"msg not contained\": {\n\t\t\tallowance: &feegrant.BasicAllowance{},\n\t\t\tmsgs:      []string{\"/cosmos.gov.v1.MsgVote\"},\n\t\t\taccept:    false,\n\t\t},\n\t\t\"small fee without expire\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t},\n\t\t\tmsgs:    []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:     smallAtom,\n\t\t\taccept:  true,\n\t\t\tremove:  false,\n\t\t\tremains: leftAtom,\n\t\t},\n\t\t\"all fee without expire\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: smallAtom,\n\t\t\t},\n\t\t\tmsgs:   []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:    smallAtom,\n\t\t\taccept: true,\n\t\t\tremove: true,\n\t\t},\n\t\t\"wrong fee\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: smallAtom,\n\t\t\t},\n\t\t\tmsgs:   []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:    eth,\n\t\t\taccept: false,\n\t\t},\n\t\t\"non-expired\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:       smallAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    true,\n\t\t\tremove:    false,\n\t\t\tremains:   leftAtom,\n\t\t},\n\t\t\"expired\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:       smallAtom,\n\t\t\tblockTime: oneHour,\n\t\t\taccept:    false,\n\t\t\tremove:    true,\n\t\t},\n\t\t\"fee more than allowed\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: atom,\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    false,\n\t\t},\n\t\t\"with out spend limit\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tExpiration: &oneHour,\n\t\t\t},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    true,\n\t\t},\n\t\t\"expired no spend limit\": {\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t\tmsgs:      []string{sdk.MsgTypeURL(&call)},\n\t\t\tfee:       bigAtom,\n\t\t\tblockTime: oneHour,\n\t\t\taccept:    false,\n\t\t},\n\t}\n\n\tfor name, stc := range cases {\n\t\ttc := stc // to make scopelint happy\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\terr := tc.allowance.ValidateBasic()\n\t\t\trequire.NoError(t, err)\n\n\t\t\tctx := testCtx.Ctx.WithBlockTime(tc.blockTime)\n\n\t\t\t// create grant\n\t\t\tvar granter, grantee sdk.AccAddress\n\t\t\tallowance, err := feegrant.NewAllowedMsgAllowance(tc.allowance, tc.msgs)\n\t\t\trequire.NoError(t, err)\n\t\t\tgrant, err := feegrant.NewGrant(granter, grantee, allowance)\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// now try to deduct\n\t\t\tremoved, err := allowance.Accept(ctx, tc.fee, []sdk.Msg{&call})\n\t\t\tif !tc.accept {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, tc.remove, removed)\n\t\t\tif !removed {\n\t\t\t\t// mimic save & load process (#10564)\n\t\t\t\t// the cached allowance was correct even before the fix,\n\t\t\t\t// however, the saved value was not.\n\t\t\t\t// so we need this to catch the bug.\n\n\t\t\t\t// create a new updated grant\n\t\t\t\tnewGrant, err := feegrant.NewGrant(\n\t\t\t\t\tsdk.AccAddress(grant.Granter),\n\t\t\t\t\tsdk.AccAddress(grant.Grantee),\n\t\t\t\t\tallowance)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// save the grant\n\t\t\t\tbz, err := encCfg.Codec.Marshal(&newGrant)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// load the grant\n\t\t\t\tvar loadedGrant feegrant.Grant\n\t\t\t\terr = encCfg.Codec.Unmarshal(bz, &loadedGrant)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\tnewAllowance, err := loadedGrant.GetGrant()\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tfeeAllowance, err := newAllowance.(*feegrant.AllowedMsgAllowance).GetAllowance()\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\tassert.Equal(t, tc.remains, feeAllowance.(*feegrant.BasicAllowance).SpendLimit)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/genesis.go",
    "content": "package feegrant\n\nimport (\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n)\n\nvar _ types.UnpackInterfacesMessage = GenesisState{}\n\n// NewGenesisState creates new GenesisState object\nfunc NewGenesisState(entries []Grant) *GenesisState {\n\treturn &GenesisState{\n\t\tAllowances: entries,\n\t}\n}\n\n// ValidateGenesis ensures all grants in the genesis state are valid\nfunc ValidateGenesis(data GenesisState) error {\n\tfor _, f := range data.Allowances {\n\t\tgrant, err := f.GetGrant()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = grant.ValidateBasic()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// DefaultGenesisState returns default state for feegrant module.\nfunc DefaultGenesisState() *GenesisState {\n\treturn &GenesisState{}\n}\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces\nfunc (data GenesisState) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tfor _, f := range data.Allowances {\n\t\terr := f.UnpackInterfaces(unpacker)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/feegrant/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/feegrant/v1beta1/genesis.proto\n\npackage feegrant\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// GenesisState contains a set of fee allowances, persisted from the store.\ntype GenesisState struct {\n\tAllowances    []Grant    `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances\"`\n\tDidAllowances []DIDGrant `protobuf:\"bytes,2,rep,name=did_allowances,json=didAllowances,proto3\" json:\"did_allowances\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_1dcebc65950ee977, []int{0}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetAllowances() []Grant {\n\tif m != nil {\n\t\treturn m.Allowances\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetDidAllowances() []DIDGrant {\n\tif m != nil {\n\t\treturn m.DidAllowances\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*GenesisState)(nil), \"sourcehub.feegrant.v1beta1.GenesisState\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/feegrant/v1beta1/genesis.proto\", fileDescriptor_1dcebc65950ee977)\n}\n\nvar fileDescriptor_1dcebc65950ee977 = []byte{\n\t// 254 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x28, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x4f, 0x4b, 0x4d, 0x4d, 0x2f, 0x4a, 0xcc, 0x2b, 0xd1, 0x2f,\n\t0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b,\n\t0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x82, 0xab, 0xd4, 0x83, 0xa9, 0xd4, 0x83, 0xaa, 0x94, 0x12,\n\t0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, 0xd3, 0x07, 0xb1, 0x20, 0x3a, 0xa4, 0x34, 0xf1, 0x98, 0x0d,\n\t0x37, 0x02, 0xa2, 0x54, 0x30, 0x31, 0x37, 0x33, 0x2f, 0x5f, 0x1f, 0x4c, 0x42, 0x84, 0x94, 0xb6,\n\t0x30, 0x72, 0xf1, 0xb8, 0x43, 0x5c, 0x10, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0xe4, 0xc3, 0xc5, 0x95,\n\t0x98, 0x93, 0x93, 0x5f, 0x9e, 0x98, 0x97, 0x9c, 0x5a, 0x2c, 0xc1, 0xa8, 0xc0, 0xac, 0xc1, 0x6d,\n\t0xa4, 0xa8, 0x87, 0xdb, 0x55, 0x7a, 0xee, 0x20, 0x9e, 0x13, 0xe7, 0x89, 0x7b, 0xf2, 0x0c, 0x2b,\n\t0x9e, 0x6f, 0xd0, 0x62, 0x0c, 0x42, 0xd2, 0x2f, 0x14, 0xc6, 0xc5, 0x97, 0x92, 0x99, 0x12, 0x8f,\n\t0x64, 0x22, 0x13, 0xd8, 0x44, 0x15, 0x7c, 0x26, 0xba, 0x78, 0xba, 0x60, 0x18, 0xca, 0x9b, 0x92,\n\t0x99, 0xe2, 0x08, 0x37, 0xc5, 0xc9, 0xfd, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f,\n\t0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18,\n\t0xa2, 0x74, 0xd3, 0x33, 0x4b, 0x40, 0xa6, 0x26, 0xe7, 0xe7, 0xea, 0x43, 0xec, 0xc8, 0x4b, 0x2d,\n\t0x29, 0xcf, 0x2f, 0xca, 0xd6, 0x47, 0x84, 0x53, 0x05, 0x3c, 0x60, 0x92, 0xd8, 0xc0, 0xc1, 0x60,\n\t0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xad, 0xe8, 0x42, 0xa2, 0x01, 0x00, 0x00,\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.DidAllowances) > 0 {\n\t\tfor iNdEx := len(m.DidAllowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.DidAllowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\tif len(m.Allowances) > 0 {\n\t\tfor iNdEx := len(m.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Allowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Allowances) > 0 {\n\t\tfor _, e := range m.Allowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.DidAllowances) > 0 {\n\t\tfor _, e := range m.DidAllowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Allowances = append(m.Allowances, Grant{})\n\t\t\tif err := m.Allowances[len(m.Allowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DidAllowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DidAllowances = append(m.DidAllowances, DIDGrant{})\n\t\t\tif err := m.DidAllowances[len(m.DidAllowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/feegrant/grant.go",
    "content": "package feegrant\n\nimport (\n\t\"github.com/cosmos/gogoproto/proto\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _, _ types.UnpackInterfacesMessage = &Grant{}, &DIDGrant{}\n\n// NewGrant creates a new Grant.\nfunc NewGrant(granter, grantee sdk.AccAddress, feeAllowance FeeAllowanceI) (Grant, error) {\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn Grant{}, errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", feeAllowance)\n\t}\n\n\tany, err := types.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn Grant{}, err\n\t}\n\n\treturn Grant{\n\t\tGranter:   granter.String(),\n\t\tGrantee:   grantee.String(),\n\t\tAllowance: any,\n\t}, nil\n}\n\n// ValidateBasic performs basic validation on Grant.\nfunc (a Grant) ValidateBasic() error {\n\tif a.Granter == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing granter address\")\n\t}\n\tif a.Grantee == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing grantee address\")\n\t}\n\tif a.Grantee == a.Granter {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"cannot self-grant fee authorization\")\n\t}\n\n\tf, err := a.GetGrant()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn f.ValidateBasic()\n}\n\n// GetGrant unpacks allowance.\nfunc (a Grant) GetGrant() (FeeAllowanceI, error) {\n\tallowance, ok := a.Allowance.GetCachedValue().(FeeAllowanceI)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrap(ErrNoAllowance, \"failed to get allowance\")\n\t}\n\n\treturn allowance, nil\n}\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces.\nfunc (a Grant) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tvar allowance FeeAllowanceI\n\treturn unpacker.UnpackAny(a.Allowance, &allowance)\n}\n\n// NewDIDGrant creates a new DIDGrant with DID as grantee.\nfunc NewDIDGrant(granter sdk.AccAddress, granteeDID string, feeAllowance FeeAllowanceI) (DIDGrant, error) {\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn DIDGrant{}, errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", feeAllowance)\n\t}\n\n\tany, err := types.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn DIDGrant{}, err\n\t}\n\n\treturn DIDGrant{\n\t\tGranter:    granter.String(),\n\t\tGranteeDid: granteeDID,\n\t\tAllowance:  any,\n\t}, nil\n}\n\n// ValidateBasic performs basic validation on DIDGrant.\nfunc (a DIDGrant) ValidateBasic() error {\n\tif a.Granter == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing granter address\")\n\t}\n\tif len(a.GranteeDid) <= 4 || a.GranteeDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\n\tf, err := a.GetDIDGrant()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn f.ValidateBasic()\n}\n\n// GetGrant unpacks allowance for DIDGrant.\nfunc (a DIDGrant) GetDIDGrant() (FeeAllowanceI, error) {\n\tallowance, ok := a.Allowance.GetCachedValue().(FeeAllowanceI)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrap(ErrNoAllowance, \"failed to get allowance\")\n\t}\n\n\treturn allowance, nil\n}\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces for DIDGrant.\nfunc (a DIDGrant) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tvar allowance FeeAllowanceI\n\treturn unpacker.UnpackAny(a.Allowance, &allowance)\n}\n"
  },
  {
    "path": "x/feegrant/grant_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n)\n\nfunc TestGrant(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\tctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Time: time.Now()})\n\n\taddr, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\taddr2, err := addressCodec.StringToBytes(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tuopen := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 555))\n\tnow := ctx.BlockTime()\n\toneYear := now.AddDate(1, 0, 0)\n\n\tzeroUopen := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 0))\n\n\tcases := map[string]struct {\n\t\tgranter sdk.AccAddress\n\t\tgrantee sdk.AccAddress\n\t\tlimit   sdk.Coins\n\t\texpires time.Time\n\t\tvalid   bool\n\t}{\n\t\t\"good\": {\n\t\t\tgranter: addr2,\n\t\t\tgrantee: addr,\n\t\t\tlimit:   uopen,\n\t\t\texpires: oneYear,\n\t\t\tvalid:   true,\n\t\t},\n\t\t\"no grantee\": {\n\t\t\tgranter: addr2,\n\t\t\tgrantee: nil,\n\t\t\tlimit:   uopen,\n\t\t\texpires: oneYear,\n\t\t\tvalid:   false,\n\t\t},\n\t\t\"no granter\": {\n\t\t\tgranter: nil,\n\t\t\tgrantee: addr,\n\t\t\tlimit:   uopen,\n\t\t\texpires: oneYear,\n\t\t\tvalid:   false,\n\t\t},\n\t\t\"self-grant\": {\n\t\t\tgranter: addr2,\n\t\t\tgrantee: addr2,\n\t\t\tlimit:   uopen,\n\t\t\texpires: oneYear,\n\t\t\tvalid:   false,\n\t\t},\n\t\t\"zero allowance\": {\n\t\t\tgranter: addr2,\n\t\t\tgrantee: addr,\n\t\t\tlimit:   zeroUopen,\n\t\t\texpires: oneYear,\n\t\t\tvalid:   false,\n\t\t},\n\t}\n\n\tfor name, tc := range cases {\n\t\ttc := tc\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tgrant, err := feegrant.NewGrant(tc.granter, tc.grantee, &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: tc.limit,\n\t\t\t\tExpiration: &tc.expires,\n\t\t\t})\n\t\t\trequire.NoError(t, err)\n\t\t\terr = grant.ValidateBasic()\n\n\t\t\tif !tc.valid {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// if it is valid, let's try to serialize, deserialize, and make sure it matches\n\t\t\tbz, err := encCfg.Codec.Marshal(&grant)\n\t\t\trequire.NoError(t, err)\n\t\t\tvar loaded feegrant.Grant\n\t\t\terr = encCfg.Codec.Unmarshal(bz, &loaded)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = loaded.ValidateBasic()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, grant, loaded)\n\t\t})\n\t}\n}\n\nfunc TestDIDGrant(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\tctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Time: time.Now()})\n\n\taddr, err := addressCodec.StringToBytes(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tuopen := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 555))\n\tnow := ctx.BlockTime()\n\toneYear := now.AddDate(1, 0, 0)\n\n\tzeroUopen := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 0))\n\n\tcases := map[string]struct {\n\t\tgranter    sdk.AccAddress\n\t\tgranteeDID string\n\t\tlimit      sdk.Coins\n\t\texpires    time.Time\n\t\tvalid      bool\n\t}{\n\t\t\"good\": {\n\t\t\tgranter:    addr,\n\t\t\tgranteeDID: \"did:example:bob\",\n\t\t\tlimit:      uopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      true,\n\t\t},\n\t\t\"empty DID\": {\n\t\t\tgranter:    addr,\n\t\t\tgranteeDID: \"\",\n\t\t\tlimit:      uopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      false,\n\t\t},\n\t\t\"invalid DID - no prefix\": {\n\t\t\tgranter:    addr,\n\t\t\tgranteeDID: \"example:bob\",\n\t\t\tlimit:      uopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      false,\n\t\t},\n\t\t\"invalid DID - short\": {\n\t\t\tgranter:    addr,\n\t\t\tgranteeDID: \"did:\",\n\t\t\tlimit:      uopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      false,\n\t\t},\n\t\t\"no granter\": {\n\t\t\tgranter:    nil,\n\t\t\tgranteeDID: \"did:example:bob\",\n\t\t\tlimit:      uopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      false,\n\t\t},\n\t\t\"zero allowance\": {\n\t\t\tgranter:    addr,\n\t\t\tgranteeDID: \"did:example:bob\",\n\t\t\tlimit:      zeroUopen,\n\t\t\texpires:    oneYear,\n\t\t\tvalid:      false,\n\t\t},\n\t}\n\n\tfor name, tc := range cases {\n\t\ttc := tc\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tgrant, err := feegrant.NewDIDGrant(tc.granter, tc.granteeDID, &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: tc.limit,\n\t\t\t\tExpiration: &tc.expires,\n\t\t\t})\n\n\t\t\tif !tc.valid {\n\t\t\t\t// For invalid cases, we expect either NewDIDGrant to fail or ValidateBasic to fail\n\t\t\t\tif err != nil {\n\t\t\t\t\trequire.Error(t, err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\terr = grant.ValidateBasic()\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trequire.NoError(t, err)\n\t\t\terr = grant.ValidateBasic()\n\t\t\trequire.NoError(t, err)\n\n\t\t\t// if it is valid, let's try to serialize, deserialize, and make sure it matches\n\t\t\tbz, err := encCfg.Codec.Marshal(&grant)\n\t\t\trequire.NoError(t, err)\n\t\t\tvar loaded feegrant.DIDGrant\n\t\t\terr = encCfg.Codec.Unmarshal(bz, &loaded)\n\t\t\trequire.NoError(t, err)\n\n\t\t\terr = loaded.ValidateBasic()\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, grant, loaded)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/keeper/genesis_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"gotest.tools/v3/assert\"\n\n\t\"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\tfeegranttestutil \"github.com/sourcenetwork/sourcehub/x/feegrant/testutil\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec/address\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/testdata\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n)\n\nvar (\n\tgranteePub  = secp256k1.GenPrivKey().PubKey()\n\tgranterPub  = secp256k1.GenPrivKey().PubKey()\n\tgranteeAddr = sdk.AccAddress(granteePub.Address())\n\tgranterAddr = sdk.AccAddress(granterPub.Address())\n)\n\ntype genesisFixture struct {\n\tctx            sdk.Context\n\tfeegrantKeeper keeper.Keeper\n\taccountKeeper  *feegranttestutil.MockAccountKeeper\n}\n\nfunc initFixture(t *testing.T) *genesisFixture {\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\tctrl := gomock.NewController(t)\n\taccountKeeper := feegranttestutil.NewMockAccountKeeper(ctrl)\n\taccountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(\"cosmos\")).AnyTimes()\n\n\treturn &genesisFixture{\n\t\tctx:            testCtx.Ctx,\n\t\tfeegrantKeeper: keeper.NewKeeper(encCfg.Codec, runtime.NewKVStoreService(key), accountKeeper),\n\t\taccountKeeper:  accountKeeper,\n\t}\n}\n\nfunc TestImportExportGenesis(t *testing.T) {\n\tf := initFixture(t)\n\n\tf.accountKeeper.EXPECT().GetAccount(gomock.Any(), granteeAddr).Return(authtypes.NewBaseAccountWithAddress(granteeAddr)).AnyTimes()\n\tf.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(\"cosmos\")).AnyTimes()\n\n\tcoins := sdk.NewCoins(sdk.NewCoin(\"foo\", math.NewInt(1_000)))\n\tnow := f.ctx.BlockHeader().Time\n\toneYear := now.AddDate(1, 0, 0)\n\tmsgSrvr := keeper.NewMsgServerImpl(f.feegrantKeeper)\n\n\tallowance := &feegrant.BasicAllowance{SpendLimit: coins, Expiration: &oneYear}\n\terr := f.feegrantKeeper.GrantAllowance(f.ctx, granterAddr, granteeAddr, allowance)\n\tassert.NilError(t, err)\n\n\tgenesis, err := f.feegrantKeeper.ExportGenesis(f.ctx)\n\tassert.NilError(t, err)\n\n\t// revoke fee allowance\n\t_, err = msgSrvr.RevokeAllowance(f.ctx, &feegrant.MsgRevokeAllowance{\n\t\tGranter: granterAddr.String(),\n\t\tGrantee: granteeAddr.String(),\n\t})\n\tassert.NilError(t, err)\n\n\terr = f.feegrantKeeper.InitGenesis(f.ctx, genesis)\n\tassert.NilError(t, err)\n\n\tnewGenesis, err := f.feegrantKeeper.ExportGenesis(f.ctx)\n\tassert.NilError(t, err)\n\tassert.DeepEqual(t, genesis, newGenesis)\n}\n\nfunc TestInitGenesis(t *testing.T) {\n\tany, err := codectypes.NewAnyWithValue(&testdata.Dog{})\n\tassert.NilError(t, err)\n\n\ttestCases := []struct {\n\t\tname          string\n\t\tfeeAllowances []feegrant.Grant\n\t\tinvalidAddr   bool\n\t}{\n\t\t{\n\t\t\t\"invalid granter\",\n\t\t\t[]feegrant.Grant{\n\t\t\t\t{\n\t\t\t\t\tGranter: \"invalid granter\",\n\t\t\t\t\tGrantee: granteeAddr.String(),\n\t\t\t\t},\n\t\t\t},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"invalid grantee\",\n\t\t\t[]feegrant.Grant{\n\t\t\t\t{\n\t\t\t\t\tGranter: granterAddr.String(),\n\t\t\t\t\tGrantee: \"invalid grantee\",\n\t\t\t\t},\n\t\t\t},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t\"invalid allowance\",\n\t\t\t[]feegrant.Grant{\n\t\t\t\t{\n\t\t\t\t\tGranter:   granterAddr.String(),\n\t\t\t\t\tGrantee:   granteeAddr.String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfalse,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tf := initFixture(t)\n\t\t\tif !tc.invalidAddr {\n\t\t\t\terr := f.feegrantKeeper.InitGenesis(f.ctx, &feegrant.GenesisState{Allowances: tc.feeAllowances})\n\t\t\t\tassert.ErrorContains(t, err, \"failed to get allowance: no allowance\")\n\t\t\t} else {\n\t\t\t\texpectedErr := errors.New(\"decoding bech32 failed\")\n\t\t\t\terr := f.feegrantKeeper.InitGenesis(f.ctx, &feegrant.GenesisState{Allowances: tc.feeAllowances})\n\t\t\t\tassert.ErrorContains(t, err, expectedErr.Error())\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\n\t\"github.com/cosmos/gogoproto/proto\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"cosmossdk.io/store/prefix\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n)\n\nvar _ feegrant.QueryServer = Keeper{}\n\n// Allowance returns granted allowance to the grantee by the granter.\nfunc (q Keeper) Allowance(c context.Context, req *feegrant.QueryAllowanceRequest) (*feegrant.QueryAllowanceResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tgranterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tgranteeAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tfeeAllowance, err := q.GetAllowance(ctx, granterAddr, granteeAddr)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn nil, status.Errorf(codes.Internal, \"can't proto marshal %T\", msg)\n\t}\n\n\tfeeAllowanceAny, err := codectypes.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &feegrant.QueryAllowanceResponse{\n\t\tAllowance: &feegrant.Grant{\n\t\t\tGranter:   req.Granter,\n\t\t\tGrantee:   req.Grantee,\n\t\t\tAllowance: feeAllowanceAny,\n\t\t},\n\t}, nil\n}\n\n// Allowances queries all the allowances granted to the given grantee.\nfunc (q Keeper) Allowances(c context.Context, req *feegrant.QueryAllowancesRequest) (*feegrant.QueryAllowancesResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tgranteeAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tvar grants []*feegrant.Grant\n\n\tstore := q.storeService.OpenKVStore(ctx)\n\tgrantsStore := prefix.NewStore(runtime.KVStoreAdapter(store), feegrant.FeeAllowancePrefixByGrantee(granteeAddr))\n\n\tpageRes, err := query.Paginate(grantsStore, req.Pagination, func(key, value []byte) error {\n\t\tvar grant feegrant.Grant\n\n\t\tif err := q.cdc.Unmarshal(value, &grant); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgrants = append(grants, &grant)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &feegrant.QueryAllowancesResponse{Allowances: grants, Pagination: pageRes}, nil\n}\n\n// AllowancesByGranter queries all the allowances granted by the given granter.\nfunc (q Keeper) AllowancesByGranter(c context.Context, req *feegrant.QueryAllowancesByGranterRequest) (*feegrant.QueryAllowancesByGranterResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tgranterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tstore := q.storeService.OpenKVStore(ctx)\n\tprefixStore := prefix.NewStore(runtime.KVStoreAdapter(store), feegrant.FeeAllowanceKeyPrefix)\n\tgrants, pageRes, err := query.GenericFilteredPaginate(q.cdc, prefixStore, req.Pagination, func(key []byte, grant *feegrant.Grant) (*feegrant.Grant, error) {\n\t\t// ParseAddressesFromFeeAllowanceKey expects the full key including the prefix.\n\t\tgranter, _ := feegrant.ParseAddressesFromFeeAllowanceKey(append(feegrant.FeeAllowanceKeyPrefix, key...))\n\t\tif !bytes.Equal(granter, granterAddr) {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\treturn grant, nil\n\t}, func() *feegrant.Grant {\n\t\treturn &feegrant.Grant{}\n\t})\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &feegrant.QueryAllowancesByGranterResponse{Allowances: grants, Pagination: pageRes}, nil\n}\n\n// DIDAllowance returns granted allowance to the DID by the granter.\nfunc (q Keeper) DIDAllowance(c context.Context, req *feegrant.QueryDIDAllowanceRequest) (*feegrant.QueryDIDAllowanceResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tgranterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif req.GranteeDid == \"\" {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"grantee DID cannot be empty\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tfeeAllowance, err := q.GetDIDAllowance(ctx, granterAddr, req.GranteeDid)\n\tif err != nil {\n\t\treturn nil, status.Errorf(codes.Internal, \"failed to get allowance: %v\", err)\n\t}\n\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn nil, status.Errorf(codes.Internal, \"can't proto marshal %T\", msg)\n\t}\n\n\tfeeAllowanceAny, err := codectypes.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn nil, status.Errorf(codes.Internal, \"failed to get allowance: %v\", err)\n\t}\n\n\treturn &feegrant.QueryDIDAllowanceResponse{\n\t\tAllowance: &feegrant.Grant{\n\t\t\tGranter:   req.Granter,\n\t\t\tGrantee:   req.GranteeDid,\n\t\t\tAllowance: feeAllowanceAny,\n\t\t},\n\t}, nil\n}\n\n// DIDAllowances queries all the DID allowances granted to the given DID.\nfunc (q Keeper) DIDAllowances(c context.Context, req *feegrant.QueryDIDAllowancesRequest) (*feegrant.QueryDIDAllowancesResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tif req.GranteeDid == \"\" {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"grantee DID cannot be empty\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tvar grants []*feegrant.Grant\n\n\tstore := q.storeService.OpenKVStore(ctx)\n\tgrantsStore := prefix.NewStore(runtime.KVStoreAdapter(store), feegrant.FeeAllowancePrefixByDID(req.GranteeDid))\n\n\tpageRes, err := query.Paginate(grantsStore, req.Pagination, func(key, value []byte) error {\n\t\tvar didGrant feegrant.DIDGrant\n\n\t\tif err := q.cdc.Unmarshal(value, &didGrant); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgrant := &feegrant.Grant{\n\t\t\tGranter:   didGrant.Granter,\n\t\t\tGrantee:   didGrant.GranteeDid,\n\t\t\tAllowance: didGrant.Allowance,\n\t\t}\n\t\tgrants = append(grants, grant)\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &feegrant.QueryDIDAllowancesResponse{Allowances: grants, Pagination: pageRes}, nil\n}\n\n// DIDAllowancesByGranter queries all the DID allowances granted by the given granter.\nfunc (q Keeper) DIDAllowancesByGranter(c context.Context, req *feegrant.QueryDIDAllowancesByGranterRequest) (*feegrant.QueryDIDAllowancesByGranterResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tgranterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tctx := sdk.UnwrapSDKContext(c)\n\n\tstore := q.storeService.OpenKVStore(ctx)\n\tprefixStore := prefix.NewStore(runtime.KVStoreAdapter(store), feegrant.DIDFeeAllowanceKeyPrefix)\n\n\tgrants, pageRes, err := query.GenericFilteredPaginate(q.cdc, prefixStore, req.Pagination, func(key []byte, didGrant *feegrant.DIDGrant) (*feegrant.Grant, error) {\n\t\tgranter, _ := feegrant.ParseGranterDIDFromFeeAllowanceKey(append(feegrant.DIDFeeAllowanceKeyPrefix, key...))\n\t\tif !bytes.Equal(granter, granterAddr) {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\treturn &feegrant.Grant{\n\t\t\tGranter:   didGrant.Granter,\n\t\t\tGrantee:   didGrant.GranteeDid,\n\t\t\tAllowance: didGrant.Allowance,\n\t\t}, nil\n\t}, func() *feegrant.DIDGrant {\n\t\treturn &feegrant.DIDGrant{}\n\t})\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &feegrant.QueryDIDAllowancesByGranterResponse{Allowances: grants, Pagination: pageRes}, nil\n}\n"
  },
  {
    "path": "x/feegrant/keeper/grpc_query_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nconst (\n\tinvalidGrantee = \"invalid-grantee\"\n\tinvalidGranter = \"invalid-granter\"\n)\n\nfunc (suite *KeeperTestSuite) TestFeeAllowance() {\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryAllowanceRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryAllowanceResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid granter\",\n\t\t\t&feegrant.QueryAllowanceRequest{\n\t\t\t\tGranter: invalidGranter,\n\t\t\t\tGrantee: suite.addrs[0].String(),\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid grantee\",\n\t\t\t&feegrant.QueryAllowanceRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: invalidGrantee,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: no grants\",\n\t\t\t&feegrant.QueryAllowanceRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"non existed grant\",\n\t\t\t&feegrant.QueryAllowanceRequest{\n\t\t\t\tGranter: invalidGranter,\n\t\t\t\tGrantee: invalidGrantee,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect single grant\",\n\t\t\t&feegrant.QueryAllowanceRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[0], suite.addrs[1])\n\t\t\t},\n\t\t\tfunc(response *feegrant.QueryAllowanceResponse) {\n\t\t\t\tsuite.Require().Equal(response.Allowance.Granter, suite.addrs[0].String())\n\t\t\t\tsuite.Require().Equal(response.Allowance.Grantee, suite.addrs[1].String())\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.Allowance(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestFeeAllowances() {\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryAllowancesRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryAllowancesResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowancesResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid grantee\",\n\t\t\t&feegrant.QueryAllowancesRequest{\n\t\t\t\tGrantee: invalidGrantee,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowancesResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"no grants\",\n\t\t\t&feegrant.QueryAllowancesRequest{\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {},\n\t\t\tfunc(resp *feegrant.QueryAllowancesResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 0)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect single grant\",\n\t\t\t&feegrant.QueryAllowancesRequest{\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[0], suite.addrs[1])\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryAllowancesResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 1)\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Granter, suite.addrs[0].String())\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Grantee, suite.addrs[1].String())\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.Allowances(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestFeeAllowancesByGranter() {\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryAllowancesByGranterRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryAllowancesByGranterResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowancesByGranterResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid grantee\",\n\t\t\t&feegrant.QueryAllowancesByGranterRequest{\n\t\t\t\tGranter: invalidGrantee,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryAllowancesByGranterResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"no grants\",\n\t\t\t&feegrant.QueryAllowancesByGranterRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {},\n\t\t\tfunc(resp *feegrant.QueryAllowancesByGranterResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 0)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect single grant\",\n\t\t\t&feegrant.QueryAllowancesByGranterRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[0], suite.addrs[1])\n\n\t\t\t\t// adding this allowance to check whether the pagination working fine.\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[1], suite.addrs[2])\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryAllowancesByGranterResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 1)\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Granter, suite.addrs[0].String())\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Grantee, suite.addrs[1].String())\n\t\t\t\tsuite.Require().Equal(resp.Pagination.Total, uint64(1))\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.AllowancesByGranter(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) grantFeeAllowance(granter, grantee sdk.AccAddress) {\n\texp := suite.ctx.BlockTime().AddDate(1, 0, 0)\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, granter, grantee, &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 555)),\n\t\tExpiration: &exp,\n\t})\n\tsuite.Require().NoError(err)\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowance() {\n\tinvalidGranter := \"invalid_granter\"\n\ttestDID := \"did:example:alice\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryDIDAllowanceRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryDIDAllowanceResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid granter\",\n\t\t\t&feegrant.QueryDIDAllowanceRequest{\n\t\t\t\tGranter:    invalidGranter,\n\t\t\t\tGranteeDid: testDID,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: empty DID\",\n\t\t\t&feegrant.QueryDIDAllowanceRequest{\n\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\tGranteeDid: \"\",\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: non-existent DID allowance\",\n\t\t\t&feegrant.QueryDIDAllowanceRequest{\n\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\tGranteeDid: \"did:example:nonexistent\",\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowanceResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"valid query: single DID grant\",\n\t\t\t&feegrant.QueryDIDAllowanceRequest{\n\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\tGranteeDid: testDID,\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[0], testDID)\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowanceResponse) {\n\t\t\t\tsuite.Require().NotNil(resp.Allowance)\n\t\t\t\tsuite.Require().Equal(resp.Allowance.Granter, suite.addrs[0].String())\n\t\t\t\tsuite.Require().Equal(resp.Allowance.Grantee, testDID)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.DIDAllowance(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowancesByGranter() {\n\tinvalidGranter := \"invalid_granter\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryDIDAllowancesByGranterRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryDIDAllowancesByGranterResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowancesByGranterResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: invalid granter\",\n\t\t\t&feegrant.QueryDIDAllowancesByGranterRequest{\n\t\t\t\tGranter: invalidGranter,\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowancesByGranterResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"no DID grants\",\n\t\t\t&feegrant.QueryDIDAllowancesByGranterRequest{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\t// Grant regular allowance (not DID) to ensure it's not returned\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[0], suite.addrs[1])\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowancesByGranterResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 0)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect DID grants only\",\n\t\t\t&feegrant.QueryDIDAllowancesByGranterRequest{\n\t\t\t\tGranter: suite.addrs[2].String(),\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\t// Grant regular allowance (should not appear in DID query)\n\t\t\t\tsuite.grantFeeAllowance(suite.addrs[2], suite.addrs[3])\n\n\t\t\t\t// Grant DID allowances (should appear in DID query)\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[2], \"did:example:bob\")\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[2], \"did:example:alice\")\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowancesByGranterResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 2)\n\t\t\t\tfor _, allowance := range resp.Allowances {\n\t\t\t\t\tsuite.Require().Equal(allowance.Granter, suite.addrs[2].String())\n\t\t\t\t\tsuite.Require().True(allowance.Grantee == \"did:example:bob\" || allowance.Grantee == \"did:example:alice\")\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.DIDAllowancesByGranter(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) grantDIDFeeAllowance(granter sdk.AccAddress, granteeDID string) {\n\texp := suite.ctx.BlockTime().AddDate(1, 0, 0)\n\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, granteeDID, &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 777)),\n\t\tExpiration: &exp,\n\t})\n\tsuite.Require().NoError(err)\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowances() {\n\ttestDID := \"did:example:charlie\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       *feegrant.QueryDIDAllowancesRequest\n\t\texpectErr bool\n\t\tpreRun    func()\n\t\tpostRun   func(_ *feegrant.QueryDIDAllowancesResponse)\n\t}{\n\t\t{\n\t\t\t\"nil request\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowancesResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"fail: empty DID\",\n\t\t\t&feegrant.QueryDIDAllowancesRequest{\n\t\t\t\tGranteeDid: \"\",\n\t\t\t},\n\t\t\ttrue,\n\t\t\tfunc() {},\n\t\t\tfunc(*feegrant.QueryDIDAllowancesResponse) {},\n\t\t},\n\t\t{\n\t\t\t\"no DID grants for this DID\",\n\t\t\t&feegrant.QueryDIDAllowancesRequest{\n\t\t\t\tGranteeDid: \"did:example:nonexistent\",\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowancesResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 0)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect single DID grant\",\n\t\t\t&feegrant.QueryDIDAllowancesRequest{\n\t\t\t\tGranteeDid: testDID,\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[0], testDID)\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowancesResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 1)\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Granter, suite.addrs[0].String())\n\t\t\t\tsuite.Require().Equal(resp.Allowances[0].Grantee, testDID)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"valid query: expect multiple DID grants from different granters\",\n\t\t\t&feegrant.QueryDIDAllowancesRequest{\n\t\t\t\tGranteeDid: \"did:example:multiple\",\n\t\t\t},\n\t\t\tfalse,\n\t\t\tfunc() {\n\t\t\t\t// Multiple granters giving allowances to the same DID\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[0], \"did:example:multiple\")\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[1], \"did:example:multiple\")\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[2], \"did:example:multiple\")\n\n\t\t\t\t// Grant to a different DID to ensure it's not returned\n\t\t\t\tsuite.grantDIDFeeAllowance(suite.addrs[3], \"did:example:other\")\n\t\t\t},\n\t\t\tfunc(resp *feegrant.QueryDIDAllowancesResponse) {\n\t\t\t\tsuite.Require().Equal(len(resp.Allowances), 3)\n\t\t\t\tgranters := make(map[string]bool)\n\t\t\t\tfor _, allowance := range resp.Allowances {\n\t\t\t\t\tsuite.Require().Equal(allowance.Grantee, \"did:example:multiple\")\n\t\t\t\t\tgranters[allowance.Granter] = true\n\t\t\t\t}\n\t\t\t\t// Verify all three granters are present\n\t\t\t\tsuite.Require().True(granters[suite.addrs[0].String()])\n\t\t\t\tsuite.Require().True(granters[suite.addrs[1].String()])\n\t\t\t\tsuite.Require().True(granters[suite.addrs[2].String()])\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\tresp, err := suite.feegrantKeeper.DIDAllowances(suite.ctx, tc.req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\ttc.postRun(resp)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"cosmossdk.io/core/store\"\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/log\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/ante\"\n)\n\n// Keeper manages state of all fee grants, as well as calculating approval.\n// It must have a codec with all available allowances registered.\ntype Keeper struct {\n\tcdc          codec.BinaryCodec\n\tstoreService store.KVStoreService\n\tauthKeeper   feegrant.AccountKeeper\n\tbankKeeper   feegrant.BankKeeper\n}\n\nvar _ ante.FeegrantKeeper = &Keeper{}\n\n// NewKeeper creates a feegrant Keeper\nfunc NewKeeper(cdc codec.BinaryCodec, storeService store.KVStoreService, ak feegrant.AccountKeeper) Keeper {\n\treturn Keeper{\n\t\tcdc:          cdc,\n\t\tstoreService: storeService,\n\t\tauthKeeper:   ak,\n\t}\n}\n\n// Super ugly hack to not be breaking in v0.50 and v0.47\n// DO NOT USE.\nfunc (k Keeper) SetBankKeeper(bk feegrant.BankKeeper) Keeper {\n\tk.bankKeeper = bk\n\treturn k\n}\n\n// Logger returns a module-specific logger.\nfunc (k Keeper) Logger(ctx sdk.Context) log.Logger {\n\treturn ctx.Logger().With(\"module\", fmt.Sprintf(\"x/%s\", feegrant.ModuleName))\n}\n\n// GrantAllowance creates a new grant\nfunc (k Keeper) GrantAllowance(ctx context.Context, granter, grantee sdk.AccAddress, feeAllowance feegrant.FeeAllowanceI) error {\n\t// Checking for duplicate entry\n\tif f, _ := k.GetAllowance(ctx, granter, grantee); f != nil {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"fee allowance already exists\")\n\t}\n\n\t// create the account if it is not in account state\n\tgranteeAcc := k.authKeeper.GetAccount(ctx, grantee)\n\tif granteeAcc == nil {\n\t\tif k.bankKeeper.BlockedAddr(grantee) {\n\t\t\treturn errorsmod.Wrapf(sdkerrors.ErrUnauthorized, \"%s is not allowed to receive funds\", grantee)\n\t\t}\n\n\t\tgranteeAcc = k.authKeeper.NewAccountWithAddress(ctx, grantee)\n\t\tk.authKeeper.SetAccount(ctx, granteeAcc)\n\t}\n\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceKey(granter, grantee)\n\n\texp, err := feeAllowance.ExpiresAt()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// expiration shouldn't be in the past.\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tif exp != nil && exp.Before(sdkCtx.BlockTime()) {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"expiration is before current block time\")\n\t}\n\n\t// if expiry is not nil, add the new key to pruning queue.\n\tif exp != nil {\n\t\t// `key` formed here with the prefix of `FeeAllowanceKeyPrefix` (which is `0x00`)\n\t\t// remove the 1st byte and reuse the remaining key as it is\n\t\terr = k.addToFeeAllowanceQueue(ctx, key[1:], exp)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tgrant, err := feegrant.NewGrant(granter, grantee, feeAllowance)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbz, err := k.cdc.Marshal(&grant)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = store.Set(key, bz)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeSetFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, grant.Granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGrantee, grant.Grantee),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// UpdateAllowance updates the existing grant.\nfunc (k Keeper) UpdateAllowance(ctx context.Context, granter, grantee sdk.AccAddress, feeAllowance feegrant.FeeAllowanceI) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceKey(granter, grantee)\n\n\t_, err := k.getGrant(ctx, granter, grantee)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tgrant, err := feegrant.NewGrant(granter, grantee, feeAllowance)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbz, err := k.cdc.Marshal(&grant)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = store.Set(key, bz)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeUpdateFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, grant.Granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGrantee, grant.Grantee),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// revokeAllowance removes an existing grant\nfunc (k Keeper) revokeAllowance(ctx context.Context, granter, grantee sdk.AccAddress) error {\n\tgrant, err := k.GetAllowance(ctx, granter, grantee)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceKey(granter, grantee)\n\terr = store.Delete(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texp, err := grant.ExpiresAt()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif exp != nil {\n\t\tif err := store.Delete(feegrant.FeeAllowancePrefixQueue(exp, feegrant.FeeAllowanceKey(grantee, granter)[1:])); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeRevokeFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, granter.String()),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGrantee, grantee.String()),\n\t\t),\n\t)\n\treturn nil\n}\n\n// GetAllowance returns the allowance between the granter and grantee.\n// If there is none, it returns nil, nil.\n// Returns an error on parsing issues\nfunc (k Keeper) GetAllowance(ctx context.Context, granter, grantee sdk.AccAddress) (feegrant.FeeAllowanceI, error) {\n\tgrant, err := k.getGrant(ctx, granter, grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn grant.GetGrant()\n}\n\n// getGrant returns entire grant between both accounts\nfunc (k Keeper) getGrant(ctx context.Context, granter, grantee sdk.AccAddress) (*feegrant.Grant, error) {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceKey(granter, grantee)\n\tbz, err := store.Get(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(bz) == 0 {\n\t\treturn nil, sdkerrors.ErrNotFound.Wrap(\"fee-grant not found\")\n\t}\n\n\tvar feegrant feegrant.Grant\n\tif err := k.cdc.Unmarshal(bz, &feegrant); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &feegrant, nil\n}\n\n// IterateAllFeeAllowances iterates over all the grants in the store.\n// Callback to get all data, returns true to stop, false to keep reading\n// Calling this without pagination is very expensive and only designed for export genesis\nfunc (k Keeper) IterateAllFeeAllowances(ctx context.Context, cb func(grant feegrant.Grant) bool) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\titer := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), feegrant.FeeAllowanceKeyPrefix)\n\tdefer iter.Close()\n\n\tstop := false\n\tfor ; iter.Valid() && !stop; iter.Next() {\n\t\tbz := iter.Value()\n\t\tvar feeGrant feegrant.Grant\n\t\tif err := k.cdc.Unmarshal(bz, &feeGrant); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstop = cb(feeGrant)\n\t}\n\n\treturn nil\n}\n\n// UseGrantedFees will try to pay the given fee from the granter's account as requested by the grantee\nfunc (k Keeper) UseGrantedFees(ctx context.Context, granter, grantee sdk.AccAddress, fee sdk.Coins, msgs []sdk.Msg) error {\n\tgrant, err := k.GetAllowance(ctx, granter, grantee)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tremove, err := grant.Accept(ctx, fee, msgs)\n\n\tif remove {\n\t\t// Ignoring the `revokeFeeAllowance` error, because the user has enough grants to perform this transaction.\n\t\tk.revokeAllowance(ctx, granter, grantee)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\temitUseGrantEvent(ctx, granter.String(), grantee.String())\n\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\temitUseGrantEvent(ctx, granter.String(), grantee.String())\n\n\t// if fee allowance is accepted, store the updated state of the allowance\n\treturn k.UpdateAllowance(ctx, granter, grantee, grant)\n}\n\nfunc emitUseGrantEvent(ctx context.Context, granter, grantee string) {\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeUseFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGrantee, grantee),\n\t\t),\n\t)\n}\n\n// InitGenesis will initialize the keeper from a *previously validated* GenesisState\nfunc (k Keeper) InitGenesis(ctx context.Context, data *feegrant.GenesisState) error {\n\tfor _, f := range data.Allowances {\n\t\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(f.Granter)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgrantee, err := k.authKeeper.AddressCodec().StringToBytes(f.Grantee)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgrant, err := f.GetGrant()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = k.GrantAllowance(ctx, granter, grantee, grant)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfor _, f := range data.DidAllowances {\n\t\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(f.Granter)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tdidGrant, err := f.GetDIDGrant()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = k.GrantDIDAllowance(ctx, granter, f.GranteeDid, didGrant)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// ExportGenesis will dump the contents of the keeper into a serializable GenesisState.\nfunc (k Keeper) ExportGenesis(ctx context.Context) (*feegrant.GenesisState, error) {\n\tvar grants []feegrant.Grant\n\tvar didGrants []feegrant.DIDGrant\n\n\tgrantErr := k.IterateAllFeeAllowances(ctx, func(grant feegrant.Grant) bool {\n\t\tgrants = append(grants, grant)\n\t\treturn false\n\t})\n\n\tdidGrantErr := k.IterateAllDIDAllowances(ctx, func(grant feegrant.DIDGrant) bool {\n\t\tdidGrants = append(didGrants, grant)\n\t\treturn false\n\t})\n\n\treturn &feegrant.GenesisState{\n\t\tAllowances:    grants,\n\t\tDidAllowances: didGrants,\n\t}, errors.Join(grantErr, didGrantErr)\n}\n\nfunc (k Keeper) addToFeeAllowanceQueue(ctx context.Context, grantKey []byte, exp *time.Time) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\treturn store.Set(feegrant.FeeAllowancePrefixQueue(exp, grantKey), []byte{})\n}\n\n// RemoveExpiredAllowances iterates grantsByExpiryQueue and deletes the expired grants.\nfunc (k Keeper) RemoveExpiredAllowances(ctx context.Context, limit int32) error {\n\texp := sdk.UnwrapSDKContext(ctx).BlockTime()\n\tstore := k.storeService.OpenKVStore(ctx)\n\titerator, err := store.Iterator(feegrant.FeeAllowanceQueueKeyPrefix, storetypes.InclusiveEndBytes(feegrant.AllowanceByExpTimeKey(&exp)))\n\tvar count int32\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\terr = store.Delete(iterator.Key())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgranter, grantee := feegrant.ParseAddressesFromFeeAllowanceQueueKey(iterator.Key())\n\t\terr = store.Delete(feegrant.FeeAllowanceKey(granter, grantee))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// limit the amount of iterations to avoid taking too much time\n\t\tcount++\n\t\tif count == limit {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\n// RemoveExpiredDIDAllowances iterates DID grantsByExpiryQueue and deletes the expired DID grants.\nfunc (k Keeper) RemoveExpiredDIDAllowances(ctx context.Context, limit int32) error {\n\texp := sdk.UnwrapSDKContext(ctx).BlockTime()\n\tstore := k.storeService.OpenKVStore(ctx)\n\titerator, err := store.Iterator(feegrant.DIDFeeAllowanceQueueKeyPrefix, storetypes.InclusiveEndBytes(feegrant.DIDAllowanceByExpTimeKey(&exp)))\n\tvar count int32\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\terr = store.Delete(iterator.Key())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgranter, granteeDID := feegrant.ParseGranterDIDFromDIDAllowanceQueueKey(iterator.Key())\n\t\tgranterAddr := sdk.AccAddress(granter)\n\t\terr = store.Delete(feegrant.FeeAllowanceByDIDKey(granterAddr, granteeDID))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// limit the amount of iterations to avoid taking too much time\n\t\tcount++\n\t\tif count == limit {\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn nil\n}\n\n// IterateAllDIDAllowances iterates over all the DID grants in the store.\n// Callback to get all data, returns true to stop, false to keep reading.\n// Calling this without pagination is very expensive and only designed for export genesis.\nfunc (k Keeper) IterateAllDIDAllowances(ctx context.Context, cb func(grant feegrant.DIDGrant) bool) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\titer := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), feegrant.DIDFeeAllowanceKeyPrefix)\n\tdefer iter.Close()\n\n\tstop := false\n\tfor ; iter.Valid() && !stop; iter.Next() {\n\t\tbz := iter.Value()\n\t\tvar didGrant feegrant.DIDGrant\n\t\tif err := k.cdc.Unmarshal(bz, &didGrant); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstop = cb(didGrant)\n\t}\n\n\treturn nil\n}\n\n// GrantDIDAllowance creates a new DID-based grant.\nfunc (k Keeper) GrantDIDAllowance(\n\tctx context.Context,\n\tgranter sdk.AccAddress,\n\tgranteeDID string,\n\tfeeAllowance feegrant.FeeAllowanceI,\n) error {\n\t// Check for duplicate entry\n\tif f, _ := k.GetDIDAllowance(ctx, granter, granteeDID); f != nil {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"fee allowance already exists for this DID\")\n\t}\n\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceByDIDKey(granter, granteeDID)\n\n\texp, err := feeAllowance.ExpiresAt()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// expiration shouldn't be in the past.\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tif exp != nil && exp.Before(sdkCtx.BlockTime()) {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"expiration is before current block time\")\n\t}\n\n\t// if expiry is not nil, add the new key to pruning queue.\n\tif exp != nil {\n\t\t// `key` formed here with the prefix of `DIDFeeAllowanceKeyPrefix` (which is `0x02`)\n\t\t// remove the 1st byte and reuse the remaining key as it is\n\t\terr = k.addToDIDFeeAllowanceQueue(ctx, key[1:], exp)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tdidGrant, err := feegrant.NewDIDGrant(granter, granteeDID, feeAllowance)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbz, err := k.cdc.Marshal(&didGrant)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = store.Set(key, bz)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeSetDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, didGrant.Granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranteeDid, didGrant.GranteeDid),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// GetDIDAllowance returns the allowance between the granter and DID.\n// If there is none, it returns nil, nil. Returns an error on parsing issues.\nfunc (k Keeper) GetDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) (feegrant.FeeAllowanceI, error) {\n\tdidGrant, err := k.getDIDGrant(ctx, granter, granteeDID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn didGrant.GetDIDGrant()\n}\n\n// getDIDGrant returns entire grant between granter and DID.\nfunc (k Keeper) getDIDGrant(ctx context.Context, granter sdk.AccAddress, granteeDID string) (*feegrant.DIDGrant, error) {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceByDIDKey(granter, granteeDID)\n\tbz, err := store.Get(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(bz) == 0 {\n\t\treturn nil, sdkerrors.ErrNotFound.Wrap(\"fee-grant not found for DID\")\n\t}\n\n\tvar didGrant feegrant.DIDGrant\n\tif err := k.cdc.Unmarshal(bz, &didGrant); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &didGrant, nil\n}\n\n// revokeDIDAllowance removes an existing DID-based grant.\nfunc (k Keeper) revokeDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) error {\n\tdidGrant, err := k.GetDIDAllowance(ctx, granter, granteeDID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceByDIDKey(granter, granteeDID)\n\terr = store.Delete(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texp, err := didGrant.ExpiresAt()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif exp != nil {\n\t\tif err := store.Delete(feegrant.DIDFeeAllowancePrefixQueue(exp, key[1:])); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeRevokeDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, granter.String()),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranteeDid, granteeDID),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// ExpireDIDAllowance expires existing allowance by setting the expiration date.\nfunc (k Keeper) ExpireDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) error {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\texistingAllowance, err := k.GetDIDAllowance(ctx, granter, granteeDID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar newExpiration time.Time\n\n\tswitch allowance := existingAllowance.(type) {\n\tcase *feegrant.PeriodicAllowance:\n\t\t// expire at the end of the current period\n\t\tnewExpiration = allowance.PeriodReset\n\t\tallowance.Basic.Expiration = &newExpiration\n\n\tcase *feegrant.BasicAllowance:\n\t\t// expire immediately\n\t\tnewExpiration = sdkCtx.BlockTime()\n\t\tallowance.Expiration = &newExpiration\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported allowance type: %T\", existingAllowance)\n\t}\n\n\tif err := k.UpdateDIDAllowance(ctx, granter, granteeDID, existingAllowance); err != nil {\n\t\treturn err\n\t}\n\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeExpireDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, granter.String()),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranteeDid, granteeDID),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyExpirationTime, newExpiration.String()),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// UseGrantedFeesByDID validates the DID-based fee allowance for the given granter and DID.\nfunc (k Keeper) UseGrantedFeesByDID(ctx context.Context, granter sdk.AccAddress, granteeDID string, fee sdk.Coins, msgs []sdk.Msg) error {\n\tdidGrant, err := k.GetDIDAllowance(ctx, granter, granteeDID)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"fee-grant not found for DID %s\", granteeDID)\n\t}\n\n\tremove, err := didGrant.Accept(ctx, fee, msgs)\n\n\tif remove {\n\t\tk.revokeDIDAllowance(ctx, granter, granteeDID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\temitUseDIDGrantEvent(ctx, granter.String(), granteeDID)\n\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\temitUseDIDGrantEvent(ctx, granter.String(), granteeDID)\n\n\treturn k.UpdateDIDAllowance(ctx, granter, granteeDID, didGrant)\n}\n\n// UpdateDIDAllowance updates the existing DID-based grant.\nfunc (k Keeper) UpdateDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string, feeAllowance feegrant.FeeAllowanceI) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tkey := feegrant.FeeAllowanceByDIDKey(granter, granteeDID)\n\n\t_, err := k.getDIDGrant(ctx, granter, granteeDID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdidGrant, err := feegrant.NewDIDGrant(granter, granteeDID, feeAllowance)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbz, err := k.cdc.Marshal(&didGrant)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = store.Set(key, bz)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeUpdateDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, didGrant.Granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranteeDid, didGrant.GranteeDid),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// addToDIDFeeAllowanceQueue adds DID grant to the expiration queue.\nfunc (k Keeper) addToDIDFeeAllowanceQueue(ctx context.Context, grantKey []byte, exp *time.Time) error {\n\tstore := k.storeService.OpenKVStore(ctx)\n\treturn store.Set(feegrant.DIDFeeAllowancePrefixQueue(exp, grantKey), []byte{})\n}\n\n// GetFirstAvailableDIDGrant returns the first available grant for a given DID.\n// Returns the granter address and the fee allowance, or an error if no grant is found.\nfunc (k Keeper) GetFirstAvailableDIDGrant(ctx context.Context, granteeDID string) (sdk.AccAddress, feegrant.FeeAllowanceI, error) {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tprefix := feegrant.FeeAllowancePrefixByDID(granteeDID)\n\titer := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), prefix)\n\tdefer iter.Close()\n\n\tif !iter.Valid() {\n\t\treturn nil, nil, sdkerrors.ErrNotFound.Wrap(\"no fee-grant found for DID\")\n\t}\n\n\tvar didGrant feegrant.DIDGrant\n\tif err := k.cdc.Unmarshal(iter.Value(), &didGrant); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(didGrant.Granter)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tallowance, err := didGrant.GetDIDGrant()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn granter, allowance, nil\n}\n\n// UseFirstAvailableDIDGrant finds and validates the first available grant for a given DID.\n// Returns the granter address that was used, or an error if no grant is found or cannot be used.\nfunc (k Keeper) UseFirstAvailableDIDGrant(ctx context.Context, granteeDID string, fee sdk.Coins, msgs []sdk.Msg) (sdk.AccAddress, error) {\n\tstore := k.storeService.OpenKVStore(ctx)\n\tprefix := feegrant.FeeAllowancePrefixByDID(granteeDID)\n\titer := storetypes.KVStorePrefixIterator(runtime.KVStoreAdapter(store), prefix)\n\tdefer iter.Close()\n\n\t// Try each grant until we find one that works\n\tfor ; iter.Valid(); iter.Next() {\n\t\tvar didGrant feegrant.DIDGrant\n\t\tif err := k.cdc.Unmarshal(iter.Value(), &didGrant); err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(didGrant.Granter)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tallowance, err := didGrant.GetDIDGrant()\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Try to use this grant\n\t\tremove, err := allowance.Accept(ctx, fee, msgs)\n\t\tif remove {\n\t\t\tk.revokeDIDAllowance(ctx, granter, granteeDID)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\temitUseDIDGrantEvent(ctx, didGrant.Granter, granteeDID)\n\n\t\t\treturn granter, nil\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\t// Update the allowance\n\t\terr = k.UpdateDIDAllowance(ctx, granter, granteeDID, allowance)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\temitUseDIDGrantEvent(ctx, didGrant.Granter, granteeDID)\n\n\t\treturn granter, nil\n\t}\n\n\treturn nil, sdkerrors.ErrNotFound.Wrap(\"no usable fee-grant found for DID\")\n}\n\nfunc emitUseDIDGrantEvent(ctx context.Context, granter, grantee string) {\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypeUseDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranter, granter),\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyGranteeDid, grantee),\n\t\t),\n\t)\n}\n"
  },
  {
    "path": "x/feegrant/keeper/keeper_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"cosmossdk.io/math\"\n\tsdkmath \"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\tfeegranttestutil \"github.com/sourcenetwork/sourcehub/x/feegrant/testutil\"\n\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\ntype KeeperTestSuite struct {\n\tsuite.Suite\n\n\tctx            sdk.Context\n\taddrs          []sdk.AccAddress\n\tmsgSrvr        feegrant.MsgServer\n\tcoins          sdk.Coins\n\tfeegrantKeeper keeper.Keeper\n\taccountKeeper  *feegranttestutil.MockAccountKeeper\n\tbankKeeper     *feegranttestutil.MockBankKeeper\n}\n\nfunc TestKeeperTestSuite(t *testing.T) {\n\tsuite.Run(t, new(KeeperTestSuite))\n}\n\nfunc (suite *KeeperTestSuite) SetupTest() {\n\tsuite.addrs = simtestutil.CreateIncrementalAccounts(20)\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(suite.T(), key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\t// setup gomock and initialize some globally expected executions\n\tctrl := gomock.NewController(suite.T())\n\tsuite.accountKeeper = feegranttestutil.NewMockAccountKeeper(ctrl)\n\tfor i := 0; i < len(suite.addrs); i++ {\n\t\tsuite.accountKeeper.EXPECT().GetAccount(gomock.Any(), suite.addrs[i]).Return(authtypes.NewBaseAccountWithAddress(suite.addrs[i])).AnyTimes()\n\t}\n\tsuite.accountKeeper.EXPECT().AddressCodec().Return(codecaddress.NewBech32Codec(\"cosmos\")).AnyTimes()\n\tsuite.bankKeeper = feegranttestutil.NewMockBankKeeper(ctrl)\n\tsuite.bankKeeper.EXPECT().BlockedAddr(gomock.Any()).Return(false).AnyTimes()\n\n\tsuite.feegrantKeeper = keeper.NewKeeper(encCfg.Codec, runtime.NewKVStoreService(key), suite.accountKeeper).SetBankKeeper(suite.bankKeeper)\n\tsuite.ctx = testCtx.Ctx\n\tsuite.msgSrvr = keeper.NewMsgServerImpl(suite.feegrantKeeper)\n\tsuite.coins = sdk.NewCoins(sdk.NewCoin(\"uopen\", sdkmath.NewInt(555)))\n}\n\nfunc (suite *KeeperTestSuite) TestKeeperCrud() {\n\t// some helpers\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 123))\n\texp := suite.ctx.BlockTime().AddDate(1, 0, 0)\n\texp2 := suite.ctx.BlockTime().AddDate(2, 0, 0)\n\tbasic := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &exp,\n\t}\n\n\tbasic2 := &feegrant.BasicAllowance{\n\t\tSpendLimit: eth,\n\t\tExpiration: &exp,\n\t}\n\n\tbasic3 := &feegrant.BasicAllowance{\n\t\tSpendLimit: eth,\n\t\tExpiration: &exp2,\n\t}\n\n\t// let's set up some initial state here\n\n\t// addrs[0] -> addrs[1] (basic)\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[0], suite.addrs[1], basic)\n\tsuite.Require().NoError(err)\n\n\t// addrs[0] -> addrs[2] (basic2)\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[0], suite.addrs[2], basic2)\n\tsuite.Require().NoError(err)\n\n\t// addrs[1] -> addrs[2] (basic)\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[1], suite.addrs[2], basic)\n\tsuite.Require().NoError(err)\n\n\t// addrs[1] -> addrs[3] (basic)\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[1], suite.addrs[3], basic)\n\tsuite.Require().NoError(err)\n\n\t// addrs[3] -> addrs[0] (basic2)\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[3], suite.addrs[0], basic2)\n\tsuite.Require().NoError(err)\n\n\t// addrs[3] -> addrs[0] (basic2) expect error with duplicate grant\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[3], suite.addrs[0], basic2)\n\tsuite.Require().Error(err)\n\n\t// remove some, overwrite other\n\t_, err = suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{Granter: suite.addrs[0].String(), Grantee: suite.addrs[1].String()})\n\tsuite.Require().NoError(err)\n\n\t_, err = suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{Granter: suite.addrs[0].String(), Grantee: suite.addrs[2].String()})\n\tsuite.Require().NoError(err)\n\n\t// revoke non-exist fee allowance\n\t_, err = suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{Granter: suite.addrs[0].String(), Grantee: suite.addrs[2].String()})\n\tsuite.Require().Error(err)\n\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[0], suite.addrs[2], basic)\n\tsuite.Require().NoError(err)\n\n\t// revoke an existing grant and grant again with different allowance.\n\t_, err = suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{Granter: suite.addrs[1].String(), Grantee: suite.addrs[2].String()})\n\tsuite.Require().NoError(err)\n\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[1], suite.addrs[2], basic3)\n\tsuite.Require().NoError(err)\n\n\t// end state:\n\t// addr -> addr3 (basic)\n\t// addr2 -> addr3 (basic2), addr4(basic)\n\t// addr4 -> addr (basic2)\n\n\t// then lots of queries\n\tcases := map[string]struct {\n\t\tgrantee   sdk.AccAddress\n\t\tgranter   sdk.AccAddress\n\t\tallowance feegrant.FeeAllowanceI\n\t}{\n\t\t\"addr revoked\": {\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[1],\n\t\t},\n\t\t\"addr revoked and added\": {\n\t\t\tgranter:   suite.addrs[0],\n\t\t\tgrantee:   suite.addrs[2],\n\t\t\tallowance: basic,\n\t\t},\n\t\t\"addr never there\": {\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[3],\n\t\t},\n\t\t\"addr modified\": {\n\t\t\tgranter:   suite.addrs[1],\n\t\t\tgrantee:   suite.addrs[2],\n\t\t\tallowance: basic3,\n\t\t},\n\t}\n\n\tfor name, tc := range cases {\n\t\ttc := tc\n\t\tsuite.Run(name, func() {\n\t\t\tallow, _ := suite.feegrantKeeper.GetAllowance(suite.ctx, tc.granter, tc.grantee)\n\n\t\t\tif tc.allowance == nil {\n\t\t\t\tsuite.Nil(allow)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsuite.NotNil(allow)\n\t\t\tsuite.Equal(tc.allowance, allow)\n\t\t})\n\t}\n\taddress := \"cosmos1rxr4mq58w3gtnx5tsc438mwjjafv3mja7k5pnu\"\n\taccAddr, err := codecaddress.NewBech32Codec(\"cosmos\").StringToBytes(address)\n\tsuite.Require().NoError(err)\n\tsuite.accountKeeper.EXPECT().GetAccount(gomock.Any(), accAddr).Return(authtypes.NewBaseAccountWithAddress(accAddr)).AnyTimes()\n\n\t// let's grant and revoke authorization to non existing account\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[3], accAddr, basic2)\n\tsuite.Require().NoError(err)\n\n\t_, err = suite.feegrantKeeper.GetAllowance(suite.ctx, suite.addrs[3], accAddr)\n\tsuite.Require().NoError(err)\n\n\t_, err = suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{Granter: suite.addrs[3].String(), Grantee: address})\n\tsuite.Require().NoError(err)\n}\n\nfunc (suite *KeeperTestSuite) TestUseGrantedFee() {\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 123))\n\tblockTime := suite.ctx.BlockTime()\n\toneYear := blockTime.AddDate(1, 0, 0)\n\n\tfuture := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &oneYear,\n\t}\n\n\t// for testing limits of the contract\n\thugeAmount := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 9999))\n\tsmallAmount := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1))\n\tfutureAfterSmall := &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 554)),\n\t\tExpiration: &oneYear,\n\t}\n\n\t// then lots of queries\n\tcases := map[string]struct {\n\t\tgrantee sdk.AccAddress\n\t\tgranter sdk.AccAddress\n\t\tfee     sdk.Coins\n\t\tallowed bool\n\t\tfinal   feegrant.FeeAllowanceI\n\t\tpostRun func()\n\t}{\n\t\t\"use entire pot\": {\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[1],\n\t\t\tfee:     suite.coins,\n\t\t\tallowed: true,\n\t\t\tfinal:   nil,\n\t\t\tpostRun: func() {},\n\t\t},\n\t\t\"too high\": {\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[1],\n\t\t\tfee:     hugeAmount,\n\t\t\tallowed: false,\n\t\t\tfinal:   future,\n\t\t\tpostRun: func() {\n\t\t\t\t_, err := suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{\n\t\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t},\n\t\t},\n\t\t\"use a little\": {\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[1],\n\t\t\tfee:     smallAmount,\n\t\t\tallowed: true,\n\t\t\tfinal:   futureAfterSmall,\n\t\t\tpostRun: func() {\n\t\t\t\t_, err := suite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{\n\t\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor name, tc := range cases {\n\t\ttc := tc\n\t\tsuite.Run(name, func() {\n\t\t\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, tc.granter, tc.grantee, future)\n\t\t\tsuite.Require().NoError(err)\n\n\t\t\terr = suite.feegrantKeeper.UseGrantedFees(suite.ctx, tc.granter, tc.grantee, tc.fee, []sdk.Msg{})\n\t\t\tif tc.allowed {\n\t\t\t\tsuite.NoError(err)\n\t\t\t} else {\n\t\t\t\tsuite.Error(err)\n\t\t\t}\n\n\t\t\tloaded, _ := suite.feegrantKeeper.GetAllowance(suite.ctx, tc.granter, tc.grantee)\n\t\t\tsuite.Equal(tc.final, loaded)\n\n\t\t\ttc.postRun()\n\t\t})\n\t}\n\n\tbasicAllowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: eth,\n\t\tExpiration: &blockTime,\n\t}\n\n\t// create basic fee allowance\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[0], suite.addrs[2], basicAllowance)\n\tsuite.Require().NoError(err)\n\n\t// waiting for future blocks, allowance to be pruned.\n\tctx := suite.ctx.WithBlockTime(oneYear)\n\n\t// expect error: feegrant expired\n\terr = suite.feegrantKeeper.UseGrantedFees(ctx, suite.addrs[0], suite.addrs[2], eth, []sdk.Msg{})\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"fee allowance expired\")\n\n\t// verify: feegrant is revoked\n\t_, err = suite.feegrantKeeper.GetAllowance(ctx, suite.addrs[0], suite.addrs[2])\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"fee-grant not found\")\n}\n\nfunc (suite *KeeperTestSuite) TestIterateGrants() {\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 123))\n\texp := suite.ctx.BlockTime().AddDate(1, 0, 0)\n\n\tallowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &exp,\n\t}\n\n\tallowance1 := &feegrant.BasicAllowance{\n\t\tSpendLimit: eth,\n\t\tExpiration: &exp,\n\t}\n\n\tsuite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[0], suite.addrs[1], allowance)\n\tsuite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[2], suite.addrs[1], allowance1)\n\n\tsuite.feegrantKeeper.IterateAllFeeAllowances(suite.ctx, func(grant feegrant.Grant) bool {\n\t\tsuite.Require().Equal(suite.addrs[1].String(), grant.Grantee)\n\t\tsuite.Require().Contains([]string{suite.addrs[0].String(), suite.addrs[2].String()}, grant.Granter)\n\t\treturn true\n\t})\n}\n\nfunc (suite *KeeperTestSuite) TestPruneGrants() {\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 123))\n\tnow := suite.ctx.BlockTime()\n\toneYearExpiry := now.AddDate(1, 0, 0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tctx       sdk.Context\n\t\tgranter   sdk.AccAddress\n\t\tgrantee   sdk.AccAddress\n\t\tallowance feegrant.FeeAllowanceI\n\t\texpErrMsg string\n\t\tpreRun    func()\n\t\tpostRun   func()\n\t}{\n\t\t{\n\t\t\tname:    \"grant not pruned from state\",\n\t\t\tctx:     suite.ctx,\n\t\t\tgranter: suite.addrs[0],\n\t\t\tgrantee: suite.addrs[1],\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"grant pruned from state after a block: error\",\n\t\t\tctx:       suite.ctx.WithBlockTime(now.AddDate(0, 0, 1)),\n\t\t\tgranter:   suite.addrs[2],\n\t\t\tgrantee:   suite.addrs[1],\n\t\t\texpErrMsg: \"not found\",\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: eth,\n\t\t\t\tExpiration: &now,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"grant not pruned from state after a day: no error\",\n\t\t\tctx:     suite.ctx.WithBlockTime(now.AddDate(0, 0, 1)),\n\t\t\tgranter: suite.addrs[1],\n\t\t\tgrantee: suite.addrs[0],\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: eth,\n\t\t\t\tExpiration: &oneYearExpiry,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:      \"grant pruned from state after a year: error\",\n\t\t\tctx:       suite.ctx.WithBlockTime(now.AddDate(1, 0, 1)),\n\t\t\tgranter:   suite.addrs[1],\n\t\t\tgrantee:   suite.addrs[2],\n\t\t\texpErrMsg: \"not found\",\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: eth,\n\t\t\t\tExpiration: &oneYearExpiry,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:    \"no expiry: no error\",\n\t\t\tctx:     suite.ctx.WithBlockTime(now.AddDate(1, 0, 0)),\n\t\t\tgranter: suite.addrs[1],\n\t\t\tgrantee: suite.addrs[2],\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: eth,\n\t\t\t\tExpiration: &oneYearExpiry,\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\t\tsuite.Run(tc.name, func() {\n\t\t\tif tc.preRun != nil {\n\t\t\t\ttc.preRun()\n\t\t\t}\n\t\t\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, tc.granter, tc.grantee, tc.allowance)\n\t\t\tsuite.NoError(err)\n\t\t\terr = suite.feegrantKeeper.RemoveExpiredAllowances(tc.ctx, 5)\n\t\t\tsuite.NoError(err)\n\n\t\t\tgrant, err := suite.feegrantKeeper.GetAllowance(tc.ctx, tc.granter, tc.grantee)\n\t\t\tif tc.expErrMsg != \"\" {\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\tsuite.NotNil(grant)\n\t\t\t}\n\t\t\tif tc.postRun != nil {\n\t\t\t\ttc.postRun()\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowanceGrant() {\n\ttestDID := \"did:example:bob\"\n\n\ttestCases := []struct {\n\t\tname          string\n\t\tgranter       sdk.AccAddress\n\t\tgranteeDID    string\n\t\tallowance     feegrant.FeeAllowanceI\n\t\texpectedError string\n\t\tpreRun        func()\n\t}{\n\t\t{\n\t\t\tname:       \"valid DID grant\",\n\t\t\tgranter:    suite.addrs[0],\n\t\t\tgranteeDID: testDID,\n\t\t\tallowance: &feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: suite.coins,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:       \"duplicate DID grant\",\n\t\t\tgranter:    suite.addrs[1],\n\t\t\tgranteeDID: testDID,\n\t\t\tallowance:  &feegrant.BasicAllowance{SpendLimit: suite.coins},\n\t\t\tpreRun: func() {\n\t\t\t\t// Grant first time\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, suite.addrs[1], testDID, &feegrant.BasicAllowance{SpendLimit: suite.coins})\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\texpectedError: \"already exists\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\t\tsuite.Run(tc.name, func() {\n\t\t\tif tc.preRun != nil {\n\t\t\t\ttc.preRun()\n\t\t\t}\n\n\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, tc.granter, tc.granteeDID, tc.allowance)\n\n\t\t\tif tc.expectedError != \"\" {\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), tc.expectedError)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tsuite.NoError(err)\n\n\t\t\t// Verify the grant was created\n\t\t\tallowance, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, tc.granter, tc.granteeDID)\n\t\t\tsuite.NoError(err)\n\t\t\tsuite.NotNil(allowance)\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowanceRevoke() {\n\ttestDID := \"did:example:alice\"\n\tgranter := suite.addrs[2]\n\n\tnow := sdk.UnwrapSDKContext(suite.ctx).BlockTime()\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, math.NewInt(100)))\n\tperiod := time.Hour\n\n\tperiodicAllowance := &feegrant.PeriodicAllowance{\n\t\tBasic: feegrant.BasicAllowance{\n\t\t\tSpendLimit: suite.coins,\n\t\t},\n\t\tPeriod:           period,\n\t\tPeriodSpendLimit: spendLimit,\n\t\tPeriodCanSpend:   spendLimit,\n\t\tPeriodReset:      now.Add(period),\n\t}\n\n\t// First grant a periodic allowance\n\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, periodicAllowance)\n\tsuite.NoError(err)\n\n\t// Verify it exists\n\texistingAllowance, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, granter, testDID)\n\tsuite.NoError(err)\n\tsuite.NotNil(existingAllowance)\n\n\t// Verify there was no expiration\n\texistingExpiration, err := existingAllowance.ExpiresAt()\n\tsuite.NoError(err)\n\tsuite.Nil(existingExpiration)\n\n\t// Now expire it\n\terr = suite.feegrantKeeper.ExpireDIDAllowance(suite.ctx, granter, testDID)\n\tsuite.NoError(err)\n\n\t// Verify that allowance exists and has expiration set\n\texpiredAllowance, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, granter, testDID)\n\tsuite.NoError(err)\n\tsuite.NotNil(expiredAllowance)\n\n\texpiredExpiration, err := expiredAllowance.ExpiresAt()\n\tsuite.NotNil(expiredExpiration)\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowanceUsage() {\n\ttestDID := \"did:example:bob\"\n\tgranter := suite.addrs[3]\n\n\t// Create allowance with specific spend limit\n\tspendLimit := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000))\n\tallowance := &feegrant.BasicAllowance{SpendLimit: spendLimit}\n\n\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\tsuite.NoError(err)\n\n\t// Test fee usage\n\tfee := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100))\n\tmsgs := []sdk.Msg{}\n\n\terr = suite.feegrantKeeper.UseGrantedFeesByDID(suite.ctx, granter, testDID, fee, msgs)\n\tsuite.NoError(err)\n\n\t// Check remaining allowance\n\tremainingAllowance, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, granter, testDID)\n\tsuite.NoError(err)\n\n\tbasic, ok := remainingAllowance.(*feegrant.BasicAllowance)\n\tsuite.True(ok)\n\texpected := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 900))\n\tsuite.Equal(expected, basic.SpendLimit)\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowanceWithFallback() {\n\ttestDID := \"did:example:alice\"\n\tgranter := suite.addrs[4]\n\n\t// Create DID allowance\n\tdidAllowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 500)),\n\t}\n\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, didAllowance)\n\tsuite.NoError(err)\n\n\tfee := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100))\n\tmsgs := []sdk.Msg{} // Mock messages with DID\n\n\terr = suite.feegrantKeeper.UseGrantedFeesByDID(suite.ctx, granter, testDID, fee, msgs)\n\tsuite.NoError(err)\n}\n\nfunc (suite *KeeperTestSuite) TestDIDAllowanceExpiry() {\n\ttestDID := \"did:example:bob\"\n\tgranter := suite.addrs[6]\n\n\t// Create allowance that expires in future\n\tnow := suite.ctx.BlockTime()\n\texpiry := now.Add(time.Hour) // Expires in 1 hour\n\n\tallowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &expiry,\n\t}\n\n\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\tsuite.NoError(err)\n\n\t// Advance time to make allowance expire\n\texpiredCtx := suite.ctx.WithBlockTime(now.Add(2 * time.Hour))\n\tsuite.ctx = expiredCtx\n\n\t// Try to use expired allowance\n\tfee := sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 10))\n\tmsgs := []sdk.Msg{}\n\n\terr = suite.feegrantKeeper.UseGrantedFeesByDID(suite.ctx, granter, testDID, fee, msgs)\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"expired\")\n\n\t// Verify allowance was removed due to expiry\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(suite.ctx, granter, testDID)\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"not found\")\n}\n\n// TestSeparateQueueSystems verifies that DID grants and regular grants use completely separate expiration queue systems\nfunc (suite *KeeperTestSuite) TestSeparateQueueSystems() {\n\tnow := suite.ctx.BlockTime()\n\texpiry := now.Add(time.Hour) // Both types expire in 1 hour\n\n\t// Create regular grant (uses 0x01 queue prefix)\n\tregularGranter := suite.addrs[0]\n\tregularGrantee := suite.addrs[1]\n\tregularAllowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &expiry,\n\t}\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, regularGranter, regularGrantee, regularAllowance)\n\tsuite.NoError(err)\n\n\t// Create DID grant (uses 0x03 queue prefix)\n\tdidGranter := suite.addrs[2]\n\ttestDID := \"did:example:alice\"\n\tdidAllowance := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &expiry,\n\t}\n\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, didGranter, testDID, didAllowance)\n\tsuite.NoError(err)\n\n\t// Verify both grants exist before expiry\n\t_, err = suite.feegrantKeeper.GetAllowance(suite.ctx, regularGranter, regularGrantee)\n\tsuite.NoError(err)\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(suite.ctx, didGranter, testDID)\n\tsuite.NoError(err)\n\n\t// Advance time to expire both grants\n\texpiredCtx := suite.ctx.WithBlockTime(now.Add(2 * time.Hour))\n\n\t// Remove expired regular grants only - this should NOT affect DID grants\n\terr = suite.feegrantKeeper.RemoveExpiredAllowances(expiredCtx, 10)\n\tsuite.NoError(err)\n\n\t// Regular grant should be removed\n\t_, err = suite.feegrantKeeper.GetAllowance(expiredCtx, regularGranter, regularGrantee)\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"not found\")\n\n\t// DID grant should still exist (not removed by regular grant cleanup)\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(expiredCtx, didGranter, testDID)\n\tsuite.NoError(err)\n\n\t// Now remove expired DID grants only\n\terr = suite.feegrantKeeper.RemoveExpiredDIDAllowances(expiredCtx, 10)\n\tsuite.NoError(err)\n\n\t// Now DID grant should be removed\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(expiredCtx, didGranter, testDID)\n\tsuite.Error(err)\n\tsuite.Contains(err.Error(), \"not found\")\n}\n\n// TestQueueKeyPrefixSeparation tests that regular and DID grants use different key prefixes in their queues\nfunc (suite *KeeperTestSuite) TestQueueKeyPrefixSeparation() {\n\t// Test the key prefixes are different\n\tsuite.NotEqual(feegrant.FeeAllowanceQueueKeyPrefix, feegrant.DIDFeeAllowanceQueueKeyPrefix)\n\n\t// Regular grants use 0x01 prefix\n\tsuite.Equal([]byte{0x01}, feegrant.FeeAllowanceQueueKeyPrefix)\n\n\t// DID grants use 0x03 prefix\n\tsuite.Equal([]byte{0x03}, feegrant.DIDFeeAllowanceQueueKeyPrefix)\n\n\t// Test storage key prefixes are also different\n\tsuite.NotEqual(feegrant.FeeAllowanceKeyPrefix, feegrant.DIDFeeAllowanceKeyPrefix)\n\n\t// Regular grants use 0x00 prefix\n\tsuite.Equal([]byte{0x00}, feegrant.FeeAllowanceKeyPrefix)\n\n\t// DID grants use 0x02 prefix\n\tsuite.Equal([]byte{0x02}, feegrant.DIDFeeAllowanceKeyPrefix)\n}\n\n// TestMixedExpirationHandling tests that mixed regular and DID grants with different expiration times are handled correctly\nfunc (suite *KeeperTestSuite) TestMixedExpirationHandling() {\n\tnow := suite.ctx.BlockTime()\n\tshortExpiry := now.Add(time.Hour)\n\tlongExpiry := now.Add(24 * time.Hour)\n\n\t// Create regular grants with different expiry times\n\tregularGranter1 := suite.addrs[0]\n\tregularGrantee1 := suite.addrs[1]\n\tregularAllowanceShort := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &shortExpiry,\n\t}\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, regularGranter1, regularGrantee1, regularAllowanceShort)\n\tsuite.NoError(err)\n\n\tregularGranter2 := suite.addrs[2]\n\tregularGrantee2 := suite.addrs[3]\n\tregularAllowanceLong := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &longExpiry,\n\t}\n\terr = suite.feegrantKeeper.GrantAllowance(suite.ctx, regularGranter2, regularGrantee2, regularAllowanceLong)\n\tsuite.NoError(err)\n\n\t// Create DID grants with different expiry times\n\tdidGranter1 := suite.addrs[4]\n\ttestDID1 := \"did:example:alice\"\n\tdidAllowanceShort := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &shortExpiry,\n\t}\n\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, didGranter1, testDID1, didAllowanceShort)\n\tsuite.NoError(err)\n\n\tdidGranter2 := suite.addrs[5]\n\ttestDID2 := \"did:example:bob\"\n\tdidAllowanceLong := &feegrant.BasicAllowance{\n\t\tSpendLimit: suite.coins,\n\t\tExpiration: &longExpiry,\n\t}\n\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, didGranter2, testDID2, didAllowanceLong)\n\tsuite.NoError(err)\n\n\t// Advance time to expire short-term grants but not long-term\n\tmidCtx := suite.ctx.WithBlockTime(now.Add(2 * time.Hour))\n\n\t// Remove expired regular grants\n\terr = suite.feegrantKeeper.RemoveExpiredAllowances(midCtx, 10)\n\tsuite.NoError(err)\n\n\t// Short-term regular grant should be removed\n\t_, err = suite.feegrantKeeper.GetAllowance(midCtx, regularGranter1, regularGrantee1)\n\tsuite.Error(err)\n\n\t// Long-term regular grant should still exist\n\t_, err = suite.feegrantKeeper.GetAllowance(midCtx, regularGranter2, regularGrantee2)\n\tsuite.NoError(err)\n\n\t// DID grants should not be affected by regular grant cleanup\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(midCtx, didGranter1, testDID1)\n\tsuite.NoError(err)\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(midCtx, didGranter2, testDID2)\n\tsuite.NoError(err)\n\n\t// Now remove expired DID grants\n\terr = suite.feegrantKeeper.RemoveExpiredDIDAllowances(midCtx, 10)\n\tsuite.NoError(err)\n\n\t// Short-term DID grant should be removed\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(midCtx, didGranter1, testDID1)\n\tsuite.Error(err)\n\n\t// Long-term DID grant should still exist\n\t_, err = suite.feegrantKeeper.GetDIDAllowance(midCtx, didGranter2, testDID2)\n\tsuite.NoError(err)\n\n\t// Regular grants should not be affected by DID grant cleanup\n\t_, err = suite.feegrantKeeper.GetAllowance(midCtx, regularGranter2, regularGrantee2)\n\tsuite.NoError(err)\n}\n\n// TestIterationSeparation tests that iteration functions only return their respective grant types\nfunc (suite *KeeperTestSuite) TestIterationSeparation() {\n\t// Create mixed grants\n\tregularGranter := suite.addrs[0]\n\tregularGrantee := suite.addrs[1]\n\tregularAllowance := &feegrant.BasicAllowance{SpendLimit: suite.coins}\n\terr := suite.feegrantKeeper.GrantAllowance(suite.ctx, regularGranter, regularGrantee, regularAllowance)\n\tsuite.NoError(err)\n\n\tdidGranter := suite.addrs[2]\n\ttestDID := \"did:example:alice\"\n\tdidAllowance := &feegrant.BasicAllowance{SpendLimit: suite.coins}\n\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, didGranter, testDID, didAllowance)\n\tsuite.NoError(err)\n\n\t// Test regular grant iteration only finds regular grants\n\tregularCount := 0\n\terr = suite.feegrantKeeper.IterateAllFeeAllowances(suite.ctx, func(grant feegrant.Grant) bool {\n\t\tregularCount++\n\t\t// Should be regular grant format - grantee is an address\n\t\tsuite.Equal(regularGrantee.String(), grant.Grantee)\n\t\tsuite.Equal(regularGranter.String(), grant.Granter)\n\t\treturn true\n\t})\n\tsuite.NoError(err)\n\tsuite.Equal(1, regularCount)\n\n\t// Test DID grant iteration only finds DID grants\n\tdidCount := 0\n\terr = suite.feegrantKeeper.IterateAllDIDAllowances(suite.ctx, func(grant feegrant.DIDGrant) bool {\n\t\tdidCount++\n\t\t// Should be DID grant format - grantee is a DID\n\t\tsuite.Equal(testDID, grant.GranteeDid)\n\t\tsuite.Equal(didGranter.String(), grant.Granter)\n\t\treturn true\n\t})\n\tsuite.NoError(err)\n\tsuite.Equal(1, didCount)\n}\n\n// TestGetFirstAvailableDIDGrant tests retrieving the first available grant for a DID\nfunc (suite *KeeperTestSuite) TestGetFirstAvailableDIDGrant() {\n\ttestDID := \"did:example:charlie\"\n\n\ttestCases := []struct {\n\t\tname          string\n\t\tsetupGrants   func()\n\t\texpectedError string\n\t\tvalidateGrant func(granter sdk.AccAddress, allowance feegrant.FeeAllowanceI)\n\t}{\n\t\t{\n\t\t\tname: \"no grants available\",\n\t\t\tsetupGrants: func() {\n\t\t\t\t// Don't create any grants\n\t\t\t},\n\t\t\texpectedError: \"no fee-grant found for DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"single grant available\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tgranter := suite.addrs[10]\n\t\t\t\tallowance := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tvalidateGrant: func(granter sdk.AccAddress, allowance feegrant.FeeAllowanceI) {\n\t\t\t\tsuite.Equal(suite.addrs[10], granter)\n\t\t\t\tbasic, ok := allowance.(*feegrant.BasicAllowance)\n\t\t\t\tsuite.True(ok)\n\t\t\t\tsuite.Equal(sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)), basic.SpendLimit)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"multiple grants available - returns first one\",\n\t\t\tsetupGrants: func() {\n\t\t\t\t// Create multiple grants for the same DID\n\t\t\t\tgranter1 := suite.addrs[11]\n\t\t\t\tallowance1 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 500)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter1, testDID, allowance1)\n\t\t\t\tsuite.NoError(err)\n\n\t\t\t\tgranter2 := suite.addrs[12]\n\t\t\t\tallowance2 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 2000)),\n\t\t\t\t}\n\t\t\t\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter2, testDID, allowance2)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tvalidateGrant: func(granter sdk.AccAddress, allowance feegrant.FeeAllowanceI) {\n\t\t\t\t// Should return one of the grants\n\t\t\t\tsuite.NotNil(granter)\n\t\t\t\tsuite.NotNil(allowance)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\t\tsuite.Run(tc.name, func() {\n\t\t\tsuite.SetupTest()\n\n\t\t\tif tc.setupGrants != nil {\n\t\t\t\ttc.setupGrants()\n\t\t\t}\n\n\t\t\tgranter, allowance, err := suite.feegrantKeeper.GetFirstAvailableDIDGrant(suite.ctx, testDID)\n\n\t\t\tif tc.expectedError != \"\" {\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), tc.expectedError)\n\t\t\t\tsuite.Nil(granter)\n\t\t\t\tsuite.Nil(allowance)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tsuite.NoError(err)\n\t\t\tif tc.validateGrant != nil {\n\t\t\t\ttc.validateGrant(granter, allowance)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestUseFirstAvailableDIDGrant tests using the first available grant for a DID\nfunc (suite *KeeperTestSuite) TestUseFirstAvailableDIDGrant() {\n\ttestDID := \"did:example:dave\"\n\n\ttestCases := []struct {\n\t\tname          string\n\t\tsetupGrants   func()\n\t\tfee           sdk.Coins\n\t\texpectedError string\n\t\tvalidateAfter func()\n\t}{\n\t\t{\n\t\t\tname: \"no grants available\",\n\t\t\tsetupGrants: func() {\n\t\t\t\t// Don't create any grants\n\t\t\t},\n\t\t\tfee:           sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\texpectedError: \"no usable fee-grant found for DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"single grant - successful use\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tgranter := suite.addrs[13]\n\t\t\t\tallowance := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tfee: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\tvalidateAfter: func() {\n\t\t\t\t// Grant should still exist with reduced spend limit\n\t\t\t\tallowance, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[13], testDID)\n\t\t\t\tsuite.NoError(err)\n\t\t\t\tbasic, ok := allowance.(*feegrant.BasicAllowance)\n\t\t\t\tsuite.True(ok)\n\t\t\t\tsuite.Equal(sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 900)), basic.SpendLimit)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single grant - depletes allowance completely\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tgranter := suite.addrs[14]\n\t\t\t\tallowance := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tfee: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\tvalidateAfter: func() {\n\t\t\t\t// Grant should be removed when fully depleted\n\t\t\t\t_, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[14], testDID)\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), \"not found\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"single grant - fee exceeds limit\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tgranter := suite.addrs[15]\n\t\t\t\tallowance := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 50)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tfee:           sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\texpectedError: \"no usable fee-grant found for DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple grants - first one insufficient, second one works\",\n\t\t\tsetupGrants: func() {\n\t\t\t\t// First grant with insufficient limit\n\t\t\t\tgranter1 := suite.addrs[16]\n\t\t\t\tallowance1 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 50)),\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter1, testDID, allowance1)\n\t\t\t\tsuite.NoError(err)\n\n\t\t\t\t// Second grant with sufficient limit\n\t\t\t\tgranter2 := suite.addrs[17]\n\t\t\t\tallowance2 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t}\n\t\t\t\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter2, testDID, allowance2)\n\t\t\t\tsuite.NoError(err)\n\t\t\t},\n\t\t\tfee: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\tvalidateAfter: func() {\n\t\t\t\t// First grant should still exist (wasn't used)\n\t\t\t\tallowance1, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[16], testDID)\n\t\t\t\tsuite.NoError(err)\n\t\t\t\tbasic1, ok := allowance1.(*feegrant.BasicAllowance)\n\t\t\t\tsuite.True(ok)\n\t\t\t\tsuite.Equal(sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 50)), basic1.SpendLimit)\n\n\t\t\t\t// Second grant should have reduced limit\n\t\t\t\tallowance2, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[17], testDID)\n\t\t\t\tsuite.NoError(err)\n\t\t\t\tbasic2, ok := allowance2.(*feegrant.BasicAllowance)\n\t\t\t\tsuite.True(ok)\n\t\t\t\tsuite.Equal(sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 900)), basic2.SpendLimit)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"expired grant - should be skipped and removed\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tnow := suite.ctx.BlockTime()\n\t\t\t\tfutureExpiry := now.Add(time.Hour)\n\n\t\t\t\tgranter := suite.addrs[18]\n\t\t\t\tallowance := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t\tExpiration: &futureExpiry,\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter, testDID, allowance)\n\t\t\t\tsuite.NoError(err)\n\n\t\t\t\t// Advance time to make it expired\n\t\t\t\tsuite.ctx = suite.ctx.WithBlockTime(now.Add(2 * time.Hour))\n\t\t\t},\n\t\t\tfee:           sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\texpectedError: \"no usable fee-grant found for DID\",\n\t\t\tvalidateAfter: func() {\n\t\t\t\t// Expired grant should be removed\n\t\t\t\t_, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[18], testDID)\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), \"not found\")\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"mixed grants - expired first, valid second\",\n\t\t\tsetupGrants: func() {\n\t\t\t\tnow := suite.ctx.BlockTime()\n\t\t\t\tfutureExpiry := now.Add(time.Hour)\n\n\t\t\t\t// First grant - will be expired (using lower index so it comes first in iteration)\n\t\t\t\tgranter1 := suite.addrs[7]\n\t\t\t\tallowance1 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t\tExpiration: &futureExpiry,\n\t\t\t\t}\n\t\t\t\terr := suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter1, testDID, allowance1)\n\t\t\t\tsuite.NoError(err)\n\n\t\t\t\t// Second grant - valid (no expiration, using higher index so it comes second in iteration)\n\t\t\t\tgranter2 := suite.addrs[19]\n\t\t\t\tallowance2 := &feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 1000)),\n\t\t\t\t}\n\t\t\t\terr = suite.feegrantKeeper.GrantDIDAllowance(suite.ctx, granter2, testDID, allowance2)\n\t\t\t\tsuite.NoError(err)\n\n\t\t\t\t// Advance time to make first grant expired\n\t\t\t\tsuite.ctx = suite.ctx.WithBlockTime(now.Add(2 * time.Hour))\n\t\t\t},\n\t\t\tfee: sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 100)),\n\t\t\tvalidateAfter: func() {\n\t\t\t\t// First grant should be removed (expired)\n\t\t\t\t_, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[7], testDID)\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), \"not found\")\n\n\t\t\t\t// Second grant should have reduced limit\n\t\t\t\tallowance2, err := suite.feegrantKeeper.GetDIDAllowance(suite.ctx, suite.addrs[19], testDID)\n\t\t\t\tsuite.NoError(err)\n\t\t\t\tbasic2, ok := allowance2.(*feegrant.BasicAllowance)\n\t\t\t\tsuite.True(ok)\n\t\t\t\tsuite.Equal(sdk.NewCoins(sdk.NewInt64Coin(\"uopen\", 900)), basic2.SpendLimit)\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\ttc := tc\n\t\tsuite.Run(tc.name, func() {\n\t\t\tsuite.SetupTest()\n\n\t\t\tif tc.setupGrants != nil {\n\t\t\t\ttc.setupGrants()\n\t\t\t}\n\n\t\t\tgranter, err := suite.feegrantKeeper.UseFirstAvailableDIDGrant(suite.ctx, testDID, tc.fee, []sdk.Msg{})\n\n\t\t\tif tc.expectedError != \"\" {\n\t\t\t\tsuite.Error(err)\n\t\t\t\tsuite.Contains(err.Error(), tc.expectedError)\n\t\t\t\tsuite.Nil(granter)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tsuite.NoError(err)\n\t\t\tsuite.NotNil(granter)\n\n\t\t\tif tc.validateAfter != nil {\n\t\t\t\ttc.validateAfter()\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/keeper/migrations.go",
    "content": "package keeper\n\nimport (\n\tv2 \"github.com/sourcenetwork/sourcehub/x/feegrant/migrations/v2\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\n// Migrator is a struct for handling in-place store migrations.\ntype Migrator struct {\n\tkeeper Keeper\n}\n\n// NewMigrator returns a new Migrator.\nfunc NewMigrator(keeper Keeper) Migrator {\n\treturn Migrator{keeper: keeper}\n}\n\n// Migrate1to2 migrates from version 1 to 2.\nfunc (m Migrator) Migrate1to2(ctx sdk.Context) error {\n\treturn v2.MigrateStore(ctx, m.keeper.storeService, m.keeper.cdc)\n}\n"
  },
  {
    "path": "x/feegrant/keeper/msg_server.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"strings\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\ntype msgServer struct {\n\tKeeper\n}\n\n// NewMsgServerImpl returns an implementation of the feegrant MsgServer interface\n// for the provided Keeper.\nfunc NewMsgServerImpl(k Keeper) feegrant.MsgServer {\n\treturn &msgServer{\n\t\tKeeper: k,\n\t}\n}\n\nvar _ feegrant.MsgServer = msgServer{}\n\n// GrantAllowance grants an allowance from the granter's funds to be used by the grantee.\nfunc (k msgServer) GrantAllowance(goCtx context.Context, msg *feegrant.MsgGrantAllowance) (*feegrant.MsgGrantAllowanceResponse, error) {\n\tif strings.EqualFold(msg.Grantee, msg.Granter) {\n\t\treturn nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"cannot self-grant fee authorization\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tgrantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif f, _ := k.GetAllowance(ctx, granter, grantee); f != nil {\n\t\treturn nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"fee allowance already exists\")\n\t}\n\n\tallowance, err := msg.GetFeeAllowanceI()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := allowance.ValidateBasic(); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = k.Keeper.GrantAllowance(ctx, granter, grantee, allowance)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &feegrant.MsgGrantAllowanceResponse{}, nil\n}\n\n// RevokeAllowance revokes a fee allowance between a granter and grantee.\nfunc (k msgServer) RevokeAllowance(goCtx context.Context, msg *feegrant.MsgRevokeAllowance) (*feegrant.MsgRevokeAllowanceResponse, error) {\n\tif msg.Grantee == msg.Granter {\n\t\treturn nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"addresses must be different\")\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tgrantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = k.Keeper.revokeAllowance(ctx, granter, grantee)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &feegrant.MsgRevokeAllowanceResponse{}, nil\n}\n\n// PruneAllowances removes expired allowances from the store.\nfunc (k msgServer) PruneAllowances(ctx context.Context, req *feegrant.MsgPruneAllowances) (*feegrant.MsgPruneAllowancesResponse, error) {\n\t// 75 is an arbitrary value, we can change it later if needed\n\terr := k.RemoveExpiredAllowances(ctx, 75)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypePruneFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyPruner, req.Pruner),\n\t\t),\n\t)\n\n\treturn &feegrant.MsgPruneAllowancesResponse{}, nil\n}\n\n// GrantDIDAllowance grants an allowance from the granter's funds to be used by a DID.\nfunc (k msgServer) GrantDIDAllowance(\n\tgoCtx context.Context,\n\tmsg *feegrant.MsgGrantDIDAllowance,\n) (*feegrant.MsgGrantDIDAllowanceResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Check if DID allowance already exists\n\tif existingAllowance, _ := k.GetDIDAllowance(ctx, granter, msg.GranteeDid); existingAllowance != nil {\n\t\treturn nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"DID allowance already exists\")\n\t}\n\n\tallowance, err := msg.GetFeeAllowanceI()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := allowance.ValidateBasic(); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = k.Keeper.GrantDIDAllowance(ctx, granter, msg.GranteeDid, allowance)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &feegrant.MsgGrantDIDAllowanceResponse{}, nil\n}\n\n// ExpireDIDAllowance expires a periodic allowance by setting the expiration to current PeriodReset.\nfunc (k msgServer) ExpireDIDAllowance(\n\tgoCtx context.Context,\n\tmsg *feegrant.MsgExpireDIDAllowance,\n) (*feegrant.MsgExpireDIDAllowanceResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\tgranter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = k.Keeper.ExpireDIDAllowance(ctx, granter, msg.GranteeDid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &feegrant.MsgExpireDIDAllowanceResponse{}, nil\n}\n\n// PruneDIDAllowances removes expired DID allowances from the store.\nfunc (k msgServer) PruneDIDAllowances(ctx context.Context, req *feegrant.MsgPruneDIDAllowances) (*feegrant.MsgPruneDIDAllowancesResponse, error) {\n\t// 75 is an arbitrary value, we can change it later if needed\n\terr := k.RemoveExpiredDIDAllowances(ctx, 75)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\tfeegrant.EventTypePruneDIDFeeGrant,\n\t\t\tsdk.NewAttribute(feegrant.AttributeKeyPruner, req.Pruner),\n\t\t),\n\t)\n\n\treturn &feegrant.MsgPruneDIDAllowancesResponse{}, nil\n}\n"
  },
  {
    "path": "x/feegrant/keeper/msg_server_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/golang/mock/gomock\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n)\n\nfunc (suite *KeeperTestSuite) TestGrantAllowance() {\n\tctx := suite.ctx.WithBlockTime(time.Now())\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\tyesterday := ctx.BlockTime().AddDate(0, 0, -1)\n\n\taddressCodec := codecaddress.NewBech32Codec(\"cosmos\")\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       func() *feegrant.MsgGrantAllowance\n\t\texpectErr bool\n\t\terrMsg    string\n\t}{\n\t\t{\n\t\t\t\"invalid granter address\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\tinvalid := \"invalid-granter\"\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   invalid,\n\t\t\t\t\tGrantee:   suite.addrs[1].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"invalid grantee address\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\tinvalid := \"invalid-grantee\"\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   invalid,\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"valid: grantee account doesn't exist\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tgrantee := \"cosmos139f7kncmglres2nf3h4hc4tade85ekfr8sulz5\"\n\t\t\t\tgranteeAccAddr, err := addressCodec.StringToBytes(grantee)\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\n\t\t\t\tsuite.accountKeeper.EXPECT().GetAccount(gomock.Any(), granteeAccAddr).Return(nil).AnyTimes()\n\n\t\t\t\tacc := authtypes.NewBaseAccountWithAddress(granteeAccAddr)\n\t\t\t\tadd, err := addressCodec.StringToBytes(grantee)\n\t\t\t\tsuite.Require().NoError(err)\n\n\t\t\t\tsuite.accountKeeper.EXPECT().NewAccountWithAddress(gomock.Any(), add).Return(acc).AnyTimes()\n\t\t\t\tsuite.accountKeeper.EXPECT().SetAccount(gomock.Any(), acc).Return()\n\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   grantee,\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"invalid: past expiry\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &yesterday,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   suite.addrs[1].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"expiration is before current block time\",\n\t\t},\n\t\t{\n\t\t\t\"valid: basic fee allowance\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   suite.addrs[1].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"fail: fee allowance exists\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   suite.addrs[1].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"fee allowance already exists\",\n\t\t},\n\t\t{\n\t\t\t\"valid: periodic fee allowance\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.PeriodicAllowance{\n\t\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t\t},\n\t\t\t\t\tPeriodSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[1].String(),\n\t\t\t\t\tGrantee:   suite.addrs[2].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"error: fee allowance exists\",\n\t\t\tfunc() *feegrant.MsgGrantAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.PeriodicAllowance{\n\t\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t\t},\n\t\t\t\t\tPeriodSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[1].String(),\n\t\t\t\t\tGrantee:   suite.addrs[2].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"fee allowance already exists\",\n\t\t},\n\t}\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\t_, err := suite.msgSrvr.GrantAllowance(ctx, tc.req())\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestRevokeAllowance() {\n\toneYear := suite.ctx.BlockTime().AddDate(1, 0, 0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\trequest   *feegrant.MsgRevokeAllowance\n\t\tpreRun    func()\n\t\texpectErr bool\n\t\terrMsg    string\n\t}{\n\t\t{\n\t\t\t\"error: invalid granter\",\n\t\t\t&feegrant.MsgRevokeAllowance{\n\t\t\t\tGranter: invalidGranter,\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"error: invalid grantee\",\n\t\t\t&feegrant.MsgRevokeAllowance{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: invalidGrantee,\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"error: fee allowance not found\",\n\t\t\t&feegrant.MsgRevokeAllowance{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"fee-grant not found\",\n\t\t},\n\t\t{\n\t\t\t\"success: revoke fee allowance\",\n\t\t\t&feegrant.MsgRevokeAllowance{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfunc() {\n\t\t\t\t// removing fee allowance from previous tests if exists\n\t\t\t\tsuite.msgSrvr.RevokeAllowance(suite.ctx, &feegrant.MsgRevokeAllowance{\n\t\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t\t})\n\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.PeriodicAllowance{\n\t\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t\t},\n\t\t\t\t\tPeriodSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treq := &feegrant.MsgGrantAllowance{\n\t\t\t\t\tGranter:   suite.addrs[0].String(),\n\t\t\t\t\tGrantee:   suite.addrs[1].String(),\n\t\t\t\t\tAllowance: any,\n\t\t\t\t}\n\t\t\t\t_, err = suite.msgSrvr.GrantAllowance(suite.ctx, req)\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"error: check fee allowance revoked\",\n\t\t\t&feegrant.MsgRevokeAllowance{\n\t\t\t\tGranter: suite.addrs[0].String(),\n\t\t\t\tGrantee: suite.addrs[1].String(),\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"fee-grant not found\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\t_, err := suite.msgSrvr.RevokeAllowance(suite.ctx, tc.request)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestPruneAllowances() {\n\tctx := suite.ctx.WithBlockTime(time.Now())\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\n\t// We create 76 allowances, all expiring in one year\n\tcount := 0\n\tfor i := 0; i < len(suite.addrs); i++ {\n\t\tfor j := 0; j < len(suite.addrs); j++ {\n\t\t\tif count == 76 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif suite.addrs[i].String() == suite.addrs[j].String() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\tExpiration: &oneYear,\n\t\t\t})\n\t\t\tsuite.Require().NoError(err)\n\t\t\treq := &feegrant.MsgGrantAllowance{\n\t\t\t\tGranter:   suite.addrs[i].String(),\n\t\t\t\tGrantee:   suite.addrs[j].String(),\n\t\t\t\tAllowance: any,\n\t\t\t}\n\n\t\t\t_, err = suite.msgSrvr.GrantAllowance(ctx, req)\n\t\t\tif err != nil {\n\t\t\t\t// do not fail, just try with another pair\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tcount++\n\t\t}\n\t}\n\n\t// we have 76 allowances\n\tcount = 0\n\terr := suite.feegrantKeeper.IterateAllFeeAllowances(ctx, func(grant feegrant.Grant) bool {\n\t\tcount++\n\t\treturn false\n\t})\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(76, count)\n\n\t// after a year and one day passes, they are all expired\n\toneYearAndADay := ctx.BlockTime().AddDate(1, 0, 1)\n\tctx = suite.ctx.WithBlockTime(oneYearAndADay)\n\n\t// we prune them, but currently only 75 will be pruned\n\t_, err = suite.msgSrvr.PruneAllowances(ctx, &feegrant.MsgPruneAllowances{})\n\tsuite.Require().NoError(err)\n\n\t// we have 1 allowance left\n\tcount = 0\n\terr = suite.feegrantKeeper.IterateAllFeeAllowances(ctx, func(grant feegrant.Grant) bool {\n\t\tcount++\n\t\treturn false\n\t})\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(1, count)\n}\n\nfunc (suite *KeeperTestSuite) TestGrantDIDAllowance() {\n\tctx := suite.ctx.WithBlockTime(time.Now())\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       func() *feegrant.MsgGrantDIDAllowance\n\t\texpectErr bool\n\t\terrMsg    string\n\t\tpreRun    func()\n\t}{\n\t\t{\n\t\t\t\"valid DID allowance grant\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t\tfunc() {},\n\t\t},\n\t\t{\n\t\t\t\"invalid granter address\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    \"invalid\",\n\t\t\t\t\tGranteeDid: \"did:example:alice\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t\tfunc() {},\n\t\t},\n\t\t{\n\t\t\t\"empty DID\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"invalid DID\",\n\t\t\tfunc() {},\n\t\t},\n\t\t{\n\t\t\t\"duplicate DID allowance\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[1].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"DID allowance already exists\",\n\t\t\tfunc() {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treq := &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[1].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t\t_, err = suite.msgSrvr.GrantDIDAllowance(ctx, req)\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"invalid DID - no colon\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"invalid-did-format\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"invalid DID\",\n\t\t\tfunc() {},\n\t\t},\n\t\t{\n\t\t\t\"invalid DID - wrong prefix\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"notdid:example:alice\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"invalid DID\",\n\t\t\tfunc() {},\n\t\t},\n\t\t{\n\t\t\t\"DID allowance with past expiration\",\n\t\t\tfunc() *feegrant.MsgGrantDIDAllowance {\n\t\t\t\tyesterday := ctx.BlockTime().AddDate(0, 0, -1)\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &yesterday,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treturn &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"did:example:future\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t},\n\t\t\ttrue,\n\t\t\t\"expiration is before current block time\",\n\t\t\tfunc() {},\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\treq := tc.req()\n\n\t\t\t// Call ValidateBasic first\n\t\t\tif err := req.ValidateBasic(); err != nil {\n\t\t\t\tif tc.expectErr {\n\t\t\t\t\tsuite.Require().Error(err)\n\t\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t\t\treturn\n\t\t\t\t} else {\n\t\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_, err := suite.msgSrvr.GrantDIDAllowance(ctx, req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc (suite *KeeperTestSuite) TestExpireDIDAllowance() {\n\tctx := suite.ctx.WithBlockTime(time.Now())\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\treq       func() *feegrant.MsgExpireDIDAllowance\n\t\tpreRun    func()\n\t\texpectErr bool\n\t\terrMsg    string\n\t}{\n\t\t{\n\t\t\t\"invalid granter address\",\n\t\t\tfunc() *feegrant.MsgExpireDIDAllowance {\n\t\t\t\treturn &feegrant.MsgExpireDIDAllowance{\n\t\t\t\t\tGranter:    \"invalid\",\n\t\t\t\t\tGranteeDid: \"did:example:alice\",\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"decoding bech32 failed\",\n\t\t},\n\t\t{\n\t\t\t\"empty DID\",\n\t\t\tfunc() *feegrant.MsgExpireDIDAllowance {\n\t\t\t\treturn &feegrant.MsgExpireDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"\",\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"invalid DID\",\n\t\t},\n\t\t{\n\t\t\t\"DID allowance not found\",\n\t\t\tfunc() *feegrant.MsgExpireDIDAllowance {\n\t\t\t\treturn &feegrant.MsgExpireDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[0].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\ttrue,\n\t\t\t\"not found\",\n\t\t},\n\t\t{\n\t\t\t\"success: expire DID allowance\",\n\t\t\tfunc() *feegrant.MsgExpireDIDAllowance {\n\t\t\t\treturn &feegrant.MsgExpireDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[2].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() {\n\t\t\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: suite.coins,\n\t\t\t\t\tExpiration: &oneYear,\n\t\t\t\t})\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t\treq := &feegrant.MsgGrantDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[2].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t\tAllowance:  any,\n\t\t\t\t}\n\t\t\t\t_, err = suite.msgSrvr.GrantDIDAllowance(ctx, req)\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t\t{\n\t\t\t\"error: check DID allowance expired\",\n\t\t\tfunc() *feegrant.MsgExpireDIDAllowance {\n\t\t\t\treturn &feegrant.MsgExpireDIDAllowance{\n\t\t\t\t\tGranter:    suite.addrs[2].String(),\n\t\t\t\t\tGranteeDid: \"did:example:bob\",\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunc() {},\n\t\t\tfalse,\n\t\t\t\"\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\ttc.preRun()\n\t\t\treq := tc.req()\n\n\t\t\t// Call ValidateBasic first\n\t\t\tif err := req.ValidateBasic(); err != nil {\n\t\t\t\tif tc.expectErr {\n\t\t\t\t\tsuite.Require().Error(err)\n\t\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t}\n\n\t\t\t_, err := suite.msgSrvr.ExpireDIDAllowance(ctx, req)\n\t\t\tif tc.expectErr {\n\t\t\t\tsuite.Require().Error(err)\n\t\t\t\tsuite.Require().Contains(err.Error(), tc.errMsg)\n\t\t\t} else {\n\t\t\t\tsuite.Require().NoError(err)\n\t\t\t}\n\t\t})\n\t}\n}\nfunc (suite *KeeperTestSuite) TestPruneDIDAllowances() {\n\tctx := suite.ctx.WithBlockTime(time.Now())\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\n\t// We create 100 DID allowances, all expiring in one year\n\tcount := 0\n\tfor i := 0; i < len(suite.addrs) && count < 100; i++ {\n\t\tdid := fmt.Sprintf(\"did:example:test%d\", i)\n\n\t\tany, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{\n\t\t\tSpendLimit: suite.coins,\n\t\t\tExpiration: &oneYear,\n\t\t})\n\t\tsuite.Require().NoError(err)\n\t\treq := &feegrant.MsgGrantDIDAllowance{\n\t\t\tGranter:    suite.addrs[i].String(),\n\t\t\tGranteeDid: did,\n\t\t\tAllowance:  any,\n\t\t}\n\n\t\t_, err = suite.msgSrvr.GrantDIDAllowance(ctx, req)\n\t\tif err != nil {\n\t\t\t// do not fail, just try with another address\n\t\t\tcontinue\n\t\t}\n\n\t\tcount++\n\t}\n\n\t// we have some DID allowances\n\tcountBefore := 0\n\terr := suite.feegrantKeeper.IterateAllDIDAllowances(ctx, func(grant feegrant.DIDGrant) bool {\n\t\tcountBefore++\n\t\treturn false\n\t})\n\tsuite.Require().NoError(err)\n\tsuite.Require().True(countBefore >= count)\n\n\t// after a year and one day passes, they are all expired\n\toneYearAndADay := ctx.BlockTime().AddDate(1, 0, 1)\n\tctx = suite.ctx.WithBlockTime(oneYearAndADay)\n\n\t// we prune them, currently up to 75 will be pruned (same as regular allowances)\n\t_, err = suite.msgSrvr.PruneDIDAllowances(ctx, &feegrant.MsgPruneDIDAllowances{\n\t\tPruner: suite.addrs[0].String(),\n\t})\n\tsuite.Require().NoError(err)\n\n\t// count remaining DID allowances after pruning\n\tcountAfter := 0\n\terr = suite.feegrantKeeper.IterateAllDIDAllowances(ctx, func(grant feegrant.DIDGrant) bool {\n\t\tcountAfter++\n\t\treturn false\n\t})\n\tsuite.Require().NoError(err)\n\n\t// Verify that some allowances were pruned (should be fewer than before)\n\tsuite.Require().True(countAfter < countBefore, \"some DID allowances should have been pruned\")\n}\n"
  },
  {
    "path": "x/feegrant/key.go",
    "content": "package feegrant\n\nimport (\n\ttime \"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/address\"\n)\n\nconst (\n\t// ModuleName is the module name constant used in many places\n\tModuleName = \"feegrant\"\n\n\t// StoreKey is the store key string for supply\n\tStoreKey = ModuleName\n\n\t// RouterKey is the message route for supply\n\tRouterKey = ModuleName\n\n\t// QuerierRoute is the querier route for supply\n\tQuerierRoute = ModuleName\n)\n\nvar (\n\t// FeeAllowanceKeyPrefix is the set of the kvstore for fee allowance data\n\t// - 0x00<allowance_key_bytes>: allowance\n\tFeeAllowanceKeyPrefix = []byte{0x00}\n\n\t// FeeAllowanceQueueKeyPrefix is the set of the kvstore for fee allowance keys data\n\t// - 0x01<allowance_prefix_queue_key_bytes>: <empty value>\n\tFeeAllowanceQueueKeyPrefix = []byte{0x01}\n\n\t// DIDFeeAllowanceKeyPrefix is the set of the kvstore for DID fee allowance data\n\t// - 0x02<did_allowance_key_bytes>: did_allowance\n\tDIDFeeAllowanceKeyPrefix = []byte{0x02}\n\n\t// DIDFeeAllowanceQueueKeyPrefix is the set of the kvstore for DID fee allowance expiration queue\n\t// - 0x03<did_allowance_prefix_queue_key_bytes>: <empty value>\n\tDIDFeeAllowanceQueueKeyPrefix = []byte{0x03}\n)\n\n// FeeAllowanceKey is the canonical key to store a grant from granter to grantee\n// We store by grantee first to allow searching by everyone who granted to you\n//\n// Key format:\n// - <0x00><len(grantee_address_bytes)><grantee_address_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc FeeAllowanceKey(granter, grantee sdk.AccAddress) []byte {\n\treturn append(FeeAllowancePrefixByGrantee(grantee), address.MustLengthPrefix(granter.Bytes())...)\n}\n\n// FeeAllowanceByDIDKey is the canonical key to store a grant from granter to DID\n// We store by DID first to allow searching by DID\n//\n// Key format:\n// - <0x02><len(did_bytes)><did_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc FeeAllowanceByDIDKey(granter sdk.AccAddress, did string) []byte {\n\treturn append(FeeAllowancePrefixByDID(did), address.MustLengthPrefix(granter.Bytes())...)\n}\n\n// FeeAllowancePrefixByGrantee returns a prefix to scan for all grants to this given address.\n//\n// Key format:\n// - <0x00><len(grantee_address_bytes)><grantee_address_bytes>\nfunc FeeAllowancePrefixByGrantee(grantee sdk.AccAddress) []byte {\n\treturn append(FeeAllowanceKeyPrefix, address.MustLengthPrefix(grantee.Bytes())...)\n}\n\n// FeeAllowancePrefixByDID returns a prefix to scan for all grants to this given DID.\n//\n// Key format:\n// - <0x02><len(did_bytes)><did_bytes>\nfunc FeeAllowancePrefixByDID(did string) []byte {\n\tdidBytes := []byte(did)\n\treturn append(DIDFeeAllowanceKeyPrefix, address.MustLengthPrefix(didBytes)...)\n}\n\n// FeeAllowancePrefixQueue is the canonical key to store grant key.\n//\n// Key format:\n// - <0x01><exp_bytes><len(grantee_address_bytes)><grantee_address_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc FeeAllowancePrefixQueue(exp *time.Time, key []byte) []byte {\n\tallowanceByExpTimeKey := AllowanceByExpTimeKey(exp)\n\treturn append(allowanceByExpTimeKey, key...)\n}\n\n// AllowanceByExpTimeKey returns a key with `FeeAllowanceQueueKeyPrefix`, expiry\n//\n// Key format:\n// - <0x01><exp_bytes>\nfunc AllowanceByExpTimeKey(exp *time.Time) []byte {\n\t// no need of appending len(exp_bytes) here, `FormatTimeBytes` gives const length everytime.\n\treturn append(FeeAllowanceQueueKeyPrefix, sdk.FormatTimeBytes(*exp)...)\n}\n\n// DIDFeeAllowancePrefixQueue is the canonical key to store DID grant key.\n//\n// Key format:\n// - <0x03><exp_bytes><len(did_bytes)><did_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc DIDFeeAllowancePrefixQueue(exp *time.Time, key []byte) []byte {\n\tallowanceByExpTimeKey := DIDAllowanceByExpTimeKey(exp)\n\treturn append(allowanceByExpTimeKey, key...)\n}\n\n// DIDAllowanceByExpTimeKey returns a key with `DIDFeeAllowanceQueueKeyPrefix`, expiry\n//\n// Key format:\n// - <0x03><exp_bytes>\nfunc DIDAllowanceByExpTimeKey(exp *time.Time) []byte {\n\t// no need of appending len(exp_bytes) here, `FormatTimeBytes` gives const length everytime.\n\treturn append(DIDFeeAllowanceQueueKeyPrefix, sdk.FormatTimeBytes(*exp)...)\n}\n\n// ParseAddressesFromFeeAllowanceKey extracts and returns the granter, grantee from the given key.\nfunc ParseAddressesFromFeeAllowanceKey(key []byte) (granter, grantee []byte) {\n\t// key is of format:\n\t// 0x00<granteeAddressLen (1 Byte)><granteeAddress_Bytes><granterAddressLen (1 Byte)><granterAddress_Bytes>\n\tgranterAddrLen, granterAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 1, 1) // ignore key[0] since it is a prefix key\n\tgrantee, granterAddrEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrLenEndIndex+1, int(granterAddrLen[0]))\n\n\tgranteeAddrLen, granteeAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrEndIndex+1, 1)\n\tgranter, _ = sdk.ParseLengthPrefixedBytes(key, granteeAddrLenEndIndex+1, int(granteeAddrLen[0]))\n\n\treturn granter, grantee\n}\n\n// ParseAddressesFromFeeAllowanceQueueKey extracts and returns the granter, grantee from the given key.\nfunc ParseAddressesFromFeeAllowanceQueueKey(key []byte) (granter, grantee []byte) {\n\tlenTime := len(sdk.FormatTimeBytes(time.Now()))\n\n\t// key is of format:\n\t// <0x01><expiration_bytes(fixed length)><granteeAddressLen (1 Byte)><granteeAddress_Bytes><granterAddressLen (1 Byte)><granterAddress_Bytes>\n\tgranterAddrLen, granterAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 1+lenTime, 1) // ignore key[0] since it is a prefix key\n\tgrantee, granterAddrEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrLenEndIndex+1, int(granterAddrLen[0]))\n\n\tgranteeAddrLen, granteeAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrEndIndex+1, 1)\n\tgranter, _ = sdk.ParseLengthPrefixedBytes(key, granteeAddrLenEndIndex+1, int(granteeAddrLen[0]))\n\n\treturn granter, grantee\n}\n\n// ParseGranterDIDFromFeeAllowanceKey extracts and returns the granter address and DID from the given DID-based key.\nfunc ParseGranterDIDFromFeeAllowanceKey(key []byte) (granter []byte, did string) {\n\t// key is of format:\n\t// 0x02<didLen (1 Byte)><did_Bytes><granterAddressLen (1 Byte)><granterAddress_Bytes>\n\tdidLen, didLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 1, 1) // ignore key[0] since it is a prefix key\n\tdidBytes, granterAddrEndIndex := sdk.ParseLengthPrefixedBytes(key, didLenEndIndex+1, int(didLen[0]))\n\n\tgranterAddrLen, granterAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrEndIndex+1, 1)\n\tgranter, _ = sdk.ParseLengthPrefixedBytes(key, granterAddrLenEndIndex+1, int(granterAddrLen[0]))\n\n\treturn granter, string(didBytes)\n}\n\n// ParseGranterDIDFromDIDAllowanceQueueKey extracts and returns the granter address and DID from the given DID expiration queue key.\nfunc ParseGranterDIDFromDIDAllowanceQueueKey(key []byte) (granter []byte, did string) {\n\tlenTime := len(sdk.FormatTimeBytes(time.Now()))\n\n\t// key is of format:\n\t// <0x03><expiration_bytes(fixed length)><didLen (1 Byte)><did_Bytes><granterAddressLen (1 Byte)><granterAddress_Bytes>\n\tdidLen, didLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 1+lenTime, 1) // ignore key[0] since it is a prefix key\n\tdidBytes, granterAddrEndIndex := sdk.ParseLengthPrefixedBytes(key, didLenEndIndex+1, int(didLen[0]))\n\n\tgranterAddrLen, granterAddrLenEndIndex := sdk.ParseLengthPrefixedBytes(key, granterAddrEndIndex+1, 1)\n\tgranter, _ = sdk.ParseLengthPrefixedBytes(key, granterAddrLenEndIndex+1, int(granterAddrLen[0]))\n\n\treturn granter, string(didBytes)\n}\n"
  },
  {
    "path": "x/feegrant/key_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc TestMarshalAndUnmarshalFeegrantKey(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tgrantee, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tgranter, err := addressCodec.StringToBytes(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\n\tkey := feegrant.FeeAllowanceKey(granter, grantee)\n\trequire.Len(t, key, len(grantee)+len(granter)+3)\n\trequire.Equal(t, feegrant.FeeAllowancePrefixByGrantee(grantee), key[:len(grantee)+2])\n\n\tg1, g2 := feegrant.ParseAddressesFromFeeAllowanceKey(key)\n\trequire.Equal(t, granter, g1)\n\trequire.Equal(t, grantee, g2)\n}\n\nfunc TestMarshalAndUnmarshalFeegrantKeyQueueKey(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tgrantee, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tgranter, err := addressCodec.StringToBytes(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\n\texp := time.Now()\n\texpBytes := sdk.FormatTimeBytes(exp)\n\n\tkey := feegrant.FeeAllowancePrefixQueue(&exp, feegrant.FeeAllowanceKey(granter, grantee)[1:])\n\trequire.Len(t, key, len(grantee)+len(granter)+3+len(expBytes))\n\n\tgranter1, grantee1 := feegrant.ParseAddressesFromFeeAllowanceQueueKey(key)\n\trequire.Equal(t, granter, granter1)\n\trequire.Equal(t, grantee, grantee1)\n}\n\nfunc TestMarshalAndUnmarshalDIDFeegrantKey(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tgranter, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\ttestDID := \"did:example:alice123\"\n\n\tkey := feegrant.FeeAllowanceByDIDKey(granter, testDID)\n\trequire.Len(t, key, len(testDID)+len(granter)+3)\n\trequire.Equal(t, feegrant.FeeAllowancePrefixByDID(testDID), key[:len(testDID)+2])\n\n\tparsedGranter, parsedDID := feegrant.ParseGranterDIDFromFeeAllowanceKey(key)\n\trequire.Equal(t, granter, parsedGranter)\n\trequire.Equal(t, testDID, parsedDID)\n}\n\nfunc TestMarshalAndUnmarshalDIDFeegrantQueueKey(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tgranter, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\ttestDID := \"did:example:bob456\"\n\texp := time.Now()\n\texpBytes := sdk.FormatTimeBytes(exp)\n\n\t// Create the DID allowance key (without the prefix, as used in queue)\n\tdidKey := feegrant.FeeAllowanceByDIDKey(granter, testDID)[1:] // Remove the 0x02 prefix\n\n\tqueueKey := feegrant.DIDFeeAllowancePrefixQueue(&exp, didKey)\n\trequire.Len(t, queueKey, len(testDID)+len(granter)+3+len(expBytes)) // 0x03 + exp + did_len + did + granter_len + granter\n\n\tparsedGranter, parsedDID := feegrant.ParseGranterDIDFromDIDAllowanceQueueKey(queueKey)\n\trequire.Equal(t, granter, parsedGranter)\n\trequire.Equal(t, testDID, parsedDID)\n}\n\nfunc TestDIDKeyPrefixes(t *testing.T) {\n\trequire.Equal(t, []byte{0x00}, feegrant.FeeAllowanceKeyPrefix)\n\trequire.Equal(t, []byte{0x01}, feegrant.FeeAllowanceQueueKeyPrefix)\n\trequire.Equal(t, []byte{0x02}, feegrant.DIDFeeAllowanceKeyPrefix)\n\trequire.Equal(t, []byte{0x03}, feegrant.DIDFeeAllowanceQueueKeyPrefix)\n\n\tprefixes := [][]byte{\n\t\tfeegrant.FeeAllowanceKeyPrefix,\n\t\tfeegrant.FeeAllowanceQueueKeyPrefix,\n\t\tfeegrant.DIDFeeAllowanceKeyPrefix,\n\t\tfeegrant.DIDFeeAllowanceQueueKeyPrefix,\n\t}\n\n\tfor i := 0; i < len(prefixes); i++ {\n\t\tfor j := i + 1; j < len(prefixes); j++ {\n\t\t\trequire.NotEqual(t, prefixes[i], prefixes[j], \"Prefixes %d and %d should be different\", i, j)\n\t\t}\n\t}\n}\n\nfunc TestDIDPrefixByDID(t *testing.T) {\n\ttestDID := \"did:example:bob\"\n\tprefix := feegrant.FeeAllowancePrefixByDID(testDID)\n\n\trequire.Equal(t, feegrant.DIDFeeAllowanceKeyPrefix[0], prefix[0])\n\n\trequire.Len(t, prefix, len(testDID)+2)\n\n\tdidBytes := prefix[2:]\n\trequire.Equal(t, testDID, string(didBytes))\n}\n\nfunc TestDIDAllowanceByExpTimeKey(t *testing.T) {\n\texp := time.Now()\n\texpKey := feegrant.DIDAllowanceByExpTimeKey(&exp)\n\n\trequire.Equal(t, feegrant.DIDFeeAllowanceQueueKeyPrefix[0], expKey[0])\n\n\texpBytes := sdk.FormatTimeBytes(exp)\n\trequire.Len(t, expKey, 1+len(expBytes))\n}\n\nfunc TestKeyFormatConsistency(t *testing.T) {\n\taddressCodec := codecaddress.NewBech32Codec(\"source\")\n\tgranter, err := addressCodec.StringToBytes(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tgrantee, err := addressCodec.StringToBytes(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\n\ttestDID := \"did:example:alice\"\n\n\tregularKey := feegrant.FeeAllowanceKey(granter, grantee)\n\trequire.Equal(t, feegrant.FeeAllowanceKeyPrefix[0], regularKey[0])\n\n\tdidKey := feegrant.FeeAllowanceByDIDKey(granter, testDID)\n\trequire.Equal(t, feegrant.DIDFeeAllowanceKeyPrefix[0], didKey[0])\n\n\trequire.NotEqual(t, regularKey, didKey)\n\n\tparsedGranter1, parsedGrantee := feegrant.ParseAddressesFromFeeAllowanceKey(regularKey)\n\trequire.Equal(t, granter, parsedGranter1)\n\trequire.Equal(t, grantee, parsedGrantee)\n\n\tparsedGranter2, parsedDID := feegrant.ParseGranterDIDFromFeeAllowanceKey(didKey)\n\trequire.Equal(t, granter, parsedGranter2)\n\trequire.Equal(t, testDID, parsedDID)\n}\n"
  },
  {
    "path": "x/feegrant/migrations/v2/keys.go",
    "content": "package v2\n\nimport (\n\t\"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/address\"\n)\n\nvar (\n\tModuleName = \"feegrant\"\n\n\t// FeeAllowanceKeyPrefix is the set of the kvstore for fee allowance data\n\t// - 0x00<allowance_key_bytes>: allowance\n\tFeeAllowanceKeyPrefix = []byte{0x00}\n\n\t// FeeAllowanceQueueKeyPrefix is the set of the kvstore for fee allowance keys data\n\t// - 0x01<allowance_prefix_queue_key_bytes>: <empty value>\n\tFeeAllowanceQueueKeyPrefix = []byte{0x01}\n)\n\n// FeeAllowancePrefixQueue is the canonical key to store grant key.\n//\n// Key format:\n// - <0x01><exp_bytes><len(grantee_address_bytes)><grantee_address_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc FeeAllowancePrefixQueue(exp *time.Time, granterAddrBz []byte) []byte {\n\t// no need of appending len(exp_bytes) here, `FormatTimeBytes` gives const length everytime.\n\tvar key []byte\n\tkey = append(key, FeeAllowanceQueueKeyPrefix...)\n\tkey = append(key, sdk.FormatTimeBytes(*exp)...)\n\treturn append(key, granterAddrBz...)\n}\n\n// FeeAllowanceKey is the canonical key to store a grant from granter to grantee\n// We store by grantee first to allow searching by everyone who granted to you\n//\n// Key format:\n// - <0x00><len(grantee_address_bytes)><grantee_address_bytes><len(granter_address_bytes)><granter_address_bytes>\nfunc FeeAllowanceKey(granter, grantee sdk.AccAddress) []byte {\n\treturn append(FeeAllowancePrefixByGrantee(grantee), address.MustLengthPrefix(granter.Bytes())...)\n}\n\n// FeeAllowancePrefixByGrantee returns a prefix to scan for all grants to this given address.\n//\n// Key format:\n// - <0x00><len(grantee_address_bytes)><grantee_address_bytes>\nfunc FeeAllowancePrefixByGrantee(grantee sdk.AccAddress) []byte {\n\treturn append(FeeAllowanceKeyPrefix, address.MustLengthPrefix(grantee.Bytes())...)\n}\n"
  },
  {
    "path": "x/feegrant/migrations/v2/store.go",
    "content": "package v2\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/store/prefix\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc addAllowancesByExpTimeQueue(ctx context.Context, store store.KVStore, cdc codec.BinaryCodec) error {\n\tprefixStore := prefix.NewStore(runtime.KVStoreAdapter(store), FeeAllowanceKeyPrefix)\n\titerator := prefixStore.Iterator(nil, nil)\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar grant feegrant.Grant\n\t\tbz := iterator.Value()\n\t\tif err := cdc.Unmarshal(bz, &grant); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tgrantInfo, err := grant.GetGrant()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\texp, err := grantInfo.ExpiresAt()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif exp != nil {\n\t\t\t// store key is not changed in 0.46\n\t\t\tkey := iterator.Key()\n\t\t\tif exp.Before(types.UnwrapSDKContext(ctx).BlockTime()) {\n\t\t\t\tprefixStore.Delete(key)\n\t\t\t} else {\n\t\t\t\tgrantByExpTimeQueueKey := FeeAllowancePrefixQueue(exp, key)\n\t\t\t\tstore.Set(grantByExpTimeQueueKey, []byte{})\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc MigrateStore(ctx context.Context, storeService store.KVStoreService, cdc codec.BinaryCodec) error {\n\tstore := storeService.OpenKVStore(ctx)\n\treturn addAllowancesByExpTimeQueue(ctx, store, cdc)\n}\n"
  },
  {
    "path": "x/feegrant/migrations/v2/store_test.go",
    "content": "package v2_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tsdkmath \"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\tv2 \"github.com/sourcenetwork/sourcehub/x/feegrant/migrations/v2\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n)\n\nfunc TestMigration(t *testing.T) {\n\tencodingConfig := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\tcdc := encodingConfig.Codec\n\n\tfeegrantKey := storetypes.NewKVStoreKey(v2.ModuleName)\n\tctx := testutil.DefaultContext(feegrantKey, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tgranter1 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address())\n\tgrantee1 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address())\n\tgranter2 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address())\n\tgrantee2 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address())\n\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(1000)))\n\tnow := ctx.BlockTime()\n\toneDay := now.AddDate(0, 0, 1)\n\ttwoDays := now.AddDate(0, 0, 2)\n\n\tgrants := []struct {\n\t\tgranter    sdk.AccAddress\n\t\tgrantee    sdk.AccAddress\n\t\tspendLimit sdk.Coins\n\t\texpiration *time.Time\n\t}{\n\t\t{\n\t\t\tgranter:    granter1,\n\t\t\tgrantee:    grantee1,\n\t\t\tspendLimit: spendLimit,\n\t\t\texpiration: &twoDays,\n\t\t},\n\t\t{\n\t\t\tgranter:    granter2,\n\t\t\tgrantee:    grantee2,\n\t\t\tspendLimit: spendLimit,\n\t\t\texpiration: &oneDay,\n\t\t},\n\t\t{\n\t\t\tgranter:    granter1,\n\t\t\tgrantee:    grantee2,\n\t\t\tspendLimit: spendLimit,\n\t\t},\n\t\t{\n\t\t\tgranter:    granter2,\n\t\t\tgrantee:    grantee1,\n\t\t\texpiration: &oneDay,\n\t\t},\n\t}\n\n\tstore := ctx.KVStore(feegrantKey)\n\tfor _, grant := range grants {\n\t\tnewGrant, err := feegrant.NewGrant(grant.granter, grant.grantee, &feegrant.BasicAllowance{\n\t\t\tSpendLimit: grant.spendLimit,\n\t\t\tExpiration: grant.expiration,\n\t\t})\n\t\trequire.NoError(t, err)\n\n\t\tbz, err := cdc.Marshal(&newGrant)\n\t\trequire.NoError(t, err)\n\n\t\tstore.Set(v2.FeeAllowanceKey(grant.granter, grant.grantee), bz)\n\t}\n\n\tctx = ctx.WithBlockTime(now.Add(30 * time.Hour))\n\trequire.NoError(t, v2.MigrateStore(ctx, runtime.NewKVStoreService(feegrantKey), cdc))\n\tstore = ctx.KVStore(feegrantKey)\n\n\trequire.NotNil(t, store.Get(v2.FeeAllowanceKey(granter1, grantee1)))\n\trequire.Nil(t, store.Get(v2.FeeAllowanceKey(granter2, grantee2)))\n\trequire.NotNil(t, store.Get(v2.FeeAllowanceKey(granter1, grantee2)))\n\trequire.Nil(t, store.Get(v2.FeeAllowanceKey(granter2, grantee1)))\n}\n"
  },
  {
    "path": "x/feegrant/module/abci.go",
    "content": "package module\n\nimport (\n\t\"context\"\n\t\"errors\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n)\n\nfunc EndBlocker(ctx context.Context, k keeper.Keeper) error {\n\t// 200 is an arbitrary value, we can change it later if needed\n\terrAllowances := k.RemoveExpiredAllowances(ctx, 200)\n\terrDidAllowances := k.RemoveExpiredDIDAllowances(ctx, 200)\n\treturn errors.Join(errAllowances, errDidAllowances)\n}\n"
  },
  {
    "path": "x/feegrant/module/abci_test.go",
    "content": "package module_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/stretchr/testify/require\"\n\n\tsdkmath \"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\tfeegranttestutil \"github.com/sourcenetwork/sourcehub/x/feegrant/testutil\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/codec/address\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n)\n\nfunc TestFeegrantPruning(t *testing.T) {\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\n\taddrs := simtestutil.CreateIncrementalAccounts(4)\n\tgranter1 := addrs[0]\n\tgranter2 := addrs[1]\n\tgranter3 := addrs[2]\n\tgrantee := addrs[3]\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(\"stake\", sdkmath.NewInt(1000)))\n\tnow := testCtx.Ctx.BlockTime()\n\toneDay := now.AddDate(0, 0, 1)\n\n\tctrl := gomock.NewController(t)\n\taccountKeeper := feegranttestutil.NewMockAccountKeeper(ctrl)\n\taccountKeeper.EXPECT().GetAccount(gomock.Any(), grantee).Return(authtypes.NewBaseAccountWithAddress(grantee)).AnyTimes()\n\taccountKeeper.EXPECT().GetAccount(gomock.Any(), granter1).Return(authtypes.NewBaseAccountWithAddress(granter1)).AnyTimes()\n\taccountKeeper.EXPECT().GetAccount(gomock.Any(), granter2).Return(authtypes.NewBaseAccountWithAddress(granter2)).AnyTimes()\n\taccountKeeper.EXPECT().GetAccount(gomock.Any(), granter3).Return(authtypes.NewBaseAccountWithAddress(granter3)).AnyTimes()\n\n\taccountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(\"cosmos\")).AnyTimes()\n\n\tfeegrantKeeper := keeper.NewKeeper(encCfg.Codec, runtime.NewKVStoreService(key), accountKeeper)\n\n\tfeegrantKeeper.GrantAllowance(\n\t\ttestCtx.Ctx,\n\t\tgranter1,\n\t\tgrantee,\n\t\t&feegrant.BasicAllowance{\n\t\t\tExpiration: &now,\n\t\t},\n\t)\n\tfeegrantKeeper.GrantAllowance(\n\t\ttestCtx.Ctx,\n\t\tgranter2,\n\t\tgrantee,\n\t\t&feegrant.BasicAllowance{\n\t\t\tSpendLimit: spendLimit,\n\t\t},\n\t)\n\tfeegrantKeeper.GrantAllowance(\n\t\ttestCtx.Ctx,\n\t\tgranter3,\n\t\tgrantee,\n\t\t&feegrant.BasicAllowance{\n\t\t\tExpiration: &oneDay,\n\t\t},\n\t)\n\n\tqueryHelper := baseapp.NewQueryServerTestHelper(testCtx.Ctx, encCfg.InterfaceRegistry)\n\tfeegrant.RegisterQueryServer(queryHelper, feegrantKeeper)\n\tqueryClient := feegrant.NewQueryClient(queryHelper)\n\n\trequire.NoError(t, module.EndBlocker(testCtx.Ctx, feegrantKeeper))\n\n\tres, err := queryClient.Allowances(testCtx.Ctx.Context(), &feegrant.QueryAllowancesRequest{\n\t\tGrantee: grantee.String(),\n\t})\n\trequire.NoError(t, err)\n\trequire.NotNil(t, res)\n\trequire.Len(t, res.Allowances, 3)\n\n\ttestCtx.Ctx = testCtx.Ctx.WithBlockTime(now.AddDate(0, 0, 2))\n\tmodule.EndBlocker(testCtx.Ctx, feegrantKeeper)\n\n\tres, err = queryClient.Allowances(testCtx.Ctx.Context(), &feegrant.QueryAllowancesRequest{\n\t\tGrantee: grantee.String(),\n\t})\n\trequire.NoError(t, err)\n\trequire.NotNil(t, res)\n\trequire.Len(t, res.Allowances, 1)\n}\n"
  },
  {
    "path": "x/feegrant/module/autocli.go",
    "content": "package module\n\nimport (\n\t\"fmt\"\n\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\t\"github.com/cosmos/cosmos-sdk/version\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n)\n\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: feegrant.Query_serviceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Allowance\",\n\t\t\t\t\tUse:       \"grant [granter] [grantee]\",\n\t\t\t\t\tShort:     \"Query details of a single grant\",\n\t\t\t\t\tLong:      \"Query details for a grant. You can find the fee-grant of a granter and grantee.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant grant [granter] [grantee]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t\t{ProtoField: \"grantee\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Allowances\",\n\t\t\t\t\tUse:       \"grants-by-grantee [grantee]\",\n\t\t\t\t\tShort:     \"Query all grants of a grantee\",\n\t\t\t\t\tLong:      \"Queries all the grants for a grantee address.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant grants-by-grantee [grantee]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"grantee\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"AllowancesByGranter\",\n\t\t\t\t\tUse:       \"grants-by-granter [granter]\",\n\t\t\t\t\tShort:     \"Query all grants by a granter\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant grants-by-granter [granter]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"DIDAllowance\",\n\t\t\t\t\tUse:       \"did-grant [granter] [grantee-did]\",\n\t\t\t\t\tShort:     \"Query details of a single DID grant\",\n\t\t\t\t\tLong:      \"Query details for a DID grant. You can find the fee-grant of a granter and grantee DID.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant did-grant [granter] [grantee-did]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t\t{ProtoField: \"grantee_did\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"DIDAllowances\",\n\t\t\t\t\tUse:       \"did-grants-by-grantee [grantee-did]\",\n\t\t\t\t\tShort:     \"Query all DID grants of a grantee DID\",\n\t\t\t\t\tLong:      \"Queries all the DID grants for a grantee DID.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant did-grants-by-grantee [grantee-did]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"grantee_did\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"DIDAllowancesByGranter\",\n\t\t\t\t\tUse:       \"did-grants-by-granter [granter]\",\n\t\t\t\t\tShort:     \"Query all DID grants by a granter\",\n\t\t\t\t\tLong:      \"Queries all the DID grants issued by a granter address.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s query feegrant did-grants-by-granter [granter]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tTx: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: feegrant.Msg_serviceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"RevokeAllowance\",\n\t\t\t\t\tUse:       \"revoke [granter] [grantee]\",\n\t\t\t\t\tShort:     \"Revoke a fee grant\",\n\t\t\t\t\tLong:      \"Revoke fee grant from a granter to a grantee. Note, the '--from' flag is ignored as it is implied from [granter]\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s tx feegrant revoke [granter] [grantee]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t\t{ProtoField: \"grantee\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"PruneAllowances\",\n\t\t\t\t\tUse:       \"prune\",\n\t\t\t\t\tShort:     \"Prune expired allowances\",\n\t\t\t\t\tLong:      \"Prune up to 75 expired allowances in order to reduce the size of the store when the number of expired allowances is large.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s tx feegrant prune --from [mykey]`, version.AppName),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"ExpireDIDAllowance\",\n\t\t\t\t\tUse:       \"expire-did [granter] [grantee-did]\",\n\t\t\t\t\tShort:     \"Expire a DID fee grant\",\n\t\t\t\t\tLong:      \"Expire fee grant from a granter to a grantee DID. Note, the '--from' flag is ignored as it is implied from [granter]\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s tx feegrant expire-did [granter] [grantee-did]`, version.AppName),\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{\n\t\t\t\t\t\t{ProtoField: \"granter\"},\n\t\t\t\t\t\t{ProtoField: \"grantee_did\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"PruneDIDAllowances\",\n\t\t\t\t\tUse:       \"prune-did\",\n\t\t\t\t\tShort:     \"Prune expired DID allowances\",\n\t\t\t\t\tLong:      \"Prune expired DID allowances in order to reduce the size of the store when the number of expired DID allowances is large.\",\n\t\t\t\t\tExample:   fmt.Sprintf(`$ %s tx feegrant prune-did --from [mykey]`, version.AppName),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnhanceCustomCommand: true,\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/module/module.go",
    "content": "package module\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\tgwruntime \"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/spf13/cobra\"\n\n\t\"cosmossdk.io/core/address\"\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/errors\"\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/feegrant/module/v1\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/client/cli\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/simulation\"\n\n\tsdkclient \"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\nvar (\n\t_ module.AppModuleBasic      = AppModule{}\n\t_ module.AppModuleSimulation = AppModule{}\n\t_ module.HasServices         = AppModule{}\n\t_ module.HasGenesis          = AppModule{}\n\n\t_ appmodule.AppModule     = AppModule{}\n\t_ appmodule.HasEndBlocker = AppModule{}\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic defines the basic application module used by the feegrant module.\ntype AppModuleBasic struct {\n\tcdc codec.Codec\n\tac  address.Codec\n}\n\n// Name returns the feegrant module's name.\nfunc (ab AppModuleBasic) Name() string {\n\treturn feegrant.ModuleName\n}\n\n// RegisterServices registers a gRPC query service to respond to the\n// module-specific gRPC queries.\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\tfeegrant.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper))\n\tfeegrant.RegisterQueryServer(cfg.QueryServer(), am.keeper)\n\tm := keeper.NewMigrator(am.keeper)\n\terr := cfg.RegisterMigration(feegrant.ModuleName, 1, m.Migrate1to2)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"failed to migrate x/feegrant from version 1 to 2: %v\", err))\n\t}\n}\n\n// RegisterLegacyAminoCodec registers the feegrant module's types for the given codec.\nfunc (ab AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {\n\tfeegrant.RegisterLegacyAminoCodec(cdc)\n}\n\n// RegisterInterfaces registers the feegrant module's interface types\nfunc (ab AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) {\n\tfeegrant.RegisterInterfaces(registry)\n}\n\n// DefaultGenesis returns default genesis state as raw bytes for the feegrant\n// module.\nfunc (ab AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(feegrant.DefaultGenesisState())\n}\n\n// ValidateGenesis performs genesis state validation for the feegrant module.\nfunc (ab AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config sdkclient.TxEncodingConfig, bz json.RawMessage) error {\n\tvar data feegrant.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &data); err != nil {\n\t\treturn errors.Wrapf(err, \"failed to unmarshal %s genesis state\", feegrant.ModuleName)\n\t}\n\n\treturn feegrant.ValidateGenesis(data)\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the feegrant module.\nfunc (ab AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx sdkclient.Context, mux *gwruntime.ServeMux) {\n\tif err := feegrant.RegisterQueryHandlerClient(context.Background(), mux, feegrant.NewQueryClient(clientCtx)); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// GetTxCmd returns the root tx command for the feegrant module.\nfunc (ab AppModuleBasic) GetTxCmd() *cobra.Command {\n\treturn cli.GetTxCmd(ab.ac)\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements an application module for the feegrant module.\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper        keeper.Keeper\n\taccountKeeper feegrant.AccountKeeper\n\tbankKeeper    feegrant.BankKeeper\n\tregistry      cdctypes.InterfaceRegistry\n}\n\n// NewAppModule creates a new AppModule object\nfunc NewAppModule(cdc codec.Codec, ak feegrant.AccountKeeper, bk feegrant.BankKeeper, keeper keeper.Keeper, registry cdctypes.InterfaceRegistry) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()},\n\t\tkeeper:         keeper.SetBankKeeper(bk), // Super ugly hack to not be api breaking in v0.50 and v0.47\n\t\taccountKeeper:  ak,\n\t\tbankKeeper:     bk,\n\t\tregistry:       registry,\n\t}\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// InitGenesis performs genesis initialization for the feegrant module. It returns\n// no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, bz json.RawMessage) {\n\tvar gs feegrant.GenesisState\n\tcdc.MustUnmarshalJSON(bz, &gs)\n\n\terr := am.keeper.InitGenesis(ctx, &gs)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ExportGenesis returns the exported genesis state as raw bytes for the feegrant\n// module.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgs, err := am.keeper.ExportGenesis(ctx)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn cdc.MustMarshalJSON(gs)\n}\n\n// ConsensusVersion implements AppModule/ConsensusVersion.\nfunc (AppModule) ConsensusVersion() uint64 { return 2 }\n\n// EndBlock returns the end blocker for the feegrant module. It returns no validator\n// updates.\nfunc (am AppModule) EndBlock(ctx context.Context) error {\n\treturn EndBlocker(ctx, am.keeper)\n}\n\nfunc init() {\n\tappmodule.Register(&modulev1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t)\n}\n\ntype FeegrantInputs struct {\n\tdepinject.In\n\n\tStoreService  store.KVStoreService\n\tCdc           codec.Codec\n\tAccountKeeper feegrant.AccountKeeper\n\tBankKeeper    feegrant.BankKeeper\n\tRegistry      cdctypes.InterfaceRegistry\n}\n\nfunc ProvideModule(in FeegrantInputs) (keeper.Keeper, appmodule.AppModule) {\n\tk := keeper.NewKeeper(in.Cdc, in.StoreService, in.AccountKeeper)\n\tm := NewAppModule(in.Cdc, in.AccountKeeper, in.BankKeeper, k, in.Registry)\n\treturn k.SetBankKeeper(in.BankKeeper) /* depinject ux improvement */, m\n}\n\n// AppModuleSimulation functions\n\n// GenerateGenesisState creates a randomized GenState of the feegrant module.\nfunc (AppModule) GenerateGenesisState(simState *module.SimulationState) {\n\tsimulation.RandomizedGenState(simState)\n}\n\n// RegisterStoreDecoder registers a decoder for feegrant module's types\nfunc (am AppModule) RegisterStoreDecoder(sdr simtypes.StoreDecoderRegistry) {\n\tsdr[feegrant.StoreKey] = simulation.NewDecodeStore(am.cdc)\n}\n\n// WeightedOperations returns all the feegrant module operations with their respective weights.\nfunc (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation {\n\treturn simulation.WeightedOperations(\n\t\tam.registry, simState.AppParams, simState.Cdc, simState.TxConfig,\n\t\tam.accountKeeper, am.bankKeeper, am.keeper, am.ac,\n\t)\n}\n"
  },
  {
    "path": "x/feegrant/msgs.go",
    "content": "package feegrant\n\nimport (\n\t\"github.com/cosmos/gogoproto/proto\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar (\n\t_, _, _, _, _, _ sdk.Msg = &MsgGrantAllowance{}, &MsgRevokeAllowance{}, &MsgPruneAllowances{},\n\t\t&MsgGrantDIDAllowance{}, &MsgExpireDIDAllowance{}, &MsgPruneDIDAllowances{}\n\t_, _ types.UnpackInterfacesMessage = &MsgGrantAllowance{}, &MsgGrantDIDAllowance{}\n)\n\n// NewMsgGrantAllowance creates a new MsgGrantAllowance.\nfunc NewMsgGrantAllowance(feeAllowance FeeAllowanceI, granter, grantee sdk.AccAddress) (*MsgGrantAllowance, error) {\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", msg)\n\t}\n\tany, err := types.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &MsgGrantAllowance{\n\t\tGranter:   granter.String(),\n\t\tGrantee:   grantee.String(),\n\t\tAllowance: any,\n\t}, nil\n}\n\n// GetFeeAllowanceI returns unpacked FeeAllowance.\nfunc (msg MsgGrantAllowance) GetFeeAllowanceI() (FeeAllowanceI, error) {\n\tallowance, ok := msg.Allowance.GetCachedValue().(FeeAllowanceI)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrap(ErrNoAllowance, \"failed to get allowance\")\n\t}\n\n\treturn allowance, nil\n}\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces\nfunc (msg MsgGrantAllowance) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tvar allowance FeeAllowanceI\n\treturn unpacker.UnpackAny(msg.Allowance, &allowance)\n}\n\n// NewMsgRevokeAllowance returns a message to revoke a fee allowance for a given granter and grantee.\nfunc NewMsgRevokeAllowance(granter, grantee sdk.AccAddress) MsgRevokeAllowance {\n\treturn MsgRevokeAllowance{Granter: granter.String(), Grantee: grantee.String()}\n}\n\n// NewMsgGrantDIDAllowance creates a new MsgGrantDIDAllowance.\nfunc NewMsgGrantDIDAllowance(feeAllowance FeeAllowanceI, granter sdk.AccAddress, granteeDID string) (*MsgGrantDIDAllowance, error) {\n\tmsg, ok := feeAllowance.(proto.Message)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrapf(sdkerrors.ErrPackAny, \"cannot proto marshal %T\", msg)\n\t}\n\tany, err := types.NewAnyWithValue(msg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &MsgGrantDIDAllowance{\n\t\tGranter:    granter.String(),\n\t\tGranteeDid: granteeDID,\n\t\tAllowance:  any,\n\t}, nil\n}\n\n// GetFeeAllowanceI returns unpacked FeeAllowance for DID grants.\nfunc (msg MsgGrantDIDAllowance) GetFeeAllowanceI() (FeeAllowanceI, error) {\n\tallowance, ok := msg.Allowance.GetCachedValue().(FeeAllowanceI)\n\tif !ok {\n\t\treturn nil, errorsmod.Wrap(ErrNoAllowance, \"failed to get allowance\")\n\t}\n\n\treturn allowance, nil\n}\n\n// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces for DID grants.\nfunc (msg MsgGrantDIDAllowance) UnpackInterfaces(unpacker types.AnyUnpacker) error {\n\tvar allowance FeeAllowanceI\n\treturn unpacker.UnpackAny(msg.Allowance, &allowance)\n}\n\nfunc (msg MsgGrantDIDAllowance) ValidateBasic() error {\n\tif msg.Granter == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing granter address\")\n\t}\n\tif len(msg.GranteeDid) <= 4 || msg.GranteeDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\tif msg.Allowance == nil {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidRequest, \"missing allowance\")\n\t}\n\n\tallowance, err := msg.GetFeeAllowanceI()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn allowance.ValidateBasic()\n}\n\n// NewMsgExpireDIDAllowance returns a message to expire a fee allowance for a given granter and DID.\nfunc NewMsgExpireDIDAllowance(granter sdk.AccAddress, granteeDID string) MsgExpireDIDAllowance {\n\treturn MsgExpireDIDAllowance{Granter: granter.String(), GranteeDid: granteeDID}\n}\n\n// NewMsgPruneDIDAllowances returns a message to prune expired DID allowances.\nfunc NewMsgPruneDIDAllowances(pruner sdk.AccAddress) MsgPruneDIDAllowances {\n\treturn MsgPruneDIDAllowances{Pruner: pruner.String()}\n}\n\n// ValidateBasic implements sdk.Msg\nfunc (msg MsgPruneDIDAllowances) ValidateBasic() error {\n\tif msg.Pruner == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing pruner address\")\n\t}\n\treturn nil\n}\n\nfunc (msg MsgExpireDIDAllowance) ValidateBasic() error {\n\tif msg.Granter == \"\" {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidAddress, \"missing granter address\")\n\t}\n\tif len(msg.GranteeDid) <= 4 || msg.GranteeDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "x/feegrant/msgs_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx\"\n)\n\nfunc TestAminoJSON(t *testing.T) {\n\tlegacyAmino := codec.NewLegacyAmino()\n\tfeegrant.RegisterLegacyAminoCodec(legacyAmino)\n\tlegacytx.RegressionTestingAminoCodec = legacyAmino\n\ttx := legacytx.StdTx{}\n\tvar msg sdk.Msg\n\tallowanceAny, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{SpendLimit: sdk.NewCoins(sdk.NewCoin(\"foo\", math.NewInt(100)))})\n\trequire.NoError(t, err)\n\n\t// Amino JSON encoding has changed in feegrant since v0.46.\n\t// Before, it was outputting something like:\n\t// `{\"account_number\":\"1\",\"chain_id\":\"foo\",\"fee\":{\"amount\":[],\"gas\":\"0\"},\"memo\":\"memo\",\"msgs\":[{\"allowance\":{\"spend_limit\":[{\"amount\":\"100\",\"denom\":\"foo\"}]},\"grantee\":\"cosmos1def\",\"granter\":\"cosmos1abc\"}],\"sequence\":\"1\",\"timeout_height\":\"1\"}`\n\t//\n\t// This was a bug. Now, it's as below, See how there's `type` & `value` fields.\n\t// ref: https://github.com/cosmos/cosmos-sdk/issues/11190\n\t// ref: https://github.com/cosmos/cosmjs/issues/1026\n\tmsg = &feegrant.MsgGrantAllowance{Granter: \"cosmos1abc\", Grantee: \"cosmos1def\", Allowance: allowanceAny}\n\ttx.Msgs = []sdk.Msg{msg}\n\trequire.Equal(t,\n\t\t`{\"account_number\":\"1\",\"chain_id\":\"foo\",\"fee\":{\"amount\":[],\"gas\":\"0\"},\"memo\":\"memo\",\"msgs\":[{\"type\":\"cosmos-sdk/MsgGrantAllowance\",\"value\":{\"allowance\":{\"type\":\"cosmos-sdk/BasicAllowance\",\"value\":{\"spend_limit\":[{\"amount\":\"100\",\"denom\":\"foo\"}]}},\"grantee\":\"cosmos1def\",\"granter\":\"cosmos1abc\"}}],\"sequence\":\"1\",\"timeout_height\":\"1\"}`,\n\t\tstring(legacytx.StdSignBytes(\"foo\", 1, 1, 1, legacytx.StdFee{}, []sdk.Msg{msg}, \"memo\")),\n\t)\n\n\tmsg = &feegrant.MsgRevokeAllowance{Granter: \"cosmos1abc\", Grantee: \"cosmos1def\"}\n\ttx.Msgs = []sdk.Msg{msg}\n\trequire.Equal(t,\n\t\t`{\"account_number\":\"1\",\"chain_id\":\"foo\",\"fee\":{\"amount\":[],\"gas\":\"0\"},\"memo\":\"memo\",\"msgs\":[{\"type\":\"cosmos-sdk/MsgRevokeAllowance\",\"value\":{\"grantee\":\"cosmos1def\",\"granter\":\"cosmos1abc\"}}],\"sequence\":\"1\",\"timeout_height\":\"1\"}`,\n\t\tstring(legacytx.StdSignBytes(\"foo\", 1, 1, 1, legacytx.StdFee{}, []sdk.Msg{msg}, \"memo\")),\n\t)\n}\n"
  },
  {
    "path": "x/feegrant/periodic_fee.go",
    "content": "package feegrant\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsdkerrors \"github.com/cosmos/cosmos-sdk/types/errors\"\n)\n\nvar _ FeeAllowanceI = (*PeriodicAllowance)(nil)\n\n// Accept can use fee payment requested as well as timestamp of the current block\n// to determine whether or not to process this. This is checked in\n// Keeper.UseGrantedFees and the return values should match how it is handled there.\n//\n// If it returns an error, the fee payment is rejected, otherwise it is accepted.\n// The FeeAllowance implementation is expected to update it's internal state\n// and will be saved again after an acceptance.\n//\n// If remove is true (regardless of the error), the FeeAllowance will be deleted from storage\n// (eg. when it is used up). (See call to RevokeAllowance in Keeper.UseGrantedFees)\nfunc (a *PeriodicAllowance) Accept(ctx context.Context, fee sdk.Coins, _ []sdk.Msg) (bool, error) {\n\tblockTime := sdk.UnwrapSDKContext(ctx).BlockTime()\n\n\tif a.Basic.Expiration != nil && blockTime.After(*a.Basic.Expiration) {\n\t\treturn true, errorsmod.Wrap(ErrFeeLimitExpired, \"absolute limit\")\n\t}\n\n\ta.tryResetPeriod(blockTime)\n\n\t// deduct from both the current period and the max amount\n\tvar isNeg bool\n\ta.PeriodCanSpend, isNeg = a.PeriodCanSpend.SafeSub(fee...)\n\tif isNeg {\n\t\treturn false, errorsmod.Wrap(ErrFeeLimitExceeded, \"period limit\")\n\t}\n\n\tif a.Basic.SpendLimit != nil {\n\t\ta.Basic.SpendLimit, isNeg = a.Basic.SpendLimit.SafeSub(fee...)\n\t\tif isNeg {\n\t\t\treturn false, errorsmod.Wrap(ErrFeeLimitExceeded, \"absolute limit\")\n\t\t}\n\n\t\treturn a.Basic.SpendLimit.IsZero(), nil\n\t}\n\n\treturn false, nil\n}\n\n// tryResetPeriod will check if the PeriodReset has been hit. If not, it is a no-op.\n// If we hit the reset period, it will top up the PeriodCanSpend amount to\n// min(PeriodSpendLimit, Basic.SpendLimit) so it is never more than the maximum allowed.\n// It will also update the PeriodReset. If we are within one Period, it will update from the\n// last PeriodReset (eg. if you always do one tx per day, it will always reset the same time)\n// If we are more than one period out (eg. no activity in a week), reset is one Period from the execution of this method\nfunc (a *PeriodicAllowance) tryResetPeriod(blockTime time.Time) {\n\tif blockTime.Before(a.PeriodReset) {\n\t\treturn\n\t}\n\n\t// set PeriodCanSpend to the lesser of Basic.SpendLimit and PeriodSpendLimit\n\tif _, isNeg := a.Basic.SpendLimit.SafeSub(a.PeriodSpendLimit...); isNeg && !a.Basic.SpendLimit.Empty() {\n\t\ta.PeriodCanSpend = a.Basic.SpendLimit\n\t} else {\n\t\ta.PeriodCanSpend = a.PeriodSpendLimit\n\t}\n\n\t// If we are within the period, step from expiration (eg. if you always do one tx per day, it will always reset the same time)\n\t// If we are more then one period out (eg. no activity in a week), reset is one period from this time\n\ta.PeriodReset = a.PeriodReset.Add(a.Period)\n\tif blockTime.After(a.PeriodReset) {\n\t\ta.PeriodReset = blockTime.Add(a.Period)\n\t}\n}\n\n// ValidateBasic implements FeeAllowance and enforces basic sanity checks\nfunc (a PeriodicAllowance) ValidateBasic() error {\n\tif err := a.Basic.ValidateBasic(); err != nil {\n\t\treturn err\n\t}\n\n\tif !a.PeriodSpendLimit.IsValid() {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, \"spend amount is invalid: %s\", a.PeriodSpendLimit)\n\t}\n\tif !a.PeriodSpendLimit.IsAllPositive() {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidCoins, \"spend limit must be positive\")\n\t}\n\tif !a.PeriodCanSpend.IsValid() {\n\t\treturn errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, \"can spend amount is invalid: %s\", a.PeriodCanSpend)\n\t}\n\t// We allow 0 for `PeriodCanSpend`\n\tif a.PeriodCanSpend.IsAnyNegative() {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidCoins, \"can spend must not be negative\")\n\t}\n\n\t// ensure PeriodSpendLimit can be subtracted from total (same coin types)\n\tif a.Basic.SpendLimit != nil && !a.PeriodSpendLimit.DenomsSubsetOf(a.Basic.SpendLimit) {\n\t\treturn errorsmod.Wrap(sdkerrors.ErrInvalidCoins, \"period spend limit has different currency than basic spend limit\")\n\t}\n\n\t// check times\n\tif a.Period.Seconds() < 0 {\n\t\treturn errorsmod.Wrap(ErrInvalidDuration, \"negative clock step\")\n\t}\n\n\treturn nil\n}\n\n// ExpiresAt returns the expiry time of the PeriodicAllowance.\nfunc (a PeriodicAllowance) ExpiresAt() (*time.Time, error) {\n\treturn a.Basic.ExpiresAt()\n}\n"
  },
  {
    "path": "x/feegrant/periodic_fee_test.go",
    "content": "package feegrant_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nfunc TestPeriodicFeeValidAllow(t *testing.T) {\n\tkey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\n\tctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Time: time.Now()})\n\n\tatom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 555))\n\tsmallAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 43))\n\tleftAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 512))\n\toneAtom := sdk.NewCoins(sdk.NewInt64Coin(\"atom\", 1))\n\teth := sdk.NewCoins(sdk.NewInt64Coin(\"eth\", 1))\n\temptyCoins := sdk.Coins{}\n\n\tnow := ctx.BlockTime()\n\toneHour := now.Add(1 * time.Hour)\n\ttwoHours := now.Add(2 * time.Hour)\n\ttenMinutes := time.Duration(10) * time.Minute\n\n\tcases := map[string]struct {\n\t\tallow         feegrant.PeriodicAllowance\n\t\tfee           sdk.Coins\n\t\tblockTime     time.Time\n\t\tvalid         bool // all other checks are ignored if valid=false\n\t\taccept        bool\n\t\tremove        bool\n\t\tremains       sdk.Coins\n\t\tremainsPeriod sdk.Coins\n\t\tperiodReset   time.Time\n\t}{\n\t\t\"empty\": {\n\t\t\tallow: feegrant.PeriodicAllowance{},\n\t\t\tvalid: false,\n\t\t},\n\t\t\"only basic\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &oneHour,\n\t\t\t\t},\n\t\t\t},\n\t\t\tvalid: false,\n\t\t},\n\t\t\"empty basic\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodSpendLimit: smallAtom,\n\t\t\t\tPeriodReset:      now.Add(30 * time.Minute),\n\t\t\t},\n\t\t\tblockTime:     now,\n\t\t\tvalid:         true,\n\t\t\taccept:        true,\n\t\t\tremove:        false,\n\t\t\tremainsPeriod: emptyCoins,\n\t\t\tperiodReset:   now.Add(30 * time.Minute),\n\t\t},\n\t\t\"mismatched currencies\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &oneHour,\n\t\t\t\t},\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodSpendLimit: eth,\n\t\t\t},\n\t\t\tvalid: false,\n\t\t},\n\t\t\"same period\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &twoHours,\n\t\t\t\t},\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodReset:      now.Add(1 * time.Hour),\n\t\t\t\tPeriodSpendLimit: leftAtom,\n\t\t\t\tPeriodCanSpend:   smallAtom,\n\t\t\t},\n\t\t\tvalid:         true,\n\t\t\tfee:           smallAtom,\n\t\t\tblockTime:     now,\n\t\t\taccept:        true,\n\t\t\tremove:        false,\n\t\t\tremainsPeriod: emptyCoins,\n\t\t\tremains:       leftAtom,\n\t\t\tperiodReset:   now.Add(1 * time.Hour),\n\t\t},\n\t\t\"step one period\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &twoHours,\n\t\t\t\t},\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodReset:      now,\n\t\t\t\tPeriodSpendLimit: leftAtom,\n\t\t\t},\n\t\t\tvalid:         true,\n\t\t\tfee:           leftAtom,\n\t\t\tblockTime:     now.Add(1 * time.Hour),\n\t\t\taccept:        true,\n\t\t\tremove:        false,\n\t\t\tremainsPeriod: emptyCoins,\n\t\t\tremains:       smallAtom,\n\t\t\tperiodReset:   oneHour.Add(tenMinutes), // one step from last reset, not now\n\t\t},\n\t\t\"step limited by global allowance\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: smallAtom,\n\t\t\t\t\tExpiration: &twoHours,\n\t\t\t\t},\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodReset:      now,\n\t\t\t\tPeriodSpendLimit: atom,\n\t\t\t},\n\t\t\tvalid:         true,\n\t\t\tfee:           oneAtom,\n\t\t\tblockTime:     oneHour,\n\t\t\taccept:        true,\n\t\t\tremove:        false,\n\t\t\tremainsPeriod: smallAtom.Sub(oneAtom...),\n\t\t\tremains:       smallAtom.Sub(oneAtom...),\n\t\t\tperiodReset:   oneHour.Add(tenMinutes), // one step from last reset, not now\n\t\t},\n\t\t\"period reset no spend limit\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tPeriod:           tenMinutes,\n\t\t\t\tPeriodReset:      now,\n\t\t\t\tPeriodSpendLimit: atom,\n\t\t\t},\n\t\t\tvalid:         true,\n\t\t\tfee:           atom,\n\t\t\tblockTime:     oneHour,\n\t\t\taccept:        true,\n\t\t\tremove:        false,\n\t\t\tremainsPeriod: emptyCoins,\n\t\t\tperiodReset:   oneHour.Add(tenMinutes), // one step from last reset, not now\n\t\t},\n\t\t\"expired\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &now,\n\t\t\t\t},\n\t\t\t\tPeriod:           time.Hour,\n\t\t\t\tPeriodSpendLimit: smallAtom,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       smallAtom,\n\t\t\tblockTime: oneHour,\n\t\t\taccept:    false,\n\t\t\tremove:    true,\n\t\t},\n\t\t\"over period limit\": {\n\t\t\tallow: feegrant.PeriodicAllowance{\n\t\t\t\tBasic: feegrant.BasicAllowance{\n\t\t\t\t\tSpendLimit: atom,\n\t\t\t\t\tExpiration: &now,\n\t\t\t\t},\n\t\t\t\tPeriod:           time.Hour,\n\t\t\t\tPeriodReset:      now.Add(1 * time.Hour),\n\t\t\t\tPeriodSpendLimit: leftAtom,\n\t\t\t\tPeriodCanSpend:   smallAtom,\n\t\t\t},\n\t\t\tvalid:     true,\n\t\t\tfee:       leftAtom,\n\t\t\tblockTime: now,\n\t\t\taccept:    false,\n\t\t\tremove:    true,\n\t\t},\n\t}\n\n\tfor name, stc := range cases {\n\t\ttc := stc // to make scopelint happy\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\terr := tc.allow.ValidateBasic()\n\t\t\tif !tc.valid {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\tctx := testCtx.Ctx.WithBlockTime(tc.blockTime)\n\t\t\t// now try to deduct\n\t\t\tremove, err := tc.allow.Accept(ctx, tc.fee, []sdk.Msg{})\n\t\t\tif !tc.accept {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\n\t\t\trequire.Equal(t, tc.remove, remove)\n\t\t\tif !remove {\n\t\t\t\tassert.Equal(t, tc.remains, tc.allow.Basic.SpendLimit)\n\t\t\t\tassert.Equal(t, tc.remainsPeriod, tc.allow.PeriodCanSpend)\n\t\t\t\tassert.Equal(t, tc.periodReset.String(), tc.allow.PeriodReset.String())\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/feegrant/v1beta1/query.proto\n\npackage feegrant\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\tquery \"github.com/cosmos/cosmos-sdk/types/query\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// QueryAllowanceRequest is the request type for the Query/Allowance RPC method.\ntype QueryAllowanceRequest struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n}\n\nfunc (m *QueryAllowanceRequest) Reset()         { *m = QueryAllowanceRequest{} }\nfunc (m *QueryAllowanceRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowanceRequest) ProtoMessage()    {}\nfunc (*QueryAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{0}\n}\nfunc (m *QueryAllowanceRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowanceRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowanceRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowanceRequest.Merge(m, src)\n}\nfunc (m *QueryAllowanceRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowanceRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowanceRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowanceRequest proto.InternalMessageInfo\n\nfunc (m *QueryAllowanceRequest) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryAllowanceRequest) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\n// QueryAllowanceResponse is the response type for the Query/Allowance RPC method.\ntype QueryAllowanceResponse struct {\n\t// allowance is an allowance granted for grantee by granter.\n\tAllowance *Grant `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *QueryAllowanceResponse) Reset()         { *m = QueryAllowanceResponse{} }\nfunc (m *QueryAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowanceResponse) ProtoMessage()    {}\nfunc (*QueryAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{1}\n}\nfunc (m *QueryAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowanceResponse.Merge(m, src)\n}\nfunc (m *QueryAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowanceResponse proto.InternalMessageInfo\n\nfunc (m *QueryAllowanceResponse) GetAllowance() *Grant {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\n// QueryAllowancesRequest is the request type for the Query/Allowances RPC method.\ntype QueryAllowancesRequest struct {\n\tGrantee string `protobuf:\"bytes,1,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryAllowancesRequest) Reset()         { *m = QueryAllowancesRequest{} }\nfunc (m *QueryAllowancesRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowancesRequest) ProtoMessage()    {}\nfunc (*QueryAllowancesRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{2}\n}\nfunc (m *QueryAllowancesRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowancesRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowancesRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowancesRequest.Merge(m, src)\n}\nfunc (m *QueryAllowancesRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowancesRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowancesRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowancesRequest proto.InternalMessageInfo\n\nfunc (m *QueryAllowancesRequest) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryAllowancesRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesResponse is the response type for the Query/Allowances RPC method.\ntype QueryAllowancesResponse struct {\n\t// allowances are allowance's granted for grantee by granter.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryAllowancesResponse) Reset()         { *m = QueryAllowancesResponse{} }\nfunc (m *QueryAllowancesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowancesResponse) ProtoMessage()    {}\nfunc (*QueryAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{3}\n}\nfunc (m *QueryAllowancesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowancesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowancesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowancesResponse.Merge(m, src)\n}\nfunc (m *QueryAllowancesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowancesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowancesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowancesResponse proto.InternalMessageInfo\n\nfunc (m *QueryAllowancesResponse) GetAllowances() []*Grant {\n\tif m != nil {\n\t\treturn m.Allowances\n\t}\n\treturn nil\n}\n\nfunc (m *QueryAllowancesResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesByGranterRequest is the request type for the Query/AllowancesByGranter RPC method.\ntype QueryAllowancesByGranterRequest struct {\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryAllowancesByGranterRequest) Reset()         { *m = QueryAllowancesByGranterRequest{} }\nfunc (m *QueryAllowancesByGranterRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowancesByGranterRequest) ProtoMessage()    {}\nfunc (*QueryAllowancesByGranterRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{4}\n}\nfunc (m *QueryAllowancesByGranterRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowancesByGranterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowancesByGranterRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowancesByGranterRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowancesByGranterRequest.Merge(m, src)\n}\nfunc (m *QueryAllowancesByGranterRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowancesByGranterRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowancesByGranterRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowancesByGranterRequest proto.InternalMessageInfo\n\nfunc (m *QueryAllowancesByGranterRequest) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryAllowancesByGranterRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.\ntype QueryAllowancesByGranterResponse struct {\n\t// allowances that have been issued by the granter.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryAllowancesByGranterResponse) Reset()         { *m = QueryAllowancesByGranterResponse{} }\nfunc (m *QueryAllowancesByGranterResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryAllowancesByGranterResponse) ProtoMessage()    {}\nfunc (*QueryAllowancesByGranterResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{5}\n}\nfunc (m *QueryAllowancesByGranterResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryAllowancesByGranterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryAllowancesByGranterResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryAllowancesByGranterResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryAllowancesByGranterResponse.Merge(m, src)\n}\nfunc (m *QueryAllowancesByGranterResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryAllowancesByGranterResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryAllowancesByGranterResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryAllowancesByGranterResponse proto.InternalMessageInfo\n\nfunc (m *QueryAllowancesByGranterResponse) GetAllowances() []*Grant {\n\tif m != nil {\n\t\treturn m.Allowances\n\t}\n\treturn nil\n}\n\nfunc (m *QueryAllowancesByGranterResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowanceRequest is the request type for the Query/DIDAllowance RPC method.\ntype QueryDIDAllowanceRequest struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowanceRequest) Reset()         { *m = QueryDIDAllowanceRequest{} }\nfunc (m *QueryDIDAllowanceRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowanceRequest) ProtoMessage()    {}\nfunc (*QueryDIDAllowanceRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{6}\n}\nfunc (m *QueryDIDAllowanceRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowanceRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowanceRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowanceRequest.Merge(m, src)\n}\nfunc (m *QueryDIDAllowanceRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowanceRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowanceRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowanceRequest proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowanceRequest) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryDIDAllowanceRequest) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// QueryDIDAllowanceResponse is the response type for the Query/DIDAllowance RPC method.\ntype QueryDIDAllowanceResponse struct {\n\t// allowance is an allowance granted for DID by granter.\n\tAllowance *Grant `protobuf:\"bytes,1,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowanceResponse) Reset()         { *m = QueryDIDAllowanceResponse{} }\nfunc (m *QueryDIDAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowanceResponse) ProtoMessage()    {}\nfunc (*QueryDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{7}\n}\nfunc (m *QueryDIDAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowanceResponse.Merge(m, src)\n}\nfunc (m *QueryDIDAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowanceResponse proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowanceResponse) GetAllowance() *Grant {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesRequest is the request type for the Query/DIDAllowances RPC method.\ntype QueryDIDAllowancesRequest struct {\n\t// grantee_did is the DID being granted allowances.\n\tGranteeDid string `protobuf:\"bytes,1,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowancesRequest) Reset()         { *m = QueryDIDAllowancesRequest{} }\nfunc (m *QueryDIDAllowancesRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowancesRequest) ProtoMessage()    {}\nfunc (*QueryDIDAllowancesRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{8}\n}\nfunc (m *QueryDIDAllowancesRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowancesRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowancesRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowancesRequest.Merge(m, src)\n}\nfunc (m *QueryDIDAllowancesRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowancesRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowancesRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowancesRequest proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowancesRequest) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryDIDAllowancesRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesResponse is the response type for the Query/DIDAllowances RPC method.\ntype QueryDIDAllowancesResponse struct {\n\t// allowances are DID allowances granted for the grantee DID.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowancesResponse) Reset()         { *m = QueryDIDAllowancesResponse{} }\nfunc (m *QueryDIDAllowancesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowancesResponse) ProtoMessage()    {}\nfunc (*QueryDIDAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{9}\n}\nfunc (m *QueryDIDAllowancesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowancesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowancesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowancesResponse.Merge(m, src)\n}\nfunc (m *QueryDIDAllowancesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowancesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowancesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowancesResponse proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowancesResponse) GetAllowances() []*Grant {\n\tif m != nil {\n\t\treturn m.Allowances\n\t}\n\treturn nil\n}\n\nfunc (m *QueryDIDAllowancesResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesByGranterRequest is the request type for the Query/DIDAllowancesByGranter RPC method.\ntype QueryDIDAllowancesByGranterRequest struct {\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// pagination defines a pagination for the request.\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) Reset()         { *m = QueryDIDAllowancesByGranterRequest{} }\nfunc (m *QueryDIDAllowancesByGranterRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowancesByGranterRequest) ProtoMessage()    {}\nfunc (*QueryDIDAllowancesByGranterRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{10}\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowancesByGranterRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowancesByGranterRequest.Merge(m, src)\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowancesByGranterRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowancesByGranterRequest proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowancesByGranterRequest) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// QueryDIDAllowancesByGranterResponse is the response type for the Query/DIDAllowancesByGranter RPC method.\ntype QueryDIDAllowancesByGranterResponse struct {\n\t// allowances that have been issued by the granter to DIDs.\n\tAllowances []*Grant `protobuf:\"bytes,1,rep,name=allowances,proto3\" json:\"allowances,omitempty\"`\n\t// pagination defines a pagination for the response.\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) Reset()         { *m = QueryDIDAllowancesByGranterResponse{} }\nfunc (m *QueryDIDAllowancesByGranterResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryDIDAllowancesByGranterResponse) ProtoMessage()    {}\nfunc (*QueryDIDAllowancesByGranterResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_5e33dbb16840460c, []int{11}\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryDIDAllowancesByGranterResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryDIDAllowancesByGranterResponse.Merge(m, src)\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryDIDAllowancesByGranterResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryDIDAllowancesByGranterResponse proto.InternalMessageInfo\n\nfunc (m *QueryDIDAllowancesByGranterResponse) GetAllowances() []*Grant {\n\tif m != nil {\n\t\treturn m.Allowances\n\t}\n\treturn nil\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryAllowanceRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowanceRequest\")\n\tproto.RegisterType((*QueryAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowanceResponse\")\n\tproto.RegisterType((*QueryAllowancesRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowancesRequest\")\n\tproto.RegisterType((*QueryAllowancesResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowancesResponse\")\n\tproto.RegisterType((*QueryAllowancesByGranterRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterRequest\")\n\tproto.RegisterType((*QueryAllowancesByGranterResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryAllowancesByGranterResponse\")\n\tproto.RegisterType((*QueryDIDAllowanceRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceRequest\")\n\tproto.RegisterType((*QueryDIDAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowanceResponse\")\n\tproto.RegisterType((*QueryDIDAllowancesRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesRequest\")\n\tproto.RegisterType((*QueryDIDAllowancesResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesResponse\")\n\tproto.RegisterType((*QueryDIDAllowancesByGranterRequest)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterRequest\")\n\tproto.RegisterType((*QueryDIDAllowancesByGranterResponse)(nil), \"sourcehub.feegrant.v1beta1.QueryDIDAllowancesByGranterResponse\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/feegrant/v1beta1/query.proto\", fileDescriptor_5e33dbb16840460c)\n}\n\nvar fileDescriptor_5e33dbb16840460c = []byte{\n\t// 728 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x96, 0x4f, 0x6b, 0xd4, 0x4e,\n\t0x18, 0xc7, 0x3b, 0xfd, 0xf1, 0x53, 0xf6, 0xa9, 0x22, 0x4c, 0xb5, 0x6e, 0x83, 0x6c, 0xd7, 0x08,\n\t0xf5, 0x0f, 0x6e, 0xd2, 0xa6, 0xb5, 0xd4, 0x56, 0xac, 0x5b, 0x8b, 0x4b, 0x6f, 0xba, 0x9e, 0x14,\n\t0xa1, 0x64, 0x37, 0x63, 0x0c, 0x6d, 0x33, 0xdb, 0x4c, 0xd6, 0x5a, 0xa4, 0x08, 0xe2, 0x0b, 0x10,\n\t0xf4, 0x05, 0x78, 0x11, 0xbc, 0x15, 0xa5, 0xde, 0x05, 0x41, 0xc4, 0x53, 0x69, 0x2f, 0x7a, 0x93,\n\t0xd6, 0x17, 0x22, 0x99, 0x4c, 0xb2, 0xdb, 0x6c, 0x9a, 0x6e, 0xea, 0x1e, 0xf6, 0xb6, 0xc9, 0x3c,\n\t0xdf, 0x67, 0x3e, 0xdf, 0x67, 0x9e, 0x67, 0x36, 0x30, 0xcc, 0x68, 0xdd, 0xa9, 0x92, 0x27, 0xf5,\n\t0x8a, 0xfa, 0x98, 0x10, 0xd3, 0xd1, 0x6d, 0x57, 0x7d, 0x3a, 0x5a, 0x21, 0xae, 0x3e, 0xaa, 0xae,\n\t0xd4, 0x89, 0xb3, 0xa6, 0xd4, 0x1c, 0xea, 0x52, 0x2c, 0x85, 0x71, 0x4a, 0x10, 0xa7, 0x88, 0x38,\n\t0xe9, 0x72, 0x42, 0x8e, 0x30, 0x98, 0xa7, 0x91, 0xae, 0x54, 0x29, 0x5b, 0xa6, 0x4c, 0xad, 0xe8,\n\t0x8c, 0xf8, 0xf9, 0xc3, 0xc8, 0x9a, 0x6e, 0x5a, 0xb6, 0xee, 0x5a, 0xd4, 0x16, 0xb1, 0xe7, 0x4c,\n\t0x4a, 0xcd, 0x25, 0xa2, 0xea, 0x35, 0x4b, 0xd5, 0x6d, 0x9b, 0xba, 0x7c, 0x91, 0x89, 0xd5, 0x41,\n\t0x3f, 0xd3, 0x02, 0x7f, 0x52, 0xfd, 0x07, 0x7f, 0x49, 0x7e, 0x01, 0x67, 0xee, 0x79, 0xa9, 0x8b,\n\t0x4b, 0x4b, 0x74, 0x55, 0xb7, 0xab, 0xa4, 0x4c, 0x56, 0xea, 0x84, 0xb9, 0x58, 0x83, 0xe3, 0x1c,\n\t0x86, 0x38, 0x59, 0x94, 0x47, 0x97, 0x32, 0xb3, 0xd9, 0xed, 0xcd, 0xc2, 0x69, 0xa1, 0x2d, 0x1a,\n\t0x86, 0x43, 0x18, 0xbb, 0xef, 0x3a, 0x96, 0x6d, 0x96, 0x83, 0xc0, 0x86, 0x86, 0x64, 0x7b, 0xdb,\n\t0xd3, 0x10, 0xf9, 0x01, 0x0c, 0x44, 0x01, 0x58, 0x8d, 0xda, 0x8c, 0xe0, 0x19, 0xc8, 0xe8, 0xc1,\n\t0x4b, 0xce, 0xd0, 0xa7, 0x9d, 0x57, 0x0e, 0x2e, 0xad, 0x52, 0xf2, 0x9e, 0xca, 0x0d, 0x8d, 0xfc,\n\t0x16, 0x45, 0x73, 0xb3, 0x16, 0x77, 0xa4, 0x5d, 0x77, 0x04, 0xdf, 0x01, 0x68, 0xd4, 0x9d, 0x1b,\n\t0xec, 0xd3, 0x86, 0x15, 0xa1, 0xf1, 0x0e, 0x49, 0xf1, 0x9b, 0x20, 0xe0, 0xb9, 0xab, 0x9b, 0x41,\n\t0x35, 0xcb, 0x4d, 0x4a, 0xf9, 0x3d, 0x82, 0xb3, 0x2d, 0x58, 0xc2, 0x73, 0x11, 0x20, 0xe4, 0x67,\n\t0x59, 0x94, 0xff, 0xaf, 0x3d, 0xd3, 0x4d, 0x22, 0x5c, 0x8a, 0xc1, 0xbc, 0x78, 0x28, 0xa6, 0xbf,\n\t0xff, 0x3e, 0xce, 0x4f, 0x08, 0x86, 0x22, 0x9c, 0xb3, 0x6b, 0x25, 0xff, 0xa8, 0xff, 0xa5, 0x4b,\n\t0x3a, 0x54, 0xc7, 0xa9, 0xfe, 0xed, 0xcd, 0xc2, 0x29, 0x5f, 0x56, 0x60, 0xc6, 0x62, 0x7e, 0x44,\n\t0x19, 0x9f, 0x90, 0xbf, 0x22, 0xc8, 0x1f, 0x0c, 0xdd, 0x7d, 0x55, 0x8e, 0x77, 0x41, 0x21, 0xcb,\n\t0x4d, 0xcc, 0xcd, 0xcf, 0x75, 0x64, 0x30, 0x87, 0xa0, 0x4f, 0x74, 0xf1, 0x82, 0x61, 0x19, 0xfe,\n\t0x70, 0x96, 0x41, 0xbc, 0x9a, 0xb3, 0x0c, 0xf9, 0x11, 0x0c, 0xc6, 0x6c, 0xd8, 0xa9, 0x41, 0x7c,\n\t0x85, 0x62, 0xd2, 0x87, 0xb3, 0x18, 0x81, 0x43, 0x51, 0xb8, 0x8e, 0x0d, 0xde, 0x07, 0x04, 0x52,\n\t0x1c, 0x46, 0x17, 0xce, 0xde, 0x3b, 0x04, 0x72, 0x2b, 0x6a, 0x37, 0x8d, 0x9f, 0xfc, 0x11, 0xc1,\n\t0x85, 0x44, 0xc4, 0xee, 0x2b, 0xab, 0xb6, 0x91, 0x81, 0xff, 0x39, 0x33, 0xfe, 0x8c, 0x20, 0x13,\n\t0x52, 0xe3, 0xd1, 0x24, 0x9e, 0xd8, 0xff, 0x47, 0x49, 0x4b, 0x23, 0xf1, 0x51, 0xe4, 0xe2, 0xcb,\n\t0x9d, 0x3f, 0x6f, 0x7a, 0xa7, 0xf1, 0x75, 0x35, 0xe1, 0x2b, 0x20, 0xf4, 0xad, 0x3e, 0x17, 0x47,\n\t0xb6, 0x1e, 0xfc, 0x22, 0xeb, 0x78, 0x03, 0x01, 0x34, 0xaa, 0x8d, 0x53, 0x50, 0x04, 0xf3, 0x26,\n\t0x8d, 0xa5, 0xd2, 0x08, 0xf4, 0x49, 0x8e, 0xae, 0xe1, 0x91, 0xb6, 0xd0, 0x59, 0x13, 0xf1, 0x2f,\n\t0x04, 0xfd, 0x31, 0xfd, 0x81, 0xa7, 0x53, 0x60, 0x44, 0x1b, 0x5f, 0xba, 0x71, 0x34, 0xb1, 0x30,\n\t0x53, 0xfa, 0xd1, 0x7a, 0xe7, 0x72, 0x7f, 0x0a, 0xbe, 0x9a, 0xe4, 0xcf, 0x62, 0xac, 0x4e, 0x8c,\n\t0xc6, 0xb9, 0xe0, 0x6f, 0x08, 0x4e, 0x34, 0xb7, 0x3f, 0x1e, 0x3f, 0x94, 0x2b, 0xe6, 0x4a, 0x97,\n\t0xae, 0xa5, 0x54, 0x09, 0x1b, 0xf3, 0x9c, 0xf9, 0x36, 0x2e, 0x26, 0x31, 0x1b, 0x96, 0xb1, 0x90,\n\t0xd4, 0x52, 0xde, 0x9d, 0xbb, 0x8e, 0xbf, 0x20, 0x38, 0xb9, 0x6f, 0x8e, 0x71, 0x3a, 0xa6, 0xb0,\n\t0xb9, 0x26, 0xd2, 0xca, 0x84, 0x97, 0x5b, 0xdc, 0xcb, 0x14, 0x9e, 0x6c, 0xdb, 0x0b, 0x8b, 0x58,\n\t0xd8, 0x41, 0x30, 0x10, 0x7f, 0x15, 0xe1, 0x9b, 0xe9, 0xa0, 0x5a, 0xba, 0x6d, 0xe6, 0xc8, 0xfa,\n\t0x34, 0xd3, 0xe3, 0xb9, 0x8b, 0x76, 0xd8, 0x6c, 0xe9, 0xfb, 0x6e, 0x0e, 0x6d, 0xed, 0xe6, 0xd0,\n\t0xef, 0xdd, 0x1c, 0x7a, 0xbd, 0x97, 0xeb, 0xd9, 0xda, 0xcb, 0xf5, 0xfc, 0xdc, 0xcb, 0xf5, 0x3c,\n\t0x2c, 0x98, 0x96, 0xeb, 0x01, 0x55, 0xe9, 0xb2, 0xc8, 0x6a, 0x13, 0x77, 0x95, 0x3a, 0x8b, 0x4d,\n\t0x7b, 0x3c, 0x0b, 0x77, 0xa9, 0x1c, 0xe3, 0xdf, 0xfb, 0x63, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff,\n\t0xbc, 0xe6, 0xa7, 0xcd, 0xc5, 0x0c, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// Allowance returns granted allowance to the grantee by the granter.\n\tAllowance(ctx context.Context, in *QueryAllowanceRequest, opts ...grpc.CallOption) (*QueryAllowanceResponse, error)\n\t// Allowances returns all the grants for the given grantee address.\n\tAllowances(ctx context.Context, in *QueryAllowancesRequest, opts ...grpc.CallOption) (*QueryAllowancesResponse, error)\n\t// AllowancesByGranter returns all the grants given by an address.\n\tAllowancesByGranter(ctx context.Context, in *QueryAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryAllowancesByGranterResponse, error)\n\t// DIDAllowance returns granted allowance to the DID by the granter.\n\tDIDAllowance(ctx context.Context, in *QueryDIDAllowanceRequest, opts ...grpc.CallOption) (*QueryDIDAllowanceResponse, error)\n\t// DIDAllowances returns all the DID grants for the given grantee DID.\n\tDIDAllowances(ctx context.Context, in *QueryDIDAllowancesRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesResponse, error)\n\t// DIDAllowancesByGranter returns all the DID grants given by an address.\n\tDIDAllowancesByGranter(ctx context.Context, in *QueryDIDAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesByGranterResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Allowance(ctx context.Context, in *QueryAllowanceRequest, opts ...grpc.CallOption) (*QueryAllowanceResponse, error) {\n\tout := new(QueryAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/Allowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Allowances(ctx context.Context, in *QueryAllowancesRequest, opts ...grpc.CallOption) (*QueryAllowancesResponse, error) {\n\tout := new(QueryAllowancesResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/Allowances\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) AllowancesByGranter(ctx context.Context, in *QueryAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryAllowancesByGranterResponse, error) {\n\tout := new(QueryAllowancesByGranterResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/AllowancesByGranter\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowance(ctx context.Context, in *QueryDIDAllowanceRequest, opts ...grpc.CallOption) (*QueryDIDAllowanceResponse, error) {\n\tout := new(QueryDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/DIDAllowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowances(ctx context.Context, in *QueryDIDAllowancesRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesResponse, error) {\n\tout := new(QueryDIDAllowancesResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/DIDAllowances\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) DIDAllowancesByGranter(ctx context.Context, in *QueryDIDAllowancesByGranterRequest, opts ...grpc.CallOption) (*QueryDIDAllowancesByGranterResponse, error) {\n\tout := new(QueryDIDAllowancesByGranterResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Query/DIDAllowancesByGranter\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// Allowance returns granted allowance to the grantee by the granter.\n\tAllowance(context.Context, *QueryAllowanceRequest) (*QueryAllowanceResponse, error)\n\t// Allowances returns all the grants for the given grantee address.\n\tAllowances(context.Context, *QueryAllowancesRequest) (*QueryAllowancesResponse, error)\n\t// AllowancesByGranter returns all the grants given by an address.\n\tAllowancesByGranter(context.Context, *QueryAllowancesByGranterRequest) (*QueryAllowancesByGranterResponse, error)\n\t// DIDAllowance returns granted allowance to the DID by the granter.\n\tDIDAllowance(context.Context, *QueryDIDAllowanceRequest) (*QueryDIDAllowanceResponse, error)\n\t// DIDAllowances returns all the DID grants for the given grantee DID.\n\tDIDAllowances(context.Context, *QueryDIDAllowancesRequest) (*QueryDIDAllowancesResponse, error)\n\t// DIDAllowancesByGranter returns all the DID grants given by an address.\n\tDIDAllowancesByGranter(context.Context, *QueryDIDAllowancesByGranterRequest) (*QueryDIDAllowancesByGranterResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) Allowance(ctx context.Context, req *QueryAllowanceRequest) (*QueryAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Allowance not implemented\")\n}\nfunc (*UnimplementedQueryServer) Allowances(ctx context.Context, req *QueryAllowancesRequest) (*QueryAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Allowances not implemented\")\n}\nfunc (*UnimplementedQueryServer) AllowancesByGranter(ctx context.Context, req *QueryAllowancesByGranterRequest) (*QueryAllowancesByGranterResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AllowancesByGranter not implemented\")\n}\nfunc (*UnimplementedQueryServer) DIDAllowance(ctx context.Context, req *QueryDIDAllowanceRequest) (*QueryDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowance not implemented\")\n}\nfunc (*UnimplementedQueryServer) DIDAllowances(ctx context.Context, req *QueryDIDAllowancesRequest) (*QueryDIDAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowances not implemented\")\n}\nfunc (*UnimplementedQueryServer) DIDAllowancesByGranter(ctx context.Context, req *QueryDIDAllowancesByGranterRequest) (*QueryDIDAllowancesByGranterResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method DIDAllowancesByGranter not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_Allowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowanceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Allowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/Allowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Allowance(ctx, req.(*QueryAllowanceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Allowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowancesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Allowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/Allowances\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Allowances(ctx, req.(*QueryAllowancesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_AllowancesByGranter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryAllowancesByGranterRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).AllowancesByGranter(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/AllowancesByGranter\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).AllowancesByGranter(ctx, req.(*QueryAllowancesByGranterRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowanceRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/DIDAllowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowance(ctx, req.(*QueryDIDAllowanceRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowancesRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/DIDAllowances\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowances(ctx, req.(*QueryDIDAllowancesRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_DIDAllowancesByGranter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryDIDAllowancesByGranterRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).DIDAllowancesByGranter(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Query/DIDAllowancesByGranter\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).DIDAllowancesByGranter(ctx, req.(*QueryDIDAllowancesByGranterRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.feegrant.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Allowance\",\n\t\t\tHandler:    _Query_Allowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Allowances\",\n\t\t\tHandler:    _Query_Allowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AllowancesByGranter\",\n\t\t\tHandler:    _Query_AllowancesByGranter_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowance\",\n\t\t\tHandler:    _Query_DIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowances\",\n\t\t\tHandler:    _Query_DIDAllowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"DIDAllowancesByGranter\",\n\t\t\tHandler:    _Query_DIDAllowancesByGranter_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/feegrant/v1beta1/query.proto\",\n}\n\nfunc (m *QueryAllowanceRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowanceRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowanceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAllowancesRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowancesRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowancesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAllowancesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowancesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowancesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Allowances) > 0 {\n\t\tfor iNdEx := len(m.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Allowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAllowancesByGranterRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowancesByGranterRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowancesByGranterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryAllowancesByGranterResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryAllowancesByGranterResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryAllowancesByGranterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Allowances) > 0 {\n\t\tfor iNdEx := len(m.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Allowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowanceRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowanceRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowanceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowancesRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowancesRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowancesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowancesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowancesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowancesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Allowances) > 0 {\n\t\tfor iNdEx := len(m.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Allowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Allowances) > 0 {\n\t\tfor iNdEx := len(m.Allowances) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Allowances[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryAllowanceRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAllowancesRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAllowancesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Allowances) > 0 {\n\t\tfor _, e := range m.Allowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAllowancesByGranterRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryAllowancesByGranterResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Allowances) > 0 {\n\t\tfor _, e := range m.Allowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowanceRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowancesRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowancesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Allowances) > 0 {\n\t\tfor _, e := range m.Allowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowancesByGranterRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *QueryDIDAllowancesByGranterResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Allowances) > 0 {\n\t\tfor _, e := range m.Allowances {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryAllowanceRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowanceRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &Grant{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAllowancesRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAllowancesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Allowances = append(m.Allowances, &Grant{})\n\t\t\tif err := m.Allowances[len(m.Allowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAllowancesByGranterRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesByGranterRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesByGranterRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryAllowancesByGranterResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesByGranterResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryAllowancesByGranterResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Allowances = append(m.Allowances, &Grant{})\n\t\t\tif err := m.Allowances[len(m.Allowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowanceRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowanceRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowanceRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &Grant{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowancesRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowancesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Allowances = append(m.Allowances, &Grant{})\n\t\t\tif err := m.Allowances[len(m.Allowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowancesByGranterRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesByGranterRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesByGranterRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryDIDAllowancesByGranterResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesByGranterResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryDIDAllowancesByGranterResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowances\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Allowances = append(m.Allowances, &Grant{})\n\t\t\tif err := m.Allowances[len(m.Allowances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/feegrant/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: sourcehub/feegrant/v1beta1/query.proto\n\n/*\nPackage feegrant is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage feegrant\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_Allowance_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowanceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tval, ok = pathParams[\"grantee\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee\")\n\t}\n\n\tprotoReq.Grantee, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee\", err)\n\t}\n\n\tmsg, err := client.Allowance(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Allowance_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowanceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tval, ok = pathParams[\"grantee\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee\")\n\t}\n\n\tprotoReq.Grantee, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee\", err)\n\t}\n\n\tmsg, err := server.Allowance(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_Allowances_0 = &utilities.DoubleArray{Encoding: map[string]int{\"grantee\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_Allowances_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowancesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"grantee\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee\")\n\t}\n\n\tprotoReq.Grantee, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Allowances_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.Allowances(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Allowances_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowancesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"grantee\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee\")\n\t}\n\n\tprotoReq.Grantee, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Allowances_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.Allowances(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_AllowancesByGranter_0 = &utilities.DoubleArray{Encoding: map[string]int{\"granter\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_AllowancesByGranter_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowancesByGranterRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AllowancesByGranter_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.AllowancesByGranter(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_AllowancesByGranter_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryAllowancesByGranterRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_AllowancesByGranter_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.AllowancesByGranter(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_DIDAllowance_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowanceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tval, ok = pathParams[\"grantee_did\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee_did\")\n\t}\n\n\tprotoReq.GranteeDid, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee_did\", err)\n\t}\n\n\tmsg, err := client.DIDAllowance(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_DIDAllowance_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowanceRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tval, ok = pathParams[\"grantee_did\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee_did\")\n\t}\n\n\tprotoReq.GranteeDid, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee_did\", err)\n\t}\n\n\tmsg, err := server.DIDAllowance(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_DIDAllowances_0 = &utilities.DoubleArray{Encoding: map[string]int{\"grantee_did\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_DIDAllowances_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowancesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"grantee_did\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee_did\")\n\t}\n\n\tprotoReq.GranteeDid, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee_did\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DIDAllowances_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.DIDAllowances(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_DIDAllowances_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowancesRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"grantee_did\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"grantee_did\")\n\t}\n\n\tprotoReq.GranteeDid, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"grantee_did\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DIDAllowances_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.DIDAllowances(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_DIDAllowancesByGranter_0 = &utilities.DoubleArray{Encoding: map[string]int{\"granter\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_DIDAllowancesByGranter_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowancesByGranterRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DIDAllowancesByGranter_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.DIDAllowancesByGranter(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_DIDAllowancesByGranter_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryDIDAllowancesByGranterRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"granter\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"granter\")\n\t}\n\n\tprotoReq.Granter, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"granter\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_DIDAllowancesByGranter_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.DIDAllowancesByGranter(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Allowance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Allowance_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Allowance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Allowances_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Allowances_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Allowances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_AllowancesByGranter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_AllowancesByGranter_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_AllowancesByGranter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_DIDAllowance_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowances_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_DIDAllowances_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowancesByGranter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_DIDAllowancesByGranter_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowancesByGranter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Allowance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Allowance_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Allowance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Allowances_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Allowances_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Allowances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_AllowancesByGranter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_AllowancesByGranter_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_AllowancesByGranter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_DIDAllowance_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowances_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_DIDAllowances_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_DIDAllowancesByGranter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_DIDAllowancesByGranter_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_DIDAllowancesByGranter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_Allowance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"allowance\", \"granter\", \"grantee\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Allowances_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"allowances\", \"grantee\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_AllowancesByGranter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"issued\", \"granter\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_DIDAllowance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"did_allowance\", \"granter\", \"grantee_did\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_DIDAllowances_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"did_allowances\", \"grantee_did\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_DIDAllowancesByGranter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"feegrant\", \"v1beta1\", \"did_issued\", \"granter\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_Allowance_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Allowances_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_AllowancesByGranter_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_DIDAllowance_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_DIDAllowances_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_DIDAllowancesByGranter_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/feegrant/simulation/decoder.go",
    "content": "package simulation\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\t\"github.com/cosmos/cosmos-sdk/types/kv\"\n)\n\n// NewDecodeStore returns a decoder function closure that unmarshals the KVPair's\n// Value to the corresponding feegrant type.\nfunc NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string {\n\treturn func(kvA, kvB kv.Pair) string {\n\t\tswitch {\n\t\tcase bytes.Equal(kvA.Key[:1], feegrant.FeeAllowanceKeyPrefix):\n\t\t\tvar grantA, grantB feegrant.Grant\n\t\t\tcdc.MustUnmarshal(kvA.Value, &grantA)\n\t\t\tcdc.MustUnmarshal(kvB.Value, &grantB)\n\t\t\treturn fmt.Sprintf(\"%v\\n%v\", grantA, grantB)\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"invalid feegrant key %X\", kvA.Key))\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/simulation/decoder_test.go",
    "content": "package simulation_test\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tsdkmath \"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/simulation\"\n\n\t\"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/kv\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n)\n\nvar (\n\tgranterPk   = ed25519.GenPrivKey().PubKey()\n\tgranterAddr = sdk.AccAddress(granterPk.Address())\n\tgranteeAddr = sdk.AccAddress(granterPk.Address())\n)\n\nfunc TestDecodeStore(t *testing.T) {\n\tencodingConfig := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\tcdc := encodingConfig.Codec\n\tdec := simulation.NewDecodeStore(cdc)\n\n\tgrant, err := feegrant.NewGrant(granterAddr, granteeAddr, &feegrant.BasicAllowance{\n\t\tSpendLimit: sdk.NewCoins(sdk.NewCoin(\"foo\", sdkmath.NewInt(100))),\n\t})\n\n\trequire.NoError(t, err)\n\n\tgrantBz, err := cdc.Marshal(&grant)\n\trequire.NoError(t, err)\n\n\tkvPairs := kv.Pairs{\n\t\tPairs: []kv.Pair{\n\t\t\t{Key: feegrant.FeeAllowanceKeyPrefix, Value: grantBz},\n\t\t\t{Key: []byte{0x99}, Value: []byte{0x99}},\n\t\t},\n\t}\n\n\ttests := []struct {\n\t\tname        string\n\t\texpectedLog string\n\t}{\n\t\t{\"Grant\", fmt.Sprintf(\"%v\\n%v\", grant, grant)},\n\t\t{\"other\", \"\"},\n\t}\n\n\tfor i, tt := range tests {\n\t\ti, tt := i, tt\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tswitch i {\n\t\t\tcase len(tests) - 1:\n\t\t\t\trequire.Panics(t, func() { dec(kvPairs.Pairs[i], kvPairs.Pairs[i]) }, tt.name)\n\t\t\tdefault:\n\t\t\t\trequire.Equal(t, tt.expectedLog, dec(kvPairs.Pairs[i], kvPairs.Pairs[i]), tt.name)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/simulation/genesis.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\n// genFeeGrants returns a slice of randomly generated allowances.\nfunc genFeeGrants(r *rand.Rand, accounts []simtypes.Account) []feegrant.Grant {\n\tallowances := make([]feegrant.Grant, len(accounts)-1)\n\tfor i := 0; i < len(accounts)-1; i++ {\n\t\tgranter := accounts[i].Address\n\t\tgrantee := accounts[i+1].Address\n\t\tallowances[i] = generateRandomAllowances(granter, grantee, r)\n\t}\n\treturn allowances\n}\n\nfunc generateRandomAllowances(granter, grantee sdk.AccAddress, r *rand.Rand) feegrant.Grant {\n\tallowances := make([]feegrant.Grant, 3)\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(\"stake\", math.NewInt(100)))\n\tperiodSpendLimit := sdk.NewCoins(sdk.NewCoin(\"stake\", math.NewInt(10)))\n\n\tbasic := feegrant.BasicAllowance{\n\t\tSpendLimit: spendLimit,\n\t}\n\n\tbasicAllowance, err := feegrant.NewGrant(granter, grantee, &basic)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tallowances[0] = basicAllowance\n\n\tperiodicAllowance, err := feegrant.NewGrant(granter, grantee, &feegrant.PeriodicAllowance{\n\t\tBasic:            basic,\n\t\tPeriodSpendLimit: periodSpendLimit,\n\t\tPeriod:           time.Hour,\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tallowances[1] = periodicAllowance\n\n\tfilteredAllowance, err := feegrant.NewGrant(granter, grantee, &feegrant.AllowedMsgAllowance{\n\t\tAllowance:       basicAllowance.GetAllowance(),\n\t\tAllowedMessages: []string{\"/cosmos.gov.v1.MsgSubmitProposal\"},\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tallowances[2] = filteredAllowance\n\n\treturn allowances[r.Intn(len(allowances))]\n}\n\n// RandomizedGenState generates a random GenesisState for feegrant\nfunc RandomizedGenState(simState *module.SimulationState) {\n\tvar feegrants []feegrant.Grant\n\n\tsimState.AppParams.GetOrGenerate(\n\t\t\"feegrant\", &feegrants, simState.Rand,\n\t\tfunc(r *rand.Rand) { feegrants = genFeeGrants(r, simState.Accounts) },\n\t)\n\n\tfeegrantGenesis := feegrant.NewGenesisState(feegrants)\n\tbz, err := simState.Cdc.MarshalJSON(feegrantGenesis)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tsimState.GenState[feegrant.ModuleName] = bz\n}\n"
  },
  {
    "path": "x/feegrant/simulation/genesis_test.go",
    "content": "package simulation_test\n\nimport (\n\t\"encoding/json\"\n\t\"math/rand\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/simulation\"\n\n\tmoduletypes \"github.com/cosmos/cosmos-sdk/types/module\"\n\tmoduletestutil \"github.com/cosmos/cosmos-sdk/types/module/testutil\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\nfunc TestRandomizedGenState(t *testing.T) {\n\tencCfg := moduletestutil.MakeTestEncodingConfig(module.AppModuleBasic{})\n\ts := rand.NewSource(1)\n\tr := rand.New(s)\n\n\taccounts := simtypes.RandomAccounts(r, 3)\n\n\tsimState := moduletypes.SimulationState{\n\t\tAppParams:    make(simtypes.AppParams),\n\t\tCdc:          encCfg.Codec,\n\t\tRand:         r,\n\t\tNumBonded:    3,\n\t\tAccounts:     accounts,\n\t\tInitialStake: math.NewInt(1000),\n\t\tGenState:     make(map[string]json.RawMessage),\n\t}\n\n\tsimulation.RandomizedGenState(&simState)\n\tvar feegrantGenesis feegrant.GenesisState\n\tsimState.Cdc.MustUnmarshalJSON(simState.GenState[feegrant.ModuleName], &feegrantGenesis)\n\n\trequire.Len(t, feegrantGenesis.Allowances, len(accounts)-1)\n}\n"
  },
  {
    "path": "x/feegrant/simulation/operations.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"cosmossdk.io/core/address\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n)\n\n// Simulation operation weights constants\nconst (\n\tOpWeightMsgGrantAllowance        = \"op_weight_msg_grant_fee_allowance\"\n\tOpWeightMsgRevokeAllowance       = \"op_weight_msg_grant_revoke_allowance\"\n\tDefaultWeightGrantAllowance  int = 100\n\tDefaultWeightRevokeAllowance int = 100\n)\n\nvar (\n\tTypeMsgGrantAllowance  = sdk.MsgTypeURL(&feegrant.MsgGrantAllowance{})\n\tTypeMsgRevokeAllowance = sdk.MsgTypeURL(&feegrant.MsgRevokeAllowance{})\n)\n\nfunc WeightedOperations(\n\tregistry codectypes.InterfaceRegistry,\n\tappParams simtypes.AppParams,\n\tcdc codec.JSONCodec,\n\ttxConfig client.TxConfig,\n\tak feegrant.AccountKeeper,\n\tbk feegrant.BankKeeper,\n\tk keeper.Keeper,\n\tac address.Codec,\n) simulation.WeightedOperations {\n\tvar (\n\t\tweightMsgGrantAllowance  int\n\t\tweightMsgRevokeAllowance int\n\t)\n\n\tappParams.GetOrGenerate(OpWeightMsgGrantAllowance, &weightMsgGrantAllowance, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgGrantAllowance = DefaultWeightGrantAllowance\n\t\t},\n\t)\n\n\tappParams.GetOrGenerate(OpWeightMsgRevokeAllowance, &weightMsgRevokeAllowance, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgRevokeAllowance = DefaultWeightRevokeAllowance\n\t\t},\n\t)\n\n\tpCdc := codec.NewProtoCodec(registry)\n\n\treturn simulation.WeightedOperations{\n\t\tsimulation.NewWeightedOperation(\n\t\t\tweightMsgGrantAllowance,\n\t\t\tSimulateMsgGrantAllowance(pCdc, txConfig, ak, bk, k),\n\t\t),\n\t\tsimulation.NewWeightedOperation(\n\t\t\tweightMsgRevokeAllowance,\n\t\t\tSimulateMsgRevokeAllowance(pCdc, txConfig, ak, bk, k, ac),\n\t\t),\n\t}\n}\n\n// SimulateMsgGrantAllowance generates MsgGrantAllowance with random values.\nfunc SimulateMsgGrantAllowance(\n\tcdc *codec.ProtoCodec,\n\ttxConfig client.TxConfig,\n\tak feegrant.AccountKeeper,\n\tbk feegrant.BankKeeper,\n\tk keeper.Keeper,\n) simtypes.Operation {\n\treturn func(\n\t\tr *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tgranter, _ := simtypes.RandomAcc(r, accs)\n\t\tgrantee, _ := simtypes.RandomAcc(r, accs)\n\t\tif grantee.Address.String() == granter.Address.String() {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgGrantAllowance, \"grantee and granter cannot be same\"), nil, nil\n\t\t}\n\n\t\tif f, _ := k.GetAllowance(ctx, granter.Address, grantee.Address); f != nil {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgGrantAllowance, \"fee allowance exists\"), nil, nil\n\t\t}\n\n\t\taccount := ak.GetAccount(ctx, granter.Address)\n\n\t\tspendableCoins := bk.SpendableCoins(ctx, account.GetAddress())\n\t\tif spendableCoins.Empty() {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgGrantAllowance, \"unable to grant empty coins as SpendLimit\"), nil, nil\n\t\t}\n\n\t\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\t\tmsg, err := feegrant.NewMsgGrantAllowance(&feegrant.BasicAllowance{\n\t\t\tSpendLimit: spendableCoins,\n\t\t\tExpiration: &oneYear,\n\t\t}, granter.Address, grantee.Address)\n\t\tif err != nil {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgGrantAllowance, err.Error()), nil, err\n\t\t}\n\n\t\ttxCtx := simulation.OperationInput{\n\t\t\tR:               r,\n\t\t\tApp:             app,\n\t\t\tTxGen:           txConfig,\n\t\t\tCdc:             nil,\n\t\t\tMsg:             msg,\n\t\t\tContext:         ctx,\n\t\t\tSimAccount:      granter,\n\t\t\tAccountKeeper:   ak,\n\t\t\tBankkeeper:      bk,\n\t\t\tModuleName:      feegrant.ModuleName,\n\t\t\tCoinsSpentInMsg: spendableCoins,\n\t\t}\n\n\t\treturn simulation.GenAndDeliverTxWithRandFees(txCtx)\n\t}\n}\n\n// SimulateMsgRevokeAllowance generates a MsgRevokeAllowance with random values.\nfunc SimulateMsgRevokeAllowance(\n\tcdc *codec.ProtoCodec,\n\ttxConfig client.TxConfig,\n\tak feegrant.AccountKeeper,\n\tbk feegrant.BankKeeper,\n\tk keeper.Keeper,\n\tac address.Codec,\n) simtypes.Operation {\n\treturn func(\n\t\tr *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\thasGrant := false\n\t\tvar granterAddr sdk.AccAddress\n\t\tvar granteeAddr sdk.AccAddress\n\t\tk.IterateAllFeeAllowances(ctx, func(grant feegrant.Grant) bool {\n\t\t\tgranter, err := ac.StringToBytes(grant.Granter)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tgrantee, err := ac.StringToBytes(grant.Grantee)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tgranterAddr = granter\n\t\t\tgranteeAddr = grantee\n\t\t\thasGrant = true\n\t\t\treturn true\n\t\t})\n\n\t\tif !hasGrant {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgRevokeAllowance, \"no grants\"), nil, nil\n\t\t}\n\t\tgranter, ok := simtypes.FindAccount(accs, granterAddr)\n\n\t\tif !ok {\n\t\t\treturn simtypes.NoOpMsg(feegrant.ModuleName, TypeMsgRevokeAllowance, \"Account not found\"), nil, nil\n\t\t}\n\n\t\taccount := ak.GetAccount(ctx, granter.Address)\n\t\tspendableCoins := bk.SpendableCoins(ctx, account.GetAddress())\n\n\t\tmsg := feegrant.NewMsgRevokeAllowance(granterAddr, granteeAddr)\n\n\t\ttxCtx := simulation.OperationInput{\n\t\t\tR:               r,\n\t\t\tApp:             app,\n\t\t\tTxGen:           txConfig,\n\t\t\tCdc:             nil,\n\t\t\tMsg:             &msg,\n\t\t\tContext:         ctx,\n\t\t\tSimAccount:      granter,\n\t\t\tAccountKeeper:   ak,\n\t\t\tBankkeeper:      bk,\n\t\t\tModuleName:      feegrant.ModuleName,\n\t\t\tCoinsSpentInMsg: spendableCoins,\n\t\t}\n\n\t\treturn simulation.GenAndDeliverTxWithRandFees(txCtx)\n\t}\n}\n"
  },
  {
    "path": "x/feegrant/simulation/operations_test.go",
    "content": "package simulation_test\n\nimport (\n\t\"math/rand\"\n\t\"testing\"\n\t\"time\"\n\n\tabci \"github.com/cometbft/cometbft/abci/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\t\"github.com/cosmos/gogoproto/proto\"\n\t\"github.com/stretchr/testify/suite\"\n\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\t_ \"github.com/sourcenetwork/sourcehub/x/feegrant/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant/simulation\"\n\n\tappv1alpha1 \"cosmossdk.io/api/cosmos/app/v1alpha1\"\n\t\"cosmossdk.io/core/appconfig\"\n\tfeegrantmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/feegrant/module/v1\"\n\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodecaddress \"github.com/cosmos/cosmos-sdk/codec/address\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil/configurator\"\n\tsimtestutil \"github.com/cosmos/cosmos-sdk/testutil/sims\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/auth\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/auth/tx/config\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/bank\"\n\tbankkeeper \"github.com/cosmos/cosmos-sdk/x/bank/keeper\"\n\tbanktestutil \"github.com/cosmos/cosmos-sdk/x/bank/testutil\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/consensus\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/genutil\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/mint\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/params\"\n\t_ \"github.com/cosmos/cosmos-sdk/x/staking\"\n)\n\ntype SimTestSuite struct {\n\tsuite.Suite\n\n\tapp               *runtime.App\n\tctx               sdk.Context\n\tfeegrantKeeper    keeper.Keeper\n\tinterfaceRegistry codectypes.InterfaceRegistry\n\ttxConfig          client.TxConfig\n\taccountKeeper     authkeeper.AccountKeeper\n\tbankKeeper        bankkeeper.Keeper\n\tcdc               codec.Codec\n\tlegacyAmino       *codec.LegacyAmino\n}\n\nvar FeegrantModule = func() configurator.ModuleOption {\n\treturn func(config *configurator.Config) {\n\t\tconfig.ModuleConfigs[feegrant.ModuleName] = &appv1alpha1.ModuleConfig{\n\t\t\tName:   feegrant.ModuleName,\n\t\t\tConfig: appconfig.WrapAny(&feegrantmodulev1.Module{}),\n\t\t}\n\t}\n}\n\nfunc (suite *SimTestSuite) SetupTest() {\n\tvar err error\n\tsuite.app, err = simtestutil.Setup(\n\t\tdepinject.Configs(\n\t\t\tconfigurator.NewAppConfig(\n\t\t\t\tconfigurator.AuthModule(),\n\t\t\t\tconfigurator.BankModule(),\n\t\t\t\tconfigurator.StakingModule(),\n\t\t\t\tconfigurator.TxModule(),\n\t\t\t\tconfigurator.ConsensusModule(),\n\t\t\t\tconfigurator.ParamsModule(),\n\t\t\t\tconfigurator.GenutilModule(),\n\t\t\t\tFeegrantModule(),\n\t\t\t),\n\t\t\tdepinject.Supply(log.NewNopLogger()),\n\t\t),\n\t\t&suite.feegrantKeeper,\n\t\t&suite.bankKeeper,\n\t\t&suite.accountKeeper,\n\t\t&suite.interfaceRegistry,\n\t\t&suite.txConfig,\n\t\t&suite.cdc,\n\t\t&suite.legacyAmino,\n\t)\n\tsuite.Require().NoError(err)\n\n\tsuite.ctx = suite.app.BaseApp.NewContextLegacy(false, cmtproto.Header{Time: time.Now()})\n}\n\nfunc (suite *SimTestSuite) getTestingAccounts(r *rand.Rand, n int) []simtypes.Account {\n\taccounts := simtypes.RandomAccounts(r, n)\n\tinitAmt := sdk.TokensFromConsensusPower(200, sdk.DefaultPowerReduction)\n\tinitCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initAmt))\n\n\t// add coins to the accounts\n\tfor _, account := range accounts {\n\t\terr := banktestutil.FundAccount(suite.ctx, suite.bankKeeper, account.Address, initCoins)\n\t\tsuite.Require().NoError(err)\n\t}\n\n\treturn accounts\n}\n\nfunc (suite *SimTestSuite) TestWeightedOperations() {\n\trequire := suite.Require()\n\n\tsuite.ctx.WithChainID(\"test-chain\")\n\n\tappParams := make(simtypes.AppParams)\n\n\tweightedOps := simulation.WeightedOperations(\n\t\tsuite.interfaceRegistry,\n\t\tappParams, suite.cdc, suite.txConfig, suite.accountKeeper,\n\t\tsuite.bankKeeper, suite.feegrantKeeper, codecaddress.NewBech32Codec(\"cosmos\"),\n\t)\n\n\ts := rand.NewSource(1)\n\tr := rand.New(s)\n\taccs := suite.getTestingAccounts(r, 3)\n\n\texpected := []struct {\n\t\tweight     int\n\t\topMsgRoute string\n\t\topMsgName  string\n\t}{\n\t\t{\n\t\t\tsimulation.DefaultWeightGrantAllowance,\n\t\t\tfeegrant.ModuleName,\n\t\t\tsdk.MsgTypeURL(&feegrant.MsgGrantAllowance{}),\n\t\t},\n\t\t{\n\t\t\tsimulation.DefaultWeightRevokeAllowance,\n\t\t\tfeegrant.ModuleName,\n\t\t\tsdk.MsgTypeURL(&feegrant.MsgRevokeAllowance{}),\n\t\t},\n\t}\n\n\tfor i, w := range weightedOps {\n\t\toperationMsg, _, err := w.Op()(r, suite.app.BaseApp, suite.ctx, accs, suite.ctx.ChainID())\n\t\trequire.NoError(err)\n\n\t\t// the following checks are very much dependent from the ordering of the output given\n\t\t// by WeightedOperations. if the ordering in WeightedOperations changes some tests\n\t\t// will fail\n\t\trequire.Equal(expected[i].weight, w.Weight(), \"weight should be the same\")\n\t\trequire.Equal(expected[i].opMsgRoute, operationMsg.Route, \"route should be the same\")\n\t\trequire.Equal(expected[i].opMsgName, operationMsg.Name, \"operation Msg name should be the same\")\n\t}\n}\n\nfunc (suite *SimTestSuite) TestSimulateMsgGrantAllowance() {\n\tapp, ctx := suite.app, suite.ctx\n\trequire := suite.Require()\n\n\ts := rand.NewSource(1)\n\tr := rand.New(s)\n\taccounts := suite.getTestingAccounts(r, 3)\n\n\t//  new block\n\t_, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: app.LastBlockHeight() + 1})\n\trequire.NoError(err)\n\n\t// execute operation\n\top := simulation.SimulateMsgGrantAllowance(codec.NewProtoCodec(suite.interfaceRegistry), suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.feegrantKeeper)\n\toperationMsg, futureOperations, err := op(r, app.BaseApp, ctx, accounts, \"\")\n\trequire.NoError(err)\n\n\tvar msg feegrant.MsgGrantAllowance\n\terr = proto.Unmarshal(operationMsg.Msg, &msg)\n\trequire.NoError(err)\n\trequire.True(operationMsg.OK)\n\trequire.Equal(accounts[2].Address.String(), msg.Granter)\n\trequire.Equal(accounts[1].Address.String(), msg.Grantee)\n\trequire.Len(futureOperations, 0)\n}\n\nfunc (suite *SimTestSuite) TestSimulateMsgRevokeAllowance() {\n\tapp, ctx := suite.app, suite.ctx\n\trequire := suite.Require()\n\n\ts := rand.NewSource(1)\n\tr := rand.New(s)\n\taccounts := suite.getTestingAccounts(r, 3)\n\n\t// begin a new block\n\tapp.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.app.LastBlockHeight() + 1, Hash: suite.app.LastCommitID().Hash})\n\n\tfeeAmt := sdk.TokensFromConsensusPower(200000, sdk.DefaultPowerReduction)\n\tfeeCoins := sdk.NewCoins(sdk.NewCoin(\"foo\", feeAmt))\n\n\tgranter, grantee := accounts[0], accounts[1]\n\n\toneYear := ctx.BlockTime().AddDate(1, 0, 0)\n\terr := suite.feegrantKeeper.GrantAllowance(\n\t\tctx,\n\t\tgranter.Address,\n\t\tgrantee.Address,\n\t\t&feegrant.BasicAllowance{\n\t\t\tSpendLimit: feeCoins,\n\t\t\tExpiration: &oneYear,\n\t\t},\n\t)\n\trequire.NoError(err)\n\n\t// execute operation\n\top := simulation.SimulateMsgRevokeAllowance(codec.NewProtoCodec(suite.interfaceRegistry), suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.feegrantKeeper, codecaddress.NewBech32Codec(\"cosmos\"))\n\toperationMsg, futureOperations, err := op(r, app.BaseApp, ctx, accounts, \"\")\n\trequire.NoError(err)\n\n\tvar msg feegrant.MsgRevokeAllowance\n\terr = proto.Unmarshal(operationMsg.Msg, &msg)\n\trequire.NoError(err)\n\trequire.True(operationMsg.OK)\n\trequire.Equal(granter.Address.String(), msg.Granter)\n\trequire.Equal(grantee.Address.String(), msg.Grantee)\n\trequire.Len(futureOperations, 0)\n}\n\nfunc TestSimTestSuite(t *testing.T) {\n\tsuite.Run(t, new(SimTestSuite))\n}\n"
  },
  {
    "path": "x/feegrant/testutil/expected_keepers_mocks.go",
    "content": "// Code generated by MockGen. DO NOT EDIT.\n// Source: x/feegrant/expected_keepers.go\n\n// Package testutil is a generated GoMock package.\npackage testutil\n\nimport (\n\tcontext \"context\"\n\treflect \"reflect\"\n\n\taddress \"cosmossdk.io/core/address\"\n\ttypes \"github.com/cosmos/cosmos-sdk/types\"\n\tgomock \"github.com/golang/mock/gomock\"\n)\n\n// MockAccountKeeper is a mock of AccountKeeper interface.\ntype MockAccountKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockAccountKeeperMockRecorder\n}\n\n// MockAccountKeeperMockRecorder is the mock recorder for MockAccountKeeper.\ntype MockAccountKeeperMockRecorder struct {\n\tmock *MockAccountKeeper\n}\n\n// NewMockAccountKeeper creates a new mock instance.\nfunc NewMockAccountKeeper(ctrl *gomock.Controller) *MockAccountKeeper {\n\tmock := &MockAccountKeeper{ctrl: ctrl}\n\tmock.recorder = &MockAccountKeeperMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder {\n\treturn m.recorder\n}\n\n// AddressCodec mocks base method.\nfunc (m *MockAccountKeeper) AddressCodec() address.Codec {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"AddressCodec\")\n\tret0, _ := ret[0].(address.Codec)\n\treturn ret0\n}\n\n// AddressCodec indicates an expected call of AddressCodec.\nfunc (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AddressCodec\", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec))\n}\n\n// GetAccount mocks base method.\nfunc (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types.AccAddress) types.AccountI {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetAccount\", ctx, addr)\n\tret0, _ := ret[0].(types.AccountI)\n\treturn ret0\n}\n\n// GetAccount indicates an expected call of GetAccount.\nfunc (mr *MockAccountKeeperMockRecorder) GetAccount(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetAccount\", reflect.TypeOf((*MockAccountKeeper)(nil).GetAccount), ctx, addr)\n}\n\n// GetModuleAccount mocks base method.\nfunc (m *MockAccountKeeper) GetModuleAccount(ctx context.Context, moduleName string) types.ModuleAccountI {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetModuleAccount\", ctx, moduleName)\n\tret0, _ := ret[0].(types.ModuleAccountI)\n\treturn ret0\n}\n\n// GetModuleAccount indicates an expected call of GetModuleAccount.\nfunc (mr *MockAccountKeeperMockRecorder) GetModuleAccount(ctx, moduleName interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetModuleAccount\", reflect.TypeOf((*MockAccountKeeper)(nil).GetModuleAccount), ctx, moduleName)\n}\n\n// GetModuleAddress mocks base method.\nfunc (m *MockAccountKeeper) GetModuleAddress(moduleName string) types.AccAddress {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetModuleAddress\", moduleName)\n\tret0, _ := ret[0].(types.AccAddress)\n\treturn ret0\n}\n\n// GetModuleAddress indicates an expected call of GetModuleAddress.\nfunc (mr *MockAccountKeeperMockRecorder) GetModuleAddress(moduleName interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetModuleAddress\", reflect.TypeOf((*MockAccountKeeper)(nil).GetModuleAddress), moduleName)\n}\n\n// NewAccountWithAddress mocks base method.\nfunc (m *MockAccountKeeper) NewAccountWithAddress(ctx context.Context, addr types.AccAddress) types.AccountI {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"NewAccountWithAddress\", ctx, addr)\n\tret0, _ := ret[0].(types.AccountI)\n\treturn ret0\n}\n\n// NewAccountWithAddress indicates an expected call of NewAccountWithAddress.\nfunc (mr *MockAccountKeeperMockRecorder) NewAccountWithAddress(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"NewAccountWithAddress\", reflect.TypeOf((*MockAccountKeeper)(nil).NewAccountWithAddress), ctx, addr)\n}\n\n// SetAccount mocks base method.\nfunc (m *MockAccountKeeper) SetAccount(ctx context.Context, acc types.AccountI) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"SetAccount\", ctx, acc)\n}\n\n// SetAccount indicates an expected call of SetAccount.\nfunc (mr *MockAccountKeeperMockRecorder) SetAccount(ctx, acc interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetAccount\", reflect.TypeOf((*MockAccountKeeper)(nil).SetAccount), ctx, acc)\n}\n\n// MockBankKeeper is a mock of BankKeeper interface.\ntype MockBankKeeper struct {\n\tctrl     *gomock.Controller\n\trecorder *MockBankKeeperMockRecorder\n}\n\n// MockBankKeeperMockRecorder is the mock recorder for MockBankKeeper.\ntype MockBankKeeperMockRecorder struct {\n\tmock *MockBankKeeper\n}\n\n// NewMockBankKeeper creates a new mock instance.\nfunc NewMockBankKeeper(ctrl *gomock.Controller) *MockBankKeeper {\n\tmock := &MockBankKeeper{ctrl: ctrl}\n\tmock.recorder = &MockBankKeeperMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockBankKeeper) EXPECT() *MockBankKeeperMockRecorder {\n\treturn m.recorder\n}\n\n// BlockedAddr mocks base method.\nfunc (m *MockBankKeeper) BlockedAddr(addr types.AccAddress) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"BlockedAddr\", addr)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// BlockedAddr indicates an expected call of BlockedAddr.\nfunc (mr *MockBankKeeperMockRecorder) BlockedAddr(addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"BlockedAddr\", reflect.TypeOf((*MockBankKeeper)(nil).BlockedAddr), addr)\n}\n\n// SendCoinsFromAccountToModule mocks base method.\nfunc (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types.AccAddress, recipientModule string, amt types.Coins) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SendCoinsFromAccountToModule\", ctx, senderAddr, recipientModule, amt)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// SendCoinsFromAccountToModule indicates an expected call of SendCoinsFromAccountToModule.\nfunc (mr *MockBankKeeperMockRecorder) SendCoinsFromAccountToModule(ctx, senderAddr, recipientModule, amt interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SendCoinsFromAccountToModule\", reflect.TypeOf((*MockBankKeeper)(nil).SendCoinsFromAccountToModule), ctx, senderAddr, recipientModule, amt)\n}\n\n// SpendableCoins mocks base method.\nfunc (m *MockBankKeeper) SpendableCoins(ctx context.Context, addr types.AccAddress) types.Coins {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SpendableCoins\", ctx, addr)\n\tret0, _ := ret[0].(types.Coins)\n\treturn ret0\n}\n\n// SpendableCoins indicates an expected call of SpendableCoins.\nfunc (mr *MockBankKeeperMockRecorder) SpendableCoins(ctx, addr interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SpendableCoins\", reflect.TypeOf((*MockBankKeeper)(nil).SpendableCoins), ctx, addr)\n}\n"
  },
  {
    "path": "x/feegrant/tx.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/feegrant/v1beta1/tx.proto\n\npackage feegrant\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\ttypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// MsgGrantAllowance adds permission for Grantee to spend up to Allowance\n// of fees from the account of Granter.\ntype MsgGrantAllowance struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *types.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *MsgGrantAllowance) Reset()         { *m = MsgGrantAllowance{} }\nfunc (m *MsgGrantAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*MsgGrantAllowance) ProtoMessage()    {}\nfunc (*MsgGrantAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{0}\n}\nfunc (m *MsgGrantAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgGrantAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgGrantAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgGrantAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgGrantAllowance.Merge(m, src)\n}\nfunc (m *MsgGrantAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgGrantAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgGrantAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgGrantAllowance proto.InternalMessageInfo\n\nfunc (m *MsgGrantAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgGrantAllowance) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgGrantAllowance) GetAllowance() *types.Any {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\n// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.\ntype MsgGrantAllowanceResponse struct {\n}\n\nfunc (m *MsgGrantAllowanceResponse) Reset()         { *m = MsgGrantAllowanceResponse{} }\nfunc (m *MsgGrantAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgGrantAllowanceResponse) ProtoMessage()    {}\nfunc (*MsgGrantAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{1}\n}\nfunc (m *MsgGrantAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgGrantAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgGrantAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgGrantAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgGrantAllowanceResponse.Merge(m, src)\n}\nfunc (m *MsgGrantAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgGrantAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgGrantAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgGrantAllowanceResponse proto.InternalMessageInfo\n\n// MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.\ntype MsgRevokeAllowance struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee is the address of the user being granted an allowance of another user's funds.\n\tGrantee string `protobuf:\"bytes,2,opt,name=grantee,proto3\" json:\"grantee,omitempty\"`\n}\n\nfunc (m *MsgRevokeAllowance) Reset()         { *m = MsgRevokeAllowance{} }\nfunc (m *MsgRevokeAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRevokeAllowance) ProtoMessage()    {}\nfunc (*MsgRevokeAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{2}\n}\nfunc (m *MsgRevokeAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRevokeAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRevokeAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRevokeAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRevokeAllowance.Merge(m, src)\n}\nfunc (m *MsgRevokeAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRevokeAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRevokeAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRevokeAllowance proto.InternalMessageInfo\n\nfunc (m *MsgRevokeAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRevokeAllowance) GetGrantee() string {\n\tif m != nil {\n\t\treturn m.Grantee\n\t}\n\treturn \"\"\n}\n\n// MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.\ntype MsgRevokeAllowanceResponse struct {\n}\n\nfunc (m *MsgRevokeAllowanceResponse) Reset()         { *m = MsgRevokeAllowanceResponse{} }\nfunc (m *MsgRevokeAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRevokeAllowanceResponse) ProtoMessage()    {}\nfunc (*MsgRevokeAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{3}\n}\nfunc (m *MsgRevokeAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRevokeAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRevokeAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRevokeAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRevokeAllowanceResponse.Merge(m, src)\n}\nfunc (m *MsgRevokeAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRevokeAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRevokeAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRevokeAllowanceResponse proto.InternalMessageInfo\n\n// MsgPruneAllowances prunes expired fee allowances.\ntype MsgPruneAllowances struct {\n\t// pruner is the address of the user pruning expired allowances.\n\tPruner string `protobuf:\"bytes,1,opt,name=pruner,proto3\" json:\"pruner,omitempty\"`\n}\n\nfunc (m *MsgPruneAllowances) Reset()         { *m = MsgPruneAllowances{} }\nfunc (m *MsgPruneAllowances) String() string { return proto.CompactTextString(m) }\nfunc (*MsgPruneAllowances) ProtoMessage()    {}\nfunc (*MsgPruneAllowances) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{4}\n}\nfunc (m *MsgPruneAllowances) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgPruneAllowances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgPruneAllowances.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgPruneAllowances) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgPruneAllowances.Merge(m, src)\n}\nfunc (m *MsgPruneAllowances) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgPruneAllowances) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgPruneAllowances.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgPruneAllowances proto.InternalMessageInfo\n\nfunc (m *MsgPruneAllowances) GetPruner() string {\n\tif m != nil {\n\t\treturn m.Pruner\n\t}\n\treturn \"\"\n}\n\n// MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.\ntype MsgPruneAllowancesResponse struct {\n}\n\nfunc (m *MsgPruneAllowancesResponse) Reset()         { *m = MsgPruneAllowancesResponse{} }\nfunc (m *MsgPruneAllowancesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgPruneAllowancesResponse) ProtoMessage()    {}\nfunc (*MsgPruneAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{5}\n}\nfunc (m *MsgPruneAllowancesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgPruneAllowancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgPruneAllowancesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgPruneAllowancesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgPruneAllowancesResponse.Merge(m, src)\n}\nfunc (m *MsgPruneAllowancesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgPruneAllowancesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgPruneAllowancesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgPruneAllowancesResponse proto.InternalMessageInfo\n\n// MsgGrantDIDAllowance adds permission for a DID to spend up to Allowance\n// of fees from the account of Granter.\ntype MsgGrantDIDAllowance struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n\t// allowance can be any of basic, periodic, allowed fee allowance.\n\tAllowance *types.Any `protobuf:\"bytes,3,opt,name=allowance,proto3\" json:\"allowance,omitempty\"`\n}\n\nfunc (m *MsgGrantDIDAllowance) Reset()         { *m = MsgGrantDIDAllowance{} }\nfunc (m *MsgGrantDIDAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*MsgGrantDIDAllowance) ProtoMessage()    {}\nfunc (*MsgGrantDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{6}\n}\nfunc (m *MsgGrantDIDAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgGrantDIDAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgGrantDIDAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgGrantDIDAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgGrantDIDAllowance.Merge(m, src)\n}\nfunc (m *MsgGrantDIDAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgGrantDIDAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgGrantDIDAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgGrantDIDAllowance proto.InternalMessageInfo\n\nfunc (m *MsgGrantDIDAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgGrantDIDAllowance) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgGrantDIDAllowance) GetAllowance() *types.Any {\n\tif m != nil {\n\t\treturn m.Allowance\n\t}\n\treturn nil\n}\n\n// MsgGrantDIDAllowanceResponse defines the Msg/GrantDIDAllowanceResponse response type.\ntype MsgGrantDIDAllowanceResponse struct {\n}\n\nfunc (m *MsgGrantDIDAllowanceResponse) Reset()         { *m = MsgGrantDIDAllowanceResponse{} }\nfunc (m *MsgGrantDIDAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgGrantDIDAllowanceResponse) ProtoMessage()    {}\nfunc (*MsgGrantDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{7}\n}\nfunc (m *MsgGrantDIDAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgGrantDIDAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgGrantDIDAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgGrantDIDAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgGrantDIDAllowanceResponse.Merge(m, src)\n}\nfunc (m *MsgGrantDIDAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgGrantDIDAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgGrantDIDAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgGrantDIDAllowanceResponse proto.InternalMessageInfo\n\n// MsgExpireDIDAllowance expires an existing DID allowance by setting the expiration to current PeriodReset.\ntype MsgExpireDIDAllowance struct {\n\t// granter is the address of the user who granted the allowance.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID whose allowance should be expired.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (m *MsgExpireDIDAllowance) Reset()         { *m = MsgExpireDIDAllowance{} }\nfunc (m *MsgExpireDIDAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*MsgExpireDIDAllowance) ProtoMessage()    {}\nfunc (*MsgExpireDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{8}\n}\nfunc (m *MsgExpireDIDAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgExpireDIDAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgExpireDIDAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgExpireDIDAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgExpireDIDAllowance.Merge(m, src)\n}\nfunc (m *MsgExpireDIDAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgExpireDIDAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgExpireDIDAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgExpireDIDAllowance proto.InternalMessageInfo\n\nfunc (m *MsgExpireDIDAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgExpireDIDAllowance) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// MsgExpireDIDAllowanceResponse defines the Msg/ExpireDIDAllowanceResponse response type.\ntype MsgExpireDIDAllowanceResponse struct {\n}\n\nfunc (m *MsgExpireDIDAllowanceResponse) Reset()         { *m = MsgExpireDIDAllowanceResponse{} }\nfunc (m *MsgExpireDIDAllowanceResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgExpireDIDAllowanceResponse) ProtoMessage()    {}\nfunc (*MsgExpireDIDAllowanceResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{9}\n}\nfunc (m *MsgExpireDIDAllowanceResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgExpireDIDAllowanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgExpireDIDAllowanceResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgExpireDIDAllowanceResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgExpireDIDAllowanceResponse.Merge(m, src)\n}\nfunc (m *MsgExpireDIDAllowanceResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgExpireDIDAllowanceResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgExpireDIDAllowanceResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgExpireDIDAllowanceResponse proto.InternalMessageInfo\n\n// EventGrantDIDAllowance is emitted when a DID allowance is granted.\ntype EventGrantDIDAllowance struct {\n\t// granter is the address of the user granting an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID being granted an allowance of another user's funds.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (m *EventGrantDIDAllowance) Reset()         { *m = EventGrantDIDAllowance{} }\nfunc (m *EventGrantDIDAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*EventGrantDIDAllowance) ProtoMessage()    {}\nfunc (*EventGrantDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{10}\n}\nfunc (m *EventGrantDIDAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventGrantDIDAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventGrantDIDAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventGrantDIDAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventGrantDIDAllowance.Merge(m, src)\n}\nfunc (m *EventGrantDIDAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventGrantDIDAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventGrantDIDAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventGrantDIDAllowance proto.InternalMessageInfo\n\nfunc (m *EventGrantDIDAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventGrantDIDAllowance) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// EventExpireDIDAllowance is emitted when a DID allowance is expired.\ntype EventExpireDIDAllowance struct {\n\t// granter is the address of the user expiring an allowance of their funds.\n\tGranter string `protobuf:\"bytes,1,opt,name=granter,proto3\" json:\"granter,omitempty\"`\n\t// grantee_did is the DID whose allowance is being expired.\n\tGranteeDid string `protobuf:\"bytes,2,opt,name=grantee_did,json=granteeDid,proto3\" json:\"grantee_did,omitempty\"`\n}\n\nfunc (m *EventExpireDIDAllowance) Reset()         { *m = EventExpireDIDAllowance{} }\nfunc (m *EventExpireDIDAllowance) String() string { return proto.CompactTextString(m) }\nfunc (*EventExpireDIDAllowance) ProtoMessage()    {}\nfunc (*EventExpireDIDAllowance) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{11}\n}\nfunc (m *EventExpireDIDAllowance) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventExpireDIDAllowance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventExpireDIDAllowance.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventExpireDIDAllowance) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventExpireDIDAllowance.Merge(m, src)\n}\nfunc (m *EventExpireDIDAllowance) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventExpireDIDAllowance) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventExpireDIDAllowance.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventExpireDIDAllowance proto.InternalMessageInfo\n\nfunc (m *EventExpireDIDAllowance) GetGranter() string {\n\tif m != nil {\n\t\treturn m.Granter\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventExpireDIDAllowance) GetGranteeDid() string {\n\tif m != nil {\n\t\treturn m.GranteeDid\n\t}\n\treturn \"\"\n}\n\n// MsgPruneDIDAllowances prunes expired DID fee allowances.\ntype MsgPruneDIDAllowances struct {\n\t// pruner is the address of the user pruning expired DID allowances.\n\tPruner string `protobuf:\"bytes,1,opt,name=pruner,proto3\" json:\"pruner,omitempty\"`\n}\n\nfunc (m *MsgPruneDIDAllowances) Reset()         { *m = MsgPruneDIDAllowances{} }\nfunc (m *MsgPruneDIDAllowances) String() string { return proto.CompactTextString(m) }\nfunc (*MsgPruneDIDAllowances) ProtoMessage()    {}\nfunc (*MsgPruneDIDAllowances) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{12}\n}\nfunc (m *MsgPruneDIDAllowances) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgPruneDIDAllowances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgPruneDIDAllowances.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgPruneDIDAllowances) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgPruneDIDAllowances.Merge(m, src)\n}\nfunc (m *MsgPruneDIDAllowances) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgPruneDIDAllowances) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgPruneDIDAllowances.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgPruneDIDAllowances proto.InternalMessageInfo\n\nfunc (m *MsgPruneDIDAllowances) GetPruner() string {\n\tif m != nil {\n\t\treturn m.Pruner\n\t}\n\treturn \"\"\n}\n\n// MsgPruneDIDAllowancesResponse defines the Msg/PruneDIDAllowancesResponse response type.\ntype MsgPruneDIDAllowancesResponse struct {\n}\n\nfunc (m *MsgPruneDIDAllowancesResponse) Reset()         { *m = MsgPruneDIDAllowancesResponse{} }\nfunc (m *MsgPruneDIDAllowancesResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgPruneDIDAllowancesResponse) ProtoMessage()    {}\nfunc (*MsgPruneDIDAllowancesResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_26a0653b3586ef57, []int{13}\n}\nfunc (m *MsgPruneDIDAllowancesResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgPruneDIDAllowancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgPruneDIDAllowancesResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgPruneDIDAllowancesResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgPruneDIDAllowancesResponse.Merge(m, src)\n}\nfunc (m *MsgPruneDIDAllowancesResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgPruneDIDAllowancesResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgPruneDIDAllowancesResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgPruneDIDAllowancesResponse proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*MsgGrantAllowance)(nil), \"sourcehub.feegrant.v1beta1.MsgGrantAllowance\")\n\tproto.RegisterType((*MsgGrantAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgGrantAllowanceResponse\")\n\tproto.RegisterType((*MsgRevokeAllowance)(nil), \"sourcehub.feegrant.v1beta1.MsgRevokeAllowance\")\n\tproto.RegisterType((*MsgRevokeAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgRevokeAllowanceResponse\")\n\tproto.RegisterType((*MsgPruneAllowances)(nil), \"sourcehub.feegrant.v1beta1.MsgPruneAllowances\")\n\tproto.RegisterType((*MsgPruneAllowancesResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgPruneAllowancesResponse\")\n\tproto.RegisterType((*MsgGrantDIDAllowance)(nil), \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowance\")\n\tproto.RegisterType((*MsgGrantDIDAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgGrantDIDAllowanceResponse\")\n\tproto.RegisterType((*MsgExpireDIDAllowance)(nil), \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowance\")\n\tproto.RegisterType((*MsgExpireDIDAllowanceResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgExpireDIDAllowanceResponse\")\n\tproto.RegisterType((*EventGrantDIDAllowance)(nil), \"sourcehub.feegrant.v1beta1.EventGrantDIDAllowance\")\n\tproto.RegisterType((*EventExpireDIDAllowance)(nil), \"sourcehub.feegrant.v1beta1.EventExpireDIDAllowance\")\n\tproto.RegisterType((*MsgPruneDIDAllowances)(nil), \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowances\")\n\tproto.RegisterType((*MsgPruneDIDAllowancesResponse)(nil), \"sourcehub.feegrant.v1beta1.MsgPruneDIDAllowancesResponse\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/feegrant/v1beta1/tx.proto\", fileDescriptor_26a0653b3586ef57)\n}\n\nvar fileDescriptor_26a0653b3586ef57 = []byte{\n\t// 686 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x4f, 0x13, 0x41,\n\t0x14, 0x67, 0x20, 0x62, 0x18, 0x12, 0x91, 0x4d, 0x85, 0xb2, 0xc2, 0x96, 0xac, 0x17, 0x42, 0xdc,\n\t0x99, 0x6d, 0x0d, 0x46, 0x7b, 0x83, 0x80, 0x84, 0x43, 0x13, 0x53, 0x8c, 0x07, 0x2f, 0xb8, 0xed,\n\t0x0e, 0xeb, 0x06, 0xba, 0xd3, 0xec, 0x6c, 0x17, 0x38, 0x69, 0x38, 0x1a, 0x0f, 0xfa, 0x05, 0xf8,\n\t0x04, 0x1e, 0x38, 0xf4, 0x43, 0x18, 0x4e, 0x84, 0x93, 0x47, 0x03, 0x87, 0x7e, 0x0b, 0x63, 0xba,\n\t0x7f, 0xdb, 0xd9, 0xad, 0xdb, 0x4a, 0xe4, 0xd2, 0x66, 0xde, 0xfc, 0xde, 0x7b, 0xbf, 0xdf, 0x6f,\n\t0x66, 0x5e, 0x16, 0x3e, 0x61, 0xb4, 0x65, 0xd7, 0xc9, 0x87, 0x56, 0x0d, 0xef, 0x13, 0x62, 0xd8,\n\t0x9a, 0xe5, 0x60, 0xb7, 0x58, 0x23, 0x8e, 0x56, 0xc4, 0xce, 0x31, 0x6a, 0xda, 0xd4, 0xa1, 0x82,\n\t0x18, 0x81, 0x50, 0x08, 0x42, 0x01, 0x48, 0x5c, 0x30, 0x28, 0x35, 0x0e, 0x09, 0xf6, 0x90, 0xb5,\n\t0xd6, 0x3e, 0xd6, 0xac, 0x13, 0x3f, 0x4d, 0x5c, 0xa8, 0x53, 0xd6, 0xa0, 0x6c, 0xcf, 0x5b, 0x61,\n\t0x7f, 0x11, 0x6c, 0xcd, 0xfb, 0x2b, 0xdc, 0x60, 0x06, 0x76, 0x8b, 0xdd, 0xbf, 0x60, 0x63, 0x56,\n\t0x6b, 0x98, 0x16, 0xc5, 0xde, 0xaf, 0x1f, 0x92, 0xbf, 0x8c, 0xc3, 0xd9, 0x0a, 0x33, 0xb6, 0xbb,\n\t0x6d, 0xd7, 0x0f, 0x0f, 0xe9, 0x91, 0x66, 0xd5, 0x89, 0x50, 0x82, 0xf7, 0x3d, 0x22, 0xc4, 0xce,\n\t0x83, 0x65, 0xb0, 0x32, 0xb5, 0x91, 0xbf, 0x6a, 0x2b, 0xb9, 0xa0, 0xc9, 0xba, 0xae, 0xdb, 0x84,\n\t0xb1, 0x5d, 0xc7, 0x36, 0x2d, 0xa3, 0x1a, 0x02, 0xe3, 0x1c, 0x92, 0x1f, 0x1f, 0x2e, 0x87, 0x08,\n\t0xef, 0xe1, 0x94, 0x16, 0x36, 0xcd, 0x4f, 0x2c, 0x83, 0x95, 0xe9, 0x52, 0x0e, 0xf9, 0x9a, 0x51,\n\t0xa8, 0x19, 0xad, 0x5b, 0x27, 0x1b, 0x4f, 0x2f, 0xda, 0xca, 0xca, 0x60, 0xa3, 0xd0, 0x2b, 0x42,\n\t0x22, 0xf6, 0x3b, 0xd5, 0xb8, 0x68, 0x59, 0x39, 0xed, 0x9c, 0xaf, 0x86, 0x1c, 0x3f, 0x77, 0xce,\n\t0x57, 0x17, 0x7d, 0x46, 0x0a, 0xd3, 0x0f, 0x70, 0x42, 0xb8, 0xfc, 0x18, 0x2e, 0x24, 0x82, 0x55,\n\t0xc2, 0x9a, 0xd4, 0x62, 0x44, 0xfe, 0x0e, 0xa0, 0x50, 0x61, 0x46, 0x95, 0xb8, 0xf4, 0x80, 0xdc,\n\t0xb9, 0x59, 0x65, 0xc4, 0x4b, 0x59, 0xea, 0x97, 0xc2, 0xf1, 0x92, 0x17, 0xa1, 0x98, 0x8c, 0x46,\n\t0x62, 0x0c, 0x4f, 0xcb, 0x6b, 0xbb, 0x65, 0xc5, 0x9b, 0x4c, 0x50, 0xe1, 0x64, 0xb3, 0x1b, 0xca,\n\t0x96, 0x12, 0xe0, 0xca, 0x85, 0xab, 0xb6, 0xf2, 0x30, 0x26, 0xb2, 0xec, 0xaa, 0x68, 0x4d, 0xed,\n\t0x32, 0x0d, 0x00, 0x72, 0xc9, 0xa3, 0xc1, 0x35, 0x0a, 0x69, 0x94, 0x73, 0x69, 0xe9, 0xf2, 0x6f,\n\t0x00, 0x73, 0xe1, 0x39, 0x6c, 0xee, 0x6c, 0xde, 0xce, 0xeb, 0x02, 0x9c, 0x0e, 0x2c, 0xdc, 0xd3,\n\t0x4d, 0xdd, 0xf7, 0xbb, 0x0a, 0x83, 0xd0, 0xa6, 0xa9, 0xdf, 0xc1, 0x2d, 0xc4, 0xfc, 0xd1, 0x49,\n\t0xf1, 0x64, 0x48, 0xd3, 0x29, 0x4b, 0x70, 0x31, 0x2d, 0x1e, 0x9d, 0xde, 0x19, 0x80, 0x8f, 0x2a,\n\t0xcc, 0xd8, 0x3a, 0x6e, 0x9a, 0x36, 0xf9, 0xef, 0x0e, 0x95, 0x55, 0x9e, 0x7f, 0xa1, 0x8f, 0x7f,\n\t0x92, 0x86, 0x5c, 0x80, 0x4b, 0xa9, 0x1b, 0x91, 0x82, 0x5d, 0x38, 0xb7, 0xe5, 0x12, 0xcb, 0x49,\n\t0x9e, 0x71, 0x9e, 0x53, 0x30, 0x3c, 0x4f, 0xf9, 0x0d, 0x9c, 0xf7, 0x8a, 0xa6, 0xf8, 0x72, 0x8b,\n\t0xaa, 0x6f, 0x3d, 0xaf, 0xbd, 0x1b, 0xdc, 0x5b, 0xf2, 0x5f, 0x5e, 0xcb, 0x74, 0xef, 0xcb, 0xf0,\n\t0x3d, 0x4a, 0xd6, 0x0d, 0x3d, 0x2a, 0x9d, 0x4d, 0xc2, 0x89, 0x0a, 0x33, 0x04, 0x17, 0x3e, 0xe0,\n\t0x06, 0xb4, 0x82, 0xfe, 0x72, 0x0d, 0x13, 0x13, 0x4c, 0x5c, 0x1b, 0x09, 0x1e, 0xf6, 0x17, 0x4e,\n\t0xe0, 0x0c, 0x3f, 0xec, 0x50, 0x46, 0x25, 0x0e, 0x2f, 0x3e, 0x1f, 0x0d, 0x1f, 0xb5, 0xfe, 0x06,\n\t0xe0, 0x0c, 0x3f, 0x9c, 0xb2, 0x7a, 0x73, 0xf8, 0xcc, 0xde, 0x03, 0x66, 0x92, 0x3c, 0x77, 0xd1,\n\t0x56, 0x04, 0x7e, 0x26, 0x21, 0x55, 0xf8, 0x08, 0x67, 0x93, 0xb7, 0x55, 0x1d, 0xc6, 0xda, 0xde,\n\t0x0c, 0xf1, 0xc5, 0xa8, 0x19, 0x91, 0x29, 0xa7, 0x00, 0x0a, 0x29, 0x57, 0xbb, 0x98, 0x51, 0x30,\n\t0x99, 0x22, 0xbe, 0x1c, 0x39, 0xa5, 0x8f, 0x44, 0xca, 0x5b, 0x28, 0x0e, 0x63, 0x76, 0x5f, 0x4a,\n\t0x26, 0x89, 0xc1, 0x2f, 0x43, 0xbc, 0xf7, 0xa9, 0x73, 0xbe, 0x0a, 0x36, 0xb6, 0x7f, 0x5c, 0x4b,\n\t0xe0, 0xf2, 0x5a, 0x02, 0xbf, 0xae, 0x25, 0xf0, 0xf5, 0x46, 0x1a, 0xbb, 0xbc, 0x91, 0xc6, 0x7e,\n\t0xde, 0x48, 0x63, 0xef, 0x14, 0xc3, 0x74, 0xba, 0x75, 0xeb, 0xb4, 0x81, 0xfd, 0x2e, 0x16, 0x71,\n\t0x8e, 0xa8, 0x7d, 0x80, 0xe3, 0xc9, 0x75, 0x1c, 0x7d, 0x95, 0xd5, 0x26, 0xbd, 0x39, 0xff, 0xec,\n\t0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x2a, 0x61, 0x97, 0xb2, 0x09, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MsgClient interface {\n\t// GrantAllowance grants fee allowance to the grantee on the granter's\n\t// account with the provided expiration time.\n\tGrantAllowance(ctx context.Context, in *MsgGrantAllowance, opts ...grpc.CallOption) (*MsgGrantAllowanceResponse, error)\n\t// RevokeAllowance revokes any fee allowance of granter's account that\n\t// has been granted to the grantee.\n\tRevokeAllowance(ctx context.Context, in *MsgRevokeAllowance, opts ...grpc.CallOption) (*MsgRevokeAllowanceResponse, error)\n\t// PruneAllowances prunes expired fee allowances, currently up to 75 at a time.\n\tPruneAllowances(ctx context.Context, in *MsgPruneAllowances, opts ...grpc.CallOption) (*MsgPruneAllowancesResponse, error)\n\t// GrantDIDAllowance grants fee allowance to a DID on the granter's account.\n\tGrantDIDAllowance(ctx context.Context, in *MsgGrantDIDAllowance, opts ...grpc.CallOption) (*MsgGrantDIDAllowanceResponse, error)\n\t// ExpireDIDAllowance expires a fee allowance by setting the expiration to current PeriodReset.\n\t// This allows the allowance to be automatically pruned when the current period expires.\n\tExpireDIDAllowance(ctx context.Context, in *MsgExpireDIDAllowance, opts ...grpc.CallOption) (*MsgExpireDIDAllowanceResponse, error)\n\t// PruneDIDAllowances prunes expired DID fee allowances, currently up to 75 at a time.\n\tPruneDIDAllowances(ctx context.Context, in *MsgPruneDIDAllowances, opts ...grpc.CallOption) (*MsgPruneDIDAllowancesResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewMsgClient(cc grpc1.ClientConn) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) GrantAllowance(ctx context.Context, in *MsgGrantAllowance, opts ...grpc.CallOption) (*MsgGrantAllowanceResponse, error) {\n\tout := new(MsgGrantAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/GrantAllowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RevokeAllowance(ctx context.Context, in *MsgRevokeAllowance, opts ...grpc.CallOption) (*MsgRevokeAllowanceResponse, error) {\n\tout := new(MsgRevokeAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/RevokeAllowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) PruneAllowances(ctx context.Context, in *MsgPruneAllowances, opts ...grpc.CallOption) (*MsgPruneAllowancesResponse, error) {\n\tout := new(MsgPruneAllowancesResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/PruneAllowances\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) GrantDIDAllowance(ctx context.Context, in *MsgGrantDIDAllowance, opts ...grpc.CallOption) (*MsgGrantDIDAllowanceResponse, error) {\n\tout := new(MsgGrantDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/GrantDIDAllowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) ExpireDIDAllowance(ctx context.Context, in *MsgExpireDIDAllowance, opts ...grpc.CallOption) (*MsgExpireDIDAllowanceResponse, error) {\n\tout := new(MsgExpireDIDAllowanceResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/ExpireDIDAllowance\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) PruneDIDAllowances(ctx context.Context, in *MsgPruneDIDAllowances, opts ...grpc.CallOption) (*MsgPruneDIDAllowancesResponse, error) {\n\tout := new(MsgPruneDIDAllowancesResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.feegrant.v1beta1.Msg/PruneDIDAllowances\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\ntype MsgServer interface {\n\t// GrantAllowance grants fee allowance to the grantee on the granter's\n\t// account with the provided expiration time.\n\tGrantAllowance(context.Context, *MsgGrantAllowance) (*MsgGrantAllowanceResponse, error)\n\t// RevokeAllowance revokes any fee allowance of granter's account that\n\t// has been granted to the grantee.\n\tRevokeAllowance(context.Context, *MsgRevokeAllowance) (*MsgRevokeAllowanceResponse, error)\n\t// PruneAllowances prunes expired fee allowances, currently up to 75 at a time.\n\tPruneAllowances(context.Context, *MsgPruneAllowances) (*MsgPruneAllowancesResponse, error)\n\t// GrantDIDAllowance grants fee allowance to a DID on the granter's account.\n\tGrantDIDAllowance(context.Context, *MsgGrantDIDAllowance) (*MsgGrantDIDAllowanceResponse, error)\n\t// ExpireDIDAllowance expires a fee allowance by setting the expiration to current PeriodReset.\n\t// This allows the allowance to be automatically pruned when the current period expires.\n\tExpireDIDAllowance(context.Context, *MsgExpireDIDAllowance) (*MsgExpireDIDAllowanceResponse, error)\n\t// PruneDIDAllowances prunes expired DID fee allowances, currently up to 75 at a time.\n\tPruneDIDAllowances(context.Context, *MsgPruneDIDAllowances) (*MsgPruneDIDAllowancesResponse, error)\n}\n\n// UnimplementedMsgServer can be embedded to have forward compatible implementations.\ntype UnimplementedMsgServer struct {\n}\n\nfunc (*UnimplementedMsgServer) GrantAllowance(ctx context.Context, req *MsgGrantAllowance) (*MsgGrantAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GrantAllowance not implemented\")\n}\nfunc (*UnimplementedMsgServer) RevokeAllowance(ctx context.Context, req *MsgRevokeAllowance) (*MsgRevokeAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RevokeAllowance not implemented\")\n}\nfunc (*UnimplementedMsgServer) PruneAllowances(ctx context.Context, req *MsgPruneAllowances) (*MsgPruneAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PruneAllowances not implemented\")\n}\nfunc (*UnimplementedMsgServer) GrantDIDAllowance(ctx context.Context, req *MsgGrantDIDAllowance) (*MsgGrantDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method GrantDIDAllowance not implemented\")\n}\nfunc (*UnimplementedMsgServer) ExpireDIDAllowance(ctx context.Context, req *MsgExpireDIDAllowance) (*MsgExpireDIDAllowanceResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method ExpireDIDAllowance not implemented\")\n}\nfunc (*UnimplementedMsgServer) PruneDIDAllowances(ctx context.Context, req *MsgPruneDIDAllowances) (*MsgPruneDIDAllowancesResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method PruneDIDAllowances not implemented\")\n}\n\nfunc RegisterMsgServer(s grpc1.Server, srv MsgServer) {\n\ts.RegisterService(&_Msg_serviceDesc, srv)\n}\n\nfunc _Msg_GrantAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgGrantAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).GrantAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/GrantAllowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).GrantAllowance(ctx, req.(*MsgGrantAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RevokeAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRevokeAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RevokeAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/RevokeAllowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RevokeAllowance(ctx, req.(*MsgRevokeAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_PruneAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgPruneAllowances)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).PruneAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/PruneAllowances\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).PruneAllowances(ctx, req.(*MsgPruneAllowances))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_GrantDIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgGrantDIDAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).GrantDIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/GrantDIDAllowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).GrantDIDAllowance(ctx, req.(*MsgGrantDIDAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_ExpireDIDAllowance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgExpireDIDAllowance)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).ExpireDIDAllowance(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/ExpireDIDAllowance\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).ExpireDIDAllowance(ctx, req.(*MsgExpireDIDAllowance))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_PruneDIDAllowances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgPruneDIDAllowances)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).PruneDIDAllowances(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.feegrant.v1beta1.Msg/PruneDIDAllowances\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).PruneDIDAllowances(ctx, req.(*MsgPruneDIDAllowances))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Msg_serviceDesc = _Msg_serviceDesc\nvar _Msg_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.feegrant.v1beta1.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"GrantAllowance\",\n\t\t\tHandler:    _Msg_GrantAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RevokeAllowance\",\n\t\t\tHandler:    _Msg_RevokeAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PruneAllowances\",\n\t\t\tHandler:    _Msg_PruneAllowances_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"GrantDIDAllowance\",\n\t\t\tHandler:    _Msg_GrantDIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"ExpireDIDAllowance\",\n\t\t\tHandler:    _Msg_ExpireDIDAllowance_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"PruneDIDAllowances\",\n\t\t\tHandler:    _Msg_PruneDIDAllowances_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/feegrant/v1beta1/tx.proto\",\n}\n\nfunc (m *MsgGrantAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgGrantAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgGrantAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgGrantAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgGrantAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgGrantAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRevokeAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRevokeAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRevokeAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Grantee) > 0 {\n\t\ti -= len(m.Grantee)\n\t\tcopy(dAtA[i:], m.Grantee)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Grantee)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRevokeAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRevokeAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRevokeAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgPruneAllowances) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgPruneAllowances) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgPruneAllowances) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Pruner) > 0 {\n\t\ti -= len(m.Pruner)\n\t\tcopy(dAtA[i:], m.Pruner)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Pruner)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgPruneAllowancesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgPruneAllowancesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgPruneAllowancesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgGrantDIDAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgGrantDIDAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgGrantDIDAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Allowance != nil {\n\t\t{\n\t\t\tsize, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgGrantDIDAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgGrantDIDAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgGrantDIDAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgExpireDIDAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgExpireDIDAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgExpireDIDAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgExpireDIDAllowanceResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgExpireDIDAllowanceResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgExpireDIDAllowanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventGrantDIDAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventGrantDIDAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventGrantDIDAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventExpireDIDAllowance) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventExpireDIDAllowance) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventExpireDIDAllowance) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.GranteeDid) > 0 {\n\t\ti -= len(m.GranteeDid)\n\t\tcopy(dAtA[i:], m.GranteeDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.GranteeDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Granter) > 0 {\n\t\ti -= len(m.Granter)\n\t\tcopy(dAtA[i:], m.Granter)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Granter)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgPruneDIDAllowances) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgPruneDIDAllowances) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgPruneDIDAllowances) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Pruner) > 0 {\n\t\ti -= len(m.Pruner)\n\t\tcopy(dAtA[i:], m.Pruner)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Pruner)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgPruneDIDAllowancesResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgPruneDIDAllowancesResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgPruneDIDAllowancesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTx(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTx(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *MsgGrantAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgGrantAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgRevokeAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.Grantee)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRevokeAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgPruneAllowances) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Pruner)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgPruneAllowancesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgGrantDIDAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Allowance != nil {\n\t\tl = m.Allowance.Size()\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgGrantDIDAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgExpireDIDAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgExpireDIDAllowanceResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *EventGrantDIDAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *EventExpireDIDAllowance) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Granter)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.GranteeDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgPruneDIDAllowances) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Pruner)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgPruneDIDAllowancesResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc sovTx(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTx(x uint64) (n int) {\n\treturn sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *MsgGrantAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &types.Any{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgGrantAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRevokeAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRevokeAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRevokeAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Grantee\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Grantee = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRevokeAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRevokeAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRevokeAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgPruneAllowances) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneAllowances: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneAllowances: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pruner\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Pruner = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgPruneAllowancesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneAllowancesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgGrantDIDAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantDIDAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Allowance\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Allowance == nil {\n\t\t\t\tm.Allowance = &types.Any{}\n\t\t\t}\n\t\t\tif err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgGrantDIDAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgGrantDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgExpireDIDAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgExpireDIDAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgExpireDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgExpireDIDAllowanceResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgExpireDIDAllowanceResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgExpireDIDAllowanceResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventGrantDIDAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventGrantDIDAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventGrantDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventExpireDIDAllowance) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventExpireDIDAllowance: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventExpireDIDAllowance: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Granter\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Granter = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field GranteeDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.GranteeDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgPruneDIDAllowances) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneDIDAllowances: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneDIDAllowances: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pruner\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Pruner = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgPruneDIDAllowancesResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneDIDAllowancesResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgPruneDIDAllowancesResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTx(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTx\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTx\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTx\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTx        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTx          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTx = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/keeper/abci.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// EndBlocker checks for expired JWS tokens and marks them as invalid.\nfunc (k *Keeper) EndBlocker(ctx context.Context) error {\n\tdefer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker)\n\n\tif err := k.CheckAndUpdateExpiredTokens(ctx); err != nil {\n\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, telemetry.MetricKeyEndBlocker, err)\n\t\tk.Logger().Error(\"Failed to check and update expired JWS tokens\", \"error\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/keeper/chain_config.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// SetChainConfig sets the immutable chain config\n// specified at genesis\nfunc (k *Keeper) SetChainConfig(ctx context.Context, cfg types.ChainConfig) error {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := storeAdapter.Get(types.ChainConfigKey)\n\tif bz != nil {\n\t\treturn types.ErrConfigSet\n\t}\n\tbz = k.cdc.MustMarshal(&cfg)\n\tstoreAdapter.Set(types.ChainConfigKey, bz)\n\treturn nil\n}\n\nfunc (k *Keeper) GetChainConfig(ctx context.Context) types.ChainConfig {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := storeAdapter.Get(types.ChainConfigKey)\n\tif bz == nil {\n\t\treturn types.DefaultGenesis().ChainConfig\n\t}\n\tcfg := types.ChainConfig{}\n\tk.cdc.MustUnmarshal(bz, &cfg)\n\treturn cfg\n}\n"
  },
  {
    "path": "x/hub/keeper/chain_config_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc TestChainConfig_SetGetConfig_ReturnsSetConfig(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\tcfg := types.ChainConfig{\n\t\tAllowZeroFeeTxs:  true,\n\t\tIgnoreBearerAuth: true,\n\t}\n\terr := k.SetChainConfig(ctx, cfg)\n\trequire.NoError(t, err)\n\n\tgot := k.GetChainConfig(ctx)\n\n\trequire.Equal(t, cfg, got)\n}\n\nfunc TestChainConfig_SetWithConfigAlreadyInitialized_ReturnError(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\tcfg := types.ChainConfig{\n\t\tAllowZeroFeeTxs:  true,\n\t\tIgnoreBearerAuth: true,\n\t}\n\terr := k.SetChainConfig(ctx, cfg)\n\trequire.NoError(t, err)\n\n\tcfg2 := types.ChainConfig{\n\t\tAllowZeroFeeTxs:  false,\n\t\tIgnoreBearerAuth: true,\n\t}\n\terr = k.SetChainConfig(ctx, cfg2)\n\trequire.ErrorIs(t, err, types.ErrConfigSet)\n}\n\nfunc TestChainConfig_GetWhileNotSet_ReturnsDefaultConfig(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\tcfg := types.DefaultGenesis().ChainConfig\n\tgot := k.GetChainConfig(ctx)\n\trequire.Equal(t, cfg, got)\n}\n"
  },
  {
    "path": "x/hub/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nvar _ types.QueryServer = &Keeper{}\n"
  },
  {
    "path": "x/hub/keeper/ica_connection.go",
    "content": "package keeper\n\nimport (\n\t\"strings\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\ticatypes \"github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types\"\n\ttmtypes \"github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// icaConnectionStore returns a prefix store for ICA connections.\nfunc (k *Keeper) icaConnectionStore(ctx sdk.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, types.ICAConnectionKeyPrefix)\n}\n\n// SetICAConnection stores an ICA connection.\nfunc (k *Keeper) SetICAConnection(ctx sdk.Context, icaAddress, controllerAddress, controllerChainID, connectionID string) error {\n\tif icaAddress == \"\" {\n\t\treturn errorsmod.Wrap(types.ErrInvalidInput, \"ICA address cannot be empty\")\n\t}\n\n\tconnection := types.ICAConnection{\n\t\tIcaAddress:        icaAddress,\n\t\tControllerAddress: controllerAddress,\n\t\tControllerChainId: controllerChainID,\n\t\tConnectionId:      connectionID,\n\t}\n\n\tbz, err := k.cdc.Marshal(&connection)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"marshal ICA connection for address %s\", icaAddress)\n\t}\n\n\tstore := k.icaConnectionStore(ctx)\n\tstore.Set([]byte(icaAddress), bz)\n\treturn nil\n}\n\n// GetICAConnection retrieves an ICA connection by address.\nfunc (k *Keeper) GetICAConnection(ctx sdk.Context, icaAddress string) (types.ICAConnection, bool) {\n\tstore := k.icaConnectionStore(ctx)\n\tbz := store.Get([]byte(icaAddress))\n\tif bz == nil {\n\t\treturn types.ICAConnection{}, false\n\t}\n\n\tvar connection types.ICAConnection\n\tk.cdc.MustUnmarshal(bz, &connection)\n\n\treturn connection, true\n}\n\n// GetAllICAConnections retrieves all ICA connections.\nfunc (k *Keeper) GetAllICAConnections(ctx sdk.Context) []types.ICAConnection {\n\tvar connections []types.ICAConnection\n\n\tconnectionsCallback := func(icaAddress string, connection types.ICAConnection) {\n\t\tconnections = append(connections, connection)\n\t}\n\n\tk.mustIterateICAConnections(ctx, connectionsCallback)\n\n\treturn connections\n}\n\n// mustIterateICAConnections iterates over all ICA connections in the store and performs the provided callback function.\nfunc (k *Keeper) mustIterateICAConnections(ctx sdk.Context, cb func(icaAddress string, connection types.ICAConnection)) {\n\tstore := k.icaConnectionStore(ctx)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar connection types.ICAConnection\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &connection)\n\t\ticaAddress := string(iterator.Key())\n\t\tcb(icaAddress, connection)\n\t}\n}\n\n// HandleICAChannelOpen processes ICA channel opening and stores connection information.\nfunc (k *Keeper) HandleICAChannelOpen(\n\tctx sdk.Context,\n\tconnectionID, controllerPortID string,\n\ticaHostKeeper types.ICAHostKeeper,\n\tconnectionKeeper types.ConnectionKeeper,\n\tclientKeeper types.ClientKeeper,\n) error {\n\t// Get ICA address (should exist after OnChanOpenTry)\n\ticaAddr, found := icaHostKeeper.GetInterchainAccountAddress(ctx, connectionID, controllerPortID)\n\tif !found {\n\t\treturn errorsmod.Wrapf(\n\t\t\ttypes.ErrInvalidInput,\n\t\t\t\"ICA address not found for connection_id %s and controller_port_id %s\",\n\t\t\tconnectionID,\n\t\t\tcontrollerPortID,\n\t\t)\n\t}\n\n\t// Check if connection already exists to avoid duplicates\n\tif _, exists := k.GetICAConnection(ctx, icaAddr); exists {\n\t\treturn errorsmod.Wrapf(types.ErrInvalidInput, \"ICA connection already exists for ica_address %s\", icaAddr)\n\t}\n\n\t// Extract controller address from port ID (icacontroller-{address})\n\tif !strings.HasPrefix(controllerPortID, icatypes.ControllerPortPrefix) {\n\t\treturn errorsmod.Wrapf(\n\t\t\ttypes.ErrInvalidInput,\n\t\t\t\"invalid controller port ID prefix: %s, expected prefix: %s\",\n\t\t\tcontrollerPortID, icatypes.ControllerPortPrefix,\n\t\t)\n\t}\n\n\t// Get controller chain ID from connection\n\tconn, found := connectionKeeper.GetConnection(ctx, connectionID)\n\tif !found {\n\t\treturn errorsmod.Wrapf(types.ErrInvalidInput, \"connection not found: %s\", connectionID)\n\t}\n\n\tclientState, ok := clientKeeper.GetClientState(ctx, conn.ClientId)\n\tif !ok {\n\t\treturn errorsmod.Wrapf(types.ErrInvalidInput, \"client state not found: %s\", conn.ClientId)\n\t}\n\n\t// Extract chain ID from Tendermint client state\n\ttmClientState, ok := clientState.(*tmtypes.ClientState)\n\tif !ok {\n\t\treturn errorsmod.Wrapf(\n\t\t\ttypes.ErrInvalidInput,\n\t\t\t\"client state is not Tendermint type for client_id %s, got type %T\",\n\t\t\tconn.ClientId,\n\t\t\tclientState,\n\t\t)\n\t}\n\n\tcontrollerChainID := tmClientState.GetChainID()\n\tif controllerChainID == \"\" {\n\t\treturn errorsmod.Wrapf(types.ErrInvalidInput, \"controller chain ID is empty for client_id %s\", conn.ClientId)\n\t}\n\n\tcontrollerAddr := strings.TrimPrefix(controllerPortID, icatypes.ControllerPortPrefix)\n\tif err := k.SetICAConnection(ctx, icaAddr, controllerAddr, controllerChainID, connectionID); err != nil {\n\t\treturn errorsmod.Wrapf(err, \"failed to store ICA connection for ica_address %s\", icaAddr)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/keeper/ica_connection_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tconnectiontypes \"github.com/cosmos/ibc-go/v10/modules/core/03-connection/types\"\n\tibcexported \"github.com/cosmos/ibc-go/v10/modules/core/exported\"\n\ttmtypes \"github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype mockICAHostKeeper struct {\n\ticaAddress string\n\tfound      bool\n}\n\nfunc (m *mockICAHostKeeper) GetInterchainAccountAddress(ctx sdk.Context, connectionID, portID string) (string, bool) {\n\treturn m.icaAddress, m.found\n}\n\ntype mockConnectionKeeper struct {\n\tconnection connectiontypes.ConnectionEnd\n\tfound      bool\n}\n\nfunc (m *mockConnectionKeeper) GetConnection(ctx sdk.Context, connectionID string) (connectiontypes.ConnectionEnd, bool) {\n\treturn m.connection, m.found\n}\n\ntype mockClientKeeper struct {\n\tclientState ibcexported.ClientState\n\tfound       bool\n}\n\nfunc (m *mockClientKeeper) GetClientState(ctx sdk.Context, clientID string) (ibcexported.ClientState, bool) {\n\treturn m.clientState, m.found\n}\n\nfunc TestSetAndGetICAConnection(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\tcontrollerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tcontrollerChainID := \"shinzo-1\"\n\tconnectionID := \"connection-0\"\n\n\terr := k.SetICAConnection(ctx, icaAddress, controllerAddress, controllerChainID, connectionID)\n\trequire.NoError(t, err)\n\n\tconnection, found := k.GetICAConnection(ctx, icaAddress)\n\trequire.True(t, found)\n\trequire.Equal(t, icaAddress, connection.IcaAddress)\n\trequire.Equal(t, controllerAddress, connection.ControllerAddress)\n\trequire.Equal(t, controllerChainID, connection.ControllerChainId)\n\trequire.Equal(t, connectionID, connection.ConnectionId)\n}\n\nfunc TestGetICAConnectionNotFound(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\n\tconnection, found := k.GetICAConnection(ctx, icaAddress)\n\trequire.False(t, found)\n\trequire.Equal(t, types.ICAConnection{}, connection)\n}\n\nfunc TestGetAllICAConnections(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaAddress1 := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\tcontrollerAddress1 := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tcontrollerChainID1 := \"shinzo-1\"\n\tconnectionID1 := \"connection-0\"\n\n\ticaAddress2 := \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\"\n\tcontrollerAddress2 := \"shinzo1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\tcontrollerChainID2 := \"shinzo-2\"\n\tconnectionID2 := \"connection-1\"\n\n\terr := k.SetICAConnection(ctx, icaAddress1, controllerAddress1, controllerChainID1, connectionID1)\n\trequire.NoError(t, err)\n\terr = k.SetICAConnection(ctx, icaAddress2, controllerAddress2, controllerChainID2, connectionID2)\n\trequire.NoError(t, err)\n\n\tconnections := k.GetAllICAConnections(ctx)\n\trequire.Len(t, connections, 2)\n\n\tvar connection1, connection2 types.ICAConnection\n\tfor _, conn := range connections {\n\t\tif conn.IcaAddress == icaAddress1 {\n\t\t\tconnection1 = conn\n\t\t} else if conn.IcaAddress == icaAddress2 {\n\t\t\tconnection2 = conn\n\t\t}\n\t}\n\n\trequire.Equal(t, icaAddress1, connection1.IcaAddress)\n\trequire.Equal(t, controllerAddress1, connection1.ControllerAddress)\n\trequire.Equal(t, controllerChainID1, connection1.ControllerChainId)\n\trequire.Equal(t, connectionID1, connection1.ConnectionId)\n\n\trequire.Equal(t, icaAddress2, connection2.IcaAddress)\n\trequire.Equal(t, controllerAddress2, connection2.ControllerAddress)\n\trequire.Equal(t, controllerChainID2, connection2.ControllerChainId)\n\trequire.Equal(t, connectionID2, connection2.ConnectionId)\n}\n\nfunc TestMustIterateICAConnections(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\tcontrollerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tcontrollerChainID := \"shinzo-1\"\n\tconnectionID := \"connection-0\"\n\n\terr := k.SetICAConnection(ctx, icaAddress, controllerAddress, controllerChainID, connectionID)\n\trequire.NoError(t, err)\n\n\tcount := 0\n\tk.mustIterateICAConnections(ctx, func(iterIcaAddress string, connection types.ICAConnection) {\n\t\trequire.Equal(t, icaAddress, iterIcaAddress)\n\t\trequire.Equal(t, icaAddress, connection.IcaAddress)\n\t\trequire.Equal(t, controllerAddress, connection.ControllerAddress)\n\t\trequire.Equal(t, controllerChainID, connection.ControllerChainId)\n\t\trequire.Equal(t, connectionID, connection.ConnectionId)\n\t\tcount++\n\t})\n\n\trequire.Equal(t, 1, count)\n}\n\nfunc TestSetICAConnectionOverwrite(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaAddress := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\toriginalControllerAddress := \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\toriginalControllerChainID := \"shinzo-1\"\n\toriginalConnectionID := \"connection-0\"\n\n\tupdatedControllerAddress := \"shinzo1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\tupdatedControllerChainID := \"shinzo-2\"\n\tupdatedConnectionID := \"connection-1\"\n\n\t// Set original connection\n\terr := k.SetICAConnection(ctx, icaAddress, originalControllerAddress, originalControllerChainID, originalConnectionID)\n\trequire.NoError(t, err)\n\n\t// Overwrite with updated values\n\terr = k.SetICAConnection(ctx, icaAddress, updatedControllerAddress, updatedControllerChainID, updatedConnectionID)\n\trequire.NoError(t, err)\n\n\t// Verify updated values\n\tconnection, found := k.GetICAConnection(ctx, icaAddress)\n\trequire.True(t, found)\n\trequire.Equal(t, icaAddress, connection.IcaAddress)\n\trequire.Equal(t, updatedControllerAddress, connection.ControllerAddress)\n\trequire.Equal(t, updatedControllerChainID, connection.ControllerChainId)\n\trequire.Equal(t, updatedConnectionID, connection.ConnectionId)\n}\n\nfunc TestSetICAConnectionEmptyAddress(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\terr := k.SetICAConnection(ctx, \"\", \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\", \"shinzo-1\", \"connection-0\")\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"ICA address cannot be empty\")\n\n\t// Verify no connection was stored\n\tconnection, found := k.GetICAConnection(ctx, \"\")\n\trequire.False(t, found)\n\trequire.Equal(t, types.ICAConnection{}, connection)\n}\n\nfunc TestHandleICAChannelOpen(t *testing.T) {\n\tctx, k, _ := setupKeeper(t)\n\n\ticaHostKeeper := &mockICAHostKeeper{\n\t\ticaAddress: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\tfound:      true,\n\t}\n\n\tconnectionKeeper := &mockConnectionKeeper{\n\t\tconnection: connectiontypes.ConnectionEnd{\n\t\t\tClientId: \"07-tendermint-0\",\n\t\t},\n\t\tfound: true,\n\t}\n\n\tclientKeeper := &mockClientKeeper{\n\t\tclientState: &tmtypes.ClientState{\n\t\t\tChainId: \"shinzo-1\",\n\t\t},\n\t\tfound: true,\n\t}\n\n\tconnectionID := \"connection-0\"\n\tcontrollerPortID := \"icacontroller-source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\"\n\terr := k.HandleICAChannelOpen(ctx, connectionID, controllerPortID, icaHostKeeper, connectionKeeper, clientKeeper)\n\trequire.NoError(t, err)\n\n\t// Verify the connection was stored\n\tconnection, found := k.GetICAConnection(ctx, icaHostKeeper.icaAddress)\n\trequire.True(t, found)\n\trequire.Equal(t, icaHostKeeper.icaAddress, connection.IcaAddress)\n\trequire.Equal(t, \"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\", connection.ControllerAddress)\n\trequire.Equal(t, \"shinzo-1\", connection.ControllerChainId)\n\trequire.Equal(t, connectionID, connection.ConnectionId)\n}\n"
  },
  {
    "path": "x/hub/keeper/jws_token.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// jwsTokenStore returns the prefix store for JWS tokens.\nfunc (k *Keeper) jwsTokenStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, types.JWSTokenKeyPrefix)\n}\n\n// jwsTokenByDIDStore returns the prefix store for JWS tokens indexed by DID.\nfunc (k *Keeper) jwsTokenByDIDStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, types.JWSTokenByDIDKeyPrefix)\n}\n\n// jwsTokenByAccountStore returns the prefix store for JWS tokens indexed by account.\nfunc (k *Keeper) jwsTokenByAccountStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, types.JWSTokenByAccountKeyPrefix)\n}\n\n// SetJWSToken stores a JWS token record and updates secondary indices.\nfunc (k *Keeper) SetJWSToken(ctx context.Context, record *types.JWSTokenRecord) error {\n\tif record == nil {\n\t\treturn fmt.Errorf(\"JWS token record cannot be nil\")\n\t}\n\n\tif record.TokenHash == \"\" {\n\t\treturn fmt.Errorf(\"token hash cannot be empty\")\n\t}\n\n\tif record.IssuerDid == \"\" {\n\t\treturn fmt.Errorf(\"issuer DID cannot be empty\")\n\t}\n\n\t// Validate authorized account if provided\n\tif record.AuthorizedAccount != \"\" {\n\t\tif _, err := sdk.AccAddressFromBech32(record.AuthorizedAccount); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid authorized account address: %w\", err)\n\t\t}\n\t} else if !k.GetChainConfig(ctx).IgnoreBearerAuth {\n\t\treturn fmt.Errorf(\"authorized account is required when bearer auth is enabled\")\n\t}\n\n\tbz, err := k.cdc.Marshal(record)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to marshal JWS token record: %w\", err)\n\t}\n\n\tstore := k.jwsTokenStore(ctx)\n\tstore.Set([]byte(record.TokenHash), bz)\n\n\t// Store in DID index\n\tdidStore := k.jwsTokenByDIDStore(ctx)\n\tdidKey := types.JWSTokenByDIDKey(record.IssuerDid, record.TokenHash)\n\t// Remove the prefix since we're already in the DID prefix store\n\tdidKeyWithoutPrefix := didKey[len(types.JWSTokenByDIDKeyPrefix):]\n\tdidStore.Set(didKeyWithoutPrefix, []byte{0x01}) // Just a marker, actual data is in primary store\n\n\t// Store in account index only if authorized account is provided\n\tif record.AuthorizedAccount != \"\" {\n\t\taccountStore := k.jwsTokenByAccountStore(ctx)\n\t\taccountKey := types.JWSTokenByAccountKey(record.AuthorizedAccount, record.TokenHash)\n\t\t// Remove the prefix since we're already in the account prefix store\n\t\taccountKeyWithoutPrefix := accountKey[len(types.JWSTokenByAccountKeyPrefix):]\n\t\taccountStore.Set(accountKeyWithoutPrefix, []byte{0x01}) // Just a marker\n\t}\n\n\treturn nil\n}\n\n// GetJWSToken retrieves a JWS token record by its hash.\n// Returns the record and true if found, or nil and false if not found or unmarshal fails.\nfunc (k *Keeper) GetJWSToken(ctx context.Context, tokenHash string) (*types.JWSTokenRecord, bool) {\n\tstore := k.jwsTokenStore(ctx)\n\tbz := store.Get([]byte(tokenHash))\n\tif bz == nil {\n\t\treturn nil, false\n\t}\n\n\tvar record types.JWSTokenRecord\n\tif err := k.cdc.Unmarshal(bz, &record); err != nil {\n\t\tk.Logger().Error(\"failed to unmarshal JWS token record\", \"hash\", tokenHash, \"error\", err)\n\t\treturn nil, false\n\t}\n\n\treturn &record, true\n}\n\n// DeleteJWSToken removes a JWS token record and its indices.\nfunc (k *Keeper) DeleteJWSToken(ctx context.Context, tokenHash string) error {\n\t// First, get the record to access DID and account for index cleanup\n\trecord, found := k.GetJWSToken(ctx, tokenHash)\n\tif !found {\n\t\treturn fmt.Errorf(\"JWS token not found: %s\", tokenHash)\n\t}\n\n\t// Delete from primary store\n\tstore := k.jwsTokenStore(ctx)\n\tstore.Delete([]byte(tokenHash))\n\n\t// Delete from DID index\n\tdidStore := k.jwsTokenByDIDStore(ctx)\n\tdidKey := types.JWSTokenByDIDKey(record.IssuerDid, tokenHash)\n\tdidKeyWithoutPrefix := didKey[len(types.JWSTokenByDIDKeyPrefix):]\n\tdidStore.Delete(didKeyWithoutPrefix)\n\n\t// Delete from account index only if authorized account was provided\n\tif record.AuthorizedAccount != \"\" {\n\t\taccountStore := k.jwsTokenByAccountStore(ctx)\n\t\taccountKey := types.JWSTokenByAccountKey(record.AuthorizedAccount, tokenHash)\n\t\taccountKeyWithoutPrefix := accountKey[len(types.JWSTokenByAccountKeyPrefix):]\n\t\taccountStore.Delete(accountKeyWithoutPrefix)\n\t}\n\n\treturn nil\n}\n\n// IterateJWSTokens iterates over all JWS token records.\nfunc (k *Keeper) IterateJWSTokens(ctx context.Context, cb func(record *types.JWSTokenRecord) (stop bool)) error {\n\tstore := k.jwsTokenStore(ctx)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar record types.JWSTokenRecord\n\t\tif err := k.cdc.Unmarshal(iterator.Value(), &record); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to unmarshal JWS token record: %w\", err)\n\t\t}\n\n\t\tif cb(&record) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// GetJWSTokensByDID retrieves all JWS tokens for a specific DID.\nfunc (k *Keeper) GetJWSTokensByDID(ctx context.Context, did string) ([]*types.JWSTokenRecord, error) {\n\tvar records []*types.JWSTokenRecord\n\n\tdidStore := k.jwsTokenByDIDStore(ctx)\n\tprefix := types.JWSTokenDIDPrefix(did)\n\tprefixWithoutMain := prefix[len(types.JWSTokenByDIDKeyPrefix):]\n\n\titerator := storetypes.KVStorePrefixIterator(didStore, prefixWithoutMain)\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\t_, tokenHash, err := types.ParseJWSTokenByDIDKey(iterator.Key())\n\t\tif err != nil {\n\t\t\tk.Logger().Error(\"failed to parse JWS token by DID key\", \"error\", err)\n\t\t\tcontinue\n\t\t}\n\n\t\trecord, found := k.GetJWSToken(ctx, tokenHash)\n\t\tif found {\n\t\t\trecords = append(records, record)\n\t\t}\n\t}\n\n\treturn records, nil\n}\n\n// GetJWSTokensByAccount retrieves all JWS tokens for a specific authorized account.\nfunc (k *Keeper) GetJWSTokensByAccount(ctx context.Context, account string) ([]*types.JWSTokenRecord, error) {\n\tvar records []*types.JWSTokenRecord\n\n\taccountStore := k.jwsTokenByAccountStore(ctx)\n\tprefix := types.JWSTokenAccountPrefix(account)\n\tprefixWithoutMain := prefix[len(types.JWSTokenByAccountKeyPrefix):]\n\n\titerator := storetypes.KVStorePrefixIterator(accountStore, prefixWithoutMain)\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\t_, tokenHash, err := types.ParseJWSTokenByAccountKey(iterator.Key())\n\t\tif err != nil {\n\t\t\tk.Logger().Error(\"failed to parse JWS token by account key\", \"error\", err)\n\t\t\tcontinue\n\t\t}\n\n\t\trecord, found := k.GetJWSToken(ctx, tokenHash)\n\t\tif found {\n\t\t\trecords = append(records, record)\n\t\t}\n\t}\n\n\treturn records, nil\n}\n\n// GetAllJWSTokens retrieves all JWS token records.\nfunc (k *Keeper) GetAllJWSTokens(ctx context.Context) ([]*types.JWSTokenRecord, error) {\n\tvar records []*types.JWSTokenRecord\n\n\terr := k.IterateJWSTokens(ctx, func(record *types.JWSTokenRecord) bool {\n\t\trecords = append(records, record)\n\t\treturn false\n\t})\n\n\treturn records, err\n}\n\n// UpdateJWSTokenStatus updates the status of a JWS token.\nfunc (k *Keeper) UpdateJWSTokenStatus(ctx context.Context, tokenHash string, status types.JWSTokenStatus, invalidatedBy string) error {\n\tif tokenHash == \"\" {\n\t\treturn fmt.Errorf(\"token hash cannot be empty\")\n\t}\n\n\trecord, found := k.GetJWSToken(ctx, tokenHash)\n\tif !found {\n\t\treturn fmt.Errorf(\"JWS token not found: %s\", tokenHash)\n\t}\n\n\trecord.Status = status\n\n\tif status == types.JWSTokenStatus_STATUS_INVALID {\n\t\tnow := time.Now()\n\t\trecord.InvalidatedAt = &now\n\t\tif invalidatedBy != \"\" {\n\t\t\trecord.InvalidatedBy = invalidatedBy\n\t\t}\n\t}\n\n\treturn k.SetJWSToken(ctx, record)\n}\n\n// RecordJWSTokenUsage updates the last used timestamp for a JWS token.\nfunc (k *Keeper) RecordJWSTokenUsage(ctx context.Context, tokenHash string) error {\n\tif tokenHash == \"\" {\n\t\treturn fmt.Errorf(\"token hash cannot be empty\")\n\t}\n\n\trecord, found := k.GetJWSToken(ctx, tokenHash)\n\tif !found {\n\t\treturn fmt.Errorf(\"JWS token not found: %s\", tokenHash)\n\t}\n\n\tnow := time.Now()\n\tif record.FirstUsedAt == nil {\n\t\trecord.FirstUsedAt = &now\n\t}\n\trecord.LastUsedAt = &now\n\n\treturn k.SetJWSToken(ctx, record)\n}\n\n// CheckAndUpdateExpiredTokens iterates through all tokens and marks expired ones as invalid.\nfunc (k *Keeper) CheckAndUpdateExpiredTokens(ctx context.Context) error {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tcurrentTime := sdkCtx.BlockTime()\n\n\treturn k.IterateJWSTokens(ctx, func(record *types.JWSTokenRecord) bool {\n\t\t// Skip already invalid tokens\n\t\tif record.Status == types.JWSTokenStatus_STATUS_INVALID {\n\t\t\treturn false\n\t\t}\n\n\t\t// Check if token is expired\n\t\tif record.ExpiresAt.Before(currentTime) {\n\t\t\t// Mark as invalid\n\t\t\tif err := k.UpdateJWSTokenStatus(ctx, record.TokenHash, types.JWSTokenStatus_STATUS_INVALID, \"\"); err != nil {\n\t\t\t\tk.Logger().Error(\"failed to update expired token status\", \"hash\", record.TokenHash, \"error\", err)\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t})\n}\n\n// StoreOrUpdateJWSToken stores a new JWS token or updates an existing one.\n// This is the main method called from the ante handler.\nfunc (k *Keeper) StoreOrUpdateJWSToken(\n\tctx context.Context,\n\tbearerToken string,\n\tissuerDid string,\n\tauthorizedAccount string,\n\tissuedAt time.Time,\n\texpiresAt time.Time,\n) error {\n\ttokenHash := types.HashJWSToken(bearerToken)\n\n\t// Check if token already exists\n\t_, found := k.GetJWSToken(ctx, tokenHash)\n\tif found {\n\t\t// Token exists, update usage timestamp\n\t\treturn k.RecordJWSTokenUsage(ctx, tokenHash)\n\t}\n\n\t// Validate that new tokens aren't already expired\n\tif !expiresAt.IsZero() && expiresAt.Before(sdk.UnwrapSDKContext(ctx).BlockTime()) {\n\t\treturn fmt.Errorf(\"cannot create token with expiration time in the past\")\n\t}\n\n\t// Create new token record\n\tnow := time.Now()\n\trecord := &types.JWSTokenRecord{\n\t\tTokenHash:         tokenHash,\n\t\tBearerToken:       bearerToken,\n\t\tIssuerDid:         issuerDid,\n\t\tAuthorizedAccount: authorizedAccount,\n\t\tIssuedAt:          issuedAt,\n\t\tExpiresAt:         expiresAt,\n\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\tFirstUsedAt:       &now,\n\t\tLastUsedAt:        &now,\n\t}\n\n\treturn k.SetJWSToken(ctx, record)\n}\n"
  },
  {
    "path": "x/hub/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\ntype (\n\tKeeper struct {\n\t\tcdc          codec.BinaryCodec\n\t\tstoreService store.KVStoreService\n\t\tlogger       log.Logger\n\n\t\t// the address capable of executing a MsgUpdateParams message.\n\t\t// Typically, this should be the x/gov module account.\n\t\tauthority string\n\t}\n)\n\nfunc NewKeeper(\n\tcdc codec.BinaryCodec,\n\tstoreService store.KVStoreService,\n\tlogger log.Logger,\n\tauthority string,\n) Keeper {\n\tif _, err := sdk.AccAddressFromBech32(authority); err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid authority address: %s\", authority))\n\t}\n\n\treturn Keeper{\n\t\tcdc:          cdc,\n\t\tstoreService: storeService,\n\t\tauthority:    authority,\n\t\tlogger:       logger,\n\t}\n}\n\n// GetAuthority returns the module's authority.\nfunc (k *Keeper) GetAuthority() string {\n\treturn k.authority\n}\n\n// Logger returns a module-specific logger.\nfunc (k *Keeper) Logger() log.Logger {\n\treturn k.logger.With(\"module\", fmt.Sprintf(\"x/%s\", types.ModuleName))\n}\n"
  },
  {
    "path": "x/hub/keeper/keeper_common_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc setupKeeper(t testing.TB) (sdk.Context, Keeper, types.MsgServer) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\n\tsdkConfig := sdk.GetConfig()\n\tsdkConfig.SetBech32PrefixForAccount(\"source\", \"sourcepub\")\n\n\tk := NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\n\t// Initialize params\n\tif err := k.SetParams(ctx, types.DefaultParams()); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn ctx, k, &k\n}\n"
  },
  {
    "path": "x/hub/keeper/msg_invalidate_jws.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// InvalidateJWS handles the MsgInvalidateJWS message.\n// It allows a user to invalidate a JWS token if:\n// - The transaction has a JWS extension option with matching DID, or\n// - The message creator matches the token's authorized account.\nfunc (k *Keeper) InvalidateJWS(goCtx context.Context, req *types.MsgInvalidateJWS) (*types.MsgInvalidateJWSResponse, error) {\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\t// Get the JWS token record\n\trecord, found := k.GetJWSToken(goCtx, req.TokenHash)\n\tif !found {\n\t\treturn nil, errorsmod.Wrapf(types.ErrJWSTokenNotFound, \"token hash: %s\", req.TokenHash)\n\t}\n\n\t// Check if token is already invalid\n\tif record.Status == types.JWSTokenStatus_STATUS_INVALID {\n\t\treturn nil, errorsmod.Wrapf(types.ErrJWSTokenAlreadyInvalid, \"token hash: %s\", req.TokenHash)\n\t}\n\n\t// Get the DID from the context\n\textractedDID := \"\"\n\tif did, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok {\n\t\textractedDID = did\n\t}\n\n\t// Check authorization\n\tauthorized := false\n\n\tif extractedDID != \"\" && extractedDID == record.IssuerDid {\n\t\t// Authorization via matching DID\n\t\tauthorized = true\n\t} else if req.Creator == record.AuthorizedAccount {\n\t\t// Authorization via matching creator account\n\t\tauthorized = true\n\t}\n\n\tif !authorized {\n\t\treturn nil, errorsmod.Wrapf(\n\t\t\ttypes.ErrUnauthorizedInvalidation,\n\t\t\t\"creator %s is not authorized to invalidate token for DID %s and account %s\",\n\t\t\treq.Creator,\n\t\t\trecord.IssuerDid,\n\t\t\trecord.AuthorizedAccount,\n\t\t)\n\t}\n\n\t// Update token status to invalid\n\tif err := k.UpdateJWSTokenStatus(goCtx, req.TokenHash, types.JWSTokenStatus_STATUS_INVALID, req.Creator); err != nil {\n\t\treturn nil, errorsmod.Wrap(types.ErrFailedToInvalidateToken, err.Error())\n\t}\n\n\tif err := ctx.EventManager().EmitTypedEvent(&types.EventJWSTokenInvalidated{\n\t\tTokenHash:         req.TokenHash,\n\t\tIssuerDid:         record.IssuerDid,\n\t\tAuthorizedAccount: record.AuthorizedAccount,\n\t\tInvalidatedBy:     req.Creator,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgInvalidateJWSResponse{Success: true}, nil\n}\n"
  },
  {
    "path": "x/hub/keeper/msg_invalidate_jws_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc TestMsgInvalidateJWS(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tissuerDID := \"did:example:alice\"\n\tissuerDID2 := \"did:example:bob\"\n\tauthorizedAccount := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tunauthorizedAccount := \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n\tbearerToken1 := \"test.bearer.token1\"\n\tbearerToken2 := \"test.bearer.token2\"\n\tbearerToken3 := \"test.bearer.token3\"\n\tbearerToken4 := \"test.bearer.token4\"\n\ttokenHash1 := types.HashJWSToken(bearerToken1)\n\ttokenHash2 := types.HashJWSToken(bearerToken2)\n\ttokenHash3 := types.HashJWSToken(bearerToken3)\n\ttokenHash4 := types.HashJWSToken(bearerToken4)\n\n\t// Store valid tokens\n\terr := k.StoreOrUpdateJWSToken(\n\t\tsdkCtx,\n\t\tbearerToken1,\n\t\tissuerDID,\n\t\tauthorizedAccount,\n\t\ttime.Now(),\n\t\ttime.Now().Add(1*time.Hour),\n\t)\n\trequire.NoError(t, err)\n\n\terr = k.StoreOrUpdateJWSToken(\n\t\tsdkCtx,\n\t\tbearerToken2,\n\t\tissuerDID2,\n\t\tauthorizedAccount,\n\t\ttime.Now(),\n\t\ttime.Now().Add(1*time.Hour),\n\t)\n\trequire.NoError(t, err)\n\n\terr = k.StoreOrUpdateJWSToken(\n\t\tsdkCtx,\n\t\tbearerToken3,\n\t\tissuerDID,\n\t\tauthorizedAccount,\n\t\ttime.Now(),\n\t\ttime.Now().Add(1*time.Hour),\n\t)\n\trequire.NoError(t, err)\n\n\terr = k.StoreOrUpdateJWSToken(\n\t\tsdkCtx,\n\t\tbearerToken4,\n\t\tissuerDID,\n\t\tauthorizedAccount,\n\t\ttime.Now(),\n\t\ttime.Now().Add(1*time.Hour),\n\t)\n\trequire.NoError(t, err)\n\n\t// Mark token3 as invalid\n\terr = k.UpdateJWSTokenStatus(sdkCtx, tokenHash3, types.JWSTokenStatus_STATUS_INVALID, \"someone\")\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\tname       string\n\t\tsetupCtx   func(sdk.Context) sdk.Context\n\t\tinput      *types.MsgInvalidateJWS\n\t\texpErr     bool\n\t\texpErrMsg  string\n\t\tverifyFunc func(*testing.T, *types.MsgInvalidateJWSResponse)\n\t}{\n\t\t{\n\t\t\tname: \"valid - authorized account invalidates token\",\n\t\t\tsetupCtx: func(ctx sdk.Context) sdk.Context {\n\t\t\t\treturn ctx\n\t\t\t},\n\t\t\tinput: &types.MsgInvalidateJWS{\n\t\t\t\tCreator:   authorizedAccount,\n\t\t\t\tTokenHash: tokenHash1,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t\tverifyFunc: func(t *testing.T, resp *types.MsgInvalidateJWSResponse) {\n\t\t\t\trequire.True(t, resp.Success)\n\t\t\t\trecord, found := k.GetJWSToken(sdkCtx, tokenHash1)\n\t\t\t\trequire.True(t, found)\n\t\t\t\trequire.Equal(t, types.JWSTokenStatus_STATUS_INVALID, record.Status)\n\t\t\t\trequire.Equal(t, authorizedAccount, record.InvalidatedBy)\n\t\t\t\trequire.NotNil(t, record.InvalidatedAt)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"valid - matching DID in context invalidates token\",\n\t\t\tsetupCtx: func(ctx sdk.Context) sdk.Context {\n\t\t\t\treturn ctx.WithValue(appparams.ExtractedDIDContextKey, issuerDID2)\n\t\t\t},\n\t\t\tinput: &types.MsgInvalidateJWS{\n\t\t\t\tCreator:   unauthorizedAccount,\n\t\t\t\tTokenHash: tokenHash2,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t\tverifyFunc: func(t *testing.T, resp *types.MsgInvalidateJWSResponse) {\n\t\t\t\trequire.True(t, resp.Success)\n\t\t\t\trecord, found := k.GetJWSToken(sdkCtx, tokenHash2)\n\t\t\t\trequire.True(t, found)\n\t\t\t\trequire.Equal(t, types.JWSTokenStatus_STATUS_INVALID, record.Status)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid - token not found\",\n\t\t\tsetupCtx: func(ctx sdk.Context) sdk.Context {\n\t\t\t\treturn ctx\n\t\t\t},\n\t\t\tinput: &types.MsgInvalidateJWS{\n\t\t\t\tCreator:   authorizedAccount,\n\t\t\t\tTokenHash: \"nonexistenthash\",\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"token not found\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid - token already invalid\",\n\t\t\tsetupCtx: func(ctx sdk.Context) sdk.Context {\n\t\t\t\treturn ctx\n\t\t\t},\n\t\t\tinput: &types.MsgInvalidateJWS{\n\t\t\t\tCreator:   authorizedAccount,\n\t\t\t\tTokenHash: tokenHash3,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"already invalid\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid - unauthorized (neither DID nor account matches)\",\n\t\t\tsetupCtx: func(ctx sdk.Context) sdk.Context {\n\t\t\t\treturn ctx.WithValue(appparams.ExtractedDIDContextKey, \"did:example:different\")\n\t\t\t},\n\t\t\tinput: &types.MsgInvalidateJWS{\n\t\t\t\tCreator:   unauthorizedAccount,\n\t\t\t\tTokenHash: tokenHash4,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"not authorized to invalidate\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\ttestCtx := tc.setupCtx(sdkCtx)\n\n\t\t\tresp, err := ms.InvalidateJWS(testCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\trequire.Nil(t, resp)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\t\t\t\tif tc.verifyFunc != nil {\n\t\t\t\t\ttc.verifyFunc(t, resp)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgInvalidateJWS_Idempotency(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tissuerDID := \"did:example:charlie\"\n\tauthorizedAccount := \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\"\n\tbearerToken := \"test.bearer.charlie\"\n\ttokenHash := types.HashJWSToken(bearerToken)\n\n\terr := k.StoreOrUpdateJWSToken(\n\t\tsdkCtx,\n\t\tbearerToken,\n\t\tissuerDID,\n\t\tauthorizedAccount,\n\t\ttime.Now(),\n\t\ttime.Now().Add(1*time.Hour),\n\t)\n\trequire.NoError(t, err)\n\n\tmsg := &types.MsgInvalidateJWS{\n\t\tCreator:   authorizedAccount,\n\t\tTokenHash: tokenHash,\n\t}\n\n\t// First invalidation should succeed\n\tresp, err := ms.InvalidateJWS(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.True(t, resp.Success)\n\n\t// Second attempt should fail cause it is already invalid\n\tresp, err = ms.InvalidateJWS(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"already invalid\")\n\trequire.Nil(t, resp)\n}\n"
  },
  {
    "path": "x/hub/keeper/msg_server.go",
    "content": "package keeper\n\nimport (\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nvar _ types.MsgServer = &Keeper{}\n"
  },
  {
    "path": "x/hub/keeper/msg_server_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc setupMsgServer(t testing.TB) (keeper.Keeper, types.MsgServer, context.Context) {\n\tk, ctx := keepertest.HubKeeper(t)\n\treturn k, &k, ctx\n}\n\nfunc TestMsgServer(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\trequire.NotNil(t, ms)\n\trequire.NotNil(t, ctx)\n\trequire.NotEmpty(t, k)\n}\n"
  },
  {
    "path": "x/hub/keeper/msg_update_params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc (k *Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {\n\tif k.GetAuthority() != req.Authority {\n\t\treturn nil, errorsmod.Wrapf(types.ErrInvalidSigner, \"invalid authority; expected %s, got %s\", k.GetAuthority(), req.Authority)\n\t}\n\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\tif err := k.SetParams(ctx, req.Params); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &types.MsgUpdateParamsResponse{}, nil\n}\n"
  },
  {
    "path": "x/hub/keeper/msg_update_params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc TestMsgUpdateParams(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, params))\n\twctx := sdk.UnwrapSDKContext(ctx)\n\n\t// default params\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateParams\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"invalid authority\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: \"invalid\",\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid authority\",\n\t\t},\n\t\t{\n\t\t\tname: \"send enabled param\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    types.Params{},\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"all good\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, err := ms.UpdateParams(wctx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/hub/keeper/params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// GetParams get all parameters as types.Params.\nfunc (k Keeper) GetParams(ctx context.Context) (params types.Params) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.ParamsKey)\n\tif bz == nil {\n\t\treturn params\n\t}\n\n\tk.cdc.MustUnmarshal(bz, &params)\n\treturn params\n}\n\n// SetParams set the params.\nfunc (k Keeper) SetParams(ctx context.Context, params types.Params) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := k.cdc.Marshal(&params)\n\tif err != nil {\n\t\treturn err\n\t}\n\tstore.Set(types.ParamsKey, bz)\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/keeper/params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc TestGetParams(t *testing.T) {\n\tk, ctx := keepertest.HubKeeper(t)\n\tparams := types.DefaultParams()\n\n\trequire.NoError(t, k.SetParams(ctx, params))\n\trequire.EqualValues(t, params, k.GetParams(ctx))\n}\n"
  },
  {
    "path": "x/hub/keeper/query_params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc (k *Keeper) Params(goCtx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\tctx := sdk.UnwrapSDKContext(goCtx)\n\n\treturn &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil\n}\n"
  },
  {
    "path": "x/hub/keeper/query_params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nfunc TestParamsQuery(t *testing.T) {\n\tkeeper, ctx := keepertest.HubKeeper(t)\n\tparams := types.DefaultParams()\n\trequire.NoError(t, keeper.SetParams(ctx, params))\n\n\tresponse, err := keeper.Params(ctx, &types.QueryParamsRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryParamsResponse{Params: params}, response)\n}\n"
  },
  {
    "path": "x/hub/module/autocli.go",
    "content": "package hub\n\nimport (\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/hub\"\n)\n\n// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: modulev1.Query_ServiceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Params\",\n\t\t\t\t\tUse:       \"params\",\n\t\t\t\t\tShort:     \"Shows the parameters of the module\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tTx: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService:              modulev1.Msg_ServiceDesc.ServiceName,\n\t\t\tEnhanceCustomCommand: true, // only required if you want to use the custom command\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"UpdateParams\",\n\t\t\t\t\tSkip:      true, // skipped because authority gated\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/hub/module/genesis.go",
    "content": "package hub\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// InitGenesis initializes the module's state from a provided genesis state.\nfunc InitGenesis(ctx sdk.Context, k *keeper.Keeper, genState types.GenesisState) {\n\tif err := k.SetParams(ctx, genState.Params); err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Initialize ica connections\n\tfor _, icaConnection := range genState.IcaConnections {\n\t\tif err := k.SetICAConnection(\n\t\t\tctx,\n\t\t\ticaConnection.IcaAddress,\n\t\t\ticaConnection.ControllerAddress,\n\t\t\ticaConnection.ControllerChainId,\n\t\t\ticaConnection.ConnectionId,\n\t\t); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\t// Initialize JWS tokens\n\tfor i := range genState.JwsTokens {\n\t\tif err := k.SetJWSToken(ctx, &genState.JwsTokens[i]); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tif err := k.SetChainConfig(ctx, genState.ChainConfig); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ExportGenesis returns the module's exported genesis.\nfunc ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState {\n\tgenesis := types.DefaultGenesis()\n\tgenesis.Params = k.GetParams(ctx)\n\n\t// Export ica connections\n\tgenesis.IcaConnections = k.GetAllICAConnections(ctx)\n\n\t// Export JWS tokens\n\tjwsTokens, err := k.GetAllJWSTokens(ctx)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tgenesis.JwsTokens = make([]types.JWSTokenRecord, 0, len(jwsTokens))\n\tfor _, token := range jwsTokens {\n\t\tif token != nil {\n\t\t\tgenesis.JwsTokens = append(genesis.JwsTokens, *token)\n\t\t}\n\t}\n\n\tgenesis.ChainConfig = k.GetChainConfig(ctx)\n\n\treturn genesis\n}\n"
  },
  {
    "path": "x/hub/module/genesis_test.go",
    "content": "package hub_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/nullify\"\n\thub \"github.com/sourcenetwork/sourcehub/x/hub/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesis(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t\tControllerAddress: \"shinzo1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-0\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tControllerAddress: \"shinzo18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tControllerAddress: \"shinzo1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, len(genesisState.IcaConnections), len(got.IcaConnections))\n\n\tfor i, connection := range genesisState.IcaConnections {\n\t\trequire.Equal(t, connection.IcaAddress, got.IcaConnections[i].IcaAddress)\n\t\trequire.Equal(t, connection.ControllerAddress, got.IcaConnections[i].ControllerAddress)\n\t\trequire.Equal(t, connection.ControllerChainId, got.IcaConnections[i].ControllerChainId)\n\t\trequire.Equal(t, connection.ConnectionId, got.IcaConnections[i].ConnectionId)\n\t}\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithEmptyIcaConnections(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams:         types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, 0, len(got.IcaConnections))\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithMultipleIdenticalIcaConnections(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tControllerAddress: \"shinzo1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-0\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tControllerAddress: \"shinzo1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-1\",\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\t// Multiple connections with identical ICA addresses should overwrite each other\n\trequire.Equal(t, 1, len(got.IcaConnections))\n\trequire.Equal(t, \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\", got.IcaConnections[0].IcaAddress)\n\trequire.Equal(t, \"shinzo1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\", got.IcaConnections[0].ControllerAddress)\n\trequire.Equal(t, \"connection-1\", got.IcaConnections[0].ConnectionId)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithDifferentChainIds(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t\tControllerAddress: \"shinzo1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-0\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tControllerAddress: \"cosmos1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\",\n\t\t\t\tControllerChainId: \"cosmoshub-4\",\n\t\t\t\tConnectionId:      \"connection-1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tControllerAddress: \"osmosis1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\",\n\t\t\t\tControllerChainId: \"osmosis-1\",\n\t\t\t\tConnectionId:      \"connection-2\",\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, len(genesisState.IcaConnections), len(got.IcaConnections))\n\n\t// Verify all connections are preserved with different chain IDs\n\tfor i, connection := range genesisState.IcaConnections {\n\t\trequire.Equal(t, connection.IcaAddress, got.IcaConnections[i].IcaAddress)\n\t\trequire.Equal(t, connection.ControllerAddress, got.IcaConnections[i].ControllerAddress)\n\t\trequire.Equal(t, connection.ControllerChainId, got.IcaConnections[i].ControllerChainId)\n\t\trequire.Equal(t, connection.ConnectionId, got.IcaConnections[i].ConnectionId)\n\t}\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithEmptyStrings(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{\n\t\t\t{\n\t\t\t\tIcaAddress:        \"\",\n\t\t\t\tControllerAddress: \"\",\n\t\t\t\tControllerChainId: \"\",\n\t\t\t\tConnectionId:      \"\",\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\n\t// Genesis initialization should panic with invalid ICA connections\n\trequire.Panics(t, func() {\n\t\thub.InitGenesis(ctx, &k, genesisState)\n\t})\n}\n\nfunc TestGenesisWithJWSTokens(t *testing.T) {\n\tnow := time.Now()\n\tlater := now.Add(24 * time.Hour)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tJwsTokens: []types.JWSTokenRecord{\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash1\",\n\t\t\t\tBearerToken:       \"token1\",\n\t\t\t\tIssuerDid:         \"did:key:alice\",\n\t\t\t\tAuthorizedAccount: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash2\",\n\t\t\t\tBearerToken:       \"token2\",\n\t\t\t\tIssuerDid:         \"did:key:bob\",\n\t\t\t\tAuthorizedAccount: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash3\",\n\t\t\t\tBearerToken:       \"token3\",\n\t\t\t\tIssuerDid:         \"did:key:charlie\",\n\t\t\t\tAuthorizedAccount: \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_INVALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t\tInvalidatedAt:     &now,\n\t\t\t\tInvalidatedBy:     \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, len(genesisState.JwsTokens), len(got.JwsTokens))\n\n\t// Verify all tokens are preserved\n\tfor i, token := range genesisState.JwsTokens {\n\t\trequire.Equal(t, token.TokenHash, got.JwsTokens[i].TokenHash)\n\t\trequire.Equal(t, token.BearerToken, got.JwsTokens[i].BearerToken)\n\t\trequire.Equal(t, token.IssuerDid, got.JwsTokens[i].IssuerDid)\n\t\trequire.Equal(t, token.AuthorizedAccount, got.JwsTokens[i].AuthorizedAccount)\n\t\trequire.Equal(t, token.Status, got.JwsTokens[i].Status)\n\t\trequire.Equal(t, token.IssuedAt.Unix(), got.JwsTokens[i].IssuedAt.Unix())\n\t\trequire.Equal(t, token.ExpiresAt.Unix(), got.JwsTokens[i].ExpiresAt.Unix())\n\t}\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestGenesisWithEmptyJWSTokens(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams:    types.DefaultParams(),\n\t\tJwsTokens: []types.JWSTokenRecord{},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, 0, len(got.JwsTokens))\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestGenesisWithInvalidJWSToken(t *testing.T) {\n\tnow := time.Now()\n\tlater := now.Add(24 * time.Hour)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tJwsTokens: []types.JWSTokenRecord{\n\t\t\t{\n\t\t\t\tTokenHash:         \"\",\n\t\t\t\tBearerToken:       \"token1\",\n\t\t\t\tIssuerDid:         \"did:key:alice\",\n\t\t\t\tAuthorizedAccount: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\n\t// Should panic with empty token hash\n\trequire.Panics(t, func() {\n\t\thub.InitGenesis(ctx, &k, genesisState)\n\t})\n}\n\nfunc TestGenesisWithMultipleTokensSameDID(t *testing.T) {\n\tnow := time.Now()\n\tlater := now.Add(24 * time.Hour)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tJwsTokens: []types.JWSTokenRecord{\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash1\",\n\t\t\t\tBearerToken:       \"token1\",\n\t\t\t\tIssuerDid:         \"did:key:alice\",\n\t\t\t\tAuthorizedAccount: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t},\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash2\",\n\t\t\t\tBearerToken:       \"token2\",\n\t\t\t\tIssuerDid:         \"did:key:alice\",\n\t\t\t\tAuthorizedAccount: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\n\trequire.NotNil(t, got)\n\trequire.Equal(t, 2, len(got.JwsTokens))\n\n\t// Both tokens should be preserved (different hashes)\n\ttokenHashes := make(map[string]bool)\n\tfor _, token := range got.JwsTokens {\n\t\ttokenHashes[token.TokenHash] = true\n\t}\n\trequire.True(t, tokenHashes[\"hash1\"])\n\trequire.True(t, tokenHashes[\"hash2\"])\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestGenesisWithJWSTokensAndICAConnections(t *testing.T) {\n\tnow := time.Now()\n\tlater := now.Add(24 * time.Hour)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tIcaConnections: []types.ICAConnection{\n\t\t\t{\n\t\t\t\tIcaAddress:        \"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\",\n\t\t\t\tControllerAddress: \"shinzo1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tControllerChainId: \"shinzo-1\",\n\t\t\t\tConnectionId:      \"connection-0\",\n\t\t\t},\n\t\t},\n\t\tJwsTokens: []types.JWSTokenRecord{\n\t\t\t{\n\t\t\t\tTokenHash:         \"hash1\",\n\t\t\t\tBearerToken:       \"token1\",\n\t\t\t\tIssuerDid:         \"did:key:alice\",\n\t\t\t\tAuthorizedAccount: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tIssuedAt:          now,\n\t\t\t\tExpiresAt:         later,\n\t\t\t\tStatus:            types.JWSTokenStatus_STATUS_VALID,\n\t\t\t\tFirstUsedAt:       &now,\n\t\t\t\tLastUsedAt:        &now,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.HubKeeper(t)\n\thub.InitGenesis(ctx, &k, genesisState)\n\tgot := hub.ExportGenesis(ctx, &k)\n\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, 1, len(got.IcaConnections))\n\trequire.Equal(t, 1, len(got.JwsTokens))\n\n\t// Verify ICA connection\n\trequire.Equal(t, genesisState.IcaConnections[0].IcaAddress, got.IcaConnections[0].IcaAddress)\n\n\t// Verify JWS token\n\trequire.Equal(t, genesisState.JwsTokens[0].TokenHash, got.JwsTokens[0].TokenHash)\n\trequire.Equal(t, genesisState.JwsTokens[0].IssuerDid, got.JwsTokens[0].IssuerDid)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n"
  },
  {
    "path": "x/hub/module/module.go",
    "content": "package hub\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\n\tmodulev1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/hub/module\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\nvar (\n\t_ module.AppModuleBasic      = (*AppModule)(nil)\n\t_ module.AppModuleSimulation = (*AppModule)(nil)\n\t_ module.HasGenesis          = (*AppModule)(nil)\n\t_ module.HasInvariants       = (*AppModule)(nil)\n\t_ module.HasConsensusVersion = (*AppModule)(nil)\n\n\t_ appmodule.AppModule       = (*AppModule)(nil)\n\t_ appmodule.HasBeginBlocker = (*AppModule)(nil)\n\t_ appmodule.HasEndBlocker   = (*AppModule)(nil)\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic implements the AppModuleBasic interface that defines the\n// independent methods a Cosmos SDK module needs to implement.\ntype AppModuleBasic struct {\n\tcdc codec.BinaryCodec\n}\n\nfunc NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic {\n\treturn AppModuleBasic{cdc: cdc}\n}\n\n// Name returns the name of the module as a string.\nfunc (AppModuleBasic) Name() string {\n\treturn types.ModuleName\n}\n\n// RegisterLegacyAminoCodec registers the amino codec for the module, which is used\n// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore.\nfunc (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}\n\n// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message.\nfunc (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {\n\ttypes.RegisterInterfaces(reg)\n}\n\n// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage.\n// The default GenesisState need to be defined by the module developer and is primarily used for testing.\nfunc (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(types.DefaultGenesis())\n}\n\n// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form.\nfunc (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {\n\tvar genState types.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &genState); err != nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal %s genesis state: %w\", types.ModuleName, err)\n\t}\n\treturn genState.Validate()\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.\nfunc (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {\n\tif err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement.\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper        *keeper.Keeper\n\taccountKeeper types.AccountKeeper\n\tbankKeeper    types.BankKeeper\n}\n\nfunc NewAppModule(\n\tcdc codec.Codec,\n\tkeeper *keeper.Keeper,\n\taccountKeeper types.AccountKeeper,\n\tbankKeeper types.BankKeeper,\n) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: NewAppModuleBasic(cdc),\n\t\tkeeper:         keeper,\n\t\taccountKeeper:  accountKeeper,\n\t\tbankKeeper:     bankKeeper,\n\t}\n}\n\n// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries.\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\t// Inject instrumentation into msg service handler\n\tdescriptor := metrics.WrapMsgServerServiceDescriptor(types.ModuleName, types.Msg_serviceDesc)\n\tcfg.MsgServer().RegisterService(&descriptor, am.keeper)\n\n\t// Inject instrumentation into query service handler\n\tdescriptor = metrics.WrapQueryServiceDescriptor(types.ModuleName, types.Query_serviceDesc)\n\tcfg.QueryServer().RegisterService(&descriptor, am.keeper)\n}\n\n// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted)\nfunc (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}\n\n// InitGenesis performs the module's genesis initialization. It returns no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) {\n\tvar genState types.GenesisState\n\t// Initialize global index to index in genesis state\n\tcdc.MustUnmarshalJSON(gs, &genState)\n\n\tInitGenesis(ctx, am.keeper, genState)\n}\n\n// ExportGenesis returns the module's exported genesis state as raw JSON bytes.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgenState := ExportGenesis(ctx, am.keeper)\n\treturn cdc.MustMarshalJSON(genState)\n}\n\n// ConsensusVersion is a sequence number for state-breaking change of the module.\n// It should be incremented on each consensus-breaking change introduced by the module.\n// To avoid wrong/empty versions, the initial version should be set to 1.\nfunc (AppModule) ConsensusVersion() uint64 { return 1 }\n\n// BeginBlock contains the logic that is automatically triggered at the beginning of each block.\n// The begin block implementation is optional.\nfunc (am AppModule) BeginBlock(_ context.Context) error {\n\treturn nil\n}\n\n// EndBlock contains the logic that is automatically triggered at the end of each block.\n// The end block implementation is optional.\nfunc (am AppModule) EndBlock(ctx context.Context) error {\n\treturn am.keeper.EndBlocker(ctx)\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// ----------------------------------------------------------------------------\n// App Wiring Setup\n// ----------------------------------------------------------------------------\n\nfunc init() {\n\tappmodule.Register(\n\t\t&modulev1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t)\n}\n\ntype ModuleInputs struct {\n\tdepinject.In\n\n\tStoreService store.KVStoreService\n\tCdc          codec.Codec\n\tConfig       *modulev1.Module\n\tLogger       log.Logger\n\n\tAccountKeeper types.AccountKeeper\n\tBankKeeper    types.BankKeeper\n}\n\ntype ModuleOutputs struct {\n\tdepinject.Out\n\n\tHubKeeper *keeper.Keeper\n\tModule    appmodule.AppModule\n}\n\nfunc ProvideModule(in ModuleInputs) ModuleOutputs {\n\t// default to governance authority if not provided\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tif in.Config.Authority != \"\" {\n\t\tauthority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)\n\t}\n\tk := keeper.NewKeeper(\n\t\tin.Cdc,\n\t\tin.StoreService,\n\t\tin.Logger,\n\t\tauthority.String(),\n\t)\n\tm := NewAppModule(\n\t\tin.Cdc,\n\t\t&k,\n\t\tin.AccountKeeper,\n\t\tin.BankKeeper,\n\t)\n\n\treturn ModuleOutputs{HubKeeper: &k, Module: m}\n}\n"
  },
  {
    "path": "x/hub/module/simulation.go",
    "content": "package hub\n\nimport (\n\t\"math/rand\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\ticasimulation \"github.com/sourcenetwork/sourcehub/x/hub/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// avoid unused import issue\nvar (\n\t_ = icasimulation.FindAccount\n\t_ = rand.Rand{}\n\t_ = sample.AccAddress\n\t_ = sdk.AccAddress{}\n\t_ = simulation.MsgEntryKind\n)\n\n// GenerateGenesisState creates a randomized GenState of the module.\nfunc (AppModule) GenerateGenesisState(simState *module.SimulationState) {\n\taccs := make([]string, len(simState.Accounts))\n\tfor i, acc := range simState.Accounts {\n\t\taccs[i] = acc.Address.String()\n\t}\n\ticaGenesis := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t}\n\tsimState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&icaGenesis)\n}\n\n// RegisterStoreDecoder registers a decoder.\nfunc (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {}\n\n// WeightedOperations returns the all the gov module operations with their respective weights.\nfunc (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation {\n\toperations := make([]simtypes.WeightedOperation, 0)\n\treturn operations\n}\n\n// ProposalMsgs returns msgs used for governance proposals for simulations.\nfunc (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg {\n\treturn []simtypes.WeightedProposalMsg{}\n}\n"
  },
  {
    "path": "x/hub/simulation/helpers.go",
    "content": "package simulation\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\n// FindAccount find a specific address from an account list.\nfunc FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) {\n\tcreator, err := sdk.AccAddressFromBech32(address)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn simtypes.FindAccount(accs, creator)\n}\n"
  },
  {
    "path": "x/hub/testutil/hub_keeper.go",
    "content": "package testutil\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n)\n\n// HubKeeperStub is a stub implementation of the ICA keeper for testing.\ntype HubKeeperStub struct {\n\tconnections map[string]types.ICAConnection\n}\n\nfunc NewHubKeeperStub() *HubKeeperStub {\n\treturn &HubKeeperStub{\n\t\tconnections: make(map[string]types.ICAConnection),\n\t}\n}\n\nfunc (iks *HubKeeperStub) GetICAConnection(ctx sdk.Context, icaAddress string) (types.ICAConnection, bool) {\n\tconnection, found := iks.connections[icaAddress]\n\treturn connection, found\n}\n\nfunc (iks *HubKeeperStub) SetICAConnection(ctx sdk.Context, icaAddress, controllerAddress, controllerChainID, connectionID string) error {\n\tiks.connections[icaAddress] = types.ICAConnection{\n\t\tIcaAddress:        icaAddress,\n\t\tControllerAddress: controllerAddress,\n\t\tControllerChainId: controllerChainID,\n\t\tConnectionId:      connectionID,\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/types/chain_config.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/chain_config.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// ChainConfig specifies flags and parameters which\n// tune the chain behavior during genesis creation\ntype ChainConfig struct {\n\t// allow_zero_fee_txs if true configures the ante handler\n\t// to not reject txs with 0 fees\n\tAllowZeroFeeTxs bool `protobuf:\"varint,1,opt,name=allow_zero_fee_txs,json=allowZeroFeeTxs,proto3\" json:\"allow_zero_fee_txs,omitempty\"`\n\t// ignore_bearer_auth if true ignores the `authorized_account`\n\t// field in the Bearer JWS from Extension Options\n\tIgnoreBearerAuth bool `protobuf:\"varint,2,opt,name=ignore_bearer_auth,json=ignoreBearerAuth,proto3\" json:\"ignore_bearer_auth,omitempty\"`\n}\n\nfunc (m *ChainConfig) Reset()         { *m = ChainConfig{} }\nfunc (m *ChainConfig) String() string { return proto.CompactTextString(m) }\nfunc (*ChainConfig) ProtoMessage()    {}\nfunc (*ChainConfig) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_35e6d1a77540f0db, []int{0}\n}\nfunc (m *ChainConfig) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ChainConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ChainConfig.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ChainConfig) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ChainConfig.Merge(m, src)\n}\nfunc (m *ChainConfig) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ChainConfig) XXX_DiscardUnknown() {\n\txxx_messageInfo_ChainConfig.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ChainConfig proto.InternalMessageInfo\n\nfunc (m *ChainConfig) GetAllowZeroFeeTxs() bool {\n\tif m != nil {\n\t\treturn m.AllowZeroFeeTxs\n\t}\n\treturn false\n}\n\nfunc (m *ChainConfig) GetIgnoreBearerAuth() bool {\n\tif m != nil {\n\t\treturn m.IgnoreBearerAuth\n\t}\n\treturn false\n}\n\nfunc init() {\n\tproto.RegisterType((*ChainConfig)(nil), \"sourcehub.hub.ChainConfig\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/chain_config.proto\", fileDescriptor_35e6d1a77540f0db) }\n\nvar fileDescriptor_35e6d1a77540f0db = []byte{\n\t// 254 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x28, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x07, 0xe1, 0xe4, 0x8c, 0xc4, 0xcc, 0xbc, 0xf8, 0xe4, 0xfc,\n\t0xbc, 0xb4, 0xcc, 0x74, 0xbd, 0x82, 0xa2, 0xfc, 0x92, 0x7c, 0x21, 0x5e, 0xb8, 0x0a, 0xbd, 0x8c,\n\t0xd2, 0x24, 0x29, 0xc1, 0xc4, 0xdc, 0xcc, 0xbc, 0x7c, 0x7d, 0x30, 0x09, 0x51, 0x21, 0x25, 0x92,\n\t0x9e, 0x9f, 0x9e, 0x0f, 0x66, 0xea, 0x83, 0x58, 0x10, 0x51, 0xa5, 0x1a, 0x2e, 0x6e, 0x67, 0x90,\n\t0x69, 0xce, 0x60, 0xc3, 0x84, 0x8c, 0xb8, 0x84, 0x12, 0x73, 0x72, 0xf2, 0xcb, 0xe3, 0xab, 0x52,\n\t0x8b, 0xf2, 0xe3, 0xd3, 0x52, 0x53, 0xe3, 0x4b, 0x2a, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38,\n\t0x9c, 0x58, 0x57, 0x3c, 0xdf, 0xa0, 0xc5, 0x18, 0xc4, 0x0f, 0x56, 0x10, 0x95, 0x5a, 0x94, 0xef,\n\t0x96, 0x9a, 0x1a, 0x52, 0x51, 0x2c, 0x64, 0xcc, 0x25, 0x94, 0x99, 0x9e, 0x97, 0x5f, 0x94, 0x1a,\n\t0x9f, 0x94, 0x9a, 0x58, 0x94, 0x5a, 0x14, 0x9f, 0x58, 0x5a, 0x92, 0x21, 0xc1, 0x84, 0xac, 0x47,\n\t0x00, 0xa2, 0xc0, 0x09, 0x2c, 0xef, 0x58, 0x5a, 0x92, 0x61, 0xc5, 0xf2, 0x62, 0x81, 0x3c, 0xa3,\n\t0x93, 0xc7, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1,\n\t0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0xa5, 0x67, 0x96,\n\t0x80, 0x3c, 0x93, 0x9c, 0x9f, 0xab, 0x0f, 0xf1, 0x5a, 0x5e, 0x6a, 0x49, 0x79, 0x7e, 0x51, 0xb6,\n\t0x3e, 0x22, 0x28, 0x2a, 0xc0, 0x81, 0x51, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0xf6, 0x8e,\n\t0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x15, 0xdc, 0xb5, 0x2a, 0x01, 0x00, 0x00,\n}\n\nfunc (this *ChainConfig) Equal(that interface{}) bool {\n\tif that == nil {\n\t\treturn this == nil\n\t}\n\n\tthat1, ok := that.(*ChainConfig)\n\tif !ok {\n\t\tthat2, ok := that.(ChainConfig)\n\t\tif ok {\n\t\t\tthat1 = &that2\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif that1 == nil {\n\t\treturn this == nil\n\t} else if this == nil {\n\t\treturn false\n\t}\n\tif this.AllowZeroFeeTxs != that1.AllowZeroFeeTxs {\n\t\treturn false\n\t}\n\tif this.IgnoreBearerAuth != that1.IgnoreBearerAuth {\n\t\treturn false\n\t}\n\treturn true\n}\nfunc (m *ChainConfig) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ChainConfig) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ChainConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.IgnoreBearerAuth {\n\t\ti--\n\t\tif m.IgnoreBearerAuth {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.AllowZeroFeeTxs {\n\t\ti--\n\t\tif m.AllowZeroFeeTxs {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintChainConfig(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovChainConfig(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *ChainConfig) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.AllowZeroFeeTxs {\n\t\tn += 2\n\t}\n\tif m.IgnoreBearerAuth {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc sovChainConfig(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozChainConfig(x uint64) (n int) {\n\treturn sovChainConfig(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *ChainConfig) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowChainConfig\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ChainConfig: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ChainConfig: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AllowZeroFeeTxs\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowChainConfig\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.AllowZeroFeeTxs = bool(v != 0)\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IgnoreBearerAuth\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowChainConfig\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.IgnoreBearerAuth = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipChainConfig(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthChainConfig\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipChainConfig(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowChainConfig\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowChainConfig\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowChainConfig\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthChainConfig\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupChainConfig\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthChainConfig\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthChainConfig        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowChainConfig          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupChainConfig = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/codec.go",
    "content": "package types\n\nimport (\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/msgservice\"\n)\n\nfunc RegisterInterfaces(registry cdctypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgUpdateParams{},\n\t\t&MsgInvalidateJWS{},\n\t)\n\tmsgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)\n}\n"
  },
  {
    "path": "x/hub/types/errors.go",
    "content": "package types\n\n// DONTCOVER\n\nimport (\n\tsdkerrors \"cosmossdk.io/errors\"\n)\n\n// x/hub module sentinel errors.\nvar (\n\tErrInvalidSigner            = sdkerrors.Register(ModuleName, 1100, \"expected gov account as only signer for proposal message\")\n\tErrSample                   = sdkerrors.Register(ModuleName, 1101, \"sample error\")\n\tErrInvalidInput             = sdkerrors.Register(ModuleName, 1102, \"invalid input\")\n\tErrJWSTokenNotFound         = sdkerrors.Register(ModuleName, 1103, \"JWS token not found\")\n\tErrJWSTokenAlreadyInvalid   = sdkerrors.Register(ModuleName, 1104, \"JWS token is already invalid\")\n\tErrUnauthorizedInvalidation = sdkerrors.Register(ModuleName, 1105, \"unauthorized to invalidate JWS token\")\n\tErrFailedToInvalidateToken  = sdkerrors.Register(ModuleName, 1106, \"failed to invalidate JWS token\")\n\tErrJWSTokenExpired          = sdkerrors.Register(ModuleName, 1107, \"JWS token has expired\")\n\tErrJWSTokenInvalid          = sdkerrors.Register(ModuleName, 1108, \"JWS token is invalid\")\n\tErrConfigSet                = sdkerrors.Register(ModuleName, 1109, \"ChainConfig already initialized: config is immutable and can only be set at genesis\")\n)\n"
  },
  {
    "path": "x/hub/types/expected_keepers.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tconnectiontypes \"github.com/cosmos/ibc-go/v10/modules/core/03-connection/types\"\n\tibcexported \"github.com/cosmos/ibc-go/v10/modules/core/exported\"\n)\n\n// AccountKeeper defines the expected interface for the Account module.\ntype AccountKeeper interface {\n\tGetAccount(context.Context, sdk.AccAddress) sdk.AccountI // only used for simulation\n\t// Methods imported from account should be defined here\n}\n\n// BankKeeper defines the expected interface for the Bank module.\ntype BankKeeper interface {\n\tSpendableCoins(context.Context, sdk.AccAddress) sdk.Coins\n\t// Methods imported from bank should be defined here\n}\n\n// ParamSubspace defines the expected Subspace interface for parameters.\ntype ParamSubspace interface {\n\tGet(context.Context, []byte, interface{})\n\tSet(context.Context, []byte, interface{})\n}\n\n// ICAHostKeeper defines the expected ICA host keeper interface.\ntype ICAHostKeeper interface {\n\tGetInterchainAccountAddress(ctx sdk.Context, connectionID, portID string) (string, bool)\n}\n\n// ConnectionKeeper defines the expected connection keeper interface.\ntype ConnectionKeeper interface {\n\tGetConnection(ctx sdk.Context, connectionID string) (connectiontypes.ConnectionEnd, bool)\n}\n\n// ClientKeeper defines the expected client keeper interface.\ntype ClientKeeper interface {\n\tGetClientState(ctx sdk.Context, clientID string) (ibcexported.ClientState, bool)\n}\n"
  },
  {
    "path": "x/hub/types/genesis.go",
    "content": "package types\n\n// DefaultIndex is the default global index\nconst DefaultIndex uint64 = 1\n\n// DefaultGenesis returns the default genesis state.\nfunc DefaultGenesis() *GenesisState {\n\treturn &GenesisState{\n\t\tParams:         DefaultParams(),\n\t\tIcaConnections: []ICAConnection{},\n\t\tChainConfig: ChainConfig{\n\t\t\tAllowZeroFeeTxs:  false,\n\t\t\tIgnoreBearerAuth: false,\n\t\t},\n\t}\n}\n\n// Validate performs basic genesis state validation returning an error upon any failure.\nfunc (gs GenesisState) Validate() error {\n\treturn gs.Params.Validate()\n}\n"
  },
  {
    "path": "x/hub/types/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/genesis.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// GenesisState defines the hub module's genesis state.\ntype GenesisState struct {\n\t// params defines all the parameters of the module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n\t// ica_connections defines the list of ICA connections.\n\tIcaConnections []ICAConnection `protobuf:\"bytes,2,rep,name=ica_connections,json=icaConnections,proto3\" json:\"ica_connections\"`\n\t// jws_tokens defines the list of JWS token records.\n\tJwsTokens   []JWSTokenRecord `protobuf:\"bytes,3,rep,name=jws_tokens,json=jwsTokens,proto3\" json:\"jws_tokens\"`\n\tChainConfig ChainConfig      `protobuf:\"bytes,4,opt,name=chain_config,json=chainConfig,proto3\" json:\"chain_config\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_848db870e8494d54, []int{0}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\nfunc (m *GenesisState) GetIcaConnections() []ICAConnection {\n\tif m != nil {\n\t\treturn m.IcaConnections\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetJwsTokens() []JWSTokenRecord {\n\tif m != nil {\n\t\treturn m.JwsTokens\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetChainConfig() ChainConfig {\n\tif m != nil {\n\t\treturn m.ChainConfig\n\t}\n\treturn ChainConfig{}\n}\n\nfunc init() {\n\tproto.RegisterType((*GenesisState)(nil), \"sourcehub.hub.GenesisState\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/genesis.proto\", fileDescriptor_848db870e8494d54) }\n\nvar fileDescriptor_848db870e8494d54 = []byte{\n\t// 351 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x31, 0x4f, 0xf2, 0x40,\n\t0x18, 0xc7, 0x5b, 0x20, 0x24, 0x1c, 0xbc, 0xaf, 0xb1, 0xd1, 0xa4, 0xa9, 0x52, 0x09, 0x13, 0x71,\n\t0x68, 0x13, 0x5c, 0x5c, 0xa5, 0x83, 0xa8, 0x8b, 0x01, 0x13, 0x13, 0x17, 0x72, 0x9c, 0x67, 0x39,\n\t0x08, 0xf7, 0x90, 0xde, 0x11, 0xf4, 0x5b, 0xf8, 0x1d, 0x5c, 0x1c, 0xfd, 0x18, 0x8c, 0x8c, 0x4e,\n\t0xc6, 0xc0, 0xe0, 0xd7, 0x30, 0x77, 0xad, 0xc0, 0x31, 0xb4, 0xb9, 0x3c, 0xff, 0x5f, 0x7e, 0x79,\n\t0xfe, 0x0f, 0x3a, 0x12, 0x30, 0x4d, 0x08, 0x1d, 0x4c, 0xfb, 0xa1, 0xfa, 0x62, 0xca, 0xa9, 0x60,\n\t0x22, 0x98, 0x24, 0x20, 0xc1, 0xf9, 0xb7, 0x0e, 0x83, 0xc1, 0xb4, 0xef, 0xed, 0xe3, 0x31, 0xe3,\n\t0x10, 0xea, 0x7f, 0x4a, 0x78, 0x07, 0x31, 0xc4, 0xa0, 0x9f, 0xa1, 0x7a, 0x65, 0x53, 0xcf, 0x94,\n\t0x4e, 0x70, 0x82, 0xc7, 0x99, 0xd3, 0xab, 0x9b, 0x19, 0x23, 0xb8, 0x47, 0x80, 0x73, 0x4a, 0x24,\n\t0x03, 0x9e, 0x31, 0x55, 0x93, 0x19, 0xce, 0x44, 0x4f, 0xc2, 0x88, 0xfe, 0xc5, 0x35, 0x33, 0x26,\n\t0x03, 0xcc, 0xb8, 0x92, 0x3c, 0xb1, 0x38, 0x25, 0xea, 0x6f, 0x39, 0x54, 0xb9, 0x4c, 0xab, 0x74,\n\t0x25, 0x96, 0xd4, 0x39, 0x47, 0xc5, 0x74, 0x0b, 0xd7, 0xae, 0xd9, 0x8d, 0x72, 0xf3, 0x30, 0x30,\n\t0xaa, 0x05, 0xb7, 0x3a, 0x6c, 0x95, 0xe6, 0x5f, 0x27, 0xd6, 0xfb, 0xcf, 0xc7, 0xa9, 0xdd, 0xc9,\n\t0x78, 0xe7, 0x06, 0xed, 0x99, 0x3b, 0x0a, 0x37, 0x57, 0xcb, 0x37, 0xca, 0xcd, 0xe3, 0x1d, 0xc5,\n\t0x55, 0x74, 0x11, 0xad, 0xa1, 0x56, 0x41, 0x99, 0x3a, 0xff, 0x19, 0xc1, 0x9b, 0xa1, 0x70, 0x5a,\n\t0x08, 0xad, 0xcb, 0x08, 0x37, 0xaf, 0x3d, 0xd5, 0x1d, 0xcf, 0xf5, 0x7d, 0xf7, 0x4e, 0xe5, 0x1d,\n\t0x4a, 0x20, 0x79, 0xcc, 0x44, 0xa5, 0xe1, 0x4c, 0xe8, 0xa9, 0x70, 0xda, 0xa8, 0xb2, 0xdd, 0xd8,\n\t0x2d, 0xe8, 0x42, 0xde, 0x8e, 0x25, 0x52, 0x48, 0xa4, 0x89, 0xed, 0x56, 0x65, 0xb2, 0x35, 0x6f,\n\t0xcf, 0x97, 0xbe, 0xbd, 0x58, 0xfa, 0xf6, 0xf7, 0xd2, 0xb7, 0x5f, 0x57, 0xbe, 0xb5, 0x58, 0xf9,\n\t0xd6, 0xe7, 0xca, 0xb7, 0x1e, 0x82, 0x98, 0x49, 0x65, 0x21, 0x30, 0x0e, 0x53, 0x2f, 0xa7, 0x72,\n\t0x06, 0xc9, 0x28, 0xdc, 0x9c, 0xfe, 0x59, 0x1f, 0x5f, 0xbe, 0x4c, 0xa8, 0xe8, 0x17, 0xf5, 0xd9,\n\t0xcf, 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0x03, 0x6a, 0x91, 0x8d, 0x4e, 0x02, 0x00, 0x00,\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.ChainConfig.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x22\n\tif len(m.JwsTokens) > 0 {\n\t\tfor iNdEx := len(m.JwsTokens) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.JwsTokens[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.IcaConnections) > 0 {\n\t\tfor iNdEx := len(m.IcaConnections) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.IcaConnections[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovGenesis(uint64(l))\n\tif len(m.IcaConnections) > 0 {\n\t\tfor _, e := range m.IcaConnections {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.JwsTokens) > 0 {\n\t\tfor _, e := range m.JwsTokens {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tl = m.ChainConfig.Size()\n\tn += 1 + l + sovGenesis(uint64(l))\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IcaConnections\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.IcaConnections = append(m.IcaConnections, ICAConnection{})\n\t\t\tif err := m.IcaConnections[len(m.IcaConnections)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field JwsTokens\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.JwsTokens = append(m.JwsTokens, JWSTokenRecord{})\n\t\t\tif err := m.JwsTokens[len(m.JwsTokens)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ChainConfig\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.ChainConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/genesis_test.go",
    "content": "package types_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/hub/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGenesisState_Validate(t *testing.T) {\n\ttests := []struct {\n\t\tdesc     string\n\t\tgenState *types.GenesisState\n\t\tvalid    bool\n\t}{\n\t\t{\n\t\t\tdesc:     \"default is valid\",\n\t\t\tgenState: types.DefaultGenesis(),\n\t\t\tvalid:    true,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"valid genesis state\",\n\t\t\tgenState: &types.GenesisState{},\n\t\t\tvalid:    true,\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.desc, func(t *testing.T) {\n\t\t\terr := tc.genState.Validate()\n\t\t\tif tc.valid {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.Error(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/hub/types/ica_connection.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/ica_connection.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// ICAConnection represents an interchain account connection between a controller and host chain.\ntype ICAConnection struct {\n\t// ica_address is the interchain account address generated on the host chain.\n\tIcaAddress string `protobuf:\"bytes,1,opt,name=ica_address,json=icaAddress,proto3\" json:\"ica_address,omitempty\"`\n\t// controller_address is the address of the controlling account on the controller chain.\n\tControllerAddress string `protobuf:\"bytes,2,opt,name=controller_address,json=controllerAddress,proto3\" json:\"controller_address,omitempty\"`\n\t// controller_chain_id is the chain ID of the controller chain.\n\tControllerChainId string `protobuf:\"bytes,3,opt,name=controller_chain_id,json=controllerChainId,proto3\" json:\"controller_chain_id,omitempty\"`\n\t// connection_id is the IBC connection ID used for this interchain account.\n\tConnectionId string `protobuf:\"bytes,4,opt,name=connection_id,json=connectionId,proto3\" json:\"connection_id,omitempty\"`\n}\n\nfunc (m *ICAConnection) Reset()         { *m = ICAConnection{} }\nfunc (m *ICAConnection) String() string { return proto.CompactTextString(m) }\nfunc (*ICAConnection) ProtoMessage()    {}\nfunc (*ICAConnection) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9235a030182ad704, []int{0}\n}\nfunc (m *ICAConnection) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *ICAConnection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_ICAConnection.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *ICAConnection) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_ICAConnection.Merge(m, src)\n}\nfunc (m *ICAConnection) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *ICAConnection) XXX_DiscardUnknown() {\n\txxx_messageInfo_ICAConnection.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_ICAConnection proto.InternalMessageInfo\n\nfunc (m *ICAConnection) GetIcaAddress() string {\n\tif m != nil {\n\t\treturn m.IcaAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *ICAConnection) GetControllerAddress() string {\n\tif m != nil {\n\t\treturn m.ControllerAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *ICAConnection) GetControllerChainId() string {\n\tif m != nil {\n\t\treturn m.ControllerChainId\n\t}\n\treturn \"\"\n}\n\nfunc (m *ICAConnection) GetConnectionId() string {\n\tif m != nil {\n\t\treturn m.ConnectionId\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tproto.RegisterType((*ICAConnection)(nil), \"sourcehub.hub.ICAConnection\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/hub/ica_connection.proto\", fileDescriptor_9235a030182ad704)\n}\n\nvar fileDescriptor_9235a030182ad704 = []byte{\n\t// 231 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2a, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x07, 0xe1, 0xcc, 0xe4, 0xc4, 0xf8, 0xe4, 0xfc, 0xbc, 0xbc,\n\t0xd4, 0xe4, 0x92, 0xcc, 0xfc, 0x3c, 0xbd, 0x82, 0xa2, 0xfc, 0x92, 0x7c, 0x21, 0x5e, 0xb8, 0x1a,\n\t0xbd, 0x8c, 0xd2, 0x24, 0xa5, 0x2d, 0x8c, 0x5c, 0xbc, 0x9e, 0xce, 0x8e, 0xce, 0x70, 0x65, 0x42,\n\t0xf2, 0x5c, 0xdc, 0x20, 0x8d, 0x89, 0x29, 0x29, 0x45, 0xa9, 0xc5, 0xc5, 0x12, 0x8c, 0x0a, 0x8c,\n\t0x1a, 0x9c, 0x41, 0x5c, 0x99, 0xc9, 0x89, 0x8e, 0x10, 0x11, 0x21, 0x5d, 0x2e, 0xa1, 0xe4, 0xfc,\n\t0xbc, 0x92, 0xa2, 0xfc, 0x9c, 0x9c, 0xd4, 0x22, 0xb8, 0x3a, 0x26, 0xb0, 0x3a, 0x41, 0x84, 0x0c,\n\t0x4c, 0xb9, 0x1e, 0x97, 0x30, 0x92, 0xf2, 0xe4, 0x8c, 0xc4, 0xcc, 0xbc, 0xf8, 0xcc, 0x14, 0x09,\n\t0x66, 0x74, 0xf5, 0xce, 0x20, 0x19, 0xcf, 0x14, 0x21, 0x65, 0x2e, 0x5e, 0x84, 0xa3, 0x41, 0x2a,\n\t0x59, 0xc0, 0x2a, 0x79, 0x10, 0x82, 0x9e, 0x29, 0x4e, 0x1e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78,\n\t0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc,\n\t0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x97, 0x9e, 0x59, 0x02, 0xf2, 0x5c, 0x72, 0x7e, 0xae, 0x3e, 0xc4,\n\t0xab, 0x79, 0xa9, 0x25, 0xe5, 0xf9, 0x45, 0xd9, 0xfa, 0x88, 0xc0, 0xa9, 0x00, 0x07, 0x4f, 0x49,\n\t0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0x58, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe3,\n\t0xf7, 0xaa, 0xe4, 0x3c, 0x01, 0x00, 0x00,\n}\n\nfunc (m *ICAConnection) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *ICAConnection) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *ICAConnection) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.ConnectionId) > 0 {\n\t\ti -= len(m.ConnectionId)\n\t\tcopy(dAtA[i:], m.ConnectionId)\n\t\ti = encodeVarintIcaConnection(dAtA, i, uint64(len(m.ConnectionId)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.ControllerChainId) > 0 {\n\t\ti -= len(m.ControllerChainId)\n\t\tcopy(dAtA[i:], m.ControllerChainId)\n\t\ti = encodeVarintIcaConnection(dAtA, i, uint64(len(m.ControllerChainId)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.ControllerAddress) > 0 {\n\t\ti -= len(m.ControllerAddress)\n\t\tcopy(dAtA[i:], m.ControllerAddress)\n\t\ti = encodeVarintIcaConnection(dAtA, i, uint64(len(m.ControllerAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.IcaAddress) > 0 {\n\t\ti -= len(m.IcaAddress)\n\t\tcopy(dAtA[i:], m.IcaAddress)\n\t\ti = encodeVarintIcaConnection(dAtA, i, uint64(len(m.IcaAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintIcaConnection(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovIcaConnection(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *ICAConnection) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.IcaAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovIcaConnection(uint64(l))\n\t}\n\tl = len(m.ControllerAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovIcaConnection(uint64(l))\n\t}\n\tl = len(m.ControllerChainId)\n\tif l > 0 {\n\t\tn += 1 + l + sovIcaConnection(uint64(l))\n\t}\n\tl = len(m.ConnectionId)\n\tif l > 0 {\n\t\tn += 1 + l + sovIcaConnection(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovIcaConnection(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozIcaConnection(x uint64) (n int) {\n\treturn sovIcaConnection(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *ICAConnection) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowIcaConnection\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: ICAConnection: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: ICAConnection: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IcaAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.IcaAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ControllerAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ControllerAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ControllerChainId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ControllerChainId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ConnectionId\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ConnectionId = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipIcaConnection(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipIcaConnection(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowIcaConnection\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowIcaConnection\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthIcaConnection\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupIcaConnection\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthIcaConnection\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthIcaConnection        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowIcaConnection          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupIcaConnection = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/jws_token.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/jws_token.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// JWSTokenStatus represents the validity status of a JWS token.\ntype JWSTokenStatus int32\n\nconst (\n\t// STATUS_UNSPECIFIED is the default/invalid status.\n\tJWSTokenStatus_STATUS_UNSPECIFIED JWSTokenStatus = 0\n\t// STATUS_VALID indicates the token is valid and can be used.\n\tJWSTokenStatus_STATUS_VALID JWSTokenStatus = 1\n\t// STATUS_INVALID indicates the token has been invalidated.\n\tJWSTokenStatus_STATUS_INVALID JWSTokenStatus = 2\n)\n\nvar JWSTokenStatus_name = map[int32]string{\n\t0: \"STATUS_UNSPECIFIED\",\n\t1: \"STATUS_VALID\",\n\t2: \"STATUS_INVALID\",\n}\n\nvar JWSTokenStatus_value = map[string]int32{\n\t\"STATUS_UNSPECIFIED\": 0,\n\t\"STATUS_VALID\":       1,\n\t\"STATUS_INVALID\":     2,\n}\n\nfunc (x JWSTokenStatus) String() string {\n\treturn proto.EnumName(JWSTokenStatus_name, int32(x))\n}\n\nfunc (JWSTokenStatus) EnumDescriptor() ([]byte, []int) {\n\treturn fileDescriptor_9cf48ac1bca5ef47, []int{0}\n}\n\n// JWSTokenRecord represents a stored JWS token with its metadata.\n// The bearer_token field contains sensitive credentials and should not be exposed via public endpoints.\ntype JWSTokenRecord struct {\n\t// token_hash is the unique identifier of the JWS token\n\tTokenHash string `protobuf:\"bytes,1,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n\t// bearer_token is the full JWS token string.\n\tBearerToken string `protobuf:\"bytes,2,opt,name=bearer_token,json=bearerToken,proto3\" json:\"bearer_token,omitempty\"`\n\t// issuer_did is the DID that issued/signed the token.\n\tIssuerDid string `protobuf:\"bytes,3,opt,name=issuer_did,json=issuerDid,proto3\" json:\"issuer_did,omitempty\"`\n\t// authorized_account is the account authorized to use this token.\n\tAuthorizedAccount string `protobuf:\"bytes,4,opt,name=authorized_account,json=authorizedAccount,proto3\" json:\"authorized_account,omitempty\"`\n\t// issued_at is when the token was created.\n\tIssuedAt time.Time `protobuf:\"bytes,5,opt,name=issued_at,json=issuedAt,proto3,stdtime\" json:\"issued_at\"`\n\t// expires_at is when the token expires.\n\tExpiresAt time.Time `protobuf:\"bytes,6,opt,name=expires_at,json=expiresAt,proto3,stdtime\" json:\"expires_at\"`\n\t// status is the current validity status of the token.\n\tStatus JWSTokenStatus `protobuf:\"varint,7,opt,name=status,proto3,enum=sourcehub.hub.JWSTokenStatus\" json:\"status,omitempty\"`\n\t// first_used_at is when the token was first used in a transaction.\n\tFirstUsedAt *time.Time `protobuf:\"bytes,8,opt,name=first_used_at,json=firstUsedAt,proto3,stdtime\" json:\"first_used_at,omitempty\"`\n\t// last_used_at is when the token was last used in a transaction.\n\tLastUsedAt *time.Time `protobuf:\"bytes,9,opt,name=last_used_at,json=lastUsedAt,proto3,stdtime\" json:\"last_used_at,omitempty\"`\n\t// invalidated_at is when the token was manually invalidated (if applicable).\n\tInvalidatedAt *time.Time `protobuf:\"bytes,10,opt,name=invalidated_at,json=invalidatedAt,proto3,stdtime\" json:\"invalidated_at,omitempty\"`\n\t// invalidated_by is the account that invalidated the token (if applicable).\n\tInvalidatedBy string `protobuf:\"bytes,11,opt,name=invalidated_by,json=invalidatedBy,proto3\" json:\"invalidated_by,omitempty\"`\n}\n\nfunc (m *JWSTokenRecord) Reset()         { *m = JWSTokenRecord{} }\nfunc (m *JWSTokenRecord) String() string { return proto.CompactTextString(m) }\nfunc (*JWSTokenRecord) ProtoMessage()    {}\nfunc (*JWSTokenRecord) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9cf48ac1bca5ef47, []int{0}\n}\nfunc (m *JWSTokenRecord) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *JWSTokenRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_JWSTokenRecord.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *JWSTokenRecord) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_JWSTokenRecord.Merge(m, src)\n}\nfunc (m *JWSTokenRecord) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *JWSTokenRecord) XXX_DiscardUnknown() {\n\txxx_messageInfo_JWSTokenRecord.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_JWSTokenRecord proto.InternalMessageInfo\n\nfunc (m *JWSTokenRecord) GetTokenHash() string {\n\tif m != nil {\n\t\treturn m.TokenHash\n\t}\n\treturn \"\"\n}\n\nfunc (m *JWSTokenRecord) GetBearerToken() string {\n\tif m != nil {\n\t\treturn m.BearerToken\n\t}\n\treturn \"\"\n}\n\nfunc (m *JWSTokenRecord) GetIssuerDid() string {\n\tif m != nil {\n\t\treturn m.IssuerDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *JWSTokenRecord) GetAuthorizedAccount() string {\n\tif m != nil {\n\t\treturn m.AuthorizedAccount\n\t}\n\treturn \"\"\n}\n\nfunc (m *JWSTokenRecord) GetIssuedAt() time.Time {\n\tif m != nil {\n\t\treturn m.IssuedAt\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *JWSTokenRecord) GetExpiresAt() time.Time {\n\tif m != nil {\n\t\treturn m.ExpiresAt\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *JWSTokenRecord) GetStatus() JWSTokenStatus {\n\tif m != nil {\n\t\treturn m.Status\n\t}\n\treturn JWSTokenStatus_STATUS_UNSPECIFIED\n}\n\nfunc (m *JWSTokenRecord) GetFirstUsedAt() *time.Time {\n\tif m != nil {\n\t\treturn m.FirstUsedAt\n\t}\n\treturn nil\n}\n\nfunc (m *JWSTokenRecord) GetLastUsedAt() *time.Time {\n\tif m != nil {\n\t\treturn m.LastUsedAt\n\t}\n\treturn nil\n}\n\nfunc (m *JWSTokenRecord) GetInvalidatedAt() *time.Time {\n\tif m != nil {\n\t\treturn m.InvalidatedAt\n\t}\n\treturn nil\n}\n\nfunc (m *JWSTokenRecord) GetInvalidatedBy() string {\n\tif m != nil {\n\t\treturn m.InvalidatedBy\n\t}\n\treturn \"\"\n}\n\n// EventJWSTokenInvalidated is emitted when a JWS token is invalidated.\ntype EventJWSTokenInvalidated struct {\n\t// token_hash is the unique identifier of the invalidated token.\n\tTokenHash string `protobuf:\"bytes,1,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n\t// issuer_did is the DID that issued the token.\n\tIssuerDid string `protobuf:\"bytes,2,opt,name=issuer_did,json=issuerDid,proto3\" json:\"issuer_did,omitempty\"`\n\t// authorized_account is the account that was authorized to use this token.\n\tAuthorizedAccount string `protobuf:\"bytes,3,opt,name=authorized_account,json=authorizedAccount,proto3\" json:\"authorized_account,omitempty\"`\n\t// invalidated_by is the account that invalidated the token.\n\tInvalidatedBy string `protobuf:\"bytes,4,opt,name=invalidated_by,json=invalidatedBy,proto3\" json:\"invalidated_by,omitempty\"`\n}\n\nfunc (m *EventJWSTokenInvalidated) Reset()         { *m = EventJWSTokenInvalidated{} }\nfunc (m *EventJWSTokenInvalidated) String() string { return proto.CompactTextString(m) }\nfunc (*EventJWSTokenInvalidated) ProtoMessage()    {}\nfunc (*EventJWSTokenInvalidated) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9cf48ac1bca5ef47, []int{1}\n}\nfunc (m *EventJWSTokenInvalidated) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *EventJWSTokenInvalidated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_EventJWSTokenInvalidated.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *EventJWSTokenInvalidated) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_EventJWSTokenInvalidated.Merge(m, src)\n}\nfunc (m *EventJWSTokenInvalidated) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *EventJWSTokenInvalidated) XXX_DiscardUnknown() {\n\txxx_messageInfo_EventJWSTokenInvalidated.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_EventJWSTokenInvalidated proto.InternalMessageInfo\n\nfunc (m *EventJWSTokenInvalidated) GetTokenHash() string {\n\tif m != nil {\n\t\treturn m.TokenHash\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventJWSTokenInvalidated) GetIssuerDid() string {\n\tif m != nil {\n\t\treturn m.IssuerDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventJWSTokenInvalidated) GetAuthorizedAccount() string {\n\tif m != nil {\n\t\treturn m.AuthorizedAccount\n\t}\n\treturn \"\"\n}\n\nfunc (m *EventJWSTokenInvalidated) GetInvalidatedBy() string {\n\tif m != nil {\n\t\treturn m.InvalidatedBy\n\t}\n\treturn \"\"\n}\n\nfunc init() {\n\tproto.RegisterEnum(\"sourcehub.hub.JWSTokenStatus\", JWSTokenStatus_name, JWSTokenStatus_value)\n\tproto.RegisterType((*JWSTokenRecord)(nil), \"sourcehub.hub.JWSTokenRecord\")\n\tproto.RegisterType((*EventJWSTokenInvalidated)(nil), \"sourcehub.hub.EventJWSTokenInvalidated\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/jws_token.proto\", fileDescriptor_9cf48ac1bca5ef47) }\n\nvar fileDescriptor_9cf48ac1bca5ef47 = []byte{\n\t// 526 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdf, 0x8e, 0xd2, 0x4e,\n\t0x14, 0xc7, 0x19, 0x96, 0x1f, 0x3f, 0x18, 0xfe, 0x04, 0x27, 0xc6, 0x34, 0x24, 0x14, 0xdc, 0xc4,\n\t0x84, 0x98, 0xd8, 0x26, 0x6b, 0x7c, 0x80, 0xb2, 0xa0, 0x8b, 0x31, 0xc4, 0xf0, 0x47, 0x13, 0x6f,\n\t0x9a, 0x29, 0x9d, 0x6d, 0xc7, 0x85, 0x0e, 0x99, 0x99, 0xee, 0x2e, 0x3e, 0xc5, 0x3e, 0x89, 0xcf,\n\t0xb1, 0x97, 0x7b, 0xa9, 0x37, 0x6a, 0xe0, 0x45, 0x4c, 0x67, 0x8a, 0x40, 0xd4, 0x2c, 0x5e, 0x90,\n\t0xd0, 0x73, 0xbe, 0xe7, 0x33, 0x73, 0xe6, 0x7c, 0x0f, 0x6c, 0x08, 0x16, 0xf3, 0x29, 0x09, 0x63,\n\t0xcf, 0x4e, 0x7e, 0x1f, 0xaf, 0x84, 0x2b, 0xd9, 0x05, 0x89, 0xac, 0x05, 0x67, 0x92, 0xa1, 0xca,\n\t0xaf, 0xb4, 0x15, 0xc6, 0x5e, 0xfd, 0x61, 0xc0, 0x02, 0xa6, 0x32, 0x76, 0xf2, 0x4f, 0x8b, 0xea,\n\t0xcd, 0x80, 0xb1, 0x60, 0x46, 0x6c, 0xf5, 0xe5, 0xc5, 0xe7, 0xb6, 0xa4, 0x73, 0x22, 0x24, 0x9e,\n\t0x2f, 0xb4, 0xe0, 0xf8, 0x6b, 0x0e, 0x56, 0x5f, 0xbf, 0x1f, 0x8d, 0x13, 0xf0, 0x90, 0x4c, 0x19,\n\t0xf7, 0x51, 0x03, 0x42, 0x75, 0x8e, 0x1b, 0x62, 0x11, 0x1a, 0xa0, 0x05, 0xda, 0xc5, 0x61, 0x51,\n\t0x45, 0xce, 0xb0, 0x08, 0xd1, 0x63, 0x58, 0xf6, 0x08, 0xe6, 0x84, 0xeb, 0xdb, 0x18, 0x59, 0x25,\n\t0x28, 0xe9, 0x98, 0xe2, 0x24, 0x04, 0x2a, 0x44, 0x4c, 0xb8, 0xeb, 0x53, 0xdf, 0x38, 0xd2, 0x04,\n\t0x1d, 0xe9, 0x52, 0x1f, 0x3d, 0x83, 0x08, 0xc7, 0x32, 0x64, 0x9c, 0x7e, 0x22, 0xbe, 0x8b, 0xa7,\n\t0x53, 0x16, 0x47, 0xd2, 0xc8, 0x29, 0xd9, 0x83, 0x6d, 0xc6, 0xd1, 0x09, 0xe4, 0x40, 0x5d, 0xeb,\n\t0xbb, 0x58, 0x1a, 0xff, 0xb5, 0x40, 0xbb, 0x74, 0x52, 0xb7, 0x74, 0x5f, 0xd6, 0xa6, 0x2f, 0x6b,\n\t0xbc, 0xe9, 0xab, 0x53, 0xb8, 0xfd, 0xd6, 0xcc, 0xdc, 0x7c, 0x6f, 0x82, 0x61, 0x41, 0x97, 0x39,\n\t0x12, 0x9d, 0x42, 0x48, 0xae, 0x17, 0x94, 0x13, 0x91, 0x30, 0xf2, 0xff, 0xc0, 0x28, 0xa6, 0x75,\n\t0x8e, 0x44, 0x2f, 0x60, 0x5e, 0x48, 0x2c, 0x63, 0x61, 0xfc, 0xdf, 0x02, 0xed, 0xea, 0x49, 0xc3,\n\t0xda, 0x9b, 0x80, 0xb5, 0x79, 0xc6, 0x91, 0x12, 0x0d, 0x53, 0x31, 0xea, 0xc2, 0xca, 0x39, 0xe5,\n\t0x42, 0xba, 0xb1, 0xd0, 0x2d, 0x14, 0xee, 0x3d, 0x3e, 0xa7, 0x8e, 0x2e, 0xa9, 0xb2, 0x89, 0x50,\n\t0x1d, 0x74, 0x60, 0x79, 0x86, 0x77, 0x20, 0xc5, 0x03, 0x21, 0x30, 0xa9, 0x4a, 0x19, 0xaf, 0x60,\n\t0x95, 0x46, 0x97, 0x78, 0x46, 0x7d, 0x2c, 0x35, 0x05, 0x1e, 0x48, 0xa9, 0xec, 0xd4, 0x39, 0x12,\n\t0x3d, 0xd9, 0x07, 0x79, 0x4b, 0xa3, 0xa4, 0x86, 0xb7, 0x2b, 0xeb, 0x2c, 0x8f, 0x3f, 0x03, 0x68,\n\t0xf4, 0x2e, 0x49, 0x24, 0x37, 0x2f, 0xd3, 0xdf, 0xa6, 0xef, 0x73, 0xd9, 0xbe, 0x85, 0xb2, 0x87,\n\t0x59, 0xe8, 0xe8, 0x6f, 0x16, 0xfa, 0xfd, 0xc2, 0xb9, 0x3f, 0x5c, 0xf8, 0xe9, 0x60, 0xbb, 0x0b,\n\t0x7a, 0x88, 0xe8, 0x11, 0x44, 0xa3, 0xb1, 0x33, 0x9e, 0x8c, 0xdc, 0xc9, 0x60, 0xf4, 0xb6, 0x77,\n\t0xda, 0x7f, 0xd9, 0xef, 0x75, 0x6b, 0x19, 0x54, 0x83, 0xe5, 0x34, 0xfe, 0xce, 0x79, 0xd3, 0xef,\n\t0xd6, 0x00, 0x42, 0xb0, 0x9a, 0x46, 0xfa, 0x03, 0x1d, 0xcb, 0x76, 0xce, 0x6e, 0x57, 0x26, 0xb8,\n\t0x5b, 0x99, 0xe0, 0xc7, 0xca, 0x04, 0x37, 0x6b, 0x33, 0x73, 0xb7, 0x36, 0x33, 0x5f, 0xd6, 0x66,\n\t0xe6, 0x83, 0x15, 0x50, 0x99, 0x78, 0x66, 0xca, 0xe6, 0xb6, 0x76, 0x51, 0x44, 0xe4, 0x15, 0xe3,\n\t0x17, 0xf6, 0x76, 0xe9, 0xaf, 0xd5, 0xda, 0xcb, 0xe5, 0x82, 0x08, 0x2f, 0xaf, 0x46, 0xf3, 0xfc,\n\t0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x80, 0x03, 0x6d, 0x14, 0x04, 0x00, 0x00,\n}\n\nfunc (m *JWSTokenRecord) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *JWSTokenRecord) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *JWSTokenRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.InvalidatedBy) > 0 {\n\t\ti -= len(m.InvalidatedBy)\n\t\tcopy(dAtA[i:], m.InvalidatedBy)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.InvalidatedBy)))\n\t\ti--\n\t\tdAtA[i] = 0x5a\n\t}\n\tif m.InvalidatedAt != nil {\n\t\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.InvalidatedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.InvalidatedAt):])\n\t\tif err1 != nil {\n\t\t\treturn 0, err1\n\t\t}\n\t\ti -= n1\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(n1))\n\t\ti--\n\t\tdAtA[i] = 0x52\n\t}\n\tif m.LastUsedAt != nil {\n\t\tn2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.LastUsedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.LastUsedAt):])\n\t\tif err2 != nil {\n\t\t\treturn 0, err2\n\t\t}\n\t\ti -= n2\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(n2))\n\t\ti--\n\t\tdAtA[i] = 0x4a\n\t}\n\tif m.FirstUsedAt != nil {\n\t\tn3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(*m.FirstUsedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.FirstUsedAt):])\n\t\tif err3 != nil {\n\t\t\treturn 0, err3\n\t\t}\n\t\ti -= n3\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(n3))\n\t\ti--\n\t\tdAtA[i] = 0x42\n\t}\n\tif m.Status != 0 {\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(m.Status))\n\t\ti--\n\t\tdAtA[i] = 0x38\n\t}\n\tn4, err4 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.ExpiresAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ExpiresAt):])\n\tif err4 != nil {\n\t\treturn 0, err4\n\t}\n\ti -= n4\n\ti = encodeVarintJwsToken(dAtA, i, uint64(n4))\n\ti--\n\tdAtA[i] = 0x32\n\tn5, err5 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.IssuedAt, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.IssuedAt):])\n\tif err5 != nil {\n\t\treturn 0, err5\n\t}\n\ti -= n5\n\ti = encodeVarintJwsToken(dAtA, i, uint64(n5))\n\ti--\n\tdAtA[i] = 0x2a\n\tif len(m.AuthorizedAccount) > 0 {\n\t\ti -= len(m.AuthorizedAccount)\n\t\tcopy(dAtA[i:], m.AuthorizedAccount)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.AuthorizedAccount)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.IssuerDid) > 0 {\n\t\ti -= len(m.IssuerDid)\n\t\tcopy(dAtA[i:], m.IssuerDid)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.IssuerDid)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.BearerToken) > 0 {\n\t\ti -= len(m.BearerToken)\n\t\tcopy(dAtA[i:], m.BearerToken)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.BearerToken)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TokenHash) > 0 {\n\t\ti -= len(m.TokenHash)\n\t\tcopy(dAtA[i:], m.TokenHash)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.TokenHash)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *EventJWSTokenInvalidated) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *EventJWSTokenInvalidated) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *EventJWSTokenInvalidated) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.InvalidatedBy) > 0 {\n\t\ti -= len(m.InvalidatedBy)\n\t\tcopy(dAtA[i:], m.InvalidatedBy)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.InvalidatedBy)))\n\t\ti--\n\t\tdAtA[i] = 0x22\n\t}\n\tif len(m.AuthorizedAccount) > 0 {\n\t\ti -= len(m.AuthorizedAccount)\n\t\tcopy(dAtA[i:], m.AuthorizedAccount)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.AuthorizedAccount)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.IssuerDid) > 0 {\n\t\ti -= len(m.IssuerDid)\n\t\tcopy(dAtA[i:], m.IssuerDid)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.IssuerDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.TokenHash) > 0 {\n\t\ti -= len(m.TokenHash)\n\t\tcopy(dAtA[i:], m.TokenHash)\n\t\ti = encodeVarintJwsToken(dAtA, i, uint64(len(m.TokenHash)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintJwsToken(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovJwsToken(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *JWSTokenRecord) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TokenHash)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.BearerToken)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.IssuerDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.AuthorizedAccount)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.IssuedAt)\n\tn += 1 + l + sovJwsToken(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.ExpiresAt)\n\tn += 1 + l + sovJwsToken(uint64(l))\n\tif m.Status != 0 {\n\t\tn += 1 + sovJwsToken(uint64(m.Status))\n\t}\n\tif m.FirstUsedAt != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.FirstUsedAt)\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tif m.LastUsedAt != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.LastUsedAt)\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tif m.InvalidatedAt != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(*m.InvalidatedAt)\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.InvalidatedBy)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *EventJWSTokenInvalidated) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.TokenHash)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.IssuerDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.AuthorizedAccount)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\tl = len(m.InvalidatedBy)\n\tif l > 0 {\n\t\tn += 1 + l + sovJwsToken(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovJwsToken(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozJwsToken(x uint64) (n int) {\n\treturn sovJwsToken(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *JWSTokenRecord) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: JWSTokenRecord: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: JWSTokenRecord: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field BearerToken\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.BearerToken = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuerDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.IssuerDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthorizedAccount\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.AuthorizedAccount = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.IssuedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ExpiresAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.ExpiresAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 7:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Status\", wireType)\n\t\t\t}\n\t\t\tm.Status = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Status |= JWSTokenStatus(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 8:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field FirstUsedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.FirstUsedAt == nil {\n\t\t\t\tm.FirstUsedAt = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.FirstUsedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 9:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LastUsedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.LastUsedAt == nil {\n\t\t\t\tm.LastUsedAt = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.LastUsedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 10:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedAt\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.InvalidatedAt == nil {\n\t\t\t\tm.InvalidatedAt = new(time.Time)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(m.InvalidatedAt, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 11:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedBy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.InvalidatedBy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipJwsToken(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *EventJWSTokenInvalidated) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: EventJWSTokenInvalidated: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: EventJWSTokenInvalidated: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field IssuerDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.IssuerDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AuthorizedAccount\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.AuthorizedAccount = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InvalidatedBy\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.InvalidatedBy = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipJwsToken(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipJwsToken(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowJwsToken\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowJwsToken\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthJwsToken\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupJwsToken\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthJwsToken\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthJwsToken        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowJwsToken          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupJwsToken = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/keys.go",
    "content": "package types\n\nimport (\n\t\"crypto/sha256\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/address\"\n)\n\nconst (\n\t// ModuleName defines the module name\n\tModuleName = \"hub\"\n\n\t// StoreKey defines the primary module store key\n\tStoreKey = ModuleName\n\n\t// MemStoreKey defines the in-memory store key\n\tMemStoreKey = \"mem_hub\"\n)\n\nvar (\n\t// ICAConnectionKeyPrefix is the key prefix for ICA connections\n\tICAConnectionKeyPrefix = []byte{0x00}\n\n\t// JWSTokenKeyPrefix is the key prefix for JWS token records\n\tJWSTokenKeyPrefix = []byte{0x01}\n\n\t// JWSTokenByDIDKeyPrefix is the key prefix for JWS tokens indexed by DID\n\tJWSTokenByDIDKeyPrefix = []byte{0x02}\n\n\t// JWSTokenByAccountKeyPrefix is the key prefix for JWS tokens indexed by authorized account\n\tJWSTokenByAccountKeyPrefix = []byte{0x03}\n\n\tParamsKey = []byte(\"p_hub\")\n\n\t// ChainConfigKey stores Hub's chain config params\n\t// set at genesis\n\tChainConfigKey = []byte(\"chain_config\")\n)\n\n// HashJWSToken returns the SHA256 hash of a JWS token string.\nfunc HashJWSToken(jwsToken string) string {\n\thash := sha256.Sum256([]byte(jwsToken))\n\treturn hex.EncodeToString(hash[:])\n}\n\n// JWSTokenKey returns the store key for a JWS token by its hash using length-prefixed encoding.\nfunc JWSTokenKey(tokenHash string) []byte {\n\treturn append(JWSTokenKeyPrefix, address.MustLengthPrefix([]byte(tokenHash))...)\n}\n\n// JWSTokenByDIDKey returns the store key for a JWS token indexed by DID and hash using length-prefixed encoding.\nfunc JWSTokenByDIDKey(did, tokenHash string) []byte {\n\tkey := append(JWSTokenByDIDKeyPrefix, address.MustLengthPrefix([]byte(did))...)\n\treturn append(key, address.MustLengthPrefix([]byte(tokenHash))...)\n}\n\n// JWSTokenByAccountKey returns the store key for a JWS token indexed by account and hash using length-prefixed encoding.\nfunc JWSTokenByAccountKey(account, tokenHash string) []byte {\n\tkey := append(JWSTokenByAccountKeyPrefix, address.MustLengthPrefix([]byte(account))...)\n\treturn append(key, address.MustLengthPrefix([]byte(tokenHash))...)\n}\n\n// JWSTokenDIDPrefix returns the prefix for all tokens belonging to a DID.\nfunc JWSTokenDIDPrefix(did string) []byte {\n\treturn append(JWSTokenByDIDKeyPrefix, address.MustLengthPrefix([]byte(did))...)\n}\n\n// JWSTokenAccountPrefix returns the prefix for all tokens belonging to an account.\nfunc JWSTokenAccountPrefix(account string) []byte {\n\treturn append(JWSTokenByAccountKeyPrefix, address.MustLengthPrefix([]byte(account))...)\n}\n\n// ParseJWSTokenKey parses a JWS token key and returns the token hash.\nfunc ParseJWSTokenKey(key []byte) (tokenHash string, err error) {\n\tif len(key) == 0 {\n\t\treturn \"\", fmt.Errorf(\"empty key\")\n\t}\n\n\ttokenHashLen, tokenHashLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 0, 1)\n\tif len(tokenHashLen) == 0 {\n\t\treturn \"\", fmt.Errorf(\"invalid key: missing token hash length\")\n\t}\n\n\ttokenHashBz, _ := sdk.ParseLengthPrefixedBytes(key, tokenHashLenEndIndex+1, int(tokenHashLen[0]))\n\treturn string(tokenHashBz), nil\n}\n\n// ParseJWSTokenByDIDKey parses a JWS token by DID key and returns the DID and token hash.\nfunc ParseJWSTokenByDIDKey(key []byte) (did, tokenHash string, err error) {\n\tif len(key) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"empty key\")\n\t}\n\n\tdidLen, didLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 0, 1)\n\tif len(didLen) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid key: missing DID length\")\n\t}\n\n\tdidBz, tokenHashStartIndex := sdk.ParseLengthPrefixedBytes(key, didLenEndIndex+1, int(didLen[0]))\n\n\ttokenHashLen, tokenHashLenEndIndex := sdk.ParseLengthPrefixedBytes(key, tokenHashStartIndex+1, 1)\n\tif len(tokenHashLen) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid key: missing token hash length\")\n\t}\n\n\ttokenHashBz, _ := sdk.ParseLengthPrefixedBytes(key, tokenHashLenEndIndex+1, int(tokenHashLen[0]))\n\n\treturn string(didBz), string(tokenHashBz), nil\n}\n\n// ParseJWSTokenByAccountKey parses a JWS token by account key and returns the account and token hash.\nfunc ParseJWSTokenByAccountKey(key []byte) (account, tokenHash string, err error) {\n\tif len(key) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"empty key\")\n\t}\n\n\taccountLen, accountLenEndIndex := sdk.ParseLengthPrefixedBytes(key, 0, 1)\n\tif len(accountLen) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid key: missing account length\")\n\t}\n\n\taccountBz, tokenHashStartIndex := sdk.ParseLengthPrefixedBytes(key, accountLenEndIndex+1, int(accountLen[0]))\n\n\ttokenHashLen, tokenHashLenEndIndex := sdk.ParseLengthPrefixedBytes(key, tokenHashStartIndex+1, 1)\n\tif len(tokenHashLen) == 0 {\n\t\treturn \"\", \"\", fmt.Errorf(\"invalid key: missing token hash length\")\n\t}\n\n\ttokenHashBz, _ := sdk.ParseLengthPrefixedBytes(key, tokenHashLenEndIndex+1, int(tokenHashLen[0]))\n\n\treturn string(accountBz), string(tokenHashBz), nil\n}\n"
  },
  {
    "path": "x/hub/types/msg_invalidate_jws.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgInvalidateJWS{}\n\n// ValidateBasic does a sanity check on the provided data.\nfunc (m *MsgInvalidateJWS) ValidateBasic() error {\n\tif _, err := sdk.AccAddressFromBech32(m.Creator); err != nil {\n\t\treturn errorsmod.Wrap(err, \"invalid creator address\")\n\t}\n\n\tif m.TokenHash == \"\" {\n\t\treturn ErrInvalidInput.Wrapf(\"invalid token hash\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/types/msg_update_params.go",
    "content": "package types\n\nimport (\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nvar _ sdk.Msg = &MsgUpdateParams{}\n\n// ValidateBasic does a sanity check on the provided data.\nfunc (m *MsgUpdateParams) ValidateBasic() error {\n\tif _, err := sdk.AccAddressFromBech32(m.Authority); err != nil {\n\t\treturn errorsmod.Wrap(err, \"invalid authority address\")\n\t}\n\n\tif err := m.Params.Validate(); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/types/params.go",
    "content": "package types\n\nimport (\n\tparamtypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n)\n\nvar _ paramtypes.ParamSet = (*Params)(nil)\n\n// ParamKeyTable the param key table for launch module.\nfunc ParamKeyTable() paramtypes.KeyTable {\n\treturn paramtypes.NewKeyTable().RegisterParamSet(&Params{})\n}\n\n// NewParams creates a new Params instance.\nfunc NewParams() Params {\n\treturn Params{}\n}\n\n// DefaultParams returns a default set of parameters.\nfunc DefaultParams() Params {\n\treturn NewParams()\n}\n\n// ParamSetPairs get the params.ParamSet.\nfunc (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {\n\treturn paramtypes.ParamSetPairs{}\n}\n\n// Validate validates the set of params.\nfunc (p Params) Validate() error {\n\treturn nil\n}\n"
  },
  {
    "path": "x/hub/types/params.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/params.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Params defines the parameters for the module.\ntype Params struct {\n}\n\nfunc (m *Params) Reset()         { *m = Params{} }\nfunc (m *Params) String() string { return proto.CompactTextString(m) }\nfunc (*Params) ProtoMessage()    {}\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_23e5f04c1d8b06a7, []int{0}\n}\nfunc (m *Params) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Params.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Params) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Params.Merge(m, src)\n}\nfunc (m *Params) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Params) XXX_DiscardUnknown() {\n\txxx_messageInfo_Params.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Params proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*Params)(nil), \"sourcehub.hub.Params\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/params.proto\", fileDescriptor_23e5f04c1d8b06a7) }\n\nvar fileDescriptor_23e5f04c1d8b06a7 = []byte{\n\t// 168 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x07, 0xe1, 0x82, 0xc4, 0xa2, 0xc4, 0xdc, 0x62, 0xbd, 0x82,\n\t0xa2, 0xfc, 0x92, 0x7c, 0x21, 0x5e, 0xb8, 0x9c, 0x5e, 0x46, 0x69, 0x92, 0x94, 0x60, 0x62, 0x6e,\n\t0x66, 0x5e, 0xbe, 0x3e, 0x98, 0x84, 0xa8, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x33, 0xf5,\n\t0x41, 0x2c, 0x88, 0xa8, 0x92, 0x26, 0x17, 0x5b, 0x00, 0xd8, 0x1c, 0x2b, 0xf9, 0x17, 0x0b, 0xe4,\n\t0x19, 0xbb, 0x9e, 0x6f, 0xd0, 0x12, 0x43, 0x58, 0x53, 0x01, 0xb6, 0x08, 0xa2, 0xc0, 0xc9, 0xe3,\n\t0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e,\n\t0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd2, 0x33, 0x4b, 0x40, 0x36,\n\t0x27, 0xe7, 0xe7, 0xea, 0x43, 0x34, 0xe7, 0xa5, 0x96, 0x94, 0xe7, 0x17, 0x65, 0xeb, 0xa3, 0x1b,\n\t0x55, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0xb6, 0xdb, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff,\n\t0xb2, 0x62, 0xf3, 0xf7, 0xd1, 0x00, 0x00, 0x00,\n}\n\nfunc (this *Params) Equal(that interface{}) bool {\n\tif that == nil {\n\t\treturn this == nil\n\t}\n\n\tthat1, ok := that.(*Params)\n\tif !ok {\n\t\tthat2, ok := that.(Params)\n\t\tif ok {\n\t\t\tthat1 = &that2\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\tif that1 == nil {\n\t\treturn this == nil\n\t} else if this == nil {\n\t\treturn false\n\t}\n\treturn true\n}\nfunc (m *Params) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Params) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintParams(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovParams(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Params) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc sovParams(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozParams(x uint64) (n int) {\n\treturn sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Params) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipParams(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipParams(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthParams\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupParams\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthParams\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthParams        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowParams          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupParams = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/query.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n}\n\nfunc (m *QueryParamsRequest) Reset()         { *m = QueryParamsRequest{} }\nfunc (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsRequest) ProtoMessage()    {}\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9940cfaa4a237fff, []int{0}\n}\nfunc (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsRequest.Merge(m, src)\n}\nfunc (m *QueryParamsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\t// params holds all the parameters of this module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *QueryParamsResponse) Reset()         { *m = QueryParamsResponse{} }\nfunc (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsResponse) ProtoMessage()    {}\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_9940cfaa4a237fff, []int{1}\n}\nfunc (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsResponse.Merge(m, src)\n}\nfunc (m *QueryParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo\n\nfunc (m *QueryParamsResponse) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryParamsRequest)(nil), \"sourcehub.hub.QueryParamsRequest\")\n\tproto.RegisterType((*QueryParamsResponse)(nil), \"sourcehub.hub.QueryParamsResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/query.proto\", fileDescriptor_9940cfaa4a237fff) }\n\nvar fileDescriptor_9940cfaa4a237fff = []byte{\n\t// 283 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0xce, 0x2f, 0x2d,\n\t0x4a, 0x4e, 0xcd, 0x28, 0x4d, 0xd2, 0x07, 0xe1, 0xc2, 0xd2, 0xd4, 0xa2, 0x4a, 0xbd, 0x82, 0xa2,\n\t0xfc, 0x92, 0x7c, 0x21, 0x5e, 0xb8, 0x94, 0x5e, 0x46, 0x69, 0x92, 0x94, 0x60, 0x62, 0x6e, 0x66,\n\t0x5e, 0xbe, 0x3e, 0x98, 0x84, 0xa8, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x33, 0xf5, 0x41,\n\t0x2c, 0xa8, 0xa8, 0x4c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x7e, 0x62, 0x41, 0xa6, 0x7e, 0x62,\n\t0x5e, 0x5e, 0x7e, 0x49, 0x62, 0x49, 0x66, 0x7e, 0x5e, 0x31, 0x54, 0x56, 0x0a, 0xd5, 0xc2, 0x82,\n\t0xc4, 0xa2, 0xc4, 0x5c, 0xa8, 0x9c, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0x01, 0x01, 0x60, 0xc1,\n\t0xa0, 0xd4, 0xc2, 0xd2, 0xd4, 0xe2, 0x12, 0x25, 0x7f, 0x2e, 0x61, 0x14, 0xd1, 0xe2, 0x82, 0xfc,\n\t0xbc, 0xe2, 0x54, 0x21, 0x0b, 0x2e, 0x36, 0x88, 0x66, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23,\n\t0x51, 0x3d, 0x14, 0xf7, 0xea, 0x41, 0x94, 0x3b, 0x71, 0x9e, 0xb8, 0x27, 0xcf, 0xb0, 0xe2, 0xf9,\n\t0x06, 0x2d, 0xc6, 0x20, 0xa8, 0x7a, 0xa3, 0x56, 0x46, 0x2e, 0x56, 0xb0, 0x89, 0x42, 0x35, 0x5c,\n\t0x6c, 0x10, 0x65, 0x42, 0x8a, 0x68, 0xba, 0x31, 0xdd, 0x21, 0xa5, 0x84, 0x4f, 0x09, 0xc4, 0x51,\n\t0x4a, 0xda, 0x4d, 0x97, 0x9f, 0x4c, 0x66, 0x52, 0x15, 0x52, 0xd6, 0x87, 0xa8, 0xcd, 0x4b, 0x2d,\n\t0x29, 0xcf, 0x2f, 0xca, 0xd6, 0xc7, 0xe6, 0x69, 0x27, 0x8f, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c,\n\t0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e,\n\t0x3c, 0x96, 0x63, 0x88, 0xd2, 0x4b, 0xcf, 0x2c, 0x01, 0x59, 0x91, 0x9c, 0x9f, 0x8b, 0xd3, 0xa0,\n\t0x0a, 0xb0, 0x51, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xf0, 0x33, 0x06, 0x04, 0x00,\n\t0x00, 0xff, 0xff, 0x59, 0x5b, 0x93, 0x7e, 0xce, 0x01, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.hub.Query/Params\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.hub.Query/Params\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.hub.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/hub/query.proto\",\n}\n\nfunc (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryParamsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryParamsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: sourcehub/hub/query.proto\n\n/*\nPackage types is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage types\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.Params(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcenetwork\", \"sourcehub\", \"hub\", \"params\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_Params_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/hub/types/tx.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/hub/tx.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// params defines the module parameters to update.\n\t//\n\t// NOTE: All parameters must be supplied.\n\tParams Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *MsgUpdateParams) Reset()         { *m = MsgUpdateParams{} }\nfunc (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParams) ProtoMessage()    {}\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_437f12beac18b559, []int{0}\n}\nfunc (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParams) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParams.Merge(m, src)\n}\nfunc (m *MsgUpdateParams) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParams) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo\n\nfunc (m *MsgUpdateParams) GetAuthority() string {\n\tif m != nil {\n\t\treturn m.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateParams) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n}\n\nfunc (m *MsgUpdateParamsResponse) Reset()         { *m = MsgUpdateParamsResponse{} }\nfunc (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParamsResponse) ProtoMessage()    {}\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_437f12beac18b559, []int{1}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo\n\n// MsgInvalidateJWS is the Msg/InvalidateJWS request type.\n// This message allows a user to invalidate a JWS token:\n// - By providing a JWS extension option with matching DID.\n// - By being the creator/signer of the message with matching authorized account.\ntype MsgInvalidateJWS struct {\n\t// creator is the address of the message signer.\n\tCreator string `protobuf:\"bytes,1,opt,name=creator,proto3\" json:\"creator,omitempty\"`\n\t// token_hash is the hash/identifier of the JWS token to invalidate.\n\tTokenHash string `protobuf:\"bytes,2,opt,name=token_hash,json=tokenHash,proto3\" json:\"token_hash,omitempty\"`\n}\n\nfunc (m *MsgInvalidateJWS) Reset()         { *m = MsgInvalidateJWS{} }\nfunc (m *MsgInvalidateJWS) String() string { return proto.CompactTextString(m) }\nfunc (*MsgInvalidateJWS) ProtoMessage()    {}\nfunc (*MsgInvalidateJWS) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_437f12beac18b559, []int{2}\n}\nfunc (m *MsgInvalidateJWS) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgInvalidateJWS) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgInvalidateJWS.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgInvalidateJWS) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgInvalidateJWS.Merge(m, src)\n}\nfunc (m *MsgInvalidateJWS) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgInvalidateJWS) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgInvalidateJWS.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgInvalidateJWS proto.InternalMessageInfo\n\nfunc (m *MsgInvalidateJWS) GetCreator() string {\n\tif m != nil {\n\t\treturn m.Creator\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgInvalidateJWS) GetTokenHash() string {\n\tif m != nil {\n\t\treturn m.TokenHash\n\t}\n\treturn \"\"\n}\n\n// MsgInvalidateJWSResponse defines the response structure for executing a MsgInvalidateJWS message.\ntype MsgInvalidateJWSResponse struct {\n\t// success indicates whether the invalidation was successful.\n\tSuccess bool `protobuf:\"varint,1,opt,name=success,proto3\" json:\"success,omitempty\"`\n}\n\nfunc (m *MsgInvalidateJWSResponse) Reset()         { *m = MsgInvalidateJWSResponse{} }\nfunc (m *MsgInvalidateJWSResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgInvalidateJWSResponse) ProtoMessage()    {}\nfunc (*MsgInvalidateJWSResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_437f12beac18b559, []int{3}\n}\nfunc (m *MsgInvalidateJWSResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgInvalidateJWSResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgInvalidateJWSResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgInvalidateJWSResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgInvalidateJWSResponse.Merge(m, src)\n}\nfunc (m *MsgInvalidateJWSResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgInvalidateJWSResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgInvalidateJWSResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgInvalidateJWSResponse proto.InternalMessageInfo\n\nfunc (m *MsgInvalidateJWSResponse) GetSuccess() bool {\n\tif m != nil {\n\t\treturn m.Success\n\t}\n\treturn false\n}\n\nfunc init() {\n\tproto.RegisterType((*MsgUpdateParams)(nil), \"sourcehub.hub.MsgUpdateParams\")\n\tproto.RegisterType((*MsgUpdateParamsResponse)(nil), \"sourcehub.hub.MsgUpdateParamsResponse\")\n\tproto.RegisterType((*MsgInvalidateJWS)(nil), \"sourcehub.hub.MsgInvalidateJWS\")\n\tproto.RegisterType((*MsgInvalidateJWSResponse)(nil), \"sourcehub.hub.MsgInvalidateJWSResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/hub/tx.proto\", fileDescriptor_437f12beac18b559) }\n\nvar fileDescriptor_437f12beac18b559 = []byte{\n\t// 456 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xcf, 0x6b, 0xd4, 0x40,\n\t0x18, 0xcd, 0x28, 0xb6, 0x66, 0xb4, 0xa8, 0xa1, 0xda, 0x34, 0x60, 0x76, 0xc9, 0x41, 0xcb, 0x82,\n\t0x09, 0x8d, 0x22, 0xd2, 0x9b, 0x7b, 0xaa, 0xc2, 0x82, 0xa4, 0xa8, 0xe8, 0xa5, 0xcc, 0x66, 0x87,\n\t0x49, 0xa8, 0xc9, 0x84, 0xf9, 0x26, 0xb5, 0xbd, 0x89, 0x47, 0x4f, 0x1e, 0xfd, 0x13, 0x3c, 0xee,\n\t0x41, 0xf0, 0xe8, 0xb5, 0xc7, 0xe2, 0xc9, 0x93, 0xc8, 0xee, 0x61, 0xff, 0x0d, 0x99, 0x49, 0xd2,\n\t0x25, 0x51, 0xda, 0x43, 0x7e, 0x7c, 0xef, 0xbd, 0x79, 0xf3, 0xbe, 0x6f, 0x06, 0xdf, 0x01, 0x5e,\n\t0x8a, 0x98, 0x26, 0xe5, 0x38, 0x50, 0x8f, 0x3c, 0xf2, 0x0b, 0xc1, 0x25, 0xb7, 0xd6, 0xce, 0x70,\n\t0x3f, 0x29, 0xc7, 0xce, 0x2d, 0x92, 0xa5, 0x39, 0x0f, 0xf4, 0xbb, 0x52, 0x38, 0x1b, 0x31, 0x87,\n\t0x8c, 0x43, 0x90, 0x01, 0x0b, 0x0e, 0xb7, 0xd5, 0xa7, 0x26, 0x36, 0x2b, 0x62, 0x5f, 0x57, 0x41,\n\t0x55, 0xd4, 0xd4, 0x3a, 0xe3, 0x8c, 0x57, 0xb8, 0xfa, 0xab, 0x51, 0xa7, 0x9d, 0xa1, 0x20, 0x82,\n\t0x64, 0xf5, 0x0a, 0xef, 0x3b, 0xc2, 0x37, 0x46, 0xc0, 0x5e, 0x16, 0x13, 0x22, 0xe9, 0x0b, 0xcd,\n\t0x58, 0x8f, 0xb1, 0x49, 0x4a, 0x99, 0x70, 0x91, 0xca, 0x63, 0x1b, 0xf5, 0xd1, 0x96, 0x39, 0xb4,\n\t0x7f, 0x7e, 0x7b, 0xb0, 0x5e, 0x6f, 0xf5, 0x74, 0x32, 0x11, 0x14, 0x60, 0x4f, 0x8a, 0x34, 0x67,\n\t0xd1, 0x52, 0x6a, 0x3d, 0xc1, 0x2b, 0x95, 0xb7, 0x7d, 0xa9, 0x8f, 0xb6, 0xae, 0x85, 0xb7, 0xfd,\n\t0x56, 0x93, 0x7e, 0x65, 0x3f, 0x34, 0x4f, 0x7e, 0xf7, 0x8c, 0xaf, 0x8b, 0xe9, 0x00, 0x45, 0xb5,\n\t0x7e, 0x27, 0xfc, 0xb8, 0x98, 0x0e, 0x96, 0x4e, 0x9f, 0x16, 0xd3, 0x41, 0x6f, 0x19, 0xfa, 0x48,\n\t0xc7, 0xee, 0xa4, 0xf4, 0x36, 0xf1, 0x46, 0x07, 0x8a, 0x28, 0x14, 0x3c, 0x07, 0xea, 0x7d, 0x41,\n\t0xf8, 0xe6, 0x08, 0xd8, 0xb3, 0xfc, 0x90, 0xbc, 0x4b, 0x15, 0xff, 0xfc, 0xf5, 0x9e, 0x15, 0xe2,\n\t0xd5, 0x58, 0x50, 0x22, 0xb9, 0xb8, 0xb0, 0xa7, 0x46, 0x68, 0xdd, 0xc5, 0x58, 0xf2, 0x03, 0x9a,\n\t0xef, 0x27, 0x04, 0x12, 0xdd, 0x95, 0x19, 0x99, 0x1a, 0xd9, 0x25, 0x90, 0xec, 0x6c, 0xab, 0xd8,\n\t0x8d, 0x58, 0x85, 0xee, 0xff, 0x27, 0x74, 0x2b, 0x85, 0xf7, 0x08, 0xdb, 0x5d, 0xac, 0x89, 0x6d,\n\t0xd9, 0x78, 0x15, 0xca, 0x38, 0xa6, 0x00, 0x3a, 0xe1, 0xd5, 0xa8, 0x29, 0xc3, 0x1f, 0x08, 0x5f,\n\t0x1e, 0x01, 0xb3, 0x5e, 0xe1, 0xeb, 0xad, 0x93, 0x72, 0x3b, 0x13, 0xee, 0x0c, 0xc4, 0xb9, 0x77,\n\t0x3e, 0x7f, 0xb6, 0xf3, 0x1b, 0xbc, 0xd6, 0x1e, 0x56, 0xef, 0xdf, 0x85, 0x2d, 0x81, 0x73, 0xff,\n\t0x02, 0x41, 0x63, 0xed, 0x5c, 0xf9, 0xa0, 0x4e, 0x7a, 0xb8, 0x7b, 0x32, 0x73, 0xd1, 0xe9, 0xcc,\n\t0x45, 0x7f, 0x66, 0x2e, 0xfa, 0x3c, 0x77, 0x8d, 0xd3, 0xb9, 0x6b, 0xfc, 0x9a, 0xbb, 0xc6, 0x5b,\n\t0x9f, 0xa5, 0x52, 0x39, 0xc4, 0x3c, 0x0b, 0x2a, 0xcf, 0x9c, 0xca, 0xf7, 0x5c, 0x1c, 0x04, 0xdd,\n\t0x61, 0xca, 0xe3, 0x82, 0xc2, 0x78, 0x45, 0x5f, 0xdc, 0x87, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff,\n\t0xa3, 0x5c, 0xab, 0xda, 0x5a, 0x03, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// InvalidateJWS allows a user to manually invalidate a JWS token\n\t// that they own (same DID) or are authorized to use (same creator account).\n\tInvalidateJWS(ctx context.Context, in *MsgInvalidateJWS, opts ...grpc.CallOption) (*MsgInvalidateJWSResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewMsgClient(cc grpc1.ClientConn) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.hub.Msg/UpdateParams\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) InvalidateJWS(ctx context.Context, in *MsgInvalidateJWS, opts ...grpc.CallOption) (*MsgInvalidateJWSResponse, error) {\n\tout := new(MsgInvalidateJWSResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.hub.Msg/InvalidateJWS\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// InvalidateJWS allows a user to manually invalidate a JWS token\n\t// that they own (same DID) or are authorized to use (same creator account).\n\tInvalidateJWS(context.Context, *MsgInvalidateJWS) (*MsgInvalidateJWSResponse, error)\n}\n\n// UnimplementedMsgServer can be embedded to have forward compatible implementations.\ntype UnimplementedMsgServer struct {\n}\n\nfunc (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (*UnimplementedMsgServer) InvalidateJWS(ctx context.Context, req *MsgInvalidateJWS) (*MsgInvalidateJWSResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method InvalidateJWS not implemented\")\n}\n\nfunc RegisterMsgServer(s grpc1.Server, srv MsgServer) {\n\ts.RegisterService(&_Msg_serviceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.hub.Msg/UpdateParams\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_InvalidateJWS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgInvalidateJWS)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).InvalidateJWS(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.hub.Msg/InvalidateJWS\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).InvalidateJWS(ctx, req.(*MsgInvalidateJWS))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Msg_serviceDesc = _Msg_serviceDesc\nvar _Msg_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.hub.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"InvalidateJWS\",\n\t\t\tHandler:    _Msg_InvalidateJWS_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/hub/tx.proto\",\n}\n\nfunc (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgInvalidateJWS) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgInvalidateJWS) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgInvalidateJWS) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.TokenHash) > 0 {\n\t\ti -= len(m.TokenHash)\n\t\tcopy(dAtA[i:], m.TokenHash)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.TokenHash)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Creator) > 0 {\n\t\ti -= len(m.Creator)\n\t\tcopy(dAtA[i:], m.Creator)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Creator)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgInvalidateJWSResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgInvalidateJWSResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgInvalidateJWSResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Success {\n\t\ti--\n\t\tif m.Success {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTx(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTx(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *MsgUpdateParams) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Params.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgUpdateParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgInvalidateJWS) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Creator)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.TokenHash)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgInvalidateJWSResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Success {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc sovTx(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTx(x uint64) (n int) {\n\treturn sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgInvalidateJWS) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgInvalidateJWS: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgInvalidateJWS: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Creator\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Creator = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TokenHash\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.TokenHash = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgInvalidateJWSResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgInvalidateJWSResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgInvalidateJWSResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Success\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.Success = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTx(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTx\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTx\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTx\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTx        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTx          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTx = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/hub/types/types.go",
    "content": "package types\n"
  },
  {
    "path": "x/tier/keeper/abci.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// BeginBlocker handles slashing events and processes tier module staking rewards.\nfunc (k *Keeper) BeginBlocker(ctx context.Context) error {\n\tdefer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker)\n\n\tk.handleSlashingEvents(ctx)\n\n\terr := k.processRewards(ctx)\n\tif err != nil {\n\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, telemetry.MetricKeyBeginBlocker, err)\n\t\tk.Logger().Error(\"Failed to process rewards\", \"error\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/abci_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestBeginBlocker(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\n\tinsurancePoolBalance := math.NewInt(500_000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(20_000_000_000_000)\n\tinitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(10_000_000_000_000)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insurancePoolBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\ttierDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\trequire.Error(t, err)\n\n\t// lock valid amount\n\terr = k.Lock(ctx, delAddr, valAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\n\ttierDelegation, err = k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, math.LegacyNewDecFromInt(initialDelegatorBalance), tierDelegation.Shares)\n\n\tbalance := k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, insurancePoolBalance, balance.Amount)\n\n\t// verify that lockup was added\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, initialDelegatorBalance, lockedAmt)\n\n\t// advance to block at height 1000\n\tctx = ctx.WithBlockHeight(1000).WithBlockTime(time.Now().Add(time.Hour))\n\n\terr = k.BeginBlocker(ctx)\n\trequire.NoError(t, err)\n}\n\nfunc TestHandleSlashingEvents(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(200_000)\n\tinitialDelegatorBalance2 := math.NewInt(800_000)\n\tinitialValidatorBalance := math.NewInt(1_000_000)\n\tinsurancePoolBalance := math.NewInt(500_000)\n\tmissingSignatureSlashAmount := math.NewInt(100_000)\n\tdoubleSignSlashAmount := math.NewInt(200_000)\n\n\tinitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitializeDelegator(t, &k, ctx, delAddr2, initialDelegatorBalance2)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insurancePoolBalance)\n\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, initialValidatorBalance, validator.Tokens)\n\n\t_, err = k.stakingKeeper.Delegate(ctx, delAddr2, initialDelegatorBalance2, stakingtypes.Unbonded, validator, true)\n\n\terr = k.Lock(ctx, delAddr, valAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\n\tbalance := k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, insurancePoolBalance, balance.Amount)\n\n\tctx = ctx.WithBlockHeight(10).WithBlockTime(time.Now().Add(time.Minute))\n\n\texpectedTotalStake := initialValidatorBalance.Add(initialDelegatorBalance).Add(initialDelegatorBalance2)\n\tvalidator, err = k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedTotalStake, validator.Tokens)\n\n\t// emit missing_signature slashing event\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\"slash\",\n\t\tsdk.NewAttribute(\"address\", valAddr.String()),\n\t\tsdk.NewAttribute(\"reason\", slashingtypes.AttributeValueMissingSignature),\n\t\tsdk.NewAttribute(\"burned\", missingSignatureSlashAmount.String()),\n\t))\n\n\t// total validator stake remains unchanged since we just emit the event without burning tokens\n\tvalidator, err = k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedTotalStake, validator.Tokens)\n\n\t// tier stake should be equal to initial delegator balance\n\ttierDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\trequire.NoError(t, err)\n\ttierStake := validator.TokensFromSharesTruncated(tierDelegation.Shares)\n\trequire.Equal(t, initialDelegatorBalance, tierStake.RoundInt())\n\n\t// no insurance pool delegation at this point\n\t_, err = k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.Error(t, err)\n\n\t// total lockups amount should be equal to initial delegator balance at this point\n\ttotalLockupsAmount := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialDelegatorBalance, totalLockupsAmount)\n\n\t// handle missing_signature event (cover slashed tier module stake)\n\tk.handleSlashingEvents(ctx)\n\n\t// slashed tier module amount is 200_000 / (1_000_000 + 800_000 + 200_000) * 100_000 = 10_000\n\tmissingSigTierSlashedAmt := math.NewInt(10_000)\n\n\t// verify insurance pool balance\n\texpectedRemainingInsurancePoolBalance := insurancePoolBalance.Sub(missingSigTierSlashedAmt)\n\tnewInsurancePoolBalance := k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, expectedRemainingInsurancePoolBalance, newInsurancePoolBalance.Amount)\n\n\t// slashed tier module amount is delegated back to the slashed validator\n\tvalidator, err = k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedTotalStake.Add(missingSigTierSlashedAmt), validator.Tokens)\n\n\t// tier stake should be equal to initial delegator balance\n\ttierDelegation, err = k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\trequire.NoError(t, err)\n\ttierStake = validator.TokensFromSharesTruncated(tierDelegation.Shares)\n\trequire.Equal(t, initialDelegatorBalance, tierStake.RoundInt())\n\n\t// insurance pool should have delegation equal to the slashed amount\n\tinsurancePoolDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.NoError(t, err)\n\tinsurancePoolStake := validator.TokensFromSharesTruncated(insurancePoolDelegation.Shares)\n\trequire.Equal(t, missingSigTierSlashedAmt, insurancePoolStake.RoundInt())\n\n\t// total lockups amount should be reduced by the slashed amount\n\ttotalLockupsAmount = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialDelegatorBalance.Sub(missingSigTierSlashedAmt), totalLockupsAmount)\n\n\t// insured amount should be equal to the slashed amount since it had enough balance\n\tinsuredAmount := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, missingSigTierSlashedAmt, insuredAmount)\n\n\t// reset event manager\n\tctx = ctx.WithBlockHeight(2).WithEventManager(sdk.NewEventManager())\n\n\t// and emit double_sign slashing event\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\"slash\",\n\t\tsdk.NewAttribute(\"address\", valAddr.String()),\n\t\tsdk.NewAttribute(\"reason\", slashingtypes.AttributeValueDoubleSign),\n\t\tsdk.NewAttribute(\"burned\", doubleSignSlashAmount.String()),\n\t))\n\n\t// handle double_sign event (no insurance)\n\tk.handleSlashingEvents(ctx)\n\n\t// slashed tier module amount is 190_000 / (1_000_000 + 800_000 + 200_000 + 10_000) * 200_000 = 18906\n\tdoubleSignSlashedAmount := math.NewInt(18_906)\n\n\t// verify insurance pool balance\n\tnewInsurancePoolBalance = k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, expectedRemainingInsurancePoolBalance, newInsurancePoolBalance.Amount)\n\n\t// tier stake should be equal to initial delegator balance\n\ttierDelegation, err = k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\trequire.NoError(t, err)\n\ttierStake = validator.TokensFromSharesTruncated(tierDelegation.Shares)\n\trequire.Equal(t, initialDelegatorBalance, tierStake.RoundInt())\n\n\t// total validator stake remains the same as it was after missing_signature event\n\tvalidator, err = k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedTotalStake.Add(missingSigTierSlashedAmt), validator.Tokens)\n\n\t// total lockups amount should be reduced by the slashed amount\n\ttotalLockupsAmount = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialDelegatorBalance.Sub(missingSigTierSlashedAmt).Sub(doubleSignSlashedAmount), totalLockupsAmount)\n\n\t// insured amount should not change because double_sign events are not covered\n\tinsuredAmount = k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, missingSigTierSlashedAmt, insuredAmount)\n}\n"
  },
  {
    "path": "x/tier/keeper/calculate_credit.go",
    "content": "package keeper\n\nimport (\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// calculateCredit calculates the reward earned on the lockingAmt.\n// lockingAmt is stacked up on top of the lockedAmt to earn at the highest eligible reward.\nfunc calculateCredit(rateList []types.Rate, lockedAmt, lockingAmt math.Int) math.Int {\n\tcredit := math.ZeroInt()\n\tstakedAmt := lockedAmt.Add(lockingAmt)\n\n\t// Iterate from the highest reward rate to the lowest.\n\tfor _, r := range rateList {\n\t\t// Continue if the total lock does not reach the current rate requirement.\n\t\tif stakedAmt.LT(r.Amount) {\n\t\t\tcontinue\n\t\t}\n\n\t\tlower := math.MaxInt(r.Amount, lockedAmt)\n\t\tdiff := stakedAmt.Sub(lower)\n\n\t\tdiffDec := math.LegacyNewDecFromInt(diff)\n\t\trateDec := math.LegacyNewDec(r.Rate)\n\n\t\t// rateDec MUST have 2 decimals of precision for the calculation to be correct.\n\t\tamt := diffDec.Mul(rateDec).Quo(math.LegacyNewDec(100))\n\t\tcredit = credit.Add(amt.TruncateInt())\n\n\t\t// Subtract the lock that has been rewarded.\n\t\tstakedAmt = stakedAmt.Sub(diff)\n\t\tlockingAmt = lockingAmt.Sub(diff)\n\n\t\t// Break if all the new lock has been rewarded.\n\t\tif lockingAmt.IsZero() {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn credit\n}\n\nfunc calculateProratedCredit(\n\trates []types.Rate,\n\tlockedAmt, lockingAmt math.Int,\n\tcurrentEpochStartTime, currentBlockTime time.Time,\n\tepochDuration time.Duration,\n) math.Int {\n\t// Calculate the reward credits earned on the new lock.\n\tcredit := calculateCredit(rates, lockedAmt, lockingAmt)\n\n\t// Prorate the credit based on the time elapsed in the current epoch.\n\tsinceCurrentEpoch := currentBlockTime.Sub(currentEpochStartTime).Milliseconds()\n\tepochDurationMs := epochDuration.Milliseconds()\n\n\tif epochDurationMs == 0 {\n\t\treturn math.ZeroInt()\n\t}\n\n\t// This check is required because is possible that sinceCurrentEpoch can be greater than epochDuration\n\t// (e.g. chain paused for longer than the epoch duration or misconfigured epoch duration).\n\tif sinceCurrentEpoch < epochDurationMs {\n\t\tcredit = credit.MulRaw(sinceCurrentEpoch).QuoRaw(epochDurationMs)\n\t}\n\n\treturn credit\n}\n"
  },
  {
    "path": "x/tier/keeper/calculate_credit_test.go",
    "content": "package keeper\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestCalculateCredit(t *testing.T) {\n\trateList := []types.Rate{\n\t\t{Amount: math.NewInt(300), Rate: 150},\n\t\t{Amount: math.NewInt(200), Rate: 120},\n\t\t{Amount: math.NewInt(100), Rate: 110},\n\t\t{Amount: math.NewInt(0), Rate: 100},\n\t}\n\n\ttests := []struct {\n\t\tlockedAmt  int64\n\t\tlockingAmt int64\n\t\twant       int64\n\t}{\n\t\t{\n\t\t\tlockedAmt:  100,\n\t\t\tlockingAmt: 0,\n\t\t\twant:       0,\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  250,\n\t\t\tlockingAmt: 0,\n\t\t\twant:       0,\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 100,\n\t\t\twant:       100,\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 200,\n\t\t\twant:       (100 * 1.0) + (100 * 1.1),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 250,\n\t\t\twant:       (100 * 1.0) + (100 * 1.1) + (50 * 1.2),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 300,\n\t\t\twant:       (100 * 1.0) + (100 * 1.1) + (100 * 1.2),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 350,\n\t\t\twant:       (100 * 1.0) + (100 * 1.1) + (100 * 1.2) + (50 * 1.5),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  0,\n\t\t\tlockingAmt: 600,\n\t\t\twant:       (100 * 1.0) + (100 * 1.1) + (100 * 1.2) + (300 * 1.5),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  100,\n\t\t\tlockingAmt: 100,\n\t\t\twant:       (100 * 1.1),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  200,\n\t\t\tlockingAmt: 100,\n\t\t\twant:       (100 * 1.2),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  150,\n\t\t\tlockingAmt: 150,\n\t\t\twant:       (50 * 1.1) + (100 * 1.2),\n\t\t},\n\t\t{\n\t\t\tlockedAmt:  50,\n\t\t\tlockingAmt: 400,\n\t\t\twant:       (50 * 1.0) + (100 * 1.1) + (100 * 1.2) + (150 * 1.5),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tname := fmt.Sprintf(\"%d adds %d\", tt.lockedAmt, tt.lockingAmt)\n\t\toldLock := math.NewInt(tt.lockedAmt)\n\t\tnewLock := math.NewInt(tt.lockingAmt)\n\t\twant := math.NewInt(tt.want)\n\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tif got := calculateCredit(rateList, oldLock, newLock); !reflect.DeepEqual(got, want) {\n\t\t\t\tt.Errorf(\"calculateCredit() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCalculateProratedCredit(t *testing.T) {\n\tbaseTime := time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC)\n\n\ttests := []struct {\n\t\tname           string\n\t\tlockedAmt      int64\n\t\tinsuredAmt     int64\n\t\tlockingAmt     int64\n\t\tepochStartTime time.Time\n\t\tepochDuration  time.Duration\n\t\texpectedCredit int64\n\t}{\n\t\t{\n\t\t\t/*\n\t\t\t\tDefault rate for locking 300+ tokens is 150, but since the reward rates are tiered:\n\t\t\t\t- 0-100 tokens are prorated at a rate of 1.0 (100%).\n\t\t\t\t- 100-200 tokens are prorated at a rate of 1.1 (110%).\n\t\t\t\t- 200-300 tokens are prorated at a rate of 1.2 (120%).\n\t\t\t\t- 300+ tokens are prorated at a rate of 1.5 (150%).\n\t\t\t\tFor a locking amount of 10,000,000, the total is 14,999,550 + 100 + 110 + 120 = 14,999,880.\n\t\t\t\tAfter 2 minutes in a 5-minute epoch, the expected credit amount should be:\n\t\t\t\t14,999,880 * 120,000 ms / 300,000 ms = 14,999,880 * 0.4 = 5,999,952.\n\t\t\t*/\n\t\t\tname:           \"Large amount in the middle of the epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     10_000_000,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 5_999_952,\n\t\t},\n\t\t{\n\t\t\tname:           \"Large amount at the first second of the epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     10_000_000,\n\t\t\tepochStartTime: baseTime.Add(-5 * time.Minute).Add(1 * time.Second),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 14_949_880,\n\t\t},\n\t\t{\n\t\t\tname:           \"Large amount at the last second of the epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     10_000_000,\n\t\t\tepochStartTime: baseTime.Add(-1 * time.Second),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 49_999,\n\t\t},\n\t\t{\n\t\t\tname:           \"At the beginning of an epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-5 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 100,\n\t\t},\n\t\t{\n\t\t\tname:           \"In the middle of an epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 40,\n\t\t},\n\t\t{\n\t\t\tname:           \"At the end of an epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime,\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 0,\n\t\t},\n\t\t{\n\t\t\tname:           \"Negative locking amount\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     -100,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 0,\n\t\t},\n\t\t{\n\t\t\tname:           \"Zero locking amount\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     0,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 0,\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.1 rate\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-4 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 80,\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.2 rate\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     200,\n\t\t\tepochStartTime: baseTime.Add(-3 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 6,\n\t\t\texpectedCredit: 105,\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.5 rate\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     300,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 132,\n\t\t},\n\t\t{\n\t\t\tname:           \"Zero epoch duration\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime,\n\t\t\tepochDuration:  0,\n\t\t\texpectedCredit: 0,\n\t\t},\n\t\t{\n\t\t\tname:           \"Short epoch duration\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-30 * time.Second),\n\t\t\tepochDuration:  time.Minute * 1,\n\t\t\texpectedCredit: 50,\n\t\t},\n\t\t{\n\t\t\tname:           \"Long epoch duration\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-15 * 24 * time.Hour),\n\t\t\tepochDuration:  time.Hour * 24 * 30,\n\t\t\texpectedCredit: 50,\n\t\t},\n\t\t{\n\t\t\tname:           \"Epoch duration less than sinceCurrentEpoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-10 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 100,\n\t\t},\n\t\t{\n\t\t\tname:           \"Small locking amount and short epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     9,\n\t\t\tepochStartTime: baseTime.Add(-3 * time.Second),\n\t\t\tepochDuration:  time.Second * 10,\n\t\t\texpectedCredit: 2,\n\t\t},\n\t\t{\n\t\t\tname:           \"Small locking amount and long epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     11,\n\t\t\tepochStartTime: baseTime.Add(-10 * time.Minute),\n\t\t\tepochDuration:  time.Hour * 2,\n\t\t\texpectedCredit: 0,\n\t\t},\n\t\t{\n\t\t\tname:           \"Large locking amount and short epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     1_000_003,\n\t\t\tepochStartTime: baseTime.Add(-1 * time.Second),\n\t\t\tepochDuration:  time.Second * 5,\n\t\t\texpectedCredit: 299_976,\n\t\t},\n\t\t{\n\t\t\tname:           \"Large locking amount and long epoch\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     1_000_003,\n\t\t\tepochStartTime: baseTime.Add(-1 * time.Hour),\n\t\t\tepochDuration:  time.Hour * 5,\n\t\t\texpectedCredit: 299_976,\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount causing uneven division\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     7,\n\t\t\tepochStartTime: baseTime.Add(-10 * time.Second),\n\t\t\tepochDuration:  time.Second * 33,\n\t\t\texpectedCredit: 2,\n\t\t},\n\t\t{\n\t\t\tname:           \"Epoch duration causing uneven division\",\n\t\t\tlockedAmt:      0,\n\t\t\tlockingAmt:     1234,\n\t\t\tepochStartTime: baseTime.Add(-4 * time.Second),\n\t\t\tepochDuration:  time.Second * 9,\n\t\t\texpectedCredit: 769,\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.0 rate and previously locked amount\",\n\t\t\tlockedAmt:      40,\n\t\t\tlockingAmt:     40,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 16, // 40 * 1.0 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.1 rate and previously locked amount\",\n\t\t\tlockedAmt:      100,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 44, // 100 * 1.1 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.5 rate and previously locked amount\",\n\t\t\tlockedAmt:      300,\n\t\t\tlockingAmt:     300,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 180, // 300 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.2 + 1.1 rate and previously locked amount\",\n\t\t\tlockedAmt:      150,\n\t\t\tlockingAmt:     150,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 70, // ((100 * 1.2) + (50 * 1.1)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.5 + 1.2 rate and previously locked amount\",\n\t\t\tlockedAmt:      200,\n\t\t\tlockingAmt:     200,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 108, // ((100 * 1.5) + (100 * 1.2)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking amount with 1.5 + 1.2 + 1.1 + 1.0 rate and previously locked amount\",\n\t\t\tlockedAmt:      50,\n\t\t\tlockingAmt:     350,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 172, // ((100 * 1.5) + (100 * 1.2) + (100 * 1.1) + (50 * 1.0)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking small amount with large previously locked amount\",\n\t\t\tlockedAmt:      1_000_000,\n\t\t\tlockingAmt:     100,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 60, // 100 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking large amount with large previously locked amount\",\n\t\t\tlockedAmt:      1_000_000,\n\t\t\tlockingAmt:     10_000_000,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 6_000_000, // 10,000,000 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:           \"Locking large amount with large previously locked and insured amount\",\n\t\t\tlockedAmt:      1_000_000,\n\t\t\tinsuredAmt:     100_000,\n\t\t\tlockingAmt:     10_000_000,\n\t\t\tepochStartTime: baseTime.Add(-2 * time.Minute),\n\t\t\tepochDuration:  time.Minute * 5,\n\t\t\texpectedCredit: 6_000_000, // 10,000,000 * 1.5 * 2/5\n\t\t},\n\t}\n\n\trates := []types.Rate{\n\t\t{Amount: math.NewInt(300), Rate: 150},\n\t\t{Amount: math.NewInt(200), Rate: 120},\n\t\t{Amount: math.NewInt(100), Rate: 110},\n\t\t{Amount: math.NewInt(0), Rate: 100},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tlockedAmt := math.NewInt(tt.lockedAmt)\n\t\t\tlockingAmt := math.NewInt(tt.lockingAmt)\n\n\t\t\tcredit := calculateProratedCredit(\n\t\t\t\trates,\n\t\t\t\tlockedAmt,\n\t\t\t\tlockingAmt,\n\t\t\t\ttt.epochStartTime,\n\t\t\t\tbaseTime,\n\t\t\t\ttt.epochDuration,\n\t\t\t)\n\n\t\t\tif !credit.Equal(math.NewInt(tt.expectedCredit)) {\n\t\t\t\tt.Errorf(\"calculateProratedCredit() = %v, expected %v\", credit, tt.expectedCredit)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/credit.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// getTotalCreditAmount retrieves the total credit amount from the store.\nfunc (k *Keeper) getTotalCreditAmount(ctx context.Context) (total math.Int) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.TotalCreditsKey)\n\tif bz == nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\terr := total.Unmarshal(bz)\n\tif err != nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\tif total.IsNegative() {\n\t\treturn math.ZeroInt()\n\t}\n\n\treturn total\n}\n\n// setTotalCreditAmount updates the total credit amount in the store.\nfunc (k *Keeper) setTotalCreditAmount(ctx context.Context, total math.Int) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := total.Marshal()\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"marshal total credit amount\")\n\t}\n\n\tstore.Set(types.TotalCreditsKey, bz)\n\n\t// Update total credit amount gauge if we are not resetting the total\n\tif total.IsPositive() {\n\t\ttelemetry.ModuleSetGauge(\n\t\t\ttypes.ModuleName,\n\t\t\tfloat32(total.Int64()),\n\t\t\tmetrics.TotalCredits,\n\t\t)\n\t}\n\n\treturn nil\n}\n\n// mintCredit mints ucredit amount and sends it to the specified address.\nfunc (k *Keeper) mintCredit(ctx context.Context, addr sdk.AccAddress, amount math.Int) error {\n\tif _, err := sdk.AccAddressFromBech32(addr.String()); err != nil {\n\t\treturn errorsmod.Wrap(err, \"invalid address\")\n\t}\n\n\tif amount.LTE(math.ZeroInt()) {\n\t\treturn errors.New(\"invalid amount\")\n\t}\n\n\tcoins := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, amount))\n\terr := k.bankKeeper.MintCoins(ctx, types.ModuleName, coins)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"mint coins\")\n\t}\n\n\terr = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, coins)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"send coins from module to account\")\n\t}\n\n\treturn nil\n}\n\n// proratedCredit calculates the credits earned on the lockingAmt.\nfunc (k *Keeper) proratedCredit(ctx context.Context, delAddr sdk.AccAddress, lockingAmt math.Int) math.Int {\n\trates := k.GetParams(ctx).RewardRates\n\tepochInfo := k.epochsKeeper.GetEpochInfo(ctx, types.EpochIdentifier)\n\n\tlockedAmt := k.totalLockedAmountByAddr(ctx, delAddr)\n\tinsuredAmt := k.totalInsuredAmountByAddr(ctx, delAddr)\n\ttotalAmt := lockedAmt.Add(insuredAmt)\n\n\treturn calculateProratedCredit(\n\t\trates,\n\t\ttotalAmt,\n\t\tlockingAmt,\n\t\tepochInfo.CurrentEpochStartTime,\n\t\tsdk.UnwrapSDKContext(ctx).BlockTime(),\n\t\tepochInfo.Duration,\n\t)\n}\n\n// burnAllCredits burns all the reward credits in the system.\n// It is called at the end of each epoch.\nfunc (k *Keeper) burnAllCredits(ctx context.Context, epochNumber int64) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.BurnAllCredits,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Epoch, fmt.Sprintf(\"%d\", epochNumber)),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Track unused credits to calculate credit utilization\n\tunusedCredits := math.ZeroInt()\n\n\t// Iterating over the lockup records directly is safe because credits are non-transferable.\n\tcb := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tcoin := k.bankKeeper.GetBalance(ctx, delAddr, appparams.MicroCreditDenom)\n\t\t// Return if ucredit amount is not positive\n\t\tif !coin.Amount.IsPositive() {\n\t\t\treturn\n\t\t}\n\t\tcoins := sdk.NewCoins(coin)\n\t\t// Send ucredits from delegator address to the tier module account\n\t\terr = k.bankKeeper.SendCoinsFromAccountToModule(ctx, delAddr, types.ModuleName, coins)\n\t\tif err != nil {\n\t\t\terr = errorsmod.Wrapf(err, \"send %s ucredit from %s to module\", coins, delAddr)\n\t\t\treturn\n\t\t}\n\t\t// Burn ucredits from the tier module account\n\t\terr = k.bankKeeper.BurnCoins(ctx, types.ModuleName, coins)\n\t\tif err != nil {\n\t\t\terr = errorsmod.Wrapf(err, \"burn %s ucredit\", coins)\n\t\t\treturn\n\t\t}\n\t\t// Update the unused credit amount\n\t\tunusedCredits = unusedCredits.Add(coin.Amount)\n\t}\n\n\tk.mustIterateLockups(ctx, cb)\n\n\ttotalCredits := k.getTotalCreditAmount(ctx)\n\tif totalCredits.IsPositive() {\n\t\tcreditUtilization, err := unusedCredits.ToLegacyDec().Quo(totalCredits.ToLegacyDec()).Float64()\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrap(err, \"calculate credit utilization\")\n\t\t}\n\t\t// Update credit utilization gauge\n\t\ttelemetry.ModuleSetGauge(\n\t\t\ttypes.ModuleName,\n\t\t\tfloat32(creditUtilization),\n\t\t\tmetrics.CreditUtilization,\n\t\t\tfmt.Sprintf(\"%s_%d\", metrics.Epoch, epochNumber),\n\t\t)\n\t}\n\n\t// Reset total credit amount to 0 after burning\n\tk.setTotalCreditAmount(ctx, math.ZeroInt())\n\n\treturn err\n}\n\n// resetAllCredits resets all the credits in the system.\nfunc (k *Keeper) resetAllCredits(ctx context.Context, epochNumber int64) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.ResetAllCredits,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Epoch, fmt.Sprintf(\"%d\", epochNumber)),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Reward to a delegator is calculated based on the total locked amount to all validators.\n\t// Since each lockup entry only records locked amount for a single validator,\n\t// we need to iterate through all the lockups to calculate the total locked amount for each delegator.\n\tlockedAmts := make(map[string]math.Int)\n\n\tcb := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tamt, ok := lockedAmts[delAddr.String()]\n\t\tif !ok {\n\t\t\tamt = math.ZeroInt()\n\t\t}\n\t\t// Include associated insurance lockup amounts to allocate credits correctly\n\t\tinsuranceLockupAmount := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\t\tlockedAmts[delAddr.String()] = amt.Add(lockup.Amount).Add(insuranceLockupAmount)\n\t}\n\n\tk.mustIterateLockups(ctx, cb)\n\n\trates := k.GetParams(ctx).RewardRates\n\n\ttotalCredit := math.ZeroInt()\n\tfor delStrAddr, amount := range lockedAmts {\n\t\tdelAddr := sdk.MustAccAddressFromBech32(delStrAddr)\n\t\tcredit := calculateCredit(rates, math.ZeroInt(), amount)\n\t\terr = k.mintCredit(ctx, delAddr, credit)\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrapf(err, \"mint %s ucredit to %s\", credit, delAddr)\n\t\t}\n\t\ttotalCredit.Add(credit)\n\t}\n\n\t// Set total credit amount\n\terr = k.setTotalCreditAmount(ctx, totalCredit)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"set total credit amount\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/credit_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestSetAndGetTotalCreditAmount(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\ttotal := k.getTotalCreditAmount(ctx)\n\trequire.True(t, total.IsZero(), \"Initial total credit amount should be zero\")\n\n\texpectedTotal := math.NewInt(1500)\n\terr := k.setTotalCreditAmount(ctx, expectedTotal)\n\trequire.NoError(t, err, \"Setting total credit amount should succeed\")\n\n\ttotal = k.getTotalCreditAmount(ctx)\n\trequire.Equal(t, expectedTotal, total, \"Total credit amount should be 1500\")\n}\n\nfunc TestMintCredit(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\taddr    string\n\t\tamt     int64\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"Mint valid credit\",\n\t\t\taddr:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\tamt:     100,\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:    \"Mint zero credit\",\n\t\t\taddr:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\tamt:     0,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid address\",\n\t\t\taddr:    \"\",\n\t\t\tamt:     100,\n\t\t\twantErr: true,\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\taddr := sdk.AccAddress{}\n\t\t\tif tt.addr != \"\" {\n\t\t\t\taddr = sdk.MustAccAddressFromBech32(tt.addr)\n\t\t\t}\n\t\t\tamt := math.NewInt(tt.amt)\n\n\t\t\tk, ctx := setupKeeper(t)\n\n\t\t\terr := k.mintCredit(ctx, addr, amt)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"mintCredit() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestProratedCredit(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tbaseTime := time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC)\n\n\tcases := []struct {\n\t\tname        string\n\t\tlocked      int64\n\t\tinsured     int64\n\t\tlocking     int64\n\t\tremainingMs int64\n\t\ttotalMs     int64\n\t\twant        int64\n\t}{\n\t\t{\n\t\t\tname:        \"Large amount in the middle of the epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     10_000_000,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        5_999_952,\n\t\t},\n\t\t{\n\t\t\tname:        \"Large amount at the first second of the epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     10_000_000,\n\t\t\tremainingMs: 299_000, // 4 minutes 59 seconds\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        14_949_880,\n\t\t},\n\t\t{\n\t\t\tname:        \"Large amount at the last second of the epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     10_000_000,\n\t\t\tremainingMs: 1000,    // 1 second\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        49_999,\n\t\t},\n\t\t{\n\t\t\tname:        \"At the beginning of an epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 300_000, // 5 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        100,\n\t\t},\n\t\t{\n\t\t\tname:        \"In the middle of an epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        40,\n\t\t},\n\t\t{\n\t\t\tname:        \"At the end of an epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 0,\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        0,\n\t\t},\n\t\t{\n\t\t\tname:        \"Negative locking amount\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     -100,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        0,\n\t\t},\n\t\t{\n\t\t\tname:        \"Zero locking amount\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     0,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        0,\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.1 rate\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 240_000, // 4 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        80,\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.2 rate\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     200,\n\t\t\tremainingMs: 180_000, // 3 minutes\n\t\t\ttotalMs:     360_000, // 6 minutes\n\t\t\twant:        105,\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.5 rate\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     300,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        132,\n\t\t},\n\t\t{\n\t\t\tname:        \"Zero epoch duration\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 0,\n\t\t\ttotalMs:     0,\n\t\t\twant:        0,\n\t\t},\n\t\t{\n\t\t\tname:        \"Short epoch duration\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 30_000, // 30 seconds\n\t\t\ttotalMs:     60_000, // 1 minute\n\t\t\twant:        50,\n\t\t},\n\t\t{\n\t\t\tname:        \"Long epoch duration\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 1_296_000_000, // 15 days\n\t\t\ttotalMs:     2_592_000_000, // 30 days\n\t\t\twant:        50,\n\t\t},\n\t\t{\n\t\t\tname:        \"Epoch duration less than sinceCurrentEpoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 600_000, // 10 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        100,\n\t\t},\n\t\t{\n\t\t\tname:        \"Small locking amount and short epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     9,\n\t\t\tremainingMs: 3000,   // 3 seconds\n\t\t\ttotalMs:     10_000, // 10 seconds\n\t\t\twant:        2,\n\t\t},\n\t\t{\n\t\t\tname:        \"Small locking amount and long epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     11,\n\t\t\tremainingMs: 600_000,   // 10 minutes\n\t\t\ttotalMs:     7_200_000, // 2 hours\n\t\t\twant:        0,\n\t\t},\n\t\t{\n\t\t\tname:        \"Large locking amount and short epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     1_000_003,\n\t\t\tremainingMs: 1000, // 1 second\n\t\t\ttotalMs:     5000, // 5 seconds\n\t\t\twant:        299_976,\n\t\t},\n\t\t{\n\t\t\tname:        \"Large locking amount and long epoch\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     1_000_003,\n\t\t\tremainingMs: 3_600_000,  // 1 hour\n\t\t\ttotalMs:     18_000_000, // 5 hours\n\t\t\twant:        299_976,\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount causing uneven division\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     7,\n\t\t\tremainingMs: 10_000, // 10 seconds\n\t\t\ttotalMs:     33_000, // 33 seconds\n\t\t\twant:        2,\n\t\t},\n\t\t{\n\t\t\tname:        \"Epoch duration causing uneven division\",\n\t\t\tlocked:      0,\n\t\t\tlocking:     1234,\n\t\t\tremainingMs: 4000, // 4 seconds\n\t\t\ttotalMs:     9000, // 9 seconds\n\t\t\twant:        769,\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.0 rate and previously locked amount\",\n\t\t\tlocked:      40,\n\t\t\tlocking:     40,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        16,      // 40 * 1.0 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.1 rate and previously locked amount\",\n\t\t\tlocked:      100,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        44,      // 100 * 1.1 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.5 rate and previously locked amount\",\n\t\t\tlocked:      300,\n\t\t\tlocking:     300,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        180,     // 300 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.2 + 1.1 rate and previously locked amount\",\n\t\t\tlocked:      150,\n\t\t\tlocking:     150,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        70,      // ((100 * 1.2) + (50 * 1.1)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.5 + 1.2 rate and previously locked amount\",\n\t\t\tlocked:      200,\n\t\t\tlocking:     200,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        108,     // ((100 * 1.5) + (100 * 1.2)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking amount with 1.5 + 1.2 + 1.1 + 1.0 rate and previously locked amount\",\n\t\t\tlocked:      50,\n\t\t\tlocking:     350,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        172,     // ((100 * 1.5) + (100 * 1.2) + (100 * 1.1) + (50 * 1.0)) * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking small amount with large previously locked amount\",\n\t\t\tlocked:      1_000_000,\n\t\t\tlocking:     100,\n\t\t\tremainingMs: 120_000, // 2 minutes\n\t\t\ttotalMs:     300_000, // 5 minutes\n\t\t\twant:        60,      // 100 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking large amount with large previously locked amount\",\n\t\t\tlocked:      1_000_000,\n\t\t\tlocking:     10_000_000,\n\t\t\tremainingMs: 120_000,   // 2 minutes\n\t\t\ttotalMs:     300_000,   // 5 minutes\n\t\t\twant:        6_000_000, // 10,000,000 * 1.5 * 2/5\n\t\t},\n\t\t{\n\t\t\tname:        \"Locking large amount with previously locked and insured amount\",\n\t\t\tlocked:      1_000_000,\n\t\t\tinsured:     100_000,\n\t\t\tlocking:     10_000_000,\n\t\t\tremainingMs: 120_000,   // 2 minutes\n\t\t\ttotalMs:     300_000,   // 5 minutes\n\t\t\twant:        6_000_000, // 10,000,000 * 1.5 * 2/5\n\t\t},\n\t}\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tdelAddr := sdk.MustAccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tfor _, tc := range cases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tctx = ctx.WithBlockTime(baseTime).WithBlockHeight(1)\n\n\t\t\tepochInfo := epochstypes.EpochInfo{\n\t\t\t\tIdentifier:            types.EpochIdentifier,\n\t\t\t\tCurrentEpoch:          1,\n\t\t\t\tCurrentEpochStartTime: baseTime.Add(-time.Duration(tc.remainingMs) * time.Millisecond),\n\t\t\t\tDuration:              time.Duration(tc.totalMs) * time.Millisecond,\n\t\t\t}\n\t\t\tk.epochsKeeper.SetEpochInfo(ctx, epochInfo)\n\n\t\t\tk.removeLockup(ctx, delAddr, valAddr)\n\t\t\tif tc.locked > 0 {\n\t\t\t\terr = k.AddLockup(ctx, delAddr, valAddr, math.NewInt(tc.locked))\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t\tif tc.insured > 0 {\n\t\t\t\tk.AddInsuranceLockup(ctx, delAddr, valAddr, math.NewInt(tc.insured))\n\t\t\t}\n\t\t\tgot := k.proratedCredit(ctx, delAddr, math.NewInt(tc.locking))\n\t\t\trequire.Equal(t, tc.want, got.Int64())\n\t\t})\n\t}\n}\n\nfunc TestBurnAllCredits(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tlockups      map[string]int64\n\t\topenBalances map[string]int64\n\t\twantErr      bool\n\t}{\n\t\t{\n\t\t\tname: \"Burn all credits successfully (single address)\",\n\t\t\tlockups: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 100,\n\t\t\t},\n\t\t\topenBalances: map[string]int64{},\n\t\t\twantErr:      false,\n\t\t},\n\t\t{\n\t\t\tname:         \"No addresses have credits\",\n\t\t\tlockups:      map[string]int64{},\n\t\t\topenBalances: map[string]int64{},\n\t\t\twantErr:      false,\n\t\t},\n\t\t{\n\t\t\tname: \"Multiple addresses with credits\",\n\t\t\tlockups: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 50,\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": 150,\n\t\t\t},\n\t\t\topenBalances: map[string]int64{},\n\t\t\twantErr:      false,\n\t\t},\n\t\t{\n\t\t\tname: \"Burn credits when addresses also hold uopen\",\n\t\t\tlockups: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 80,\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": 200,\n\t\t\t},\n\t\t\topenBalances: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 9999,\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": 888,\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t}\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tk, ctx := setupKeeper(t)\n\n\t\t\terr := k.SetParams(ctx, types.DefaultParams())\n\t\t\trequire.NoError(t, err)\n\n\t\t\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(10_000_000))\n\n\t\t\t// Add lockups\n\t\t\tfor addrStr, lockupAmount := range tt.lockups {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tamt := math.NewInt(lockupAmount)\n\t\t\t\tinitializeDelegator(t, &k, ctx, addr, amt)\n\t\t\t\terr = k.Lock(ctx, addr, valAddr, amt)\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\t// Mint and distribute uopen\n\t\t\tfor addrStr, balance := range tt.openBalances {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tinitializeDelegator(t, &k, ctx, addr, math.NewInt(balance))\n\t\t\t}\n\n\t\t\t// Burn all credits\n\t\t\terr = k.burnAllCredits(ctx, 1)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"burnAllCredits() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\n\t\t\t// Verify that all ucredit balances are zero\n\t\t\tfor addrStr := range tt.lockups {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tcreditBalance := k.GetBankKeeper().GetBalance(ctx, addr, appparams.MicroCreditDenom)\n\t\t\t\tif !creditBalance.IsZero() {\n\t\t\t\t\tt.Errorf(\"Expected all ucredit to be burned for %s, still found = %v\", addrStr, creditBalance.Amount)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Verify that uopen balances are unchanged\n\t\t\tfor addrStr, expectedBalance := range tt.openBalances {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\topenBalance := k.GetBankKeeper().GetBalance(ctx, addr, appparams.MicroOpenDenom)\n\t\t\t\tif !openBalance.Amount.Equal(math.NewInt(expectedBalance)) {\n\t\t\t\t\tt.Errorf(\"Should not burn uopen. For %s, got = %v, expected = %v\", addrStr, openBalance.Amount, expectedBalance)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestResetAllCredits(t *testing.T) {\n\ttests := []struct {\n\t\tname             string\n\t\tlockups          map[string][]int64\n\t\tinsuranceLockups map[string][]int64\n\t\texpectedCredit   map[string]int64\n\t\twantErr          bool\n\t}{\n\t\t{\n\t\t\tname: \"Reset all credits successfully (single address, single lockup)\",\n\t\t\tlockups: map[string][]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": {100},\n\t\t\t},\n\t\t\texpectedCredit: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 100,\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname:           \"No lockups\",\n\t\t\tlockups:        map[string][]int64{},\n\t\t\texpectedCredit: map[string]int64{},\n\t\t\twantErr:        false,\n\t\t},\n\t\t{\n\t\t\tname: \"Multiple addresses with multiple lockups\",\n\t\t\tlockups: map[string][]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": {50, 50},\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": {10, 20},\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": {10, 10, 30},\n\t\t\t\t\"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\": {},\n\t\t\t},\n\t\t\texpectedCredit: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 100, // 50 + 50\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": 30,  // 10 + 20\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": 50,  // 10 + 10 + 30\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Multiple addresses with multiple lockups (with reward rates)\",\n\t\t\tlockups: map[string][]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": {100, 100},\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": {100, 200, 300},\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": {500, 1000},\n\t\t\t\t\"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\": {},\n\t\t\t},\n\t\t\texpectedCredit: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 210,  // 100 + 100 + (10 rewards)\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": 780,  // 100 + 200 + 300 + (180 rewards)\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": 2130, // 500 + 1000 + (630 rewards)\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Multiple addresses with multiple lockups (with reward rates) and insurance lockups\",\n\t\t\tlockups: map[string][]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": {100, 100},\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": {100, 200, 300},\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": {500, 1000},\n\t\t\t\t\"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\": {},\n\t\t\t},\n\t\t\tinsuranceLockups: map[string][]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": {10},\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": {20},\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": {30},\n\t\t\t\t\"source1cy0p47z24ejzvq55pu3lesxwf73xnrnd0lyxme\": {},\n\t\t\t},\n\t\t\texpectedCredit: map[string]int64{\n\t\t\t\t\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\": 222,  // 100 + 100 + 10 + (12 rewards)\n\t\t\t\t\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\": 810,  // 100 + 200 + 300 + 20 + (190 rewards)\n\t\t\t\t\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\": 2175, // 500 + 1000 + 30 (645 rewards)\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t}\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tk, ctx := setupKeeper(t)\n\n\t\t\t// Set default params\n\t\t\terr := k.SetParams(ctx, types.DefaultParams())\n\t\t\trequire.NoError(t, err)\n\n\t\t\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(10_000_000))\n\n\t\t\t// Add lockups\n\t\t\tfor addrStr, lockupAmounts := range tt.lockups {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tfor _, amt := range lockupAmounts {\n\t\t\t\t\tinitializeDelegator(t, &k, ctx, addr, math.NewInt(amt))\n\t\t\t\t\terr = k.Lock(ctx, addr, valAddr, math.NewInt(amt))\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add insurance lockups\n\t\t\tfor addrStr, insuranceLockupAmounts := range tt.insuranceLockups {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tfor _, amt := range insuranceLockupAmounts {\n\t\t\t\t\tk.AddInsuranceLockup(ctx, addr, valAddr, math.NewInt(amt))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\terr = k.burnAllCredits(ctx, 1)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"burnAllCredits() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\n\t\t\t// Reset all credits\n\t\t\terr = k.resetAllCredits(ctx, 1)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"resetAllCredits() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t}\n\n\t\t\t// Check expected credits\n\t\t\tfor addrStr, expected := range tt.expectedCredit {\n\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\tbal := k.GetBankKeeper().GetBalance(ctx, addr, appparams.MicroCreditDenom)\n\t\t\t\tif !bal.Amount.Equal(math.NewInt(expected)) {\n\t\t\t\t\tt.Errorf(\"Incorrect ucredit balance for %s, got = %v, expected = %v\", addrStr, bal.Amount, expected)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Addresses not in expectedCredit should have zero ucredit\n\t\t\tfor addrStr := range tt.lockups {\n\t\t\t\tif _, ok := tt.expectedCredit[addrStr]; !ok {\n\t\t\t\t\taddr := sdk.MustAccAddressFromBech32(addrStr)\n\t\t\t\t\tbal := k.GetBankKeeper().GetBalance(ctx, addr, appparams.MicroCreditDenom)\n\t\t\t\t\tif !bal.IsZero() {\n\t\t\t\t\t\tt.Errorf(\"Address %s was not in expectedCredit, but has ucredit = %v\", addrStr, bal.Amount)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/epoch_hook.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc (k *Keeper) EpochHooks() epochstypes.EpochHooks {\n\treturn EpochHooks{k}\n}\n\ntype EpochHooks struct {\n\tkeeper *Keeper\n}\n\nvar _ epochstypes.EpochHooks = EpochHooks{}\n\n// GetModuleName implements types.EpochHooks.\nfunc (EpochHooks) GetModuleName() string {\n\treturn types.ModuleName\n}\n\n// BeforeEpochStart is the epoch start hook.\nfunc (h EpochHooks) BeforeEpochStart(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tif epochIdentifier != types.EpochIdentifier {\n\t\treturn nil\n\t}\n\n\th.keeper.Logger().Info(\"resetting all credits\", \"epochID\", epochIdentifier, \"epochNumber\", epochNumber)\n\n\terr := h.keeper.burnAllCredits(ctx, epochNumber)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"burn all credits\")\n\t}\n\n\terr = h.keeper.resetAllCredits(ctx, epochNumber)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"reset all credits\")\n\t}\n\n\t// Check if all developers have enough lockups to cover credits for all registered users and optionally auto-lock\n\terr = h.keeper.checkDeveloperCredits(ctx, epochNumber)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"check and lock developer credits\")\n\t}\n\n\treturn nil\n}\n\nfunc (h EpochHooks) AfterEpochEnd(ctx context.Context, epochIdentifier string, epochNumber int64) error {\n\tif epochIdentifier != types.EpochIdentifier {\n\t\treturn nil\n\t}\n\n\th.keeper.Logger().Info(\"completing unlocking stakes\", \"epochID\", epochIdentifier, \"epochNumber\", epochNumber)\n\n\terr := h.keeper.CompleteUnlocking(ctx)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"complete unlocking stakes\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/grpc_query.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/store/prefix\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nvar _ types.QueryServer = &Keeper{}\n\n// Params query returns tier module params.\nfunc (k *Keeper) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\treturn &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil\n}\n\n// Lockup query returns a lockup based on delegator address and validator address.\nfunc (k *Keeper) Lockup(ctx context.Context, req *types.LockupRequest) (*types.LockupResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdelAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid delegator address\")\n\t}\n\n\tvalAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid validator address\")\n\t}\n\n\tlockup := k.GetLockup(ctx, delAddr, valAddr)\n\tif lockup == nil {\n\t\treturn nil, status.Error(codes.NotFound, \"lockup does not exist\")\n\t}\n\n\treturn &types.LockupResponse{Lockup: *lockup}, nil\n}\n\n// Lockups query returns all delegator lockups with pagination.\nfunc (k *Keeper) Lockups(ctx context.Context, req *types.LockupsRequest) (*types.LockupsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdelAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid delegator address\")\n\t}\n\n\tlockups, pageRes, err := k.getLockupsPaginated(ctx, delAddr, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.LockupsResponse{Lockups: lockups, Pagination: pageRes}, nil\n}\n\n// UnlockingLockup query returns an unlocking lockup based on delAddr, valAddr, and creationHeight.\nfunc (k *Keeper) UnlockingLockup(ctx context.Context, req *types.UnlockingLockupRequest) (\n\t*types.UnlockingLockupResponse, error) {\n\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdelAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid delegator address\")\n\t}\n\n\tvalAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid validator address\")\n\t}\n\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, req.CreationHeight)\n\tif unlockingLockup == nil {\n\t\treturn nil, status.Error(codes.NotFound, \"unlocking lockup does not exist\")\n\t}\n\n\treturn &types.UnlockingLockupResponse{UnlockingLockup: *unlockingLockup}, nil\n}\n\n// UnlockingLockup query returns all delegator unlocking lockups with pagination.\nfunc (k *Keeper) UnlockingLockups(ctx context.Context, req *types.UnlockingLockupsRequest) (\n\t*types.UnlockingLockupsResponse, error) {\n\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdelAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddress)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid delegator address\")\n\t}\n\n\tlockups, pageRes, err := k.getUnlockingLockupsPaginated(ctx, delAddr, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.UnlockingLockupsResponse{UnlockingLockups: lockups, Pagination: pageRes}, nil\n}\n\n// Developers query returns all registered developers.\nfunc (k *Keeper) Developers(ctx context.Context, req *types.DevelopersRequest) (*types.DevelopersResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdevelopers, pageRes, err := k.getDevelopersPaginated(ctx, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.DevelopersResponse{\n\t\tDevelopers: developers,\n\t\tPagination: pageRes,\n\t}, nil\n}\n\n// UserSubscriptions query returns all user subscriptions for a specific developer.\nfunc (k *Keeper) UserSubscriptions(ctx context.Context, req *types.UserSubscriptionsRequest) (*types.UserSubscriptionsResponse, error) {\n\tif req == nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid request\")\n\t}\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(req.Developer)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.InvalidArgument, \"invalid developer address\")\n\t}\n\n\tuserSubscriptions, pageRes, err := k.getUserSubscriptionsPaginated(ctx, developerAddr, req.Pagination)\n\tif err != nil {\n\t\treturn nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn &types.UserSubscriptionsResponse{\n\t\tUserSubscriptions: userSubscriptions,\n\t\tPagination:        pageRes,\n\t}, nil\n}\n\n// getLockupsPaginated returns delegator lockups with pagination.\nfunc (k *Keeper) getLockupsPaginated(ctx context.Context, delAddr sdk.AccAddress, page *query.PageRequest) (\n\t[]types.Lockup, *query.PageResponse, error) {\n\n\tvar lockups []types.Lockup\n\tbaseStore := k.lockupStore(ctx, false)\n\taddrPrefix := append(delAddr.Bytes(), '/')\n\tstore := prefix.NewStore(baseStore, addrPrefix)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar lockup types.Lockup\n\t\tk.cdc.MustUnmarshal(value, &lockup)\n\t\tlockups = append(lockups, lockup)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, page, onResult)\n\tif err != nil {\n\t\treturn nil, nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn lockups, pageRes, nil\n}\n\n// getUnlockingLockupsPaginated returns delegator unlocking lockups with pagination.\nfunc (k *Keeper) getUnlockingLockupsPaginated(ctx context.Context, delAddr sdk.AccAddress, page *query.PageRequest) (\n\t[]types.UnlockingLockup, *query.PageResponse, error) {\n\n\tvar unlockingLockups []types.UnlockingLockup\n\tbaseStore := k.lockupStore(ctx, true)\n\taddrPrefix := append(delAddr.Bytes(), '/')\n\tstore := prefix.NewStore(baseStore, addrPrefix)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar unlockingLockup types.UnlockingLockup\n\t\tk.cdc.MustUnmarshal(value, &unlockingLockup)\n\t\tunlockingLockups = append(unlockingLockups, unlockingLockup)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, page, onResult)\n\tif err != nil {\n\t\treturn nil, nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn unlockingLockups, pageRes, nil\n}\n\n// getDevelopersPaginated returns all registered developers with pagination.\nfunc (k *Keeper) getDevelopersPaginated(ctx context.Context, page *query.PageRequest) (\n\t[]types.Developer, *query.PageResponse, error) {\n\n\tvar developers []types.Developer\n\tstore := k.developerStore(ctx)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar developer types.Developer\n\t\tk.cdc.MustUnmarshal(value, &developer)\n\t\tdevelopers = append(developers, developer)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, page, onResult)\n\tif err != nil {\n\t\treturn nil, nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn developers, pageRes, nil\n}\n\n// getUserSubscriptionsPaginated returns user subscriptions for a developer with pagination.\nfunc (k *Keeper) getUserSubscriptionsPaginated(ctx context.Context, developerAddr sdk.AccAddress, page *query.PageRequest) (\n\t[]types.UserSubscription, *query.PageResponse, error) {\n\n\tvar userSubscriptions []types.UserSubscription\n\tbaseStore := k.userSubscriptionStore(ctx)\n\taddrPrefix := append(developerAddr.Bytes(), '/')\n\tstore := prefix.NewStore(baseStore, addrPrefix)\n\n\tonResult := func(key []byte, value []byte) error {\n\t\tvar userSubscription types.UserSubscription\n\t\tk.cdc.MustUnmarshal(value, &userSubscription)\n\t\tuserSubscriptions = append(userSubscriptions, userSubscription)\n\t\treturn nil\n\t}\n\n\tpageRes, err := query.Paginate(store, page, onResult)\n\tif err != nil {\n\t\treturn nil, nil, status.Error(codes.Internal, err.Error())\n\t}\n\n\treturn userSubscriptions, pageRes, nil\n}\n"
  },
  {
    "path": "x/tier/keeper/grpc_query_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/query\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestParamsQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Params(ctx, &types.QueryParamsRequest{})\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.QueryParamsResponse{Params: params}, response)\n}\n\nfunc TestParamsQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Params(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestLockupQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount)\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Lockup(ctx, &types.LockupRequest{\n\t\tDelegatorAddress: delAddr.String(),\n\t\tValidatorAddress: valAddr.String(),\n\t})\n\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.LockupResponse{\n\t\tLockup: types.Lockup{\n\t\t\tDelegatorAddress: delAddr.String(),\n\t\t\tValidatorAddress: valAddr.String(),\n\t\t\tAmount:           amount,\n\t\t},\n\t}, response)\n}\n\nfunc TestLockupQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Lockup(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestLockupsQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tamount1 := math.NewInt(1000)\n\tamount2 := math.NewInt(500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount1)\n\trequire.NoError(t, err)\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount2)\n\trequire.NoError(t, err)\n\n\tresponse, err := k.Lockups(ctx, &types.LockupsRequest{\n\t\tDelegatorAddress: delAddr.String(),\n\t})\n\trequire.NoError(t, err)\n\trequire.Len(t, response.Lockups, 1)\n\trequire.Equal(t, amount1.Add(amount2), response.Lockups[0].Amount)\n}\n\nfunc TestLockupsQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.Lockups(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestUnlockingLockupQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\tepochDuration := *params.EpochDuration\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tcompletionTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\tunlockTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, int64(1), amount, completionTime, unlockTime)\n\n\tresponse, err := k.UnlockingLockup(ctx, &types.UnlockingLockupRequest{\n\t\tDelegatorAddress: delAddr.String(),\n\t\tValidatorAddress: valAddr.String(),\n\t\tCreationHeight:   1,\n\t})\n\n\trequire.NoError(t, err)\n\trequire.Equal(t, &types.UnlockingLockupResponse{\n\t\tUnlockingLockup: types.UnlockingLockup{\n\t\t\tDelegatorAddress: delAddr.String(),\n\t\t\tValidatorAddress: valAddr.String(),\n\t\t\tCreationHeight:   1,\n\t\t\tAmount:           amount,\n\t\t\tCompletionTime:   completionTime,\n\t\t\tUnlockTime:       unlockTime,\n\t\t},\n\t}, response)\n}\n\nfunc TestUnlockingLockupQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.UnlockingLockup(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestUnlockingLockupsQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\tepochDuration := *params.EpochDuration\n\tamount1 := math.NewInt(1000)\n\tamount2 := math.NewInt(500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tcompletionTime1 := ctx.BlockTime().Add(time.Hour * 24 * 21)\n\tunlockTime1 := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, int64(1), amount1, completionTime1, unlockTime1)\n\n\tctx = ctx.WithBlockHeight(2).WithBlockTime(ctx.BlockTime().Add(time.Second))\n\n\tcompletionTime2 := ctx.BlockTime().Add(time.Hour * 24 * 21)\n\tunlockTime2 := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, int64(2), amount2, completionTime2, unlockTime2)\n\n\tresponse, err := k.UnlockingLockups(ctx, &types.UnlockingLockupsRequest{\n\t\tDelegatorAddress: delAddr.String(),\n\t})\n\trequire.NoError(t, err)\n\trequire.Len(t, response.UnlockingLockups, 2)\n\n\trequire.Equal(t, amount1, response.UnlockingLockups[0].Amount)\n\trequire.Equal(t, int64(1), response.UnlockingLockups[0].CreationHeight)\n\trequire.Equal(t, completionTime1, response.UnlockingLockups[0].CompletionTime)\n\trequire.Equal(t, unlockTime1, response.UnlockingLockups[0].UnlockTime)\n\n\trequire.Equal(t, amount2, response.UnlockingLockups[1].Amount)\n\trequire.Equal(t, int64(2), response.UnlockingLockups[1].CreationHeight)\n\trequire.Equal(t, completionTime2, response.UnlockingLockups[1].CompletionTime)\n\trequire.Equal(t, unlockTime2, response.UnlockingLockups[1].UnlockTime)\n}\n\nfunc TestUnlockingLockupsQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresponse, err := k.UnlockingLockups(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, response)\n}\n\nfunc TestDevelopersQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tdev1, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tdev2, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\trequire.NoError(t, k.CreateDeveloper(ctx, dev1, true))\n\trequire.NoError(t, k.CreateDeveloper(ctx, dev2, false))\n\n\tresp, err := k.Developers(ctx, &types.DevelopersRequest{})\n\trequire.NoError(t, err)\n\trequire.Len(t, resp.Developers, 2)\n\n\tpage1, err := k.Developers(ctx, &types.DevelopersRequest{Pagination: &query.PageRequest{Limit: 1}})\n\trequire.NoError(t, err)\n\trequire.Len(t, page1.Developers, 1)\n\trequire.NotNil(t, page1.Pagination)\n\trequire.NotEmpty(t, page1.Pagination.NextKey)\n\n\tpage2, err := k.Developers(ctx, &types.DevelopersRequest{Pagination: &query.PageRequest{Key: page1.Pagination.NextKey, Limit: 1}})\n\trequire.NoError(t, err)\n\trequire.Len(t, page2.Developers, 1)\n}\n\nfunc TestDevelopersQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresp, err := k.Developers(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, resp)\n}\n\nfunc TestUserSubscriptionsQuery(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\trequire.NoError(t, k.CreateDeveloper(ctx, developerAddr, true))\n\n\tinitialValidatorBalance := math.NewInt(1000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\trequire.NoError(t, k.AddUserSubscription(ctx, developerAddr, user1Did, uint64(0), 0))\n\trequire.NoError(t, k.AddUserSubscription(ctx, developerAddr, user2Did, uint64(0), 0))\n\n\tresp, err := k.UserSubscriptions(ctx, &types.UserSubscriptionsRequest{Developer: developerAddr.String()})\n\trequire.NoError(t, err)\n\trequire.Len(t, resp.UserSubscriptions, 2)\n\n\tpage1, err := k.UserSubscriptions(ctx, &types.UserSubscriptionsRequest{\n\t\tDeveloper:  developerAddr.String(),\n\t\tPagination: &query.PageRequest{Limit: 1},\n\t})\n\trequire.NoError(t, err)\n\trequire.Len(t, page1.UserSubscriptions, 1)\n\trequire.NotNil(t, page1.Pagination)\n\trequire.NotEmpty(t, page1.Pagination.NextKey)\n\n\tpage2, err := k.UserSubscriptions(ctx, &types.UserSubscriptionsRequest{\n\t\tDeveloper:  developerAddr.String(),\n\t\tPagination: &query.PageRequest{Key: page1.Pagination.NextKey, Limit: 1},\n\t})\n\trequire.NoError(t, err)\n\trequire.Len(t, page2.UserSubscriptions, 1)\n}\n\nfunc TestUserSubscriptionsQuery_InvalidRequest(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\n\tresp, err := k.UserSubscriptions(ctx, nil)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"invalid request\")\n\trequire.Nil(t, resp)\n}\n"
  },
  {
    "path": "x/tier/keeper/insurance.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// GetAllInsuranceLockups returns all insurance lockups in the store.\nfunc (k *Keeper) GetAllInsuranceLockups(ctx context.Context) []types.Lockup {\n\tvar lockups []types.Lockup\n\n\tlockupsCallback := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tlockups = append(lockups, lockup)\n\t}\n\n\tk.mustIterateInsuranceLockups(ctx, lockupsCallback)\n\n\treturn lockups\n}\n\n// totalInsuredAmountByAddr returns the total insurance lockups amount associated with the provided delAddr.\nfunc (k *Keeper) totalInsuredAmountByAddr(ctx context.Context, delAddr sdk.AccAddress) math.Int {\n\tamount := math.ZeroInt()\n\n\tcb := func(d sdk.AccAddress, valAddr sdk.ValAddress, insuranceLockup types.Lockup) {\n\t\tif d.Equals(delAddr) {\n\t\t\tamount = amount.Add(insuranceLockup.Amount)\n\t\t}\n\t}\n\n\tk.mustIterateInsuranceLockups(ctx, cb)\n\n\treturn amount\n}\n\n// AddInsuranceLockup adds provided amount to the existing insurance Lockup.\nfunc (k *Keeper) AddInsuranceLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount math.Int) {\n\tinsuranceLockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\tif insuranceLockup != nil {\n\t\tamount = amount.Add(insuranceLockup.Amount)\n\t}\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n}\n\n// getInsuranceLockup returns existing insurance lockup, or nil if not found.\nfunc (k *Keeper) getInsuranceLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) *types.Lockup {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.insuranceLockupStore(ctx)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar lockup types.Lockup\n\tk.cdc.MustUnmarshal(b, &lockup)\n\n\treturn &lockup\n}\n\n// getInsuranceLockupAmount returns existing insurance lockup amount, or math.ZeroInt() if not found.\nfunc (k *Keeper) getInsuranceLockupAmount(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) math.Int {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.insuranceLockupStore(ctx)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\tvar insuranceLockup types.Lockup\n\tk.cdc.MustUnmarshal(b, &insuranceLockup)\n\n\treturn insuranceLockup.Amount\n}\n\n// setInsuranceLockup sets an insurance lockup in the store based on the LockupKey.\nfunc (k *Keeper) setInsuranceLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount math.Int) {\n\tlockup := &types.Lockup{\n\t\tDelegatorAddress: delAddr.String(),\n\t\tValidatorAddress: valAddr.String(),\n\t\tAmount:           amount,\n\t}\n\n\tkey := types.LockupKey(delAddr, valAddr)\n\tb := k.cdc.MustMarshal(lockup)\n\tstore := k.insuranceLockupStore(ctx)\n\tstore.Set(key, b)\n}\n\n// removeInsuranceLockup removes existing insurance Lockup.\nfunc (k *Keeper) removeInsuranceLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.insuranceLockupStore(ctx)\n\tstore.Delete(key)\n}\n\n// mustIterateInsuranceLockups iterates over all insurance lockups in the store and performs the provided callback function.\nfunc (k *Keeper) mustIterateInsuranceLockups(ctx context.Context,\n\tcb func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, insuranceLockup types.Lockup)) {\n\n\tstore := k.insuranceLockupStore(ctx)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar insuranceLockup types.Lockup\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &insuranceLockup)\n\t\tdelAddr, valAddr := types.LockupKeyToAddresses(iterator.Key())\n\t\tcb(delAddr, valAddr, insuranceLockup)\n\t}\n}\n\n// insuranceLockupStore returns a prefix store for insurance Lockup.\nfunc (k *Keeper) insuranceLockupStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, []byte(types.InsuranceLockupKeyPrefix))\n}\n"
  },
  {
    "path": "x/tier/keeper/insurance_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetAllInsuranceLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n\n\tlockups := k.GetAllInsuranceLockups(ctx)\n\trequire.Len(t, lockups, 1)\n\trequire.Equal(t, delAddr.String(), lockups[0].DelegatorAddress)\n\trequire.Equal(t, valAddr.String(), lockups[0].ValidatorAddress)\n\trequire.Equal(t, amount, lockups[0].Amount)\n}\n\nfunc TestAddInsuranceLockup_New(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.AddInsuranceLockup(ctx, delAddr, valAddr, amount)\n\n\tinsuredAmt := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, amount, insuredAmt)\n}\n\nfunc TestAddInsuranceLockup_Append(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(800)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, math.NewInt(500))\n\tk.AddInsuranceLockup(ctx, delAddr, valAddr, math.NewInt(300))\n\n\tinsuredAmt := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, amount, insuredAmt)\n}\n\nfunc TestGetInsuranceLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n\n\tlockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\trequire.NotNil(t, lockup)\n\trequire.Equal(t, amount, lockup.Amount)\n}\n\nfunc TestGetInsuranceLockup_NotFound(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tlockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\trequire.Nil(t, lockup)\n}\n\nfunc TestGetInsuranceLockupAmount_ZeroIfNotFound(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinsuredAmt := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.True(t, insuredAmt.IsZero())\n}\n\nfunc TestSetInsuranceLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n\n\tinsuredAmt := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, amount, insuredAmt)\n}\n\nfunc TestRemoveInsuranceLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n\tk.removeInsuranceLockup(ctx, delAddr, valAddr)\n\n\tlockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\trequire.Nil(t, lockup)\n}\n\nfunc TestTotalInsuredAmountByAddr(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount1 := math.NewInt(300)\n\tamount2 := math.NewInt(500)\n\tamount3 := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr1, amount1)\n\tk.setInsuranceLockup(ctx, delAddr, valAddr2, amount2)\n\tk.AddInsuranceLockup(ctx, delAddr, valAddr2, amount3)\n\n\ttotalAmount := k.totalInsuredAmountByAddr(ctx, delAddr)\n\trequire.Equal(t, amount1.Add(amount2).Add(amount3), totalAmount)\n}\n\nfunc TestMustIterateInsuranceLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(5000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.setInsuranceLockup(ctx, delAddr, valAddr, amount)\n\n\tcount := 0\n\tk.mustIterateInsuranceLockups(ctx, func(d sdk.AccAddress, v sdk.ValAddress, lockup types.Lockup) {\n\t\tcount++\n\t\trequire.Equal(t, delAddr.String(), lockup.DelegatorAddress)\n\t\trequire.Equal(t, valAddr.String(), lockup.ValidatorAddress)\n\t\trequire.Equal(t, amount, lockup.Amount)\n\t})\n\trequire.Equal(t, 1, count)\n}\n"
  },
  {
    "path": "x/tier/keeper/keeper.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"cosmossdk.io/core/store\"\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype (\n\tKeeper struct {\n\t\tcdc codec.BinaryCodec\n\n\t\tstoreService store.KVStoreService\n\t\tlogger       log.Logger\n\n\t\t// the address capable of executing a MsgUpdateParams message.\n\t\t// Typically, this should be the x/gov module account.\n\t\tauthority string\n\n\t\tbankKeeper         types.BankKeeper\n\t\tstakingKeeper      types.StakingKeeper\n\t\tepochsKeeper       types.EpochsKeeper\n\t\tdistributionKeeper types.DistributionKeeper\n\t\tfeegrantKeeper     types.FeegrantKeeper\n\t\tacpKeeper          types.AcpKeeper\n\t}\n)\n\nfunc NewKeeper(\n\tcdc codec.BinaryCodec,\n\n\tstoreService store.KVStoreService,\n\tlogger log.Logger,\n\tauthority string,\n\n\tbankKeeper types.BankKeeper,\n\tstakingKeeper types.StakingKeeper,\n\tepochsKeeper types.EpochsKeeper,\n\tdistributionKeeper types.DistributionKeeper,\n\tfeegrantKeeper types.FeegrantKeeper,\n\tacpKeeper types.AcpKeeper,\n) Keeper {\n\tif _, err := sdk.AccAddressFromBech32(authority); err != nil {\n\t\tpanic(fmt.Sprintf(\"invalid authority address: %s\", authority))\n\t}\n\n\treturn Keeper{\n\t\tcdc:          cdc,\n\t\tstoreService: storeService,\n\t\tauthority:    authority,\n\t\tlogger:       logger,\n\n\t\tbankKeeper:         bankKeeper,\n\t\tstakingKeeper:      stakingKeeper,\n\t\tepochsKeeper:       epochsKeeper,\n\t\tdistributionKeeper: distributionKeeper,\n\t\tfeegrantKeeper:     feegrantKeeper,\n\t\tacpKeeper:          acpKeeper,\n\t}\n}\n\n// GetAuthority returns the module's authority.\nfunc (k *Keeper) GetAuthority() string {\n\treturn k.authority\n}\n\n// GetStakingKeeper returns the module's StakingKeeper.\nfunc (k *Keeper) GetStakingKeeper() types.StakingKeeper {\n\treturn k.stakingKeeper\n}\n\n// GetBankKeeper returns the module's BankKeeper.\nfunc (k *Keeper) GetBankKeeper() types.BankKeeper {\n\treturn k.bankKeeper\n}\n\n// GetEpochsKeeper returns the module's EpochsKeeper.\nfunc (k *Keeper) GetEpochsKeeper() types.EpochsKeeper {\n\treturn k.epochsKeeper\n}\n\n// GetDistributionKeeper returns the module's DistributionKeeper.\nfunc (k *Keeper) GetDistributionKeeper() types.DistributionKeeper {\n\treturn k.distributionKeeper\n}\n\n// GetFeegrantKeeper returns the module's FeegrantKeeper.\nfunc (k *Keeper) GetFeegrantKeeper() types.FeegrantKeeper {\n\treturn k.feegrantKeeper\n}\n\n// GetAcpKeeper returns the module's AcpKeeper.\nfunc (k *Keeper) GetAcpKeeper() types.AcpKeeper {\n\treturn k.acpKeeper\n}\n\n// Logger returns a module-specific logger.\nfunc (k *Keeper) Logger() log.Logger {\n\treturn k.logger.With(\"module\", fmt.Sprintf(\"x/%s\", types.ModuleName))\n}\n\n// CompleteUnlocking completes the unlocking process for all lockups that have reached their unlock time.\n// It is called at the end of each Epoch.\nfunc (k *Keeper) CompleteUnlocking(ctx context.Context) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.CompleteUnlocking,\n\t\t\tstart,\n\t\t\terr,\n\t\t\tnil,\n\t\t)\n\t}()\n\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tcb := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, unlockingLockup types.UnlockingLockup) error {\n\t\t// Check both CompletionTime and UnlockTime so that CompleteUnlocking works correctly regardless of the\n\t\t// staking module Undelegate/Redelegate completion time and tier module EpochDuration/UnlockingEpochs params\n\t\tif sdkCtx.BlockTime().Before(unlockingLockup.CompletionTime) || sdkCtx.BlockTime().Before(unlockingLockup.UnlockTime) {\n\t\t\tfmt.Printf(\"Unlock time not reached for %s/%s\\n\", delAddr, valAddr)\n\t\t\treturn nil\n\t\t}\n\n\t\tmoduleBalance := k.bankKeeper.GetBalance(ctx, authtypes.NewModuleAddress(types.ModuleName), appparams.DefaultBondDenom)\n\t\tif moduleBalance.Amount.LT(unlockingLockup.Amount) {\n\t\t\tfmt.Printf(\"Module account balance is less than required amount. delAddr: %s, valAddr: %s\\n\", delAddr, valAddr)\n\t\t\treturn nil\n\t\t}\n\n\t\t// Redeem the unlocked lockup for stake.\n\t\tcoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, unlockingLockup.Amount))\n\t\terr := k.bankKeeper.UndelegateCoinsFromModuleToAccount(ctx, types.ModuleName, delAddr, coins)\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrapf(err, \"undelegate coins to %s for amount %s\", delAddr, coins)\n\t\t}\n\n\t\tk.removeUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\n\t\tsdkCtx.EventManager().EmitEvent(\n\t\t\tsdk.NewEvent(\n\t\t\t\ttypes.EventTypeCompleteUnlocking,\n\t\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyDelegator, delAddr.String()),\n\t\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyValidator, valAddr.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyCreationHeight, fmt.Sprintf(\"%d\", creationHeight)),\n\t\t\t\tsdk.NewAttribute(sdk.AttributeKeyAmount, unlockingLockup.Amount.String()),\n\t\t\t),\n\t\t)\n\n\t\treturn nil\n\t}\n\n\terr = k.iterateUnlockingLockups(ctx, cb)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"iterate unlocking lockups\")\n\t}\n\n\treturn nil\n}\n\n// LockAuto locks the stake of a delegator to an automatically selected validator.\n// Selection logic:\n// 1. If the developer already has lockups, select the validator with the smallest existing lockup amount.\n// 2. If the developer has no existing lockups, select the validator with the smallest total delegation from the tier module.\nfunc (k *Keeper) LockAuto(ctx context.Context, delAddr sdk.AccAddress, amt math.Int) (valAddr sdk.ValAddress, err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.LockAuto,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Amount, amt.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Delegator, delAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Validator, valAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Try to select validator from existing lockups first\n\tvalAddr = k.selectValidatorFromExistingLockups(ctx, delAddr)\n\tif valAddr != nil {\n\t\terr = k.Lock(ctx, delAddr, valAddr, amt)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn valAddr, nil\n\t}\n\n\t// Fall back to selecting validator with smallest tier module delegation\n\tvalAddr, err = k.selectValidatorWithSmallestDelegation(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = k.Lock(ctx, delAddr, valAddr, amt)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn valAddr, nil\n}\n\n// selectValidatorFromExistingLockups finds the bonded validator with the smallest existing lockup for the given delegator.\nfunc (k *Keeper) selectValidatorFromExistingLockups(ctx context.Context, delAddr sdk.AccAddress) sdk.ValAddress {\n\ttype lockupInfo struct {\n\t\tvalAddr sdk.ValAddress\n\t\tamount  math.Int\n\t}\n\tvar developerLockups []lockupInfo\n\n\tk.mustIterateLockups(ctx, func(d sdk.AccAddress, v sdk.ValAddress, lockup types.Lockup) {\n\t\tif d.Equals(delAddr) {\n\t\t\tdeveloperLockups = append(developerLockups, lockupInfo{\n\t\t\t\tvalAddr: v,\n\t\t\t\tamount:  lockup.Amount,\n\t\t\t})\n\t\t}\n\t})\n\n\tif len(developerLockups) == 0 {\n\t\treturn nil\n\t}\n\n\t// Find the lockup with the smallest amount\n\tvar minLockup *lockupInfo\n\tfor i := range developerLockups {\n\t\tif minLockup == nil || developerLockups[i].amount.LT(minLockup.amount) {\n\t\t\tminLockup = &developerLockups[i]\n\t\t}\n\t}\n\n\t// Verify the validator is still bonded\n\tvalidator, err := k.stakingKeeper.GetValidator(ctx, minLockup.valAddr)\n\tif err != nil || !validator.IsBonded() {\n\t\treturn nil\n\t}\n\n\treturn minLockup.valAddr\n}\n\n// selectValidatorWithSmallestDelegation finds the bonded validator with the smallest\n// total delegation from the tier module.\nfunc (k *Keeper) selectValidatorWithSmallestDelegation(ctx context.Context) (sdk.ValAddress, error) {\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\ttype validatorDelegation struct {\n\t\tvalAddr    sdk.ValAddress\n\t\tdelegation math.Int\n\t}\n\tvar validatorDelegations []validatorDelegation\n\n\terr := k.stakingKeeper.IterateValidators(ctx, func(index int64, validator stakingtypes.ValidatorI) (stop bool) {\n\t\tif !validator.IsBonded() {\n\t\t\treturn false\n\t\t}\n\n\t\tv := validator.(stakingtypes.Validator)\n\t\tvAddr, err := sdk.ValAddressFromBech32(v.OperatorAddress)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\t// Get tier module's delegation to this validator\n\t\tdelegation, err := k.stakingKeeper.GetDelegation(ctx, tierModuleAddr, vAddr)\n\t\tdelegationAmount := math.ZeroInt()\n\t\tif err == nil {\n\t\t\tdelegationAmount = delegation.GetShares().TruncateInt()\n\t\t}\n\n\t\tvalidatorDelegations = append(validatorDelegations, validatorDelegation{\n\t\t\tvalAddr:    vAddr,\n\t\t\tdelegation: delegationAmount,\n\t\t})\n\n\t\treturn false\n\t})\n\tif err != nil {\n\t\treturn nil, types.ErrInvalidAddress.Wrap(\"failed to iterate validators\")\n\t}\n\n\tif len(validatorDelegations) == 0 {\n\t\treturn nil, types.ErrInvalidAddress.Wrap(\"no bonded validators available\")\n\t}\n\n\t// Select validator with smallest delegation\n\tminDelegation := validatorDelegations[0]\n\tfor i := 1; i < len(validatorDelegations); i++ {\n\t\tif validatorDelegations[i].delegation.LT(minDelegation.delegation) {\n\t\t\tminDelegation = validatorDelegations[i]\n\t\t}\n\t}\n\n\treturn minDelegation.valAddr, nil\n}\n\n// Lock locks the stake of a delegator to a validator.\nfunc (k *Keeper) Lock(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt math.Int) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.Lock,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Amount, amt.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Delegator, delAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Validator, valAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Specified amt must be a positive integer\n\tif !amt.IsPositive() {\n\t\treturn types.ErrInvalidAmount.Wrap(\"lock non-positive amount\")\n\t}\n\n\tvalidator, err := k.stakingKeeper.GetValidator(ctx, valAddr)\n\tif err != nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"validator address %s: %s\", valAddr, err)\n\t}\n\n\t// Move the stake from delegator to the module\n\tstake := sdk.NewCoin(appparams.DefaultBondDenom, amt)\n\tcoins := sdk.NewCoins(stake)\n\terr = k.bankKeeper.DelegateCoinsFromAccountToModule(ctx, delAddr, types.ModuleName, coins)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"delegate %s from account to module\", stake)\n\t}\n\n\t// Delegate the stake to the validator\n\tmodAddr := authtypes.NewModuleAddress(types.ModuleName)\n\t_, err = k.stakingKeeper.Delegate(ctx, modAddr, stake.Amount, stakingtypes.Unbonded, validator, true)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"delegate %s\", stake)\n\t}\n\n\t// Mint credits\n\tcreditAmt := k.proratedCredit(ctx, delAddr, amt)\n\terr = k.mintCredit(ctx, delAddr, creditAmt)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"mint credit\")\n\t}\n\n\t// Record the lockup after minting credits\n\terr = k.AddLockup(ctx, delAddr, valAddr, stake.Amount)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"add lockup\")\n\t}\n\n\t// Update total credit amount\n\ttotalCredits := k.getTotalCreditAmount(ctx)\n\ttotalCredits = totalCredits.Add(creditAmt)\n\terr = k.setTotalCreditAmount(ctx, totalCredits)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"set total credit amount\")\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeLock,\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyDelegator, delAddr.String()),\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyValidator, valAddr.String()),\n\t\t\tsdk.NewAttribute(sdk.AttributeKeyAmount, amt.String()),\n\t\t\tsdk.NewAttribute(types.AttributeCreditAmount, creditAmt.String()),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// Unlock initiates the unlocking of the specified lockup amount of a delegator from a validator.\n// The specified lockup amount will be unlocked in CompleteUnlocking after the unlocking period has passed.\nfunc (k *Keeper) Unlock(\n\tctx context.Context,\n\tdelAddr sdk.AccAddress,\n\tvalAddr sdk.ValAddress,\n\tamt math.Int,\n) (creationHeight int64, completionTime, unlockTime time.Time, err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.Unlock,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Amount, amt.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Delegator, delAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Validator, valAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Specified amt must be a positive integer\n\tif !amt.IsPositive() {\n\t\treturn 0, time.Time{}, time.Time{}, types.ErrInvalidAmount.Wrap(\"unlock non-positive amount\")\n\t}\n\n\terr = k.subtractLockup(ctx, delAddr, valAddr, amt)\n\tif err != nil {\n\t\treturn 0, time.Time{}, time.Time{}, errorsmod.Wrap(err, \"subtract lockup\")\n\t}\n\n\t// Remove the associated insurance lockup record if the lockup was fully removed\n\tif !k.hasLockup(ctx, delAddr, valAddr) {\n\t\tk.removeInsuranceLockup(ctx, delAddr, valAddr)\n\t}\n\n\tmodAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tshares, err := k.stakingKeeper.ValidateUnbondAmount(ctx, modAddr, valAddr, amt)\n\tif err != nil {\n\t\treturn 0, time.Time{}, time.Time{}, errorsmod.Wrap(err, \"validate unbond amount\")\n\t}\n\tif !shares.IsPositive() {\n\t\treturn 0, time.Time{}, time.Time{}, errorsmod.Wrap(stakingtypes.ErrInsufficientShares, \"shares are not positive\")\n\t}\n\n\tcompletionTime, returnAmount, err := k.stakingKeeper.Undelegate(ctx, modAddr, valAddr, shares)\n\tif err != nil {\n\t\treturn 0, time.Time{}, time.Time{}, errorsmod.Wrap(err, \"undelegate\")\n\t}\n\n\t// Adjust token amount to match the actual undelegated tokens\n\tif returnAmount.LT(amt) {\n\t\tamt = returnAmount\n\t}\n\n\tparams := k.GetParams(ctx)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tcreationHeight = sdkCtx.BlockHeight()\n\tunlockTime = sdkCtx.BlockTime().Add(*params.EpochDuration * time.Duration(params.UnlockingEpochs))\n\n\t// Create unlocking lockup record at the current block height\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, creationHeight, amt, completionTime, unlockTime)\n\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeUnlock,\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyDelegator, delAddr.String()),\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyValidator, valAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyCreationHeight, fmt.Sprintf(\"%d\", creationHeight)),\n\t\t\tsdk.NewAttribute(sdk.AttributeKeyAmount, amt.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyCompletionTime, completionTime.Format(time.RFC3339)),\n\t\t\tsdk.NewAttribute(types.AttributeKeyUnlockTime, unlockTime.Format(time.RFC3339)),\n\t\t),\n\t)\n\n\treturn creationHeight, completionTime, unlockTime, nil\n}\n\n// Redelegate redelegates the stake of a delegator from a source validator to a destination validator.\n// The redelegation will be completed after the unbonding period has passed (e.g. at completionTime).\nfunc (k *Keeper) Redelegate(ctx context.Context, delAddr sdk.AccAddress, srcValAddr, dstValAddr sdk.ValAddress,\n\tamt math.Int) (completionTime time.Time, err error) {\n\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.Redelegate,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Amount, amt.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Delegator, delAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.SrcValidator, srcValAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.DstValidator, dstValAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Specified amt must be a positive integer\n\tif !amt.IsPositive() {\n\t\treturn time.Time{}, types.ErrInvalidAmount.Wrap(\"redelegate non-positive amount\")\n\t}\n\n\t// Subtract the lockup from the source validator\n\terr = k.subtractLockup(ctx, delAddr, srcValAddr, amt)\n\tif err != nil {\n\t\treturn time.Time{}, errorsmod.Wrap(err, \"subtract lockup from source validator\")\n\t}\n\n\t// Add the lockup to the destination validator\n\terr = k.AddLockup(ctx, delAddr, dstValAddr, amt)\n\tif err != nil {\n\t\treturn time.Time{}, errorsmod.Wrap(err, \"add lockup to destination validator\")\n\t}\n\n\t// Redelegate the  associated insurance lockup record if the lockup was fully redelegated\n\tif !k.hasLockup(ctx, delAddr, srcValAddr) {\n\t\tinsuranceLockupAmount := k.getInsuranceLockupAmount(ctx, delAddr, srcValAddr)\n\t\tif insuranceLockupAmount.IsPositive() {\n\t\t\tk.removeInsuranceLockup(ctx, delAddr, srcValAddr)\n\t\t\tk.AddInsuranceLockup(ctx, delAddr, dstValAddr, insuranceLockupAmount)\n\t\t}\n\t}\n\n\tmodAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tshares, err := k.stakingKeeper.ValidateUnbondAmount(ctx, modAddr, srcValAddr, amt)\n\tif err != nil {\n\t\treturn time.Time{}, errorsmod.Wrap(err, \"validate unbond amount\")\n\t}\n\n\tcompletionTime, err = k.stakingKeeper.BeginRedelegation(ctx, modAddr, srcValAddr, dstValAddr, shares)\n\tif err != nil {\n\t\treturn time.Time{}, errorsmod.Wrap(err, \"begin redelegation\")\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeRedelegate,\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyDelegator, delAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeySourceValidator, srcValAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyDestinationValidator, dstValAddr.String()),\n\t\t\tsdk.NewAttribute(sdk.AttributeKeyAmount, amt.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyCompletionTime, completionTime.Format(time.RFC3339)),\n\t\t),\n\t)\n\n\treturn completionTime, nil\n}\n\n// CancelUnlocking effectively cancels the pending unlocking lockup partially or in full.\n// Reverts the specified amt if a valid value is provided (e.g. 0 < amt < unlocking lockup amount).\nfunc (k *Keeper) CancelUnlocking(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress,\n\tcreationHeight int64, amt math.Int) (err error) {\n\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.CancelUnlocking,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Amount, amt.String()),\n\t\t\t\tmetrics.NewLabel(metrics.CreationHeight, fmt.Sprintf(\"%d\", creationHeight)),\n\t\t\t\tmetrics.NewLabel(metrics.Delegator, delAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.Validator, valAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Specified amt must be a positive integer\n\tif !amt.IsPositive() {\n\t\treturn types.ErrInvalidAmount.Wrap(\"cancel unlocking non-positive amount\")\n\t}\n\n\tvalidator, err := k.stakingKeeper.GetValidator(ctx, valAddr)\n\tif err != nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"validator address %s: %s\", valAddr, err)\n\t}\n\n\tmodAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tubd, err := k.stakingKeeper.GetUnbondingDelegation(ctx, modAddr, valAddr)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"unbonding delegation not found for delegator %s and validator %s\", modAddr, valAddr)\n\t}\n\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\t// Find unbonding delegation entry by CreationHeight\n\t// TODO: handle edge case with 2+ messages at the same height\n\tvar (\n\t\tunbondEntryIndex int64 = -1\n\t\tunbondEntry      stakingtypes.UnbondingDelegationEntry\n\t)\n\n\tfor i, entry := range ubd.Entries {\n\t\tif entry.CreationHeight == creationHeight && entry.CompletionTime.After(sdkCtx.BlockTime()) {\n\t\t\tunbondEntryIndex = int64(i)\n\t\t\tunbondEntry = entry\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif unbondEntryIndex == -1 {\n\t\treturn errorsmod.Wrapf(stakingtypes.ErrNoUnbondingDelegation, \"no valid entry for height %d\", creationHeight)\n\t}\n\n\tif amt.GT(unbondEntry.Balance) {\n\t\treturn types.ErrInvalidAmount.Wrap(\"cancel unlocking amount exceeds unbonding entry balance\")\n\t}\n\n\t_, err = k.stakingKeeper.Delegate(ctx, modAddr, amt, stakingtypes.Unbonding, validator, false)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"failed to delegate tokens back to validator\")\n\t}\n\n\t// Update or remove the unbonding delegation entry\n\tremainingBalance := unbondEntry.Balance.Sub(amt)\n\tif remainingBalance.IsZero() {\n\t\tubd.RemoveEntry(unbondEntryIndex)\n\t} else {\n\t\tunbondEntry.Balance = remainingBalance\n\t\tubd.Entries[unbondEntryIndex] = unbondEntry\n\t}\n\n\t// update or remove the unbonding delegation in the store\n\tif len(ubd.Entries) == 0 {\n\t\terr = k.stakingKeeper.RemoveUnbondingDelegation(ctx, ubd)\n\t} else {\n\t\terr = k.stakingKeeper.SetUnbondingDelegation(ctx, ubd)\n\t}\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"failed to update unbonding delegation\")\n\t}\n\n\t// Subtract the specified unlocking lockup amt\n\terr = k.subtractUnlockingLockup(ctx, delAddr, valAddr, creationHeight, amt)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"subtract unlocking lockup\")\n\t}\n\n\t// Add the specified amt back to existing lockup\n\terr = k.AddLockup(ctx, delAddr, valAddr, amt)\n\tif err != nil {\n\t\treturn errorsmod.Wrap(err, \"add lockup\")\n\t}\n\n\tsdkCtx.EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeCancelUnlocking,\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyDelegator, delAddr.String()),\n\t\t\tsdk.NewAttribute(stakingtypes.AttributeKeyValidator, valAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyCreationHeight, fmt.Sprintf(\"%d\", creationHeight)),\n\t\t\tsdk.NewAttribute(sdk.AttributeKeyAmount, amt.String()),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// CreateDeveloper creates a new developer record.\n// Returns an error if the developer already exists.\nfunc (k *Keeper) CreateDeveloper(ctx context.Context, developerAddr sdk.AccAddress, autoLockEnabled bool) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.CreateDeveloper,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\texistingDev := k.GetDeveloper(ctx, developerAddr)\n\tif existingDev != nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"developer %s already exists\", developerAddr.String())\n\t}\n\n\tdeveloper := &types.Developer{\n\t\tAddress:         developerAddr.String(),\n\t\tAutoLockEnabled: autoLockEnabled,\n\t}\n\n\tk.SetDeveloper(ctx, developerAddr, developer)\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeDeveloperCreated,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyAutoLockEnabled, fmt.Sprintf(\"%t\", autoLockEnabled)),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// UpdateDeveloper updates an existing developer record.\n// Returns an error if the developer doesn't exist.\nfunc (k *Keeper) UpdateDeveloper(ctx context.Context, developerAddr sdk.AccAddress, autoLockEnabled bool) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.UpdateDeveloper,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\tif developer == nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"developer %s does not exist\", developerAddr.String())\n\t}\n\n\tdeveloper.AutoLockEnabled = autoLockEnabled\n\n\tk.SetDeveloper(ctx, developerAddr, developer)\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeDeveloperUpdated,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyAutoLockEnabled, fmt.Sprintf(\"%t\", autoLockEnabled)),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// RemoveDeveloper removes the developer record and all associated user subscriptions.\n// All corresponding feegrant allowances are set to expire at the current period reset time.\nfunc (k *Keeper) RemoveDeveloper(ctx context.Context, developerAddr sdk.AccAddress) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.RemoveDeveloper,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t},\n\t\t)\n\t}()\n\n\texistingDev := k.GetDeveloper(ctx, developerAddr)\n\tif existingDev == nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"developer %s does not exist\", developerAddr.String())\n\t}\n\n\tvar subscriptionsToRemove []struct {\n\t\tdeveloperAddr sdk.AccAddress\n\t\tuserDid       string\n\t}\n\n\tk.mustIterateUserSubscriptionsForDeveloper(ctx, developerAddr,\n\t\tfunc(devAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription) {\n\t\t\tsubscriptionsToRemove = append(subscriptionsToRemove, struct {\n\t\t\t\tdeveloperAddr sdk.AccAddress\n\t\t\t\tuserDid       string\n\t\t\t}{devAddr, userDid})\n\t\t})\n\n\tfor _, sub := range subscriptionsToRemove {\n\t\terr := k.RemoveUserSubscription(ctx, sub.developerAddr, sub.userDid)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t}\n\n\tk.removeDeveloper(ctx, developerAddr)\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeDeveloperRemoved,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// AddUserSubscription registers a user to a developer for receiving allowances.\nfunc (k *Keeper) AddUserSubscription(\n\tctx context.Context,\n\tdeveloperAddr sdk.AccAddress,\n\tuserDid string,\n\tamount uint64,\n\tperiod uint64,\n) (err error) {\n\tstart := time.Now()\n\n\tif extractedDID, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok && extractedDID != \"\" {\n\t\tdidAddr, err := k.GetAcpKeeper().GetAddressFromDID(sdk.UnwrapSDKContext(ctx), extractedDID)\n\t\tif err != nil {\n\t\t\tk.Logger().Error(\"Failed to convert DID to address\", \"did\", extractedDID, \"error\", err)\n\t\t\treturn errorsmod.Wrap(err, \"convert DID to address\")\n\t\t}\n\t\tdeveloperAddr = didAddr\n\t}\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.AddUserSubscription,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.UserDid, userDid),\n\t\t\t\tmetrics.NewLabel(metrics.SubscriptionAmount, fmt.Sprintf(\"%d\", amount)),\n\t\t\t\tmetrics.NewLabel(metrics.SubscriptionPeriod, fmt.Sprintf(\"%d\", period)),\n\t\t\t},\n\t\t)\n\t}()\n\n\tamountInt := math.NewIntFromUint64(amount)\n\texistingSub := k.GetUserSubscription(ctx, developerAddr, userDid)\n\tif existingSub != nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"user %s is already subscribed to developer %s\", userDid, developerAddr.String())\n\t}\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\tif developer == nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"developer %s not found\", developerAddr.String())\n\t}\n\n\t// Check if developer has enough available credits\n\terr = k.validateDeveloperCredits(ctx, developerAddr, amountInt)\n\tif err != nil {\n\t\tif !developer.AutoLockEnabled {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"insufficient credits and auto-lock disabled: %v\", err)\n\t\t}\n\t\t// Convert required credits to uopen to lock using highest applicable rate\n\t\tparams := k.GetParams(ctx)\n\t\teffectiveRate := int64(0)\n\t\tfor _, r := range params.RewardRates {\n\t\t\tif amountInt.GTE(r.Amount) {\n\t\t\t\teffectiveRate = r.Rate\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif effectiveRate <= 0 {\n\t\t\tlast := params.RewardRates[len(params.RewardRates)-1]\n\t\t\teffectiveRate = last.Rate\n\t\t}\n\t\tlockNumerator := amountInt.MulRaw(100).AddRaw(effectiveRate - 1)\n\t\tlockAmt := lockNumerator.QuoRaw(effectiveRate)\n\t\tif !lockAmt.IsPositive() {\n\t\t\tlockAmt = math.OneInt()\n\t\t}\n\n\t\t// Try to add more lockup to cover the required amount\n\t\terr = k.addLockupForRegistration(ctx, developerAddr, lockAmt)\n\t\tif err != nil {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"auto-lock failed: %v\", err)\n\t\t}\n\t}\n\n\tnow := sdk.UnwrapSDKContext(ctx).BlockTime()\n\tuserSubscription := &types.UserSubscription{\n\t\tDeveloper:    developerAddr.String(),\n\t\tUserDid:      userDid,\n\t\tCreditAmount: amount,\n\t\tStartDate:    now,\n\t\tPeriod:       period,\n\t\tLastRenewed:  now,\n\t}\n\n\tk.SetUserSubscription(ctx, developerAddr, userDid, userSubscription)\n\n\t// Grant or update periodic DID allowance via feegrant to the user DID from the developer\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, amountInt))\n\tgrantPeriod := time.Duration(period) * time.Second\n\tif grantPeriod == 0 {\n\t\tparams := k.GetParams(ctx)\n\t\tgrantPeriod = *params.EpochDuration\n\t}\n\tif err := k.grantPeriodicDIDAllowance(ctx, developerAddr, userDid, spendLimit, grantPeriod); err != nil {\n\t\treturn errorsmod.Wrap(err, \"grant periodic DID allowance\")\n\t}\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewIntFromUint64(userSubscription.CreditAmount), true)\n\tif err != nil {\n\t\treturn types.ErrInvalidAmount.Wrapf(\"failed to update total granted amount: %v\", err)\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeUserSubscriptionCreated,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyUserDid, userDid),\n\t\t\tsdk.NewAttribute(types.AttributeKeySubscriptionAmount, fmt.Sprintf(\"%d\", amount)),\n\t\t\tsdk.NewAttribute(types.AttributeKeySubscriptionPeriod, fmt.Sprintf(\"%d\", period)),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// UpdateUserSubscription updates the user subscription.\nfunc (k *Keeper) UpdateUserSubscription(\n\tctx context.Context,\n\tdeveloperAddr sdk.AccAddress,\n\tuserDid string,\n\tamount uint64,\n\tperiod uint64,\n) (err error) {\n\tstart := time.Now()\n\n\tif extractedDID, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok && extractedDID != \"\" {\n\t\tdidAddr, err := k.GetAcpKeeper().GetAddressFromDID(sdk.UnwrapSDKContext(ctx), extractedDID)\n\t\tif err != nil {\n\t\t\tk.Logger().Error(\"Failed to convert DID to address\", \"did\", extractedDID, \"error\", err)\n\t\t\treturn errorsmod.Wrap(err, \"convert DID to address\")\n\t\t}\n\t\tdeveloperAddr = didAddr\n\t}\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.UpdateUserSubscription,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.UserDid, userDid),\n\t\t\t\tmetrics.NewLabel(metrics.SubscriptionAmount, fmt.Sprintf(\"%d\", amount)),\n\t\t\t\tmetrics.NewLabel(metrics.SubscriptionPeriod, fmt.Sprintf(\"%d\", period)),\n\t\t\t},\n\t\t)\n\t}()\n\n\tuserSubscription := k.GetUserSubscription(ctx, developerAddr, userDid)\n\tif userSubscription == nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"user %s is not subscribed to developer %s\", userDid, developerAddr.String())\n\t}\n\n\toldAmount := userSubscription.CreditAmount\n\tif amount > oldAmount {\n\t\tdelta := amount - oldAmount\n\t\tif err := k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewIntFromUint64(delta), true); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if oldAmount > amount {\n\t\tdelta := oldAmount - amount\n\t\tif err := k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewIntFromUint64(delta), false); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tuserSubscription.CreditAmount = amount\n\tuserSubscription.Period = period\n\tuserSubscription.LastRenewed = sdk.UnwrapSDKContext(ctx).BlockTime()\n\tk.SetUserSubscription(ctx, developerAddr, userDid, userSubscription)\n\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, math.NewIntFromUint64(amount)))\n\tupdatePeriod := time.Duration(period) * time.Second\n\tif updatePeriod == 0 {\n\t\tparams := k.GetParams(ctx)\n\t\tupdatePeriod = *params.EpochDuration\n\t}\n\tif err := k.grantPeriodicDIDAllowance(ctx, developerAddr, userDid, spendLimit, updatePeriod); err != nil {\n\t\treturn errorsmod.Wrap(err, \"grant periodic DID allowance\")\n\t}\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeUserSubscriptionUpdated,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyUserDid, userDid),\n\t\t\tsdk.NewAttribute(types.AttributeKeySubscriptionAmount, fmt.Sprintf(\"%d\", amount)),\n\t\t\tsdk.NewAttribute(types.AttributeKeySubscriptionPeriod, fmt.Sprintf(\"%d\", period)),\n\t\t),\n\t)\n\n\treturn nil\n}\n\n// RemoveUserSubscription removes the user subscription.\n// The corresponding feegrant allowance is set to expire at the current period reset time.\nfunc (k *Keeper) RemoveUserSubscription(\n\tctx context.Context,\n\tdeveloperAddr sdk.AccAddress,\n\tuserDid string,\n) (err error) {\n\tstart := time.Now()\n\n\tif extractedDID, ok := ctx.Value(appparams.ExtractedDIDContextKey).(string); ok && extractedDID != \"\" {\n\t\tdidAddr, err := k.GetAcpKeeper().GetAddressFromDID(sdk.UnwrapSDKContext(ctx), extractedDID)\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrap(err, \"convert DID to address\")\n\t\t}\n\t\tdeveloperAddr = didAddr\n\t}\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.RemoveUserSubscription,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Developer, developerAddr.String()),\n\t\t\t\tmetrics.NewLabel(metrics.UserDid, userDid),\n\t\t\t},\n\t\t)\n\t}()\n\n\texistingSub := k.GetUserSubscription(ctx, developerAddr, userDid)\n\tif existingSub == nil {\n\t\treturn types.ErrInvalidAddress.Wrapf(\"user %s is not subscribed to developer %s\", userDid, developerAddr.String())\n\t}\n\n\tif err := k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewIntFromUint64(existingSub.CreditAmount), false); err != nil {\n\t\treturn err\n\t}\n\n\tk.removeUserSubscription(ctx, developerAddr, userDid)\n\n\t// Expire the DID allowance by setting the expiration to the current period reset\n\t// Ignore error if no allowance exists\n\t_ = k.feegrantKeeper.ExpireDIDAllowance(ctx, developerAddr, userDid)\n\n\tsdk.UnwrapSDKContext(ctx).EventManager().EmitEvent(\n\t\tsdk.NewEvent(\n\t\t\ttypes.EventTypeUserSubscriptionRemoved,\n\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\tsdk.NewAttribute(types.AttributeKeyUserDid, userDid),\n\t\t),\n\t)\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/keeper_common_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tcryptocdc \"github.com/cosmos/cosmos-sdk/crypto/codec\"\n\tcosmosed25519 \"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttestutil \"github.com/sourcenetwork/sourcehub/testutil\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store\"\n\t\"cosmossdk.io/store/metrics\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\tcmtproto \"github.com/cometbft/cometbft/proto/tendermint/types\"\n\tdbm \"github.com/cosmos/cosmos-db\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcodectypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthcodec \"github.com/cosmos/cosmos-sdk/x/auth/codec\"\n\tauthkeeper \"github.com/cosmos/cosmos-sdk/x/auth/keeper\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tbankkeeper \"github.com/cosmos/cosmos-sdk/x/bank/keeper\"\n\tbanktypes \"github.com/cosmos/cosmos-sdk/x/bank/types\"\n\tdistrkeeper \"github.com/cosmos/cosmos-sdk/x/distribution/keeper\"\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tminttypes \"github.com/cosmos/cosmos-sdk/x/mint/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tepochskeeper \"github.com/sourcenetwork/sourcehub/x/epochs/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\tfeegrantkeeper \"github.com/sourcenetwork/sourcehub/x/feegrant/keeper\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// initializeValidator creates a validator and verifies that it was set correctly.\nfunc initializeValidator(t *testing.T, k *stakingkeeper.Keeper, ctx sdk.Context, valAddr sdk.ValAddress, initialTokens math.Int) {\n\tvalidator := testutil.CreateTestValidator(t, ctx, k, valAddr, cosmosed25519.GenPrivKey().PubKey(), initialTokens)\n\tgotValidator, err := k.GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, validator.OperatorAddress, gotValidator.OperatorAddress)\n}\n\n// initializeDelegator initializes a delegator with balance.\nfunc initializeDelegator(t *testing.T, k *Keeper, ctx sdk.Context, delAddr sdk.AccAddress, initialBalance math.Int) {\n\tinitialDelegatorBalance := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, initialBalance))\n\terr := k.GetBankKeeper().MintCoins(ctx, types.ModuleName, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().SendCoinsFromModuleToAccount(ctx, types.ModuleName, delAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n}\n\n// createAccount creates an account with no balance.\nfunc createAccount(t *testing.T, k *Keeper, ctx sdk.Context, addr sdk.AccAddress) {\n\ttempCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(1))\n\ttempCoins := sdk.NewCoins(tempCoin)\n\n\terr := k.GetBankKeeper().MintCoins(ctx, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().SendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, tempCoins)\n\trequire.NoError(t, err)\n\n\terr = k.GetBankKeeper().SendCoinsFromAccountToModule(ctx, addr, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n\terr = k.GetBankKeeper().BurnCoins(ctx, types.ModuleName, tempCoins)\n\trequire.NoError(t, err)\n}\n\n// mintCoinsToModule mints given token amount and sends it to the specified module name.\nfunc mintCoinsToModule(t *testing.T, k *Keeper, ctx sdk.Context, moduleName string, amount math.Int) {\n\tcoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, amount))\n\terr := k.GetBankKeeper().MintCoins(ctx, types.ModuleName, coins)\n\trequire.NoError(t, err)\n\t// No need to send if the specified moduleName is the tier module itself\n\tif moduleName != types.ModuleName {\n\t\terr = k.GetBankKeeper().SendCoinsFromModuleToModule(ctx, types.ModuleName, moduleName, coins)\n\t\trequire.NoError(t, err)\n\t}\n}\n\nfunc setupKeeper(t testing.TB) (Keeper, sdk.Context) {\n\tstoreKey := storetypes.NewKVStoreKey(types.StoreKey)\n\tauthStoreKey := storetypes.NewKVStoreKey(authtypes.StoreKey)\n\tbankStoreKey := storetypes.NewKVStoreKey(banktypes.StoreKey)\n\tstakingStoreKey := storetypes.NewKVStoreKey(stakingtypes.StoreKey)\n\tdistrStoreKey := storetypes.NewKVStoreKey(distrtypes.StoreKey)\n\tepochsStoreKey := storetypes.NewKVStoreKey(epochstypes.StoreKey)\n\tmintStoreKey := storetypes.NewKVStoreKey(minttypes.StoreKey)\n\tfeegrantStoreKey := storetypes.NewKVStoreKey(feegrant.StoreKey)\n\n\tdb := dbm.NewMemDB()\n\tstateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())\n\tstateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(authStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(bankStoreKey, storetypes.StoreTypeIAVL, db)\n\tstateStore.MountStoreWithDB(stakingStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(distrStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(epochsStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(mintStoreKey, storetypes.StoreTypeDB, db)\n\tstateStore.MountStoreWithDB(feegrantStoreKey, storetypes.StoreTypeDB, db)\n\trequire.NoError(t, stateStore.LoadLatestVersion())\n\n\tregistry := codectypes.NewInterfaceRegistry()\n\tcryptocdc.RegisterInterfaces(registry)\n\tauthtypes.RegisterInterfaces(registry)\n\tbanktypes.RegisterInterfaces(registry)\n\tstakingtypes.RegisterInterfaces(registry)\n\tdistrtypes.RegisterInterfaces(registry)\n\tminttypes.RegisterInterfaces(registry)\n\tfeegrant.RegisterInterfaces(registry)\n\n\tcdc := codec.NewProtoCodec(registry)\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tbech32Prefix := \"source\"\n\taddressCodec := authcodec.NewBech32Codec(bech32Prefix)\n\tvalOperCodec := authcodec.NewBech32Codec(bech32Prefix + \"valoper\")\n\tvalConsCodec := authcodec.NewBech32Codec(bech32Prefix + \"valcons\")\n\n\tmaccPerms := map[string][]string{\n\t\tauthtypes.FeeCollectorName:     nil,\n\t\tstakingtypes.BondedPoolName:    {authtypes.Burner, authtypes.Staking},\n\t\tstakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},\n\t\tdistrtypes.ModuleName:          {authtypes.Minter, authtypes.Burner},\n\t\tminttypes.ModuleName:           {authtypes.Minter, authtypes.Burner},\n\t\ttypes.ModuleName:               {authtypes.Minter, authtypes.Burner, authtypes.Staking},\n\t\ttypes.InsurancePoolName:        nil,\n\t\ttypes.DeveloperPoolName:        nil,\n\t}\n\n\tauthKeeper := authkeeper.NewAccountKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(authStoreKey),\n\t\tauthtypes.ProtoBaseAccount,\n\t\tmaccPerms,\n\t\taddressCodec,\n\t\tbech32Prefix,\n\t\tauthority.String(),\n\t)\n\n\tblockedAddrs := make(map[string]bool)\n\tfor acc := range maccPerms {\n\t\tblockedAddrs[authtypes.NewModuleAddress(acc).String()] = true\n\t}\n\tbankKeeper := bankkeeper.NewBaseKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(bankStoreKey),\n\t\tauthKeeper,\n\t\tblockedAddrs,\n\t\tauthority.String(),\n\t\tlog.NewNopLogger(),\n\t)\n\n\tctx := sdk.NewContext(stateStore, cmtproto.Header{}, false, log.NewNopLogger())\n\tctx = ctx.WithBlockHeight(1).WithChainID(\"sourcehub\").WithBlockTime(time.Unix(1000000000, 0))\n\n\tbondedPool := authtypes.NewEmptyModuleAccount(stakingtypes.BondedPoolName, authtypes.Burner, authtypes.Staking)\n\tnotBondedPool := authtypes.NewEmptyModuleAccount(stakingtypes.NotBondedPoolName, authtypes.Burner, authtypes.Staking)\n\tdistrPool := authtypes.NewEmptyModuleAccount(distrtypes.ModuleName)\n\tmintAcc := authtypes.NewEmptyModuleAccount(minttypes.ModuleName)\n\ttierPool := authtypes.NewEmptyModuleAccount(types.ModuleName, authtypes.Minter, authtypes.Burner, authtypes.Staking)\n\tinsurancePool := authtypes.NewEmptyModuleAccount(types.InsurancePoolName)\n\tdeveloperPool := authtypes.NewEmptyModuleAccount(types.DeveloperPoolName)\n\n\tif authKeeper.GetModuleAccount(ctx, stakingtypes.BondedPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, bondedPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, stakingtypes.NotBondedPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, notBondedPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, tierPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, distrtypes.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, distrPool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, minttypes.ModuleName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, mintAcc)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.InsurancePoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, insurancePool)\n\t}\n\tif authKeeper.GetModuleAccount(ctx, types.DeveloperPoolName) == nil {\n\t\tauthKeeper.SetModuleAccount(ctx, developerPool)\n\t}\n\n\tstakingKeeper := stakingkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(stakingStoreKey),\n\t\tauthKeeper,\n\t\tbankKeeper,\n\t\tauthority.String(),\n\t\tvalOperCodec,\n\t\tvalConsCodec,\n\t)\n\n\tstakingParams := stakingtypes.DefaultParams()\n\tstakingParams.BondDenom = appparams.DefaultBondDenom\n\trequire.NoError(t, stakingKeeper.SetParams(ctx, stakingParams))\n\n\tdistributionKeeper := distrkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(distrStoreKey),\n\t\tauthKeeper,\n\t\tbankKeeper,\n\t\tstakingKeeper,\n\t\tauthtypes.FeeCollectorName,\n\t\tauthority.String(),\n\t)\n\n\tepochsKeeper := epochskeeper.NewKeeper(\n\t\truntime.NewKVStoreService(epochsStoreKey),\n\t\tlog.NewNopLogger(),\n\t)\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: ctx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tepochsKeeper.SetEpochInfo(ctx, epoch)\n\n\tfeegrantKeeper := feegrantkeeper.NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(feegrantStoreKey),\n\t\tauthKeeper,\n\t)\n\n\tk := NewKeeper(\n\t\tcdc,\n\t\truntime.NewKVStoreService(storeKey),\n\t\tlog.NewNopLogger(),\n\t\tauthority.String(),\n\t\tbankKeeper,\n\t\tstakingKeeper,\n\t\tepochsKeeper,\n\t\tdistributionKeeper,\n\t\tfeegrantKeeper,\n\t\tnil,\n\t)\n\n\t// Initialize params\n\tif err := k.SetParams(ctx, types.DefaultParams()); err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn k, ctx\n}\n"
  },
  {
    "path": "x/tier/keeper/keeper_mock_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/log\"\n\t\"cosmossdk.io/math\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/testutil\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/golang/mock/gomock\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\ttest \"github.com/sourcenetwork/sourcehub/testutil\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\n\t\"github.com/stretchr/testify/suite\"\n)\n\ntype KeeperTestSuite struct {\n\tsuite.Suite\n\n\tauthorityAccount sdk.AccAddress\n\tbankKeeper       *test.MockBankKeeper\n\tstakingKeeper    *test.MockStakingKeeper\n\tepochsKeeper     *test.MockEpochsKeeper\n\tdistrKeeper      *test.MockDistributionKeeper\n\tfeegrantKeeper   *test.MockFeegrantKeeper\n\ttierKeeper       keeper.Keeper\n\tencCfg           test.EncodingConfig\n\tctx              sdk.Context\n\tkey              *storetypes.KVStoreKey\n\tvalAddr          sdk.ValAddress\n}\n\n// testDelegation is a minimal implementation of stakingtypes.DelegationI.\ntype testDelegation struct {\n\tvalidatorAddr string\n}\n\nfunc (td testDelegation) GetValidatorAddr() string { return td.validatorAddr }\nfunc (td testDelegation) GetDelegatorAddr() string {\n\treturn \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\"\n}\nfunc (td testDelegation) GetShares() math.LegacyDec { return math.LegacyOneDec() }\nfunc (td testDelegation) GetBondedTokens() math.Int { return math.ZeroInt() }\nfunc (td testDelegation) IsBonded() bool            { return false }\n\nfunc TestKeeperTestSuite(t *testing.T) {\n\tsuite.Run(t, new(KeeperTestSuite))\n}\n\nfunc (suite *KeeperTestSuite) SetupTest() {\n\tsuite.encCfg = test.CreateTestEncodingConfig()\n\tsuite.key = storetypes.NewKVStoreKey(types.StoreKey)\n\ttestCtx := testutil.DefaultContextWithDB(suite.T(), suite.key, storetypes.NewTransientStoreKey(\"transient_test\"))\n\tsuite.ctx = testCtx.Ctx\n\n\tctrl := gomock.NewController(suite.T())\n\n\tsuite.authorityAccount = authtypes.NewModuleAddress(govtypes.ModuleName)\n\tsuite.bankKeeper = test.NewMockBankKeeper(ctrl)\n\tsuite.stakingKeeper = test.NewMockStakingKeeper(ctrl)\n\tsuite.epochsKeeper = test.NewMockEpochsKeeper(ctrl)\n\tsuite.distrKeeper = test.NewMockDistributionKeeper(ctrl)\n\tsuite.feegrantKeeper = test.NewMockFeegrantKeeper(ctrl)\n\n\tsuite.tierKeeper = keeper.NewKeeper(\n\t\tsuite.encCfg.Codec,\n\t\truntime.NewKVStoreService(suite.key),\n\t\tlog.NewNopLogger(),\n\t\tsuite.authorityAccount.String(),\n\t\tsuite.bankKeeper,\n\t\tsuite.stakingKeeper,\n\t\tsuite.epochsKeeper,\n\t\tsuite.distrKeeper,\n\t\tsuite.feegrantKeeper,\n\t\tnil,\n\t)\n\n\terr := suite.tierKeeper.SetParams(suite.ctx, types.DefaultParams())\n\tsuite.Require().NoError(err)\n\n\tsuite.valAddr, _ = sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n}\n\n// TestLock is using mock keepers to verify that required function calls are made as expected on Lock().\nfunc (suite *KeeperTestSuite) TestLock() {\n\tamount := math.NewInt(1000)\n\tmoduleName := types.ModuleName\n\tcoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, amount))\n\tcreditCoins := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, math.NewInt(230)))\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\tsuite.Require().NoError(err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\tsuite.Require().NoError(err)\n\n\tvalidator := stakingtypes.Validator{\n\t\tOperatorAddress: valAddr.String(),\n\t\tStatus:          stakingtypes.Bonded,\n\t}\n\n\tepochInfo := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpochStartTime: suite.ctx.BlockTime().Add(-10 * time.Minute),\n\t\tDuration:              time.Hour,\n\t}\n\n\t// confirm that keeper methods are called as expected\n\tsuite.bankKeeper.EXPECT().\n\t\tMintCoins(gomock.Any(), types.ModuleName, creditCoins).\n\t\tReturn(nil).Times(1)\n\n\tsuite.bankKeeper.EXPECT().\n\t\tSendCoinsFromModuleToAccount(gomock.Any(), moduleName, delAddr, creditCoins).\n\t\tReturn(nil).Times(1)\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tGetValidator(gomock.Any(), valAddr).\n\t\tReturn(validator, nil).Times(1)\n\n\tsuite.bankKeeper.EXPECT().\n\t\tDelegateCoinsFromAccountToModule(gomock.Any(), delAddr, types.ModuleName, coins).\n\t\tReturn(nil).Times(1)\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tDelegate(gomock.Any(), gomock.Any(), amount, stakingtypes.Unbonded, validator, true).\n\t\tReturn(math.LegacyNewDecFromInt(amount), nil).Times(1)\n\n\tsuite.epochsKeeper.EXPECT().\n\t\tGetEpochInfo(gomock.Any(), types.EpochIdentifier).\n\t\tReturn(epochInfo).Times(1)\n\n\t// perform lock and verify that lockup is set correctly\n\terr = suite.tierKeeper.Lock(suite.ctx, delAddr, valAddr, amount)\n\tsuite.Require().NoError(err)\n\n\tlockedAmt := suite.tierKeeper.GetLockupAmount(suite.ctx, delAddr, valAddr)\n\tsuite.Require().Equal(amount, lockedAmt)\n}\n\n// TestUnlock is using mock keepers to verify that required function calls are made as expected on Unlock().\nfunc (suite *KeeperTestSuite) TestUnlock() {\n\tamount := math.NewInt(1000)\n\tmoduleName := types.ModuleName\n\tunlockingEpochs := int64(2)\n\tepochDuration := time.Hour\n\n\tparams := types.Params{\n\t\tUnlockingEpochs: unlockingEpochs,\n\t\tEpochDuration:   &epochDuration,\n\t}\n\n\texpectedCompletionTime := suite.ctx.BlockTime().Add(time.Hour * 24 * 21)\n\texpectedUnlockTime := suite.ctx.BlockTime().Add(time.Duration(params.UnlockingEpochs) * *params.EpochDuration)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\tsuite.Require().NoError(err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\tsuite.Require().NoError(err)\n\n\t// confirm that keeper methods are called as expected\n\n\tsuite.bankKeeper.EXPECT().\n\t\tGetBalance(\n\t\t\tgomock.Any(),\n\t\t\tauthtypes.NewModuleAddress(moduleName),\n\t\t\tappparams.DefaultBondDenom,\n\t\t).Return(\n\t\tsdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(2000)),\n\t).AnyTimes()\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tValidateUnbondAmount(\n\t\t\tgomock.Any(),\n\t\t\tauthtypes.NewModuleAddress(moduleName),\n\t\t\tvalAddr,\n\t\t\tamount,\n\t\t).Return(math.LegacyNewDecFromInt(amount), nil).Times(1)\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tUndelegate(\n\t\t\tgomock.Any(),\n\t\t\tauthtypes.NewModuleAddress(moduleName),\n\t\t\tvalAddr,\n\t\t\tmath.LegacyNewDecFromInt(amount),\n\t\t).Return(suite.ctx.BlockTime().Add(time.Hour*24*21), amount, nil).Times(1)\n\n\tsuite.tierKeeper.SetParams(suite.ctx, params)\n\n\t// add a lockup and verify that it exists before trying to unlock\n\terr = suite.tierKeeper.AddLockup(suite.ctx, delAddr, valAddr, amount)\n\tsuite.Require().NoError(err)\n\n\tlockedAmt := suite.tierKeeper.GetLockupAmount(suite.ctx, delAddr, valAddr)\n\tsuite.Require().Equal(amount, lockedAmt, \"expected lockup amount to be set\")\n\n\t// perform unlock and verify that unlocking lockup is set correctly\n\tcreationHeight, completionTime, unlockTime, err := suite.tierKeeper.Unlock(suite.ctx, delAddr, valAddr, amount)\n\tsuite.Require().NoError(err)\n\n\tsuite.Require().Equal(suite.ctx.BlockHeight(), creationHeight)\n\tsuite.Require().Equal(expectedCompletionTime, completionTime)\n\tsuite.Require().Equal(expectedUnlockTime, unlockTime)\n}\n\n// TestRedelegate is using mock keepers to verify that required function calls are made as expected on Redelegate().\nfunc (suite *KeeperTestSuite) TestRedelegate() {\n\tamount := math.NewInt(1000)\n\tshares := math.LegacyNewDecFromInt(amount)\n\texpectedCompletionTime := suite.ctx.BlockTime().Add(time.Hour * 24 * 21)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\tsuite.Require().NoError(err)\n\tsrcValAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\tsuite.Require().NoError(err)\n\tdstValAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\tsuite.Require().NoError(err)\n\n\t// add initial lockup to the source validator\n\terr = suite.tierKeeper.AddLockup(suite.ctx, delAddr, srcValAddr, amount)\n\tsuite.Require().NoError(err)\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tValidateUnbondAmount(gomock.Any(), authtypes.NewModuleAddress(types.ModuleName), srcValAddr, amount).\n\t\tReturn(shares, nil).Times(1)\n\n\tsuite.stakingKeeper.EXPECT().\n\t\tBeginRedelegation(gomock.Any(), authtypes.NewModuleAddress(types.ModuleName), srcValAddr, dstValAddr, shares).\n\t\tReturn(expectedCompletionTime, nil).Times(1)\n\n\t// perform redelegate and verify that lockups were updated successfully\n\tcompletionTime, err := suite.tierKeeper.Redelegate(suite.ctx, delAddr, srcValAddr, dstValAddr, amount)\n\tsuite.Require().NoError(err)\n\tsuite.Require().Equal(expectedCompletionTime, completionTime)\n\n\tsrcLockedAmt := suite.tierKeeper.GetLockupAmount(suite.ctx, delAddr, srcValAddr)\n\tdstLockedAmt := suite.tierKeeper.GetLockupAmount(suite.ctx, delAddr, dstValAddr)\n\tsuite.Require().Equal(math.ZeroInt(), srcLockedAmt, \"source validator lockup should be zero\")\n\tsuite.Require().Equal(amount, dstLockedAmt, \"destination validator lockup should match the redelegated amount\")\n}\n\nfunc (suite *KeeperTestSuite) TestBeginBlock() {\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tdelegation := testDelegation{validatorAddr: suite.valAddr.String()}\n\ttotalReward := math.NewInt(100)\n\trewardCoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, totalReward))\n\n\ttestCases := []struct {\n\t\tname                       string\n\t\texpectedDeveloperPool      math.Int\n\t\texpectedInsurancePool      math.Int\n\t\texpectedTimesSentToInsPool int\n\t}{\n\t\t{\n\t\t\tname:                       \"Insurance pool below threshold\",\n\t\t\texpectedDeveloperPool:      math.NewInt(2),\n\t\t\texpectedInsurancePool:      math.NewInt(1),\n\t\t\texpectedTimesSentToInsPool: 1,\n\t\t},\n\t\t{\n\t\t\tname:                       \"Insurance pool is full\",\n\t\t\texpectedDeveloperPool:      math.NewInt(3),\n\t\t\texpectedInsurancePool:      math.NewInt(100_000_000_000),\n\t\t\texpectedTimesSentToInsPool: 0,\n\t\t},\n\t}\n\n\tsuite.stakingKeeper.\n\t\tEXPECT().\n\t\tIterateDelegations(suite.ctx, tierModuleAddr, gomock.Any()).\n\t\tDoAndReturn(func(ctx sdk.Context, delegator sdk.AccAddress, fn func(int64, stakingtypes.DelegationI) bool) error {\n\t\t\tfn(0, delegation)\n\t\t\treturn nil\n\t\t}).Times(len(testCases))\n\n\tsuite.distrKeeper.\n\t\tEXPECT().\n\t\tWithdrawDelegationRewards(suite.ctx, tierModuleAddr, suite.valAddr).\n\t\tReturn(rewardCoins, nil).Times(len(testCases))\n\n\tsuite.bankKeeper.\n\t\tEXPECT().\n\t\tSendCoinsFromModuleToModule(gomock.Any(), types.ModuleName, types.DeveloperPoolName, gomock.Any()).\n\t\tReturn(nil).Times(len(testCases))\n\n\tsuite.bankKeeper.\n\t\tEXPECT().\n\t\tBurnCoins(gomock.Any(), types.ModuleName, gomock.Any()).\n\t\tReturn(nil).Times(len(testCases))\n\n\tfor _, tc := range testCases {\n\t\tsuite.Run(tc.name, func() {\n\t\t\tsuite.bankKeeper.\n\t\t\t\tEXPECT().\n\t\t\t\tGetBalance(gomock.Any(), authtypes.NewModuleAddress(types.InsurancePoolName), appparams.DefaultBondDenom).\n\t\t\t\tReturn(sdk.NewCoin(appparams.DefaultBondDenom, tc.expectedInsurancePool)).\n\t\t\t\tTimes(tc.expectedTimesSentToInsPool + 1)\n\n\t\t\tsuite.bankKeeper.\n\t\t\t\tEXPECT().\n\t\t\t\tGetBalance(gomock.Any(), authtypes.NewModuleAddress(types.DeveloperPoolName), appparams.DefaultBondDenom).\n\t\t\t\tReturn(sdk.NewCoin(appparams.DefaultBondDenom, tc.expectedDeveloperPool)).\n\t\t\t\tTimes(1)\n\n\t\t\tsuite.bankKeeper.\n\t\t\t\tEXPECT().\n\t\t\t\tSendCoinsFromModuleToModule(gomock.Any(), types.ModuleName, types.InsurancePoolName, gomock.Any()).\n\t\t\t\tReturn(nil).Times(tc.expectedTimesSentToInsPool)\n\n\t\t\terr := suite.tierKeeper.BeginBlocker(suite.ctx)\n\t\t\tsuite.Require().NoError(err)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/keeper_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\n// TestLock verifies that a valid lockup is created on keeper.Lock().\nfunc TestLock(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(1000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\t// initial lockup amount should be zero\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, math.ZeroInt(), lockedAmt)\n\n\t// locking invalid amounts should fail\n\terr = k.Lock(ctx, delAddr, valAddr, math.NewInt(-100))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"lock non-positive amount\")\n\terr = k.Lock(ctx, delAddr, valAddr, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"lock non-positive amount\")\n\terr = k.Lock(ctx, delAddr, valAddr, math.NewInt(10_000_000))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"insufficient funds\")\n\n\t// lock valid amount\n\terr = k.Lock(ctx, delAddr, valAddr, amount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was added\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, amount, lockedAmt)\n}\n\n// TestLockAuto verifies that a valid lockup is created with automatic validator selection on keeper.LockAuto().\nfunc TestLockAuto(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(5000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(1000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr1, initialValidatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr2, initialValidatorBalance)\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\t// initial lockup amount should be zero for both validators\n\tlockedAmt1 := k.GetLockupAmount(ctx, delAddr, valAddr1)\n\trequire.Equal(t, math.ZeroInt(), lockedAmt1)\n\tlockedAmt2 := k.GetLockupAmount(ctx, delAddr, valAddr2)\n\trequire.Equal(t, math.ZeroInt(), lockedAmt2)\n\n\t// locking invalid amounts should fail\n\t_, err = k.LockAuto(ctx, delAddr, math.NewInt(-100))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"lock non-positive amount\")\n\t_, err = k.LockAuto(ctx, delAddr, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"lock non-positive amount\")\n\t_, err = k.LockAuto(ctx, delAddr, math.NewInt(10_000_000))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"insufficient funds\")\n\n\t// lock valid amount with auto validator selection (first lock - no existing lockups)\n\tselectedValAddr, err := k.LockAuto(ctx, delAddr, amount)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, selectedValAddr)\n\n\t// verify that the selected validator is one of the bonded validators\n\trequire.True(t, selectedValAddr.Equals(valAddr1) || selectedValAddr.Equals(valAddr2))\n\n\t// verify that lockup was added to the selected validator\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, selectedValAddr)\n\trequire.Equal(t, amount, lockedAmt)\n\n\t// second auto lock should go to the same validator (smallest existing lockup)\n\tselectedValAddr2, err := k.LockAuto(ctx, delAddr, math.NewInt(500))\n\trequire.NoError(t, err)\n\trequire.True(t, selectedValAddr2.Equals(selectedValAddr), \"second lock should go to same validator with smallest lockup\")\n\n\t// verify lockup was updated\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, selectedValAddr)\n\trequire.Equal(t, math.NewInt(1500), lockedAmt) // 1000 + 500\n\n\t// manually lock a smaller amount to the other validator\n\totherValAddr := valAddr1\n\tif selectedValAddr.Equals(valAddr1) {\n\t\totherValAddr = valAddr2\n\t}\n\terr = k.Lock(ctx, delAddr, otherValAddr, math.NewInt(200))\n\trequire.NoError(t, err)\n\n\t// third auto lock should go to the validator with smallest lockup (200 < 1500)\n\tselectedValAddr3, err := k.LockAuto(ctx, delAddr, math.NewInt(100))\n\trequire.NoError(t, err)\n\trequire.True(t, selectedValAddr3.Equals(otherValAddr), \"third lock should go to validator with smallest lockup\")\n\n\t// verify lockup was updated on the other validator\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, otherValAddr)\n\trequire.Equal(t, math.NewInt(300), lockedAmt) // 200 + 100\n}\n\n// TestUnlock verifies that a valid unlocking lockup is created on keeper.Unock().\nfunc TestUnlock(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tlockAmount := math.NewInt(1000)\n\tunlockAmount := math.NewInt(500)\n\tinvalidUnlockAmount := math.NewInt(-500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(1000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.Lock(ctx, delAddr, valAddr, lockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was added\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, lockAmount, lockedAmt)\n\n\t// unlocking invalid amounts should fail\n\t_, _, _, err = k.Unlock(ctx, delAddr, valAddr, invalidUnlockAmount)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"unlock non-positive amount\")\n\t_, _, _, err = k.Unlock(ctx, delAddr, valAddr, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"unlock non-positive amount\")\n\n\tcreationHeight, completionTime, unlockTime, err := k.Unlock(ctx, delAddr, valAddr, unlockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, lockAmount.Sub(unlockAmount), lockedAmt)\n\n\t// check the unlocking entry\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, unlockAmount, unlockingLockup.Amount)\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n}\n\n// TestRedelegate verifies that a locked amount is correctly redelegated on keeper.Redelegate().\nfunc TestRedelegate(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tamount := math.NewInt(1000)\n\tinvalidAmount := math.NewInt(-100)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tsrcValAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdstValAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(1000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, srcValAddr, initialValidatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, dstValAddr, initialValidatorBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\t// lock tokens with the source validator\n\trequire.NoError(t, k.Lock(ctx, delAddr, srcValAddr, amount))\n\n\t// redelegating invalid amounts should fail\n\t_, err = k.Redelegate(ctx, delAddr, srcValAddr, dstValAddr, invalidAmount)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"redelegate non-positive amount\")\n\t_, err = k.Redelegate(ctx, delAddr, srcValAddr, dstValAddr, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"redelegate non-positive amount\")\n\n\t// redelegate from the source validator to the destination validator\n\tcompletionTime, err := k.Redelegate(ctx, delAddr, srcValAddr, dstValAddr, math.NewInt(500))\n\trequire.NoError(t, err)\n\n\t// check lockup state\n\tsrcLockup := k.GetLockupAmount(ctx, delAddr, srcValAddr)\n\trequire.Equal(t, math.NewInt(500), srcLockup)\n\n\tdstLockup := k.GetLockupAmount(ctx, delAddr, dstValAddr)\n\trequire.Equal(t, math.NewInt(500), dstLockup)\n\n\t// ensure completion time is set\n\trequire.NotZero(t, completionTime)\n}\n\n// TestCompleteUnlocking verifies that 'fully unlocked' unlocking lockups are removed on keeper.CompleteUnlocking().\n// Block time is advanced by 60 days from when keeper.Unlock() is called to make sure that the unlock time is in the past.\nfunc TestCompleteUnlocking(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tlockAmount := math.NewInt(123_456)\n\tunlockAmount := math.NewInt(123_456)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(200_000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(1_000_000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.Lock(ctx, delAddr, valAddr, lockAmount)\n\trequire.NoError(t, err)\n\n\tlockup := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, lockAmount, lockup)\n\n\tbalance := k.GetBankKeeper().GetBalance(ctx, delAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, initialDelegatorBalance.Sub(lockAmount), balance.Amount)\n\n\t// unlock tokens\n\tcreationHeight, completionTime, unlockTime, err := k.Unlock(ctx, delAddr, valAddr, unlockAmount)\n\trequire.NoError(t, err)\n\n\tlockup = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, math.ZeroInt(), lockup)\n\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, unlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 123_455\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n\n\tbalance = k.GetBankKeeper().GetBalance(ctx, delAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, initialDelegatorBalance.Sub(lockAmount), balance.Amount)\n\n\t// completing unlocking lockup should be skipped if unlock time was not reached\n\terr = k.CompleteUnlocking(ctx)\n\trequire.NoError(t, err)\n\tbalance = k.GetBankKeeper().GetBalance(ctx, delAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, initialDelegatorBalance.Sub(unlockAmount), balance.Amount)\n\n\t// advance block time by 60 days\n\tctx = ctx.WithBlockHeight(3600 * 24 * 60).WithBlockTime(ctx.BlockTime().Add(60 * 24 * time.Hour))\n\n\t// completing unlocking lockup should be skipped if module balance is less than required amount\n\terr = k.CompleteUnlocking(ctx)\n\trequire.NoError(t, err)\n\tbalance = k.GetBankKeeper().GetBalance(ctx, delAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, initialDelegatorBalance.Sub(unlockAmount), balance.Amount)\n\n\t// complete unbonding via the staking keeper\n\tmodAddr := authtypes.NewModuleAddress(types.ModuleName)\n\t_, err = k.GetStakingKeeper().CompleteUnbonding(ctx, modAddr, valAddr)\n\trequire.NoError(t, err)\n\n\tunlockingLockup = k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, unlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 123_455\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n\n\t// complete unlocking of matured unlocking lockups\n\terr = k.CompleteUnlocking(ctx)\n\trequire.NoError(t, err)\n\n\t// verify that the balance is correct\n\tbalance = k.GetBankKeeper().GetBalance(ctx, delAddr, appparams.DefaultBondDenom)\n\trequire.Equal(t, initialDelegatorBalance.Sub(math.OneInt()), balance.Amount)\n}\n\n// TestCancelUnlocking verifies that the unlocking lockup is removed on keeper.CancelUnlocking().\nfunc TestCancelUnlocking(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tinitialLockAmount := math.NewInt(1000)\n\tupdatedLockAmount := math.NewInt(700)\n\tunlockAmount := math.NewInt(500)\n\tpartialUnlockAmount := math.NewInt(200)\n\tremainingUnlockAmount := math.NewInt(300)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(200_000)\n\tkeepertest.InitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitialValidatorBalance := math.NewInt(10_000_000)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\t// set initial block height and time\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\t// lock the initialAmount\n\terr = k.Lock(ctx, delAddr, valAddr, initialLockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was added\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, initialLockAmount, lockedAmt)\n\n\t// unlock the unlockAmount (partial unlock)\n\tcreationHeight, completionTime, unlockTime, err := k.Unlock(ctx, delAddr, valAddr, unlockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, initialLockAmount.Sub(unlockAmount), lockedAmt) // 500\n\n\t// check the unlocking entry based on adjusted unlock amount\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, unlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 499\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n\n\terr = k.CancelUnlocking(ctx, delAddr, valAddr, creationHeight, math.NewInt(-100))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"cancel unlocking non-positive amount\")\n\terr = k.CancelUnlocking(ctx, delAddr, valAddr, creationHeight, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"cancel unlocking non-positive amount\")\n\n\t// partially cancel the unlocking lockup\n\terr = k.CancelUnlocking(ctx, delAddr, valAddr, creationHeight, partialUnlockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockupAmount := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, updatedLockAmount, lockupAmount) // 700\n\n\t// check the unlocking entry\n\tunlockingLockup = k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, remainingUnlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 299\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n\n\t// advance block height by 1 so that subsequent unlocking lockup is stored separately\n\t// otherwise, existing unlocking lockup is overrirden (e.g. delAddr/valAddr/creationHeight/)\n\t// TODO: handle edge case with 2+ messages at the same height\n\tctx = ctx.WithBlockHeight(2).WithBlockTime(ctx.BlockTime().Add(time.Minute))\n\n\t// add new unlocking lockup record at height 2 to fully unlock the remaining adjustedUnlockAmountFinal\n\tcreationHeight2, completionTime2, unlockTime2, err := k.Unlock(ctx, delAddr, valAddr, remainingUnlockAmount)\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, updatedLockAmount.Sub(remainingUnlockAmount), lockedAmt) // 400\n\n\t// check the unlocking entry based on adjusted unlock amount\n\tunlockingLockup = k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight2)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, remainingUnlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 299\n\trequire.Equal(t, completionTime2, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime2, unlockingLockup.UnlockTime)\n\n\t// cancel (remove) the unlocking lockup at height 2\n\terr = k.CancelUnlocking(ctx, delAddr, valAddr, creationHeight2, remainingUnlockAmount.Sub(math.OneInt())) // 299\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockupAmount = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, updatedLockAmount.Sub(math.OneInt()), lockupAmount) // 699\n\n\t// there is still a partial unlocking lockup at height 1 since we did not cancel it's whole amount\n\tunlockingLockup = k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, remainingUnlockAmount.Sub(math.OneInt()), unlockingLockup.Amount) // 299\n\trequire.Equal(t, completionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, unlockTime, unlockingLockup.UnlockTime)\n\n\t// cancel (remove) the remaining unlocking lockup at height 1\n\terr = k.CancelUnlocking(ctx, delAddr, valAddr, creationHeight, remainingUnlockAmount.Sub(math.OneInt())) // 299\n\trequire.NoError(t, err)\n\n\t// verify that lockup was updated\n\tlockupAmount = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, initialLockAmount.Sub(math.NewInt(2)), lockupAmount) // 998\n\n\t// confirm that unlocking lockup was removed if we cancel whole amount (e.g. use nil)\n\tunlockingLockup = k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.Nil(t, unlockingLockup)\n}\n\n// TestCreateDeveloper verifies that a developer can be created.\nfunc TestCreateDeveloper(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.Equal(t, developerAddr.String(), developer.Address)\n\trequire.True(t, developer.AutoLockEnabled)\n\n\terr = k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"already exists\")\n}\n\n// TestUpdateDeveloper verifies that a developer can be updated.\nfunc TestUpdateDeveloper(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.Equal(t, developerAddr.String(), developer.Address)\n\trequire.True(t, developer.AutoLockEnabled)\n\n\terr = k.UpdateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\tdeveloper = k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.Equal(t, developerAddr.String(), developer.Address)\n\trequire.False(t, developer.AutoLockEnabled)\n}\n\n// TestRemoveDeveloper verifies that a developer can be removed.\nfunc TestRemoveDeveloper(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\terr = k.RemoveDeveloper(ctx, developerAddr)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"does not exist\")\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, developer)\n\n\terr = k.RemoveDeveloper(ctx, developerAddr)\n\trequire.NoError(t, err)\n\n\tdeveloper = k.GetDeveloper(ctx, developerAddr)\n\trequire.Nil(t, developer)\n}\n\n// TestAddUserSubscription verifies that a user can be subscribed to a developer.\nfunc TestAddUserSubscription(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tkeepertest.InitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\trequire.NoError(t, k.Lock(ctx, developerAddr, valAddr, math.NewInt(1000)))\n\n\tamount := uint64(1000)\n\tperiod := uint64(3600)\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, amount, period)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, developerAddr.String(), subscription.Developer)\n\trequire.Equal(t, userDid, subscription.UserDid)\n\trequire.Equal(t, amount, subscription.CreditAmount)\n\trequire.Equal(t, period, subscription.Period)\n\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, amount, period)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"already subscribed\")\n}\n\n// TestUpdateUserSubscription verifies that a user's subscription can be updated.\nfunc TestUpdateUserSubscription(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tkeepertest.InitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\trequire.NoError(t, k.Lock(ctx, developerAddr, valAddr, math.NewInt(1000)))\n\n\tinitialAmount := uint64(1000)\n\tnewAmount := uint64(2000)\n\tlowerAmount := uint64(500)\n\terr = k.UpdateUserSubscription(ctx, developerAddr, userDid, initialAmount, 7200)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"is not subscribed\")\n\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, initialAmount, 3600)\n\trequire.NoError(t, err)\n\n\terr = k.UpdateUserSubscription(ctx, developerAddr, userDid, newAmount, 7200)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, newAmount, subscription.CreditAmount)\n\trequire.Equal(t, uint64(7200), subscription.Period)\n\n\terr = k.UpdateUserSubscription(ctx, developerAddr, userDid, lowerAmount, 1800)\n\trequire.NoError(t, err)\n\n\tsubscription = k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, lowerAmount, subscription.CreditAmount)\n\trequire.Equal(t, uint64(1800), subscription.Period)\n}\n\n// TestRemoveUserSubscription verifies that a user's subscription can be removed.\nfunc TestRemoveUserSubscription(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tkeepertest.InitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.RemoveUserSubscription(ctx, developerAddr, userDid)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"is not subscribed\")\n\n\terr = k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\trequire.NoError(t, k.Lock(ctx, developerAddr, valAddr, math.NewInt(1000)))\n\n\tamount := uint64(1000)\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, amount, 3600)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\n\terr = k.RemoveUserSubscription(ctx, developerAddr, userDid)\n\trequire.NoError(t, err)\n\n\tsubscription = k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.Nil(t, subscription)\n}\n\n// TestAddUserSubscriptionAutoLock verifies that a user can be subscribed to a developer with auto-lock enabled.\nfunc TestAddUserSubscriptionAutoLock(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tkeepertest.InitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\tamount := uint64(1000)\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, amount, 3600)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"insufficient credits and auto-lock disabled\")\n\n\terr = k.UpdateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\terr = k.AddUserSubscription(ctx, developerAddr, userDid, amount, 3600)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, developerAddr.String(), subscription.Developer)\n\trequire.Equal(t, userDid, subscription.UserDid)\n\trequire.Equal(t, amount, subscription.CreditAmount)\n\trequire.Equal(t, uint64(3600), subscription.Period)\n}\n"
  },
  {
    "path": "x/tier/keeper/lockup.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// GetAllLockups returns all lockups in the store.\nfunc (k *Keeper) GetAllLockups(ctx context.Context) []types.Lockup {\n\tvar lockups []types.Lockup\n\n\tlockupsCallback := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tlockups = append(lockups, lockup)\n\t}\n\n\tk.mustIterateLockups(ctx, lockupsCallback)\n\n\treturn lockups\n}\n\n// GetAllUnlockingLockups returns all unlocking lockups in the store.\nfunc (k *Keeper) GetAllUnlockingLockups(ctx context.Context) []types.UnlockingLockup {\n\tvar unlockingLockups []types.UnlockingLockup\n\n\tunlockingLockupsCallback := func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, lockup types.UnlockingLockup) {\n\t\tunlockingLockups = append(unlockingLockups, lockup)\n\t}\n\n\tk.mustIterateUnlockingLockups(ctx, unlockingLockupsCallback)\n\n\treturn unlockingLockups\n}\n\n// setLockup sets a lockup in the store based on the LockupKey.\nfunc (k *Keeper) setLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount math.Int) {\n\tlockup := &types.Lockup{\n\t\tDelegatorAddress: delAddr.String(),\n\t\tValidatorAddress: valAddr.String(),\n\t\tAmount:           amount,\n\t}\n\n\tkey := types.LockupKey(delAddr, valAddr)\n\tb := k.cdc.MustMarshal(lockup)\n\tstore := k.lockupStore(ctx, false)\n\tstore.Set(key, b)\n}\n\n// SetUnlockingLockup sets an unlocking lockup in the store based on the UnlockingLockupKey.\nfunc (k *Keeper) SetUnlockingLockup(\n\tctx context.Context,\n\tdelAddr sdk.AccAddress,\n\tvalAddr sdk.ValAddress,\n\tcreationHeight int64,\n\tamount math.Int,\n\tcompletionTime, unlockTime time.Time,\n) {\n\tunlockingLockup := &types.UnlockingLockup{\n\t\tDelegatorAddress: delAddr.String(),\n\t\tValidatorAddress: valAddr.String(),\n\t\tCreationHeight:   creationHeight,\n\t\tAmount:           amount,\n\t\tCompletionTime:   completionTime,\n\t\tUnlockTime:       unlockTime,\n\t}\n\n\tkey := types.UnlockingLockupKey(delAddr, valAddr, creationHeight)\n\tb := k.cdc.MustMarshal(unlockingLockup)\n\tstore := k.lockupStore(ctx, true)\n\tstore.Set(key, b)\n}\n\n// GetLockup returns a pointer to existing lockup, or nil if not found.\nfunc (k *Keeper) GetLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) *types.Lockup {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.lockupStore(ctx, false)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar lockup types.Lockup\n\tk.cdc.MustUnmarshal(b, &lockup)\n\n\treturn &lockup\n}\n\n// GetLockupAmount returns existing lockup amount, or math.ZeroInt() if not found.\nfunc (k *Keeper) GetLockupAmount(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) math.Int {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.lockupStore(ctx, false)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\tvar lockup types.Lockup\n\tk.cdc.MustUnmarshal(b, &lockup)\n\n\treturn lockup.Amount\n}\n\n// hasLockup checks if Lockup with specified delAddr/valAddr exists.\nfunc (k *Keeper) hasLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) bool {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.lockupStore(ctx, false)\n\tb := store.Get(key)\n\n\treturn b != nil\n}\n\n// HasUnlockingLockup checks if UnlockingLockup with specified delAddr/valAddr/creationHeight exists.\nfunc (k *Keeper) HasUnlockingLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64) bool {\n\tkey := types.UnlockingLockupKey(delAddr, valAddr, creationHeight)\n\tstore := k.lockupStore(ctx, true)\n\tb := store.Get(key)\n\n\treturn b != nil\n}\n\n// GetUnlockingLockup returns the UnlockingLockup if it exists, or nil otherwise.\nfunc (k *Keeper) GetUnlockingLockup(\n\tctx context.Context,\n\tdelAddr sdk.AccAddress,\n\tvalAddr sdk.ValAddress,\n\tcreationHeight int64,\n) *types.UnlockingLockup {\n\tkey := types.UnlockingLockupKey(delAddr, valAddr, creationHeight)\n\tstore := k.lockupStore(ctx, true)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar unlockingLockup types.UnlockingLockup\n\tk.cdc.MustUnmarshal(b, &unlockingLockup)\n\n\treturn &unlockingLockup\n}\n\n// removeLockup removes existing Lockup (delAddr/valAddr/).\nfunc (k *Keeper) removeLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) {\n\tkey := types.LockupKey(delAddr, valAddr)\n\tstore := k.lockupStore(ctx, false)\n\tstore.Delete(key)\n}\n\n// removeUnlockingLockup removes existing unlocking lockup (delAddr/valAddr/creationHeight/).\nfunc (k *Keeper) removeUnlockingLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64) {\n\tkey := types.UnlockingLockupKey(delAddr, valAddr, creationHeight)\n\tstore := k.lockupStore(ctx, true)\n\tstore.Delete(key)\n}\n\n// AddLockup adds provided amount to the existing Lockup.\nfunc (k *Keeper) AddLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount math.Int) error {\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\ttotal = total.Add(amount)\n\terr := k.setTotalLockupsAmount(ctx, total)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tlockup := k.GetLockup(ctx, delAddr, valAddr)\n\tif lockup != nil {\n\t\tamount = amount.Add(lockup.Amount)\n\t}\n\n\tk.setLockup(ctx, delAddr, valAddr, amount)\n\n\treturn nil\n}\n\n// subtractLockup subtracts provided amount from the existing Lockup.\nfunc (k *Keeper) subtractLockup(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount math.Int) error {\n\tlockup := k.GetLockup(ctx, delAddr, valAddr)\n\tif lockup == nil {\n\t\treturn types.ErrNotFound.Wrap(\"subtract lockup\")\n\t}\n\n\t// Adjust the actual lockup amount by insurance lockup amount\n\tinsuranceLockupAmount := math.ZeroInt()\n\tinsuranceLockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\tif insuranceLockup != nil {\n\t\tinsuranceLockupAmount = insuranceLockup.Amount\n\t}\n\n\t// Subtracted amount plus insurance lockup amount must not be larger than the lockedAmt\n\tif amount.Add(insuranceLockupAmount).GT(lockup.Amount) {\n\t\treturn types.ErrInvalidAmount.Wrap(\"subtract lockup\")\n\t}\n\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\tnewTotal, err := total.SafeSub(amount)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"subtract %s from total lockups amount %s\", amount, total)\n\t}\n\n\terr = k.setTotalLockupsAmount(ctx, newTotal)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Remove lockup record completely if subtracted amount is equal to lockedAmt\n\tif amount.Equal(lockup.Amount) {\n\t\tk.removeLockup(ctx, delAddr, valAddr)\n\t\treturn nil\n\t}\n\n\t// Subtract amount from the lockedAmt otherwise\n\tnewAmt, err := lockup.Amount.SafeSub(amount)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"subtract %s from locked amount %s\", amount, lockup.Amount)\n\t}\n\n\tk.setLockup(ctx, delAddr, valAddr, newAmt)\n\n\treturn nil\n}\n\n// subtractUnlockingLockup subtracts provided amount from the existing UnlockingLockup.\nfunc (k *Keeper) subtractUnlockingLockup(\n\tctx context.Context,\n\tdelAddr sdk.AccAddress,\n\tvalAddr sdk.ValAddress,\n\tcreationHeight int64,\n\tamount math.Int,\n) error {\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\tif unlockingLockup == nil {\n\t\treturn types.ErrNotFound.Wrap(\"subtract unlocking lockup\")\n\t}\n\n\t// Subtracted amount must not be larger than the lockedAmt\n\tif amount.GT(unlockingLockup.Amount) {\n\t\treturn types.ErrInvalidAmount.Wrap(\"subtract unlocking lockup\")\n\t}\n\n\t// Remove lockup record completely if subtracted amount is equal to lockedAmt\n\tif amount.Equal(unlockingLockup.Amount) {\n\t\tk.removeUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\t\treturn nil\n\t}\n\n\t// Subtract amount from the lockedAmt otherwise\n\tnewAmt, err := unlockingLockup.Amount.SafeSub(amount)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"subtract %s from unlocking lockup with amount %s\", amount, unlockingLockup.Amount)\n\t}\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, creationHeight, newAmt, unlockingLockup.CompletionTime, unlockingLockup.UnlockTime)\n\n\treturn nil\n}\n\n// totalLockedAmountByAddr returns the total lockup amount by the provided delAddr.\nfunc (k *Keeper) totalLockedAmountByAddr(ctx context.Context, delAddr sdk.AccAddress) math.Int {\n\tamount := math.ZeroInt()\n\n\tcb := func(d sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tif d.Equals(delAddr) {\n\t\t\tamount = amount.Add(lockup.Amount)\n\t\t}\n\t}\n\n\tk.mustIterateLockups(ctx, cb)\n\n\treturn amount\n}\n\n// iterateUnlockingLockups iterates over all unlocking lockups in the store and performs the provided callback function.\n// The iterator itself doesn't return an error, but the callback does.\n// If the callback returns an error, the iteration stops and the error is returned.\nfunc (k *Keeper) iterateUnlockingLockups(ctx context.Context,\n\tcb func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, lockup types.UnlockingLockup) error) error {\n\n\tstore := k.lockupStore(ctx, true)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar unlockingLockup types.UnlockingLockup\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &unlockingLockup)\n\n\t\tdelAddr, valAddr, creationHeight := types.UnlockingLockupKeyToAddressesAtHeight(iterator.Key())\n\n\t\terr := cb(delAddr, valAddr, creationHeight, unlockingLockup)\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrapf(err, \"%s/%s/%d, amount: %s\", delAddr, valAddr, creationHeight, unlockingLockup.Amount)\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// mustIterateLockups iterates over all lockups in the store and performs the provided callback function.\nfunc (k *Keeper) mustIterateLockups(ctx context.Context,\n\tcb func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup)) {\n\n\tstore := k.lockupStore(ctx, false)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar lockup types.Lockup\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &lockup)\n\t\tdelAddr, valAddr := types.LockupKeyToAddresses(iterator.Key())\n\t\tcb(delAddr, valAddr, lockup)\n\t}\n}\n\n// mustIterateUnlockingLockups iterates over all unlocking lockups in the store and performs the provided callback function.\nfunc (k *Keeper) mustIterateUnlockingLockups(ctx context.Context,\n\tcb func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, unlockingLockup types.UnlockingLockup)) {\n\n\tstore := k.lockupStore(ctx, true)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar unlockingLockup types.UnlockingLockup\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &unlockingLockup)\n\t\tdelAddr, valAddr, creationHeight := types.UnlockingLockupKeyToAddressesAtHeight(iterator.Key())\n\t\tcb(delAddr, valAddr, creationHeight, unlockingLockup)\n\t}\n}\n\n// lockupStore returns a prefix store for Lockup / UnlockingLockup.\nfunc (k *Keeper) lockupStore(ctx context.Context, unlocking bool) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstorePrefix := types.KeyPrefix(unlocking)\n\treturn prefix.NewStore(storeAdapter, storePrefix)\n}\n\n// GetTotalLockupsAmount retrieves the total lockup amount from the store.\nfunc (k *Keeper) GetTotalLockupsAmount(ctx context.Context) (total math.Int) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.TotalLockupsKey)\n\tif bz == nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\terr := total.Unmarshal(bz)\n\tif err != nil {\n\t\treturn math.ZeroInt()\n\t}\n\n\tif total.IsNegative() {\n\t\treturn math.ZeroInt()\n\t}\n\n\treturn total\n}\n\n// setTotalLockupsAmount updates the total lockup amount in the store.\nfunc (k *Keeper) setTotalLockupsAmount(ctx context.Context, total math.Int) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := total.Marshal()\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"marshal total lockups amount\")\n\t}\n\n\tstore.Set(types.TotalLockupsKey, bz)\n\n\t// Update total lockups amount gauge\n\ttelemetry.ModuleSetGauge(\n\t\ttypes.ModuleName,\n\t\tfloat32(total.Int64()),\n\t\tmetrics.TotalLocked,\n\t)\n\n\treturn nil\n}\n\n// adjustLockups iterates over existing lockups and adjusts them based on the provided slashingRate.\n// If non-zero coverageRate is provided, creates/updates associated insurance lockup records.\nfunc (k *Keeper) adjustLockups(ctx context.Context, validatorAddr sdk.ValAddress, slashingRate, coverageRate math.LegacyDec) error {\n\tstore := k.lockupStore(ctx, false)\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tdelAddr, valAddr := types.LockupKeyToAddresses(iterator.Key())\n\n\t\tif !valAddr.Equals(validatorAddr) {\n\t\t\tcontinue\n\t\t}\n\n\t\terr := k.adjustLockup(ctx, delAddr, valAddr, slashingRate, coverageRate)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// adjustLockup adjusts the existing lockup amount based on the provided slashingRate.\n// If non-zero coverageRate is provided, creates/updates associated insurance lockup record.\nfunc (k *Keeper) adjustLockup(\n\tctx context.Context,\n\tdelAddr sdk.AccAddress,\n\tvalAddr sdk.ValAddress,\n\tslashingRate, coverageRate math.LegacyDec,\n) error {\n\tlockup := k.GetLockup(ctx, delAddr, valAddr)\n\tif lockup == nil {\n\t\treturn types.ErrNotFound.Wrap(\"adjust lockup\")\n\t}\n\n\t// Calculate lockup amount after slashing, rounding down to ensure unlocks are handled correctly\n\tamountAfterSlashing := lockup.Amount.ToLegacyDec().Mul(slashingRate).TruncateInt()\n\n\t// No need to update the store if the amount after slashing equals to original lockup amount\n\tif amountAfterSlashing.Equal(lockup.Amount) {\n\t\treturn nil\n\t}\n\n\t// Get existing total lockups amount and subtract lockup.Amount from it\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\tnewTotal, err := total.SafeSub(lockup.Amount)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"subtract %s from total lockups amount %s\", lockup.Amount, total)\n\t}\n\n\t// Add amountAfterSlashing to newTotal and update the store\n\tnewTotal = newTotal.Add(amountAfterSlashing)\n\terr = k.setTotalLockupsAmount(ctx, newTotal)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Remove lockup record and associated insurance lockup if amount after slashing is zero\n\tif amountAfterSlashing.IsZero() {\n\t\tk.removeLockup(ctx, delAddr, valAddr)\n\t\tk.removeInsuranceLockup(ctx, delAddr, valAddr)\n\t\treturn nil\n\t}\n\n\t// Update the lockup with amount after slashing otherwise\n\tk.setLockup(ctx, delAddr, valAddr, amountAfterSlashing)\n\n\t// Calculate covered amount and update insurance lockup if coverage rate is provided\n\tif coverageRate.IsPositive() {\n\t\tcoveredAmount := lockup.Amount.ToLegacyDec().Mul(coverageRate).TruncateInt()\n\t\tinsuranceLockup := k.getInsuranceLockup(ctx, delAddr, valAddr)\n\t\tif insuranceLockup != nil {\n\t\t\tcoveredAmount = coveredAmount.Add(insuranceLockup.Amount)\n\t\t}\n\t\tk.setInsuranceLockup(ctx, delAddr, valAddr, coveredAmount)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/lockup_test.go",
    "content": "package keeper\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSetAndGetLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnow := time.Now()\n\tcreationHeight := int64(10)\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(creationHeight).WithBlockTime(now)\n\n\tk.setLockup(ctx, delAddr, valAddr, amount)\n\n\tstore := k.GetAllLockups(ctx)\n\trequire.Len(t, store, 1)\n\n\tlockup := store[0]\n\trequire.Equal(t, delAddr.String(), lockup.DelegatorAddress)\n\trequire.Equal(t, valAddr.String(), lockup.ValidatorAddress)\n\trequire.Equal(t, amount, lockup.Amount)\n}\n\nfunc TestAddLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount)\n\trequire.NoError(t, err)\n\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, amount, lockedAmt)\n}\n\nfunc TestSubtractLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tlockupAmount := math.NewInt(1000)\n\tpartialSubtractAmount := math.NewInt(500)\n\tinvalidSubtractAmount := math.NewInt(2000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, lockupAmount)\n\trequire.NoError(t, err)\n\n\t// subtract a partial amount\n\terr = k.subtractLockup(ctx, delAddr, valAddr, partialSubtractAmount)\n\trequire.NoError(t, err)\n\n\tlockedAmt := k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, partialSubtractAmount, lockedAmt)\n\n\t// attempt to subtract more than the locked amount\n\terr = k.subtractLockup(ctx, delAddr, valAddr, invalidSubtractAmount)\n\trequire.Error(t, err)\n\n\t// subtract the remaining amount\n\terr = k.subtractLockup(ctx, delAddr, valAddr, partialSubtractAmount)\n\trequire.NoError(t, err)\n\n\t// verify that the lockup has been removed\n\tlockedAmt = k.GetLockupAmount(ctx, delAddr, valAddr)\n\trequire.True(t, lockedAmt.IsZero(), \"remaining lockup amount should be zero\")\n\trequire.Nil(t, k.GetLockup(ctx, delAddr, valAddr), \"lockup should be removed\")\n}\n\nfunc TestGetAllLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount1 := math.NewInt(1000)\n\tamount2 := math.NewInt(500)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tk.setLockup(ctx, delAddr1, valAddr1, amount1)\n\tk.setLockup(ctx, delAddr2, valAddr2, amount2)\n\n\tlockups := k.GetAllLockups(ctx)\n\trequire.Len(t, lockups, 2)\n\n\trequire.Equal(t, delAddr1.String(), lockups[0].DelegatorAddress)\n\trequire.Equal(t, valAddr1.String(), lockups[0].ValidatorAddress)\n\trequire.Equal(t, amount1, lockups[0].Amount)\n\trequire.Equal(t, delAddr2.String(), lockups[1].DelegatorAddress)\n\trequire.Equal(t, valAddr2.String(), lockups[1].ValidatorAddress)\n\trequire.Equal(t, amount2, lockups[1].Amount)\n}\n\nfunc TestGetAllUnlockingLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tcreationHeight1 := int64(1)\n\tcreationHeight2 := int64(2)\n\ttimestamp1 := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\ttimestamp2 := time.Date(2006, time.January, 2, 15, 4, 5, 2, time.UTC)\n\tamount1 := math.NewInt(1000)\n\tamount2 := math.NewInt(500)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tk.SetUnlockingLockup(ctx, delAddr1, valAddr1, creationHeight1, amount1, timestamp1, timestamp1)\n\tk.SetUnlockingLockup(ctx, delAddr2, valAddr2, creationHeight2, amount2, timestamp2, timestamp2)\n\n\tunlockingLockups := k.GetAllUnlockingLockups(ctx)\n\trequire.Len(t, unlockingLockups, 2)\n\n\trequire.Equal(t, delAddr1.String(), unlockingLockups[0].DelegatorAddress)\n\trequire.Equal(t, valAddr1.String(), unlockingLockups[0].ValidatorAddress)\n\trequire.Equal(t, creationHeight1, unlockingLockups[0].CreationHeight)\n\trequire.Equal(t, amount1, unlockingLockups[0].Amount)\n\trequire.Equal(t, timestamp1, unlockingLockups[0].CompletionTime)\n\trequire.Equal(t, timestamp1, unlockingLockups[0].UnlockTime)\n\n\trequire.Equal(t, delAddr2.String(), unlockingLockups[1].DelegatorAddress)\n\trequire.Equal(t, valAddr2.String(), unlockingLockups[1].ValidatorAddress)\n\trequire.Equal(t, creationHeight2, unlockingLockups[1].CreationHeight)\n\trequire.Equal(t, amount2, unlockingLockups[1].Amount)\n\trequire.Equal(t, timestamp2, unlockingLockups[1].CompletionTime)\n\trequire.Equal(t, timestamp2, unlockingLockups[1].UnlockTime)\n}\n\nfunc TestMustIterateLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount)\n\trequire.NoError(t, err)\n\n\tcount := 0\n\tk.mustIterateLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\trequire.Equal(t, delAddr.String(), lockup.DelegatorAddress)\n\t\trequire.Equal(t, valAddr.String(), lockup.ValidatorAddress)\n\t\trequire.Equal(t, amount, lockup.Amount)\n\t\tcount++\n\t})\n\n\trequire.Equal(t, 1, count)\n}\n\nfunc TestMustIterateUnlockingLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, 1, amount, time.Time{}, time.Time{})\n\n\tcount := 0\n\tk.mustIterateUnlockingLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, lockup types.UnlockingLockup) {\n\t\trequire.Equal(t, \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\", delAddr.String())\n\t\trequire.Equal(t, \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\", valAddr.String())\n\t\trequire.Equal(t, creationHeight, lockup.CreationHeight)\n\t\trequire.Equal(t, amount, lockup.Amount)\n\t\tcount++\n\t})\n\n\trequire.Equal(t, 1, count)\n}\n\nfunc TestIterateUnlockingLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\ttimestamp1 := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\ttimestamp2 := time.Date(2006, time.January, 2, 15, 4, 5, 2, time.UTC)\n\ttimestamp3 := time.Date(2006, time.January, 2, 15, 4, 5, 3, time.UTC)\n\ttimestamp4 := time.Date(2006, time.January, 2, 15, 4, 5, 4, time.UTC)\n\ttimestamp5 := time.Date(2006, time.January, 2, 15, 4, 5, 5, time.UTC)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(1)\n\tk.SetUnlockingLockup(ctx, delAddr1, valAddr1, ctx.BlockHeight(), math.NewInt(1000), timestamp1, timestamp1)\n\tk.SetUnlockingLockup(ctx, delAddr2, valAddr2, ctx.BlockHeight(), math.NewInt(500), timestamp2, timestamp2)\n\n\tctx = ctx.WithBlockHeight(2)\n\tk.SetUnlockingLockup(ctx, delAddr1, valAddr1, ctx.BlockHeight(), math.NewInt(200), timestamp3, timestamp3)\n\n\tctx = ctx.WithBlockHeight(3)\n\tk.SetUnlockingLockup(ctx, delAddr1, valAddr1, ctx.BlockHeight(), math.NewInt(200), timestamp4, timestamp4)\n\n\tctx = ctx.WithBlockHeight(4)\n\tk.SetUnlockingLockup(ctx, delAddr1, valAddr1, ctx.BlockHeight(), math.NewInt(200), timestamp5, timestamp5)\n\n\tunlockingLockupsCount := 0\n\terr = k.iterateUnlockingLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress,\n\t\tcreationHeight int64, unlockingLockup types.UnlockingLockup) error {\n\t\trequire.NotNil(t, delAddr)\n\t\trequire.NotNil(t, valAddr)\n\t\trequire.True(t, unlockingLockup.Amount.IsPositive())\n\t\trequire.NotZero(t, unlockingLockup.CompletionTime)\n\t\trequire.NotZero(t, unlockingLockup.UnlockTime)\n\t\tunlockingLockupsCount++\n\t\treturn nil\n\t})\n\trequire.NoError(t, err)\n\trequire.Equal(t, 5, unlockingLockupsCount)\n\n\terr = k.iterateUnlockingLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress,\n\t\tcreationHeight int64, lockup types.UnlockingLockup) error {\n\t\treturn errors.New(\"not found\")\n\t})\n\trequire.Error(t, err)\n}\n\nfunc TestTotalAmountByAddr(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr1, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr2, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr1, valAddr1, math.NewInt(1000))\n\trequire.NoError(t, err)\n\terr = k.AddLockup(ctx, delAddr1, valAddr1, math.NewInt(500))\n\trequire.NoError(t, err)\n\terr = k.AddLockup(ctx, delAddr2, valAddr2, math.NewInt(700))\n\trequire.NoError(t, err)\n\n\ttotalDel1 := k.totalLockedAmountByAddr(ctx, delAddr1)\n\trequire.Equal(t, math.NewInt(1500), totalDel1, \"delAddr1 should have a total of 1500\")\n\n\ttotalDel2 := k.totalLockedAmountByAddr(ctx, delAddr2)\n\trequire.Equal(t, math.NewInt(700), totalDel2, \"delAddr2 should have a total of 700\")\n\n\tdelAddr3, err := sdk.AccAddressFromBech32(\"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\")\n\trequire.NoError(t, err)\n\ttotalDel3 := k.totalLockedAmountByAddr(ctx, delAddr3)\n\trequire.True(t, totalDel3.IsZero(), \"delAddr3 should have no lockups\")\n}\n\nfunc TestHasLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\trequire.False(t, k.hasLockup(ctx, delAddr, valAddr))\n\n\tk.AddLockup(ctx, delAddr, valAddr, math.NewInt(100))\n\trequire.True(t, k.hasLockup(ctx, delAddr, valAddr))\n\n\terr = k.subtractLockup(ctx, delAddr, valAddr, math.NewInt(100))\n\trequire.NoError(t, err)\n\trequire.False(t, k.hasLockup(ctx, delAddr, valAddr), \"lockup should no longer exist after removing the entire amount\")\n}\n\nfunc TestHasUnlockingLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tcreationHeight := int64(1)\n\ttimestamp := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\trequire.False(t, k.HasUnlockingLockup(ctx, delAddr, valAddr, int64(1)))\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, creationHeight, math.NewInt(100), timestamp, timestamp)\n\trequire.True(t, k.HasUnlockingLockup(ctx, delAddr, valAddr, creationHeight))\n\n\terr = k.subtractUnlockingLockup(ctx, delAddr, valAddr, creationHeight, math.NewInt(100))\n\trequire.NoError(t, err)\n\trequire.False(t, k.HasUnlockingLockup(ctx, delAddr, valAddr, creationHeight))\n}\n\nfunc TestGetUnlockingLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnow := time.Now()\n\tparams := k.GetParams(ctx)\n\tepochDuration := *params.EpochDuration\n\tcreationHeight := int64(10)\n\tamount := math.NewInt(300)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(creationHeight).WithBlockTime(now)\n\n\texpectedCompletionTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\texpectedUnlockTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, creationHeight, amount, expectedCompletionTime, expectedUnlockTime)\n\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup, \"unlocking lockup should not be nil\")\n\trequire.Equal(t, amount, unlockingLockup.Amount, \"amount should match the one set\")\n\trequire.Equal(t, expectedUnlockTime, unlockingLockup.CompletionTime, \"completionTime should match the one set\")\n\trequire.Equal(t, expectedUnlockTime, unlockingLockup.UnlockTime, \"unlockTime should match the one set\")\n\n\tinvalidUnlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight+1)\n\trequire.Nil(t, invalidUnlockingLockup, \"this unlocking lockup does not exist\")\n}\n\nfunc TestGetLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tnow := time.Now()\n\tcreationHeight := int64(10)\n\tamount := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(creationHeight).WithBlockTime(now)\n\n\tk.setLockup(ctx, delAddr, valAddr, amount)\n\n\tlockup := k.GetLockup(ctx, delAddr, valAddr)\n\n\trequire.NotNil(t, lockup, \"lockup should exist\")\n\trequire.Equal(t, delAddr.String(), lockup.DelegatorAddress, \"delegator address should match\")\n\trequire.Equal(t, valAddr.String(), lockup.ValidatorAddress, \"validator address should match\")\n\trequire.Equal(t, amount, lockup.Amount, \"amount should match\")\n\n\tnonExistentValAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\")\n\trequire.NoError(t, err)\n\n\tnonExistentLockup := k.GetLockup(ctx, delAddr, nonExistentValAddr)\n\trequire.Nil(t, nonExistentLockup, \"lockup should not exist for the given validator\")\n}\n\nfunc TestSubtractUnlockingLockup(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tparams := k.GetParams(ctx)\n\tepochDuration := *params.EpochDuration\n\tunlockingLockupAmount := math.NewInt(1000)\n\tcancelUnlockAmount := math.NewInt(500)\n\tcancelUnlockAmount2 := math.NewInt(2000)\n\tcreationHeight := int64(10)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(creationHeight).WithBlockTime(time.Now())\n\n\texpectedCompletionTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\texpectedUnlockTime := ctx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\n\tk.SetUnlockingLockup(ctx, delAddr, valAddr, creationHeight, unlockingLockupAmount, expectedCompletionTime, expectedUnlockTime)\n\n\t// subtract partial amount\n\terr = k.subtractUnlockingLockup(ctx, delAddr, valAddr, creationHeight, cancelUnlockAmount)\n\trequire.NoError(t, err)\n\n\tunlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.NotNil(t, unlockingLockup)\n\trequire.Equal(t, cancelUnlockAmount, unlockingLockup.Amount)\n\trequire.Equal(t, expectedCompletionTime, unlockingLockup.CompletionTime)\n\trequire.Equal(t, expectedUnlockTime, unlockingLockup.UnlockTime)\n\n\t// try to subtract more than the locked amount\n\terr = k.subtractUnlockingLockup(ctx, delAddr, valAddr, creationHeight, cancelUnlockAmount2)\n\trequire.Error(t, err)\n\n\t// subtract remaining amount\n\terr = k.subtractUnlockingLockup(ctx, delAddr, valAddr, creationHeight, cancelUnlockAmount)\n\trequire.NoError(t, err)\n\n\tinvalidUnlockingLockup := k.GetUnlockingLockup(ctx, delAddr, valAddr, creationHeight)\n\trequire.Nil(t, invalidUnlockingLockup)\n}\n\nfunc TestSetAndGetTotalLockupsAmount(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\trequire.True(t, total.IsZero(), \"Initial total lockups amount should be zero\")\n\n\texpectedTotal := math.NewInt(1000)\n\terr := k.setTotalLockupsAmount(ctx, expectedTotal)\n\trequire.NoError(t, err, \"Setting total lockups amount should not fail\")\n\n\ttotal = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, expectedTotal, total, \"Total lockups amount should be 1000\")\n}\n\nfunc TestAddLockupUpdatesTotalLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tamount1 := math.NewInt(500)\n\tamount2 := math.NewInt(1000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount1)\n\trequire.NoError(t, err, \"Adding first lockup should not fail\")\n\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, amount1, total, \"Total lockups amount should be 500\")\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, amount2)\n\trequire.NoError(t, err, \"Adding another lockup should not fail\")\n\n\ttotal = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, amount1.Add(amount2), total, \"Total lockups amount should be 1500\")\n}\n\nfunc TestSubtractLockupUpdatesTotalLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tinitialAmount := math.NewInt(5000)\n\tsubtractAmount := math.NewInt(1500)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, initialAmount)\n\trequire.NoError(t, err, \"Adding lockup should not fail\")\n\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialAmount, total, \"Total lockups amount should be 5000\")\n\n\terr = k.subtractLockup(ctx, delAddr, valAddr, subtractAmount)\n\trequire.NoError(t, err, \"Subtracting lockup should not fail\")\n\n\ttotal = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialAmount.Sub(subtractAmount), total, \"Total lockups amount should be 3500\")\n}\n\nfunc TestRemoveLockupUpdatesTotalLockups(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tinitialAmount := math.NewInt(5000)\n\tsubtractAmount := math.NewInt(5000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\terr = k.AddLockup(ctx, delAddr, valAddr, initialAmount)\n\trequire.NoError(t, err, \"Adding lockup should not fail\")\n\n\ttotal := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialAmount, total, \"Total lockups amount should be 5000\")\n\n\terr = k.subtractLockup(ctx, delAddr, valAddr, subtractAmount)\n\trequire.NoError(t, err, \"Subtracting lockup should not fail\")\n\n\ttotal = k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, math.ZeroInt(), total, \"Total lockups amount should be 0\")\n}\n"
  },
  {
    "path": "x/tier/keeper/main_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/sourcenetwork/sourcehub/app\"\n)\n\nfunc TestMain(m *testing.M) {\n\tapp.SetConfig(true)\n\tos.Exit(m.Run())\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_add_user_subscription_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgAddUserSubscription(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tvalidAmount := uint64(100)\n\tzeroAmount := uint64(0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgAddUserSubscription\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid add user subscription\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   user1Did,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid add user subscription with zero period\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   user2Did,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    0,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid subscription period\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: \"invalid-developer-address\",\n\t\t\t\tUserDid:   user1Did,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid user did\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   \"\",\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"zero amount\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   user1Did,\n\t\t\t\tAmount:    zeroAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent developer\",\n\t\t\tinput: &types.MsgAddUserSubscription{\n\t\t\t\tDeveloper: \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tUserDid:   user1Did,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"add subscription\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.AddUserSubscription(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, tc.input.UserDid)\n\t\t\t\trequire.NotNil(t, subscription, \"User subscription should exist after creation\")\n\t\t\t\trequire.Equal(t, tc.input.Amount, subscription.CreditAmount, \"Amount should match input\")\n\t\t\t\trequire.Equal(t, tc.input.Period, subscription.Period, \"Period should match input\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgAddUserSubscription_DuplicateSubscription(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tvalidAmount := uint64(100)\n\tmsg := &types.MsgAddUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   userDid,\n\t\tAmount:    validAmount,\n\t\tPeriod:    30,\n\t}\n\n\tresp, err := ms.AddUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tresp, err = ms.AddUserSubscription(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"add subscription\")\n}\n\nfunc TestMsgAddUserSubscription_MultipleDifferentUsers(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tvalidAmount := uint64(100)\n\tmsg1 := &types.MsgAddUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   user1Did,\n\t\tAmount:    validAmount,\n\t\tPeriod:    30,\n\t}\n\n\tresp, err := ms.AddUserSubscription(sdkCtx, msg1)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tmsg2 := &types.MsgAddUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   user2Did,\n\t\tAmount:    uint64(200),\n\t\tPeriod:    60,\n\t}\n\n\tresp, err = ms.AddUserSubscription(sdkCtx, msg2)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription1 := k.GetUserSubscription(sdkCtx, developerAddr, user1Did)\n\trequire.NotNil(t, subscription1)\n\trequire.Equal(t, validAmount, subscription1.CreditAmount)\n\trequire.Equal(t, uint64(30), subscription1.Period)\n\n\tsubscription2 := k.GetUserSubscription(sdkCtx, developerAddr, user2Did)\n\trequire.NotNil(t, subscription2)\n\trequire.Equal(t, uint64(200), subscription2.CreditAmount)\n\trequire.Equal(t, uint64(60), subscription2.Period)\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_cancel_unlocking_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype TestCase struct {\n\tname           string\n\tinput          *types.MsgCancelUnlocking\n\texpErr         bool\n\texpErrMsg      string\n\texpectedAmount math.Int\n}\n\nfunc runMsgTestCase(t *testing.T, tc TestCase, k keeper.Keeper, ms types.MsgServer, initState func() sdk.Context, delAddress sdk.AccAddress, valAddress sdk.ValAddress) {\n\tctx := initState()\n\n\terr := tc.input.ValidateBasic()\n\tif err != nil {\n\t\tif tc.expErr {\n\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\treturn\n\t\t}\n\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t}\n\n\tresp, err := ms.CancelUnlocking(ctx, tc.input)\n\n\tif tc.expErr {\n\t\trequire.Error(t, err)\n\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t} else {\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, resp, \"Response should not be nil for valid cancel unlocking\")\n\n\t\tlockup := k.GetLockup(ctx, delAddress, valAddress)\n\t\trequire.NotNil(t, lockup, \"Lockup should not be nil after cancel unlocking\")\n\t\trequire.Equal(t, tc.expectedAmount, lockup.Amount, \"Lockup amount should match expected after cancel unlocking\")\n\t}\n}\n\nfunc TestMsgCancelUnlocking(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tvalidCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100))\n\tvalidCoinRounded := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100).Sub(math.OneInt()))\n\tpartialCancelCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(50))\n\texcessCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(500))\n\tzeroCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.ZeroInt())\n\tnegativeAmount := math.NewInt(-100)\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tinitialValidatorBalance := math.NewInt(1000)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tvalAddr := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tvalAddress, err := sdk.ValAddressFromBech32(valAddr)\n\trequire.NoError(t, err)\n\n\tinitState := func() sdk.Context {\n\t\tctx, _ := sdkCtx.CacheContext()\n\t\tkeepertest.InitializeDelegator(t, &k, ctx, delAddress, initialDelegatorBalance)\n\t\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddress, initialValidatorBalance)\n\t\terr = k.Lock(ctx, delAddress, valAddress, validCoin.Amount)\n\t\trequire.NoError(t, err)\n\t\t_, _, _, err = k.Unlock(ctx, delAddress, valAddress, validCoin.Amount)\n\t\trequire.NoError(t, err)\n\t\treturn ctx\n\t}\n\n\ttestCases := []TestCase{\n\t\t{\n\t\t\tname: \"invalid stake amount (zero)\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            zeroCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (negative)\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake: sdk.Coin{\n\t\t\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\t\t\tAmount: negativeAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"excess unlocking amount\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            excessCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent unlocking\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   100,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: stakingtypes.ErrNoUnbondingDelegation.Error(),\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: \"invalid-address\",\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid validator address\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: \"invalid-validator-address\",\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"validator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"valid cancel unlocking (partial)\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            partialCancelCoin,\n\t\t\t},\n\t\t\texpErr:         false,\n\t\t\texpectedAmount: validCoin.Amount.Sub(partialCancelCoin.Amount),\n\t\t},\n\t\t{\n\t\t\tname: \"valid cancel unlocking (full)\",\n\t\t\tinput: &types.MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tStake:            validCoinRounded,\n\t\t\t},\n\t\t\texpErr:         false,\n\t\t\texpectedAmount: validCoinRounded.Amount,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\trunMsgTestCase(t, tc, k, ms, initState, delAddress, valAddress)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_create_developer_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgCreateDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgCreateDeveloper\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid create developer with auto lock enabled\",\n\t\t\tinput: &types.MsgCreateDeveloper{\n\t\t\t\tDeveloper:       validDeveloperAddr,\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid create developer with auto lock disabled\",\n\t\t\tinput: &types.MsgCreateDeveloper{\n\t\t\t\tDeveloper:       validDeveloperAddr,\n\t\t\t\tAutoLockEnabled: false,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgCreateDeveloper{\n\t\t\t\tDeveloper:       \"invalid-developer-address\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty developer address\",\n\t\t\tinput: &types.MsgCreateDeveloper{\n\t\t\t\tDeveloper:       \"\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tk, ms, ctx = setupMsgServer(t)\n\t\t\tsdkCtx = sdk.UnwrapSDKContext(ctx)\n\t\t\trequire.NoError(t, k.SetParams(ctx, p))\n\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.CreateDeveloper(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\t\t\t\trequire.NotNil(t, developer, \"Developer should exist after creation\")\n\t\t\t\trequire.Equal(t, tc.input.AutoLockEnabled, developer.AutoLockEnabled, \"AutoLockEnabled should match input\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgCreateDeveloper_DuplicateDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\tmsg := &types.MsgCreateDeveloper{\n\t\tDeveloper:       validDeveloperAddr,\n\t\tAutoLockEnabled: true,\n\t}\n\n\tresp, err := ms.CreateDeveloper(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tresp, err = ms.CreateDeveloper(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"create developer\")\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_lock_auto_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgLockAuto(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tvalidCoin1 := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100))\n\tvalidCoin2 := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(3000))\n\tzeroCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.ZeroInt())\n\tnegativeAmount := math.NewInt(-1000)\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tinitialValidatorBalance := math.NewInt(1000)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tvalAddr1 := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\tvalAddr2 := \"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tvalAddress1, err := sdk.ValAddressFromBech32(valAddr1)\n\trequire.NoError(t, err)\n\tvalAddress2, err := sdk.ValAddressFromBech32(valAddr2)\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, delAddress, initialDelegatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress1, initialValidatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress2, initialValidatorBalance)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgLockAuto\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid lock auto\",\n\t\t\tinput: &types.MsgLockAuto{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tStake:            validCoin1,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"insufficient funds\",\n\t\t\tinput: &types.MsgLockAuto{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tStake:            validCoin2,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"insufficient funds\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (zero)\",\n\t\t\tinput: &types.MsgLockAuto{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tStake:            zeroCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (negative)\",\n\t\t\tinput: &types.MsgLockAuto{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tStake: sdk.Coin{\n\t\t\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\t\t\tAmount: negativeAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tinput: &types.MsgLockAuto{\n\t\t\t\tDelegatorAddress: \"invalid-delegator-address\",\n\t\t\t\tStake:            validCoin1,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.LockAuto(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\t\t\t\trequire.NotEmpty(t, resp.ValidatorAddress)\n\n\t\t\t\t// Verify the response contains a valid validator address\n\t\t\t\t_, err := sdk.ValAddressFromBech32(resp.ValidatorAddress)\n\t\t\t\trequire.NoError(t, err)\n\n\t\t\t\t// Verify it's one of the bonded validators\n\t\t\t\trequire.True(t, resp.ValidatorAddress == valAddr1 || resp.ValidatorAddress == valAddr2)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestMsgLockAutoValidatorSelection tests the validator selection logic in LockAuto.\nfunc TestMsgLockAutoValidatorSelection(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tvalAddr1 := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\tvalAddr2 := \"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tvalAddress1, err := sdk.ValAddressFromBech32(valAddr1)\n\trequire.NoError(t, err)\n\tvalAddress2, err := sdk.ValAddressFromBech32(valAddr2)\n\trequire.NoError(t, err)\n\n\tinitialDelegatorBalance := math.NewInt(5000)\n\tinitialValidatorBalance := math.NewInt(1000)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, delAddress, initialDelegatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress1, initialValidatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress2, initialValidatorBalance)\n\n\tt.Run(\"first lock selects validator with smallest tier module delegation\", func(t *testing.T) {\n\t\t// First lock should select validator with smallest delegation from tier module\n\t\t// Both validators have 0 delegation from tier module initially\n\t\tresp, err := ms.LockAuto(sdkCtx, &types.MsgLockAuto{\n\t\t\tDelegatorAddress: delAddr,\n\t\t\tStake:            sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100)),\n\t\t})\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, resp)\n\n\t\tfirstSelectedVal := resp.ValidatorAddress\n\t\trequire.True(t, firstSelectedVal == valAddr1 || firstSelectedVal == valAddr2)\n\n\t\t// Verify lockup was created\n\t\tfirstValAddr, err := sdk.ValAddressFromBech32(firstSelectedVal)\n\t\trequire.NoError(t, err)\n\t\tlockup := k.GetLockup(ctx, delAddress, firstValAddr)\n\t\trequire.NotNil(t, lockup)\n\t\trequire.Equal(t, math.NewInt(100), lockup.Amount)\n\t})\n\n\tt.Run(\"second lock to same developer selects validator with smallest existing lockup\", func(t *testing.T) {\n\t\t// Lock 200 more, should go to the same validator as first lock (smallest existing lockup)\n\t\tresp, err := ms.LockAuto(sdkCtx, &types.MsgLockAuto{\n\t\t\tDelegatorAddress: delAddr,\n\t\t\tStake:            sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(200)),\n\t\t})\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, resp)\n\n\t\t// Get the first selected validator by checking both possible validators\n\t\tvar firstSelectedVal sdk.ValAddress\n\t\tlockup1 := k.GetLockup(ctx, delAddress, valAddress1)\n\t\tlockup2 := k.GetLockup(ctx, delAddress, valAddress2)\n\n\t\tif lockup1 != nil && lockup2 == nil {\n\t\t\tfirstSelectedVal = valAddress1\n\t\t} else if lockup2 != nil && lockup1 == nil {\n\t\t\tfirstSelectedVal = valAddress2\n\t\t} else if lockup1 != nil && lockup2 != nil {\n\t\t\t// Both have lockups, find the one with smaller amount (from first lock)\n\t\t\tif lockup1.Amount.LT(lockup2.Amount) {\n\t\t\t\tfirstSelectedVal = valAddress1\n\t\t\t} else {\n\t\t\t\tfirstSelectedVal = valAddress2\n\t\t\t}\n\t\t}\n\n\t\t// Second lock should go to same validator (it had the smallest lockup)\n\t\tsecondValAddr, err := sdk.ValAddressFromBech32(resp.ValidatorAddress)\n\t\trequire.NoError(t, err)\n\t\trequire.True(t, secondValAddr.Equals(firstSelectedVal))\n\n\t\t// Verify lockup was updated\n\t\tlockup := k.GetLockup(ctx, delAddress, secondValAddr)\n\t\trequire.NotNil(t, lockup)\n\t\trequire.Equal(t, math.NewInt(300), lockup.Amount) // 100 + 200\n\t})\n\n\tt.Run(\"lock to different validator then select smallest for third lock\", func(t *testing.T) {\n\t\t// Find which validator has the existing lockup\n\t\tlockup1 := k.GetLockup(ctx, delAddress, valAddress1)\n\t\tlockup2 := k.GetLockup(ctx, delAddress, valAddress2)\n\n\t\tvar existingVal, otherVal sdk.ValAddress\n\t\tif lockup1 != nil && lockup2 == nil {\n\t\t\texistingVal = valAddress1\n\t\t\totherVal = valAddress2\n\t\t} else if lockup2 != nil && lockup1 == nil {\n\t\t\texistingVal = valAddress2\n\t\t\totherVal = valAddress1\n\t\t} else {\n\t\t\t// If both have lockups, find the smaller one\n\t\t\tif lockup1.Amount.LT(lockup2.Amount) {\n\t\t\t\texistingVal = valAddress1\n\t\t\t\totherVal = valAddress2\n\t\t\t} else {\n\t\t\t\texistingVal = valAddress2\n\t\t\t\totherVal = valAddress1\n\t\t\t}\n\t\t}\n\n\t\t// Lock a large amount to the other validator manually\n\t\terr = k.Lock(ctx, delAddress, otherVal, math.NewInt(500))\n\t\trequire.NoError(t, err)\n\n\t\t// Now auto lock should select the validator with smallest lockup (300 < 500)\n\t\tresp, err := ms.LockAuto(sdkCtx, &types.MsgLockAuto{\n\t\t\tDelegatorAddress: delAddr,\n\t\t\tStake:            sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(50)),\n\t\t})\n\t\trequire.NoError(t, err)\n\t\trequire.NotNil(t, resp)\n\n\t\t// Should select the validator with 300 (existing one)\n\t\tselectedVal, err := sdk.ValAddressFromBech32(resp.ValidatorAddress)\n\t\trequire.NoError(t, err)\n\t\trequire.True(t, selectedVal.Equals(existingVal))\n\n\t\t// Verify the lockup amount\n\t\tlockup := k.GetLockup(ctx, delAddress, existingVal)\n\t\trequire.NotNil(t, lockup)\n\t\trequire.Equal(t, math.NewInt(350), lockup.Amount) // 300 + 50\n\t})\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_lock_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgLock(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tvalidCoin1 := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100))\n\tvalidCoin2 := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(3000))\n\tzeroCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.ZeroInt())\n\tnegativeAmount := math.NewInt(-1000)\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tinitialValidatorBalance := math.NewInt(1000)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tvalAddr := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tvalAddress, err := sdk.ValAddressFromBech32(valAddr)\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, delAddress, initialDelegatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress, initialValidatorBalance)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgLock\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid lock\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin1,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"insufficient funds\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin2,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"insufficient funds\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (zero)\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            zeroCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (negative)\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake: sdk.Coin{\n\t\t\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\t\t\tAmount: negativeAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: \"invalid-delegator-address\",\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin1,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid validator address\",\n\t\t\tinput: &types.MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: \"invalid-validator-address\",\n\t\t\t\tStake:            validCoin1,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"validator address\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\t_, err = ms.Lock(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_redelegate_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgRedelegate(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tvalidCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100))\n\tzeroCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.ZeroInt())\n\tnegativeAmount := math.NewInt(-100)\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tinitialSrcValidatorBalance := math.NewInt(1000)\n\tinitialDstValidatorBalance := math.NewInt(500)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tsrcValAddr := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\tdstValAddr := \"sourcevaloper13fj7t2yptf9k6ad6fv38434znzay4s4pjk0r4f\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tsrcValAddress, err := sdk.ValAddressFromBech32(srcValAddr)\n\trequire.NoError(t, err)\n\tdstValAddress, err := sdk.ValAddressFromBech32(dstValAddr)\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, delAddress, initialDelegatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, srcValAddress, initialSrcValidatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, dstValAddress, initialDstValidatorBalance)\n\n\t// lock some tokens to test redelegate logic\n\terr = k.Lock(ctx, delAddress, srcValAddress, validCoin.Amount)\n\trequire.NoError(t, err)\n\n\tstakingParams, err := k.GetStakingKeeper().(*stakingkeeper.Keeper).GetParams(ctx)\n\trequire.NoError(t, err)\n\n\t// expectedCompletionTime should match the default staking unbonding time (e.g. 21 days)\n\texpectedCompletionTime := sdkCtx.BlockTime().Add(stakingParams.UnbondingTime)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgRedelegate\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid redelegate\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: dstValAddr,\n\t\t\t\tStake:               validCoin,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"insufficient lockup\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: dstValAddr,\n\t\t\t\tStake:               sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(500)),\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"subtract lockup from source validator\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (zero)\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: dstValAddr,\n\t\t\t\tStake:               zeroCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (negative)\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: dstValAddr,\n\t\t\t\tStake: sdk.Coin{\n\t\t\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\t\t\tAmount: negativeAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent lockup\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: dstValAddr,\n\t\t\t\tStake:               validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"subtract lockup from source validator\",\n\t\t},\n\t\t{\n\t\t\tname: \"source and destination validator are the same\",\n\t\t\tinput: &types.MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: srcValAddr,\n\t\t\t\tDstValidatorAddress: srcValAddr,\n\t\t\t\tStake:               validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"src and dst validator addresses are the same\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.Redelegate(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tsrcLockup := k.GetLockupAmount(sdkCtx, delAddress, srcValAddress)\n\t\t\t\trequire.Equal(t, math.ZeroInt(), srcLockup, \"Source validator lockup should be zero after valid redelegate\")\n\n\t\t\t\tdstLockup := k.GetLockupAmount(sdkCtx, delAddress, dstValAddress)\n\t\t\t\trequire.Equal(t, validCoin.Amount, dstLockup, \"Destination validator lockup should equal redelegated amount\")\n\n\t\t\t\trequire.WithinDuration(t, expectedCompletionTime, resp.CompletionTime, time.Second)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_remove_developer_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgRemoveDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\terr := k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgRemoveDeveloper\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid remove developer\",\n\t\t\tinput: &types.MsgRemoveDeveloper{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgRemoveDeveloper{\n\t\t\t\tDeveloper: \"invalid-developer-address\",\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty developer address\",\n\t\t\tinput: &types.MsgRemoveDeveloper{\n\t\t\t\tDeveloper: \"\",\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent developer\",\n\t\t\tinput: &types.MsgRemoveDeveloper{\n\t\t\t\tDeveloper: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"remove developer\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif tc.name == \"valid remove developer\" {\n\t\t\t\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\t\t\t\tif developer == nil {\n\t\t\t\t\terr := k.CreateDeveloper(ctx, developerAddr, true)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.RemoveDeveloper(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\t\t\t\trequire.Nil(t, developer, \"Developer should not exist after removal\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgRemoveDeveloper_WithSubscriptions(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tamount := uint64(100)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, userDid, amount, 30)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\n\tmsg := &types.MsgRemoveDeveloper{\n\t\tDeveloper: validDeveloperAddr,\n\t}\n\n\tresp, err := ms.RemoveDeveloper(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\trequire.Nil(t, developer, \"Developer should not exist after removal\")\n\n\tsubscription = k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.Nil(t, subscription, \"User subscriptions should be removed when developer is removed\")\n}\n\nfunc TestMsgRemoveDeveloper_AlreadyRemoved(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\terr := k.CreateDeveloper(ctx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\terr = k.RemoveDeveloper(ctx, developerAddr)\n\trequire.NoError(t, err)\n\n\tmsg := &types.MsgRemoveDeveloper{\n\t\tDeveloper: validDeveloperAddr,\n\t}\n\n\tresp, err := ms.RemoveDeveloper(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"remove developer\")\n\trequire.Nil(t, resp)\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_remove_user_subscription_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgRemoveUserSubscription(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tamount := uint64(100)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, userDid, amount, 30)\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgRemoveUserSubscription\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid remove user subscription\",\n\t\t\tinput: &types.MsgRemoveUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgRemoveUserSubscription{\n\t\t\t\tDeveloper: \"invalid-developer-address\",\n\t\t\t\tUserDid:   userDid,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty developer address\",\n\t\t\tinput: &types.MsgRemoveUserSubscription{\n\t\t\t\tDeveloper: \"\",\n\t\t\t\tUserDid:   userDid,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty user did\",\n\t\t\tinput: &types.MsgRemoveUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   \"\",\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent subscription\",\n\t\t\tinput: &types.MsgRemoveUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"remove user subscription\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif tc.name == \"valid remove user subscription\" {\n\t\t\t\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\t\t\t\tif subscription == nil {\n\t\t\t\t\terr := k.AddUserSubscription(ctx, developerAddr, userDid, amount, 30)\n\t\t\t\t\trequire.NoError(t, err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.RemoveUserSubscription(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\t\t\t\trequire.Nil(t, subscription, \"User subscription should not exist after removal\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgRemoveUserSubscription_MultipleSubscriptions(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tamount1 := uint64(100)\n\tamount2 := uint64(200)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, user1Did, amount1, 30)\n\trequire.NoError(t, err)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, user2Did, amount2, 60)\n\trequire.NoError(t, err)\n\n\tsubscription1 := k.GetUserSubscription(sdkCtx, developerAddr, user1Did)\n\trequire.NotNil(t, subscription1)\n\tsubscription2 := k.GetUserSubscription(sdkCtx, developerAddr, user2Did)\n\trequire.NotNil(t, subscription2)\n\n\tmsg := &types.MsgRemoveUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   user1Did,\n\t}\n\n\tresp, err := ms.RemoveUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription1 = k.GetUserSubscription(sdkCtx, developerAddr, user1Did)\n\trequire.Nil(t, subscription1, \"User1's subscription should be removed\")\n\tsubscription2 = k.GetUserSubscription(sdkCtx, developerAddr, user2Did)\n\trequire.NotNil(t, subscription2, \"User2's subscription should still exist\")\n\n\tmsg.UserDid = user2Did\n\tresp, err = ms.RemoveUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription1 = k.GetUserSubscription(sdkCtx, developerAddr, user1Did)\n\trequire.Nil(t, subscription1, \"User1's subscription should be removed\")\n\tsubscription2 = k.GetUserSubscription(sdkCtx, developerAddr, user2Did)\n\trequire.Nil(t, subscription2, \"User2's subscription should be removed\")\n}\n\nfunc TestMsgRemoveUserSubscription_AlreadyRemoved(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(5000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tamount := uint64(100)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, userDid, amount, 30)\n\trequire.NoError(t, err)\n\n\terr = k.RemoveUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NoError(t, err)\n\n\tmsg := &types.MsgRemoveUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   userDid,\n\t}\n\n\tresp, err := ms.RemoveUserSubscription(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"remove user subscription\")\n\trequire.Nil(t, resp)\n}\n\nfunc TestMsgRemoveUserSubscription_NonExistentDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tnonExistentDeveloperAddr := \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\"\n\tuserDid := \"did:key:alice\"\n\n\tmsg := &types.MsgRemoveUserSubscription{\n\t\tDeveloper: nonExistentDeveloperAddr,\n\t\tUserDid:   userDid,\n\t}\n\n\tresp, err := ms.RemoveUserSubscription(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"remove user subscription\")\n\trequire.Nil(t, resp)\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_server.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\ntype msgServer struct {\n\t*Keeper\n}\n\nvar _ types.MsgServer = &msgServer{}\n\nfunc NewMsgServerImpl(keeper *Keeper) types.MsgServer {\n\treturn &msgServer{Keeper: keeper}\n}\n\nfunc (m *msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) {\n\tauthority := m.Keeper.GetAuthority()\n\tif msg.Authority != authority {\n\t\treturn nil, types.ErrUnauthorized.Wrapf(\"invalid authority: %s\", msg.Authority)\n\t}\n\n\terr := msg.Params.Validate()\n\tif err != nil {\n\t\treturn nil, types.ErrInvalidRequest.Wrapf(\"invalid params: %s\", err)\n\t}\n\n\terr = m.Keeper.SetParams(ctx, msg.Params)\n\tif err != nil {\n\t\treturn nil, types.ErrInvalidRequest.Wrapf(\"update params: %s\", err)\n\t}\n\n\treturn &types.MsgUpdateParamsResponse{}, nil\n}\n\nfunc (m *msgServer) Lock(ctx context.Context, msg *types.MsgLock) (*types.MsgLockResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdelAddr := sdk.MustAccAddressFromBech32(msg.DelegatorAddress)\n\tvalAddr := types.MustValAddressFromBech32(msg.ValidatorAddress)\n\n\terr := m.Keeper.Lock(ctx, delAddr, valAddr, msg.Stake.Amount)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"lock\")\n\t}\n\n\treturn &types.MsgLockResponse{}, nil\n}\n\nfunc (m *msgServer) LockAuto(ctx context.Context, msg *types.MsgLockAuto) (*types.MsgLockAutoResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdelAddr := sdk.MustAccAddressFromBech32(msg.DelegatorAddress)\n\n\tvalAddr, err := m.Keeper.LockAuto(ctx, delAddr, msg.Stake.Amount)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"lock auto\")\n\t}\n\n\treturn &types.MsgLockAutoResponse{ValidatorAddress: valAddr.String()}, nil\n}\n\nfunc (m *msgServer) Unlock(ctx context.Context, msg *types.MsgUnlock) (*types.MsgUnlockResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdelAddr := sdk.MustAccAddressFromBech32(msg.DelegatorAddress)\n\tvalAddr := types.MustValAddressFromBech32(msg.ValidatorAddress)\n\n\tcreationHeight, completionTime, unlockTime, err := m.Keeper.Unlock(ctx, delAddr, valAddr, msg.Stake.Amount)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"undelegate\")\n\t}\n\n\treturn &types.MsgUnlockResponse{CreationHeight: creationHeight, CompletionTime: completionTime, UnlockTime: unlockTime}, nil\n}\n\nfunc (m *msgServer) CancelUnlocking(ctx context.Context, msg *types.MsgCancelUnlocking) (*types.MsgCancelUnlockingResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdelAddr := sdk.MustAccAddressFromBech32(msg.DelegatorAddress)\n\tvalAddr := types.MustValAddressFromBech32(msg.ValidatorAddress)\n\n\terr := m.Keeper.CancelUnlocking(ctx, delAddr, valAddr, msg.CreationHeight, msg.Stake.Amount)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"cancel unlocking\")\n\t}\n\n\treturn &types.MsgCancelUnlockingResponse{}, nil\n}\n\nfunc (m *msgServer) Redelegate(ctx context.Context, msg *types.MsgRedelegate) (*types.MsgRedelegateResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdelAddr := sdk.MustAccAddressFromBech32(msg.DelegatorAddress)\n\tsrcValAddr := types.MustValAddressFromBech32(msg.SrcValidatorAddress)\n\tdstValAddr := types.MustValAddressFromBech32(msg.DstValidatorAddress)\n\n\tcompletionTime, err := m.Keeper.Redelegate(ctx, delAddr, srcValAddr, dstValAddr, msg.Stake.Amount)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"redelegate\")\n\t}\n\n\treturn &types.MsgRedelegateResponse{CompletionTime: completionTime}, nil\n}\n\nfunc (m *msgServer) CreateDeveloper(ctx context.Context, msg *types.MsgCreateDeveloper) (*types.MsgCreateDeveloperResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.CreateDeveloper(ctx, developerAddr, msg.AutoLockEnabled)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"create developer\")\n\t}\n\n\treturn &types.MsgCreateDeveloperResponse{}, nil\n}\n\nfunc (m *msgServer) UpdateDeveloper(ctx context.Context, msg *types.MsgUpdateDeveloper) (*types.MsgUpdateDeveloperResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.UpdateDeveloper(ctx, developerAddr, msg.AutoLockEnabled)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"update developer\")\n\t}\n\n\treturn &types.MsgUpdateDeveloperResponse{}, nil\n}\n\nfunc (m *msgServer) RemoveDeveloper(ctx context.Context, msg *types.MsgRemoveDeveloper) (*types.MsgRemoveDeveloperResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.RemoveDeveloper(ctx, developerAddr)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"remove developer\")\n\t}\n\n\treturn &types.MsgRemoveDeveloperResponse{}, nil\n}\n\nfunc (m *msgServer) AddUserSubscription(\n\tctx context.Context,\n\tmsg *types.MsgAddUserSubscription,\n) (*types.MsgAddUserSubscriptionResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.AddUserSubscription(ctx, developerAddr, msg.UserDid, msg.Amount, msg.Period)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"add subscription\")\n\t}\n\n\treturn &types.MsgAddUserSubscriptionResponse{}, nil\n}\n\nfunc (m *msgServer) UpdateUserSubscription(\n\tctx context.Context,\n\tmsg *types.MsgUpdateUserSubscription,\n) (*types.MsgUpdateUserSubscriptionResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.UpdateUserSubscription(ctx, developerAddr, msg.UserDid, msg.Amount, msg.Period)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"update user subscription\")\n\t}\n\n\treturn &types.MsgUpdateUserSubscriptionResponse{}, nil\n}\n\nfunc (m *msgServer) RemoveUserSubscription(\n\tctx context.Context,\n\tmsg *types.MsgRemoveUserSubscription,\n) (*types.MsgRemoveUserSubscriptionResponse, error) {\n\t// Input validation has been done by ValidateBasic.\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(msg.Developer)\n\n\terr := m.Keeper.RemoveUserSubscription(ctx, developerAddr, msg.UserDid)\n\tif err != nil {\n\t\treturn nil, errorsmod.Wrap(err, \"remove user subscription\")\n\t}\n\n\treturn &types.MsgRemoveUserSubscriptionResponse{}, nil\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_server_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc setupMsgServer(t testing.TB) (keeper.Keeper, types.MsgServer, context.Context) {\n\tk, ctx := keepertest.TierKeeper(t)\n\treturn k, keeper.NewMsgServerImpl(&k), ctx\n}\n\nfunc TestMsgServer(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\trequire.NotNil(t, ms)\n\trequire.NotNil(t, ctx)\n\trequire.NotEmpty(t, k)\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_unlock_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgUnlock(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tepoch := epochstypes.EpochInfo{\n\t\tIdentifier:            types.EpochIdentifier,\n\t\tCurrentEpoch:          1,\n\t\tCurrentEpochStartTime: sdkCtx.BlockTime().Add(-5 * time.Minute),\n\t\tDuration:              5 * time.Minute,\n\t}\n\tk.GetEpochsKeeper().SetEpochInfo(ctx, epoch)\n\n\tvalidCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(100))\n\tzeroCoin := sdk.NewCoin(appparams.DefaultBondDenom, math.ZeroInt())\n\tnegativeAmount := math.NewInt(-100)\n\tinitialDelegatorBalance := math.NewInt(2000)\n\tinitialValidatorBalance := math.NewInt(1000)\n\n\tdelAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tvalAddr := \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\"\n\n\tdelAddress, err := sdk.AccAddressFromBech32(delAddr)\n\trequire.NoError(t, err)\n\tvalAddress, err := sdk.ValAddressFromBech32(valAddr)\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, delAddress, initialDelegatorBalance)\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddress, initialValidatorBalance)\n\n\t// lock some tokens to test the unlock logic\n\terr = k.Lock(ctx, delAddress, valAddress, validCoin.Amount)\n\trequire.NoError(t, err)\n\n\t// expectedUnlockTime should match the SetLockup logic for setting the unlock time\n\tparams := k.GetParams(ctx)\n\tepochDuration := *params.EpochDuration\n\texpectedCompletionTime := sdkCtx.BlockTime().Add(time.Hour * 24 * 21)\n\texpectedUnlockTime := sdkCtx.BlockTime().Add(epochDuration * time.Duration(params.UnlockingEpochs))\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUnlock\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid unlock\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"insufficient lockup\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            sdk.NewCoin(appparams.DefaultBondDenom, math.NewInt(500)),\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"subtract lockup\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (zero)\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            zeroCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid stake amount (negative)\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake: sdk.Coin{\n\t\t\t\t\tDenom:  appparams.DefaultBondDenom,\n\t\t\t\t\tAmount: negativeAmount,\n\t\t\t\t},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent lockup\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"subtract lockup\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: \"invalid-delegator-address\",\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid validator address\",\n\t\t\tinput: &types.MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: \"invalid-validator-address\",\n\t\t\t\tStake:            validCoin,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"validator address\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.Unlock(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tlockup := k.GetLockup(sdkCtx, delAddress, valAddress)\n\t\t\t\trequire.Nil(t, lockup, \"Lockup should be nil after valid unlock\")\n\n\t\t\t\trequire.WithinDuration(t, expectedCompletionTime, resp.CompletionTime, time.Second)\n\t\t\t\trequire.WithinDuration(t, expectedUnlockTime, resp.UnlockTime, time.Second)\n\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_update_developer_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgUpdateDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\terr := k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateDeveloper\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid update developer - enable auto lock\",\n\t\t\tinput: &types.MsgUpdateDeveloper{\n\t\t\t\tDeveloper:       validDeveloperAddr,\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid update developer - disable auto lock\",\n\t\t\tinput: &types.MsgUpdateDeveloper{\n\t\t\t\tDeveloper:       validDeveloperAddr,\n\t\t\t\tAutoLockEnabled: false,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgUpdateDeveloper{\n\t\t\t\tDeveloper:       \"invalid-developer-address\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty developer address\",\n\t\t\tinput: &types.MsgUpdateDeveloper{\n\t\t\t\tDeveloper:       \"\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent developer (should fail)\",\n\t\t\tinput: &types.MsgUpdateDeveloper{\n\t\t\t\tDeveloper:       \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"does not exist\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.UpdateDeveloper(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\t\t\t\trequire.NotNil(t, developer, \"Developer should exist after update\")\n\t\t\t\trequire.Equal(t, tc.input.AutoLockEnabled, developer.AutoLockEnabled, \"AutoLockEnabled should match updated value\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgUpdateDeveloper_ToggleAutoLock(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\terr := k.CreateDeveloper(ctx, developerAddr, false)\n\trequire.NoError(t, err)\n\n\tdeveloper := k.GetDeveloper(sdkCtx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.False(t, developer.AutoLockEnabled)\n\n\tmsg := &types.MsgUpdateDeveloper{\n\t\tDeveloper:       validDeveloperAddr,\n\t\tAutoLockEnabled: true,\n\t}\n\n\tresp, err := ms.UpdateDeveloper(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tdeveloper = k.GetDeveloper(sdkCtx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.True(t, developer.AutoLockEnabled)\n\n\tmsg.AutoLockEnabled = false\n\tresp, err = ms.UpdateDeveloper(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tdeveloper = k.GetDeveloper(sdkCtx, developerAddr)\n\trequire.NotNil(t, developer)\n\trequire.False(t, developer.AutoLockEnabled)\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_update_params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgUpdateParams(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tparams := k.GetParams(ctx)\n\trequire.NoError(t, k.SetParams(ctx, params))\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateParams\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"invalid authority\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: \"invalid\",\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid authority\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid params\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    types.Params{},\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid params\",\n\t\t},\n\t\t{\n\t\t\tname: \"all good\",\n\t\t\tinput: &types.MsgUpdateParams{\n\t\t\t\tAuthority: k.GetAuthority(),\n\t\t\t\tParams:    params,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, err := ms.UpdateParams(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/keeper/msg_update_user_subscription_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc TestMsgUpdateUserSubscription(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(10000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tinitialAmount := uint64(100)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, userDid, initialAmount, 30)\n\trequire.NoError(t, err)\n\n\tvalidAmount := uint64(200)\n\tzeroAmount := uint64(0)\n\n\ttestCases := []struct {\n\t\tname      string\n\t\tinput     *types.MsgUpdateUserSubscription\n\t\texpErr    bool\n\t\texpErrMsg string\n\t}{\n\t\t{\n\t\t\tname: \"valid update user subscription - change amount\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid update user subscription - change period\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    60,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"valid update user subscription - change both\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t\tAmount:    uint64(300),\n\t\t\t\tPeriod:    90,\n\t\t\t},\n\t\t\texpErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid developer address\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: \"invalid-developer-address\",\n\t\t\t\tUserDid:   userDid,\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"delegator address\",\n\t\t},\n\t\t{\n\t\t\tname: \"invalid user did\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   \"\",\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid DID\",\n\t\t},\n\t\t{\n\t\t\tname: \"zero amount\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   userDid,\n\t\t\t\tAmount:    zeroAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"invalid amount\",\n\t\t},\n\t\t{\n\t\t\tname: \"non-existent subscription\",\n\t\t\tinput: &types.MsgUpdateUserSubscription{\n\t\t\t\tDeveloper: validDeveloperAddr,\n\t\t\t\tUserDid:   \"did:key:nonexistent\",\n\t\t\t\tAmount:    validAmount,\n\t\t\t\tPeriod:    30,\n\t\t\t},\n\t\t\texpErr:    true,\n\t\t\texpErrMsg: \"update user subscription\",\n\t\t},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := tc.input.ValidateBasic()\n\t\t\tif err != nil {\n\t\t\t\tif tc.expErr {\n\t\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tt.Fatalf(\"unexpected error in ValidateBasic: %v\", err)\n\t\t\t}\n\n\t\t\tresp, err := ms.UpdateUserSubscription(sdkCtx, tc.input)\n\n\t\t\tif tc.expErr {\n\t\t\t\trequire.Error(t, err)\n\t\t\t\trequire.Contains(t, err.Error(), tc.expErrMsg)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t\trequire.NotNil(t, resp)\n\n\t\t\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(tc.input.Developer)\n\t\t\t\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\t\t\t\trequire.NotNil(t, subscription, \"User subscription should exist after update\")\n\t\t\t\trequire.Equal(t, tc.input.Amount, subscription.CreditAmount, \"Amount should match updated value\")\n\t\t\t\trequire.Equal(t, tc.input.Period, subscription.Period, \"Period should match updated value\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestMsgUpdateUserSubscription_ProgressiveUpdates(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tuserDid := \"did:key:alice\"\n\n\tvalidDeveloperAddr := \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\"\n\tdeveloperAddr := sdk.MustAccAddressFromBech32(validDeveloperAddr)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tkeepertest.InitializeDelegator(t, &k, sdkCtx, developerAddr, math.NewInt(10000))\n\tkeepertest.InitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), sdkCtx, valAddr, math.NewInt(1_000_000))\n\tsdkCtx = sdkCtx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\terr = k.CreateDeveloper(sdkCtx, developerAddr, true)\n\trequire.NoError(t, err)\n\n\tinitialAmount := uint64(100)\n\terr = k.AddUserSubscription(sdkCtx, developerAddr, userDid, initialAmount, 30)\n\trequire.NoError(t, err)\n\n\tsubscription := k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, initialAmount, subscription.CreditAmount)\n\trequire.Equal(t, uint64(30), subscription.Period)\n\n\tmsg := &types.MsgUpdateUserSubscription{\n\t\tDeveloper: validDeveloperAddr,\n\t\tUserDid:   userDid,\n\t\tAmount:    uint64(200),\n\t\tPeriod:    30,\n\t}\n\n\tresp, err := ms.UpdateUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription = k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, uint64(200), subscription.CreditAmount)\n\trequire.Equal(t, uint64(30), subscription.Period)\n\n\tmsg.Amount = uint64(200)\n\tmsg.Period = 60\n\n\tresp, err = ms.UpdateUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription = k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, uint64(200), subscription.CreditAmount)\n\trequire.Equal(t, uint64(60), subscription.Period)\n\n\tmsg.Amount = uint64(500)\n\tmsg.Period = 90\n\n\tresp, err = ms.UpdateUserSubscription(sdkCtx, msg)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, resp)\n\n\tsubscription = k.GetUserSubscription(sdkCtx, developerAddr, userDid)\n\trequire.NotNil(t, subscription)\n\trequire.Equal(t, uint64(500), subscription.CreditAmount)\n\trequire.Equal(t, uint64(90), subscription.Period)\n}\n\nfunc TestMsgUpdateUserSubscription_NonExistentDeveloper(t *testing.T) {\n\tk, ms, ctx := setupMsgServer(t)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\tp := types.DefaultParams()\n\trequire.NoError(t, k.SetParams(ctx, p))\n\n\tnonExistentDeveloperAddr := \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\"\n\tuserDid := \"did:key:alice\"\n\n\tvalidAmount := uint64(100)\n\tmsg := &types.MsgUpdateUserSubscription{\n\t\tDeveloper: nonExistentDeveloperAddr,\n\t\tUserDid:   userDid,\n\t\tAmount:    validAmount,\n\t\tPeriod:    30,\n\t}\n\n\tresp, err := ms.UpdateUserSubscription(sdkCtx, msg)\n\trequire.Error(t, err)\n\trequire.Contains(t, err.Error(), \"update user subscription\")\n\trequire.Nil(t, resp)\n}\n"
  },
  {
    "path": "x/tier/keeper/params.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// GetParams get all parameters as types.Params\nfunc (k *Keeper) GetParams(ctx context.Context) (params types.Params) {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz := store.Get(types.ParamsKey)\n\tif bz == nil {\n\t\treturn params\n\t}\n\n\tk.cdc.MustUnmarshal(bz, &params)\n\treturn params\n}\n\n// SetParams set the params\nfunc (k *Keeper) SetParams(ctx context.Context, params types.Params) error {\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tbz, err := k.cdc.Marshal(&params)\n\tif err != nil {\n\t\treturn errorsmod.Wrapf(err, \"marshal params\")\n\t}\n\tstore.Set(types.ParamsKey, bz)\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/params_test.go",
    "content": "package keeper_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n)\n\nfunc TestGetParams(t *testing.T) {\n\tk, ctx := keepertest.TierKeeper(t)\n\tparams := k.GetParams(ctx)\n\n\trequire.NoError(t, k.SetParams(ctx, params))\n\trequire.EqualValues(t, params, k.GetParams(ctx))\n}\n"
  },
  {
    "path": "x/tier/keeper/rewards.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// processRewards processes block rewards every ProcessRewardsInterval blocks.\n// 2% of the claimed rewards is sent to the developer pool (DeveloperPoolFee).\n// 1% is sent to the insurance pool (InsurancePoolFee) if insurance pool balance is below InsurancePoolThreshold,\n// otherwise the InsurancePoolFee (1%) is also sent to the developer pool.\n// Remaining 97% of the rewards is burned.\nfunc (k *Keeper) processRewards(ctx context.Context) error {\n\tparams := k.GetParams(ctx)\n\n\t// Process rewards every N blocks\n\theight := sdk.UnwrapSDKContext(ctx).BlockHeight()\n\tif height%params.ProcessRewardsInterval != 0 {\n\t\treturn nil\n\t}\n\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\t// Iterate over all active delegations where the tier module account is the delegator\n\t// The max number of iterations is the number of validators it has delegated to\n\terr := k.GetStakingKeeper().IterateDelegations(ctx, tierModuleAddr, func(index int64, delegation stakingtypes.DelegationI) bool {\n\t\t// Claim rewards for the tier module from this validator\n\t\tvalAddr := types.MustValAddressFromBech32(delegation.GetValidatorAddr())\n\t\trewards, err := k.GetDistributionKeeper().WithdrawDelegationRewards(ctx, tierModuleAddr, valAddr)\n\t\tif err != nil {\n\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.ProcessRewards, err)\n\t\t\tk.Logger().Error(\"Failed to claim tier module staking rewards\", \"error\", err)\n\t\t\treturn false\n\t\t}\n\n\t\t// Proceed to the next record if there are no rewards\n\t\tif rewards.IsZero() {\n\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.ProcessRewards, err)\n\t\t\tk.Logger().Info(\"No tier module staking rewards in validator\", \"validator\", valAddr)\n\t\t\treturn false\n\t\t}\n\n\t\ttotalAmount := rewards.AmountOf(appparams.DefaultBondDenom)\n\t\tamountToDevPool := totalAmount.MulRaw(params.DeveloperPoolFee).QuoRaw(100)\n\t\tamountToInsurancePool := totalAmount.MulRaw(params.InsurancePoolFee).QuoRaw(100)\n\t\tamountToBurn := totalAmount.Sub(amountToDevPool).Sub(amountToInsurancePool)\n\n\t\t// Send InsurancePoolFee to the insurance pool if threshold not reached, update amountToDevPool otherwise\n\t\tif !amountToInsurancePool.IsZero() {\n\t\t\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\t\t\tinsurancePoolBalance := k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\t\t\tif insurancePoolBalance.Amount.Add(amountToInsurancePool).LTE(math.NewInt(params.InsurancePoolThreshold)) {\n\t\t\t\tinsuranceCoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, amountToInsurancePool))\n\t\t\t\terr := k.GetBankKeeper().SendCoinsFromModuleToModule(ctx, types.ModuleName, types.InsurancePoolName, insuranceCoins)\n\t\t\t\tif err != nil {\n\t\t\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.ProcessRewards, err)\n\t\t\t\t\tk.Logger().Error(\"Failed to send rewards to the insurance pool\", \"error\", err)\n\t\t\t\t\treturn false\n\t\t\t\t} else {\n\t\t\t\t\t// Update insurance pool balance gauge\n\t\t\t\t\ttelemetry.ModuleSetGauge(\n\t\t\t\t\t\ttypes.ModuleName,\n\t\t\t\t\t\tfloat32(k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom).Amount.Int64()),\n\t\t\t\t\t\tmetrics.InsurancePoolBalance,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tamountToDevPool = amountToDevPool.Add(amountToInsurancePool)\n\t\t\t}\n\t\t}\n\n\t\t// Send DeveloperPoolFee to the developer pool\n\t\tif !amountToDevPool.IsZero() {\n\t\t\tdevPoolCoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, amountToDevPool))\n\t\t\terr := k.GetBankKeeper().SendCoinsFromModuleToModule(ctx, types.ModuleName, types.DeveloperPoolName, devPoolCoins)\n\t\t\tif err != nil {\n\t\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.ProcessRewards, err)\n\t\t\t\tk.Logger().Error(\"Failed to send rewards to the developer pool\", \"error\", err)\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\t// Update developer pool balance gauge\n\t\t\t\tdeveloperPoolAddr := authtypes.NewModuleAddress(types.DeveloperPoolName)\n\t\t\t\ttelemetry.ModuleSetGauge(\n\t\t\t\t\ttypes.ModuleName,\n\t\t\t\t\tfloat32(k.GetBankKeeper().GetBalance(ctx, developerPoolAddr, appparams.DefaultBondDenom).Amount.Int64()),\n\t\t\t\t\tmetrics.DeveloperPoolBalance,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\t// Burn remaining tier module staking rewards\n\t\tif !amountToBurn.IsZero() {\n\t\t\tburnCoins := sdk.NewCoins(sdk.NewCoin(appparams.DefaultBondDenom, amountToBurn))\n\t\t\terr := k.GetBankKeeper().BurnCoins(ctx, types.ModuleName, burnCoins)\n\t\t\tif err != nil {\n\t\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.ProcessRewards, err)\n\t\t\t\tk.Logger().Error(\"Failed to burn tier module staking rewards\", \"error\", err)\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t})\n\n\treturn err\n}\n"
  },
  {
    "path": "x/tier/keeper/slashing.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// handleSlashingEvents monitors and handles slashing events.\n// In case of double_sign, existing lockup records are updated to reflect changes after slashing.\n// Otherwise, in addition to updating existing lockup records, slashed tokens are covered via insurance lockups.\n// Note: beginBlockers in app_config.go must have tier module after slashing for events to be handled correctly.\nfunc (k *Keeper) handleSlashingEvents(ctx context.Context) {\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tevents := sdkCtx.EventManager().Events()\n\n\tfor _, event := range events {\n\t\tif event.Type == \"slash\" {\n\t\t\tvar validatorAddr, reason, slashedAmount string\n\n\t\t\tfor _, attr := range event.Attributes {\n\t\t\t\tswitch string(attr.Key) {\n\t\t\t\tcase \"address\":\n\t\t\t\t\tvalidatorAddr = string(attr.Value)\n\t\t\t\tcase \"reason\":\n\t\t\t\t\treason = string(attr.Value)\n\t\t\t\tcase \"burned\":\n\t\t\t\t\tslashedAmount = string(attr.Value)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif reason == slashingtypes.AttributeValueDoubleSign {\n\t\t\t\terr := k.handleDoubleSign(ctx, validatorAddr, slashedAmount)\n\t\t\t\tif err != nil {\n\t\t\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.HandleDoubleSign, err)\n\t\t\t\t\tk.Logger().Error(\"Failed to handle double sign event\", \"error\", err)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := k.handleMissingSignature(ctx, validatorAddr, slashedAmount)\n\t\t\t\tif err != nil {\n\t\t\t\t\tmetrics.ModuleIncrInternalErrorCounter(types.ModuleName, metrics.HandleMissingSignature, err)\n\t\t\t\t\tk.Logger().Error(\"Failed to handle missing signature event\", \"error\", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// handleDoubleSign adjusts existing lockup records based on the tier module share of the slashed amount.\nfunc (k *Keeper) handleDoubleSign(ctx context.Context, validatorAddr string, slashedAmount string) error {\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tvalAddr, err := sdk.ValAddressFromBech32(validatorAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get total slashed amount\n\ttotalSlashed, err := math.LegacyNewDecFromStr(slashedAmount)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif totalSlashed.IsZero() {\n\t\treturn fmt.Errorf(\"Total slashed amount is zero\")\n\t}\n\n\t// Get the slashed validator\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get the total stake of the slashed validator\n\ttotalStake := validator.Tokens.ToLegacyDec()\n\tif totalStake.IsZero() {\n\t\treturn fmt.Errorf(\"No stake for the validator: %s\", validatorAddr)\n\t}\n\n\t// Get tier module delegation\n\ttierDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get tier module delegation shares\n\ttierShares := tierDelegation.Shares\n\tif tierShares.IsZero() {\n\t\treturn fmt.Errorf(\"No delegation from the tier module\")\n\t}\n\n\t// Get tier module stake from the delegation shares\n\ttierStake := validator.TokensFromSharesTruncated(tierShares)\n\n\t// Calculate the amount slashed from the tier module stake\n\ttierStakeSlashed := totalSlashed.Mul(tierStake.Quo(totalStake))\n\tif tierStakeSlashed.IsZero() {\n\t\treturn fmt.Errorf(\"Tier module slashed amount is zero\")\n\t}\n\n\t// Get the rate by which every individual lockup record should be adjusted\n\tslashingRate := tierStake.Sub(tierStakeSlashed).Quo(tierStake)\n\n\t// Adjust affected lockups based on the slashed amount (no insurance lockups created since coverageRate is 0)\n\treturn k.adjustLockups(ctx, valAddr, slashingRate, math.LegacyZeroDec())\n}\n\n// handleMissingSignature adjusts existing lockup records based on the tier module share of the slashed amount\n// and covers tier module share of the slashed tokens from the insurance pool.\nfunc (k *Keeper) handleMissingSignature(ctx context.Context, validatorAddr string, slashedAmount string) error {\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tvalAddr, err := sdk.ValAddressFromBech32(validatorAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get total slashed amount\n\ttotalSlashed, err := math.LegacyNewDecFromStr(slashedAmount)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif totalSlashed.IsZero() {\n\t\treturn fmt.Errorf(\"Total slashed amount is zero\")\n\t}\n\n\t// Get the slashed validator\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get the total stake of the slashed validator\n\ttotalStake := validator.Tokens.ToLegacyDec()\n\tif totalStake.IsZero() {\n\t\treturn fmt.Errorf(\"No stake for the validator: %s\", validatorAddr)\n\t}\n\n\t// Get tier module delegation\n\ttierDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Get tier module delegation shares\n\ttierShares := tierDelegation.Shares\n\tif tierShares.IsZero() {\n\t\treturn fmt.Errorf(\"No delegation from the tier module\")\n\t}\n\n\t// Get tier module stake from the delegation shares\n\ttierStake := validator.TokensFromSharesTruncated(tierShares)\n\n\t// Calculate tier module share of the slashed amount\n\ttierStakeSlashed := totalSlashed.Mul(tierStake.Quo(totalStake)).Ceil().TruncateInt()\n\tif tierStakeSlashed.IsZero() {\n\t\treturn fmt.Errorf(\"Tier module slashed amount is zero\")\n\t}\n\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\tinsurancePoolBalance := k.GetBankKeeper().GetBalance(ctx, insurancePoolAddr, appparams.DefaultBondDenom)\n\tcoveredAmount := tierStakeSlashed\n\n\t// If tierStakeSlashed exceeds insurancePoolBalance, cover as much as there is on the insurance pool balance\n\tif insurancePoolBalance.Amount.LT(tierStakeSlashed) {\n\t\tcoveredAmount = insurancePoolBalance.Amount\n\t}\n\n\t// Delegate covered amount back to the same validator on behalf of the insurance pool module account\n\t_, err = k.GetStakingKeeper().Delegate(\n\t\tctx,\n\t\tinsurancePoolAddr,\n\t\tcoveredAmount,\n\t\tstakingtypes.Unbonded,\n\t\tvalidator,\n\t\ttrue,\n\t)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Calculate the proportional rate to reduce each individual lockup after slashing\n\tslashingRate := tierStake.Sub(tierStakeSlashed.ToLegacyDec()).Quo(tierStake)\n\n\t// Calculate the fraction of the original tier stake that is covered by the insurance pool\n\tcoverageRate := coveredAmount.ToLegacyDec().Quo(tierStake)\n\n\t// Adjust affected lockups based on the slashed amount and create/update associated insurance lockups based on the coverageRate\n\treturn k.adjustLockups(ctx, valAddr, slashingRate, coverageRate)\n}\n"
  },
  {
    "path": "x/tier/keeper/slashing_test.go",
    "content": "package keeper\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tslashingtypes \"github.com/cosmos/cosmos-sdk/x/slashing/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestHandleSlashingEvents_NoEvent(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\tk.handleSlashingEvents(ctx)\n}\n\nfunc TestHandleSlashingEvents_DoubleSign(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tslashAmount := math.NewInt(10_000)\n\tinitialDelegatorBalance := math.NewInt(100_000)\n\tinitialValidatorBalance := math.NewInt(100_000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\terr = k.Lock(ctx, delAddr, valAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\"slash\",\n\t\tsdk.NewAttribute(\"address\", valAddr.String()),\n\t\tsdk.NewAttribute(\"reason\", slashingtypes.AttributeValueDoubleSign),\n\t\tsdk.NewAttribute(\"burned\", slashAmount.String()),\n\t))\n\n\tk.handleSlashingEvents(ctx)\n\n\t// initialDelegatorBalance - slashAmount * initialDelegatorBalance / totalStaked\n\t// 100_000 - (10_000 * 100_000 / 200_000) = 95_000\n\texpectedTotalLockedAmount := math.NewInt(95_000)\n\ttotalLockedAmount := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, expectedTotalLockedAmount, totalLockedAmount)\n\n\t// insured amount should be zero because double_sign events are not covered\n\tinsuredAmount := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, math.ZeroInt(), insuredAmount)\n\n\t// insurance pool should not have any delegation\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\t_, err = k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.Error(t, err)\n}\n\nfunc TestHandleSlashingEvents_MissingSignature(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tslashAmount := math.NewInt(10_000)\n\tinsurancePoolBalance := math.NewInt(1_000_000)\n\tinitialDelegatorBalance := math.NewInt(100_000)\n\tinitialValidatorBalance := math.NewInt(100_000)\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insurancePoolBalance)\n\n\terr = k.Lock(ctx, delAddr, valAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\"slash\",\n\t\tsdk.NewAttribute(\"address\", valAddr.String()),\n\t\tsdk.NewAttribute(\"reason\", slashingtypes.AttributeValueMissingSignature),\n\t\tsdk.NewAttribute(\"burned\", slashAmount.String()),\n\t))\n\n\tk.handleSlashingEvents(ctx)\n\n\t// initialDelegatorBalance - slashAmount * initialDelegatorBalance / totalStaked\n\t// 100_000 - (10_000 * 100_000 / 200_000) = 95_000\n\texpectedTotalLockedAmount := math.NewInt(95_000)\n\ttotalLockedAmount := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, expectedTotalLockedAmount, totalLockedAmount)\n\n\t// slashAmount * initialDelegatorBalance / totalStaked\n\t// 10_000 * 100_000 / 200_000 = 5_000\n\texpectedInsuredAmount := math.NewInt(5_000)\n\tinsuredAmount := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, expectedInsuredAmount, insuredAmount)\n\n\t// insurance pool should have correct amount delegated\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\tdelegation, err := k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedInsuredAmount, delegation.Shares.RoundInt())\n}\n\nfunc TestHandleDoubleSign_MultipleDelegators(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tslashAmount := math.NewInt(10_000)\n\tinitialDelegatorBalance1 := math.NewInt(60_000)\n\tinitialDelegatorBalance2 := math.NewInt(40_000)\n\tinitialDelegatorBalance3 := math.NewInt(100_000)\n\tinitialValidatorBalance := math.ZeroInt()\n\ttotalTierStake := initialDelegatorBalance1.Add(initialDelegatorBalance2)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tdelAddr3, err := sdk.AccAddressFromBech32(\"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr1, initialDelegatorBalance1)\n\tinitializeDelegator(t, &k, ctx, delAddr2, initialDelegatorBalance2)\n\tinitializeDelegator(t, &k, ctx, delAddr3, initialDelegatorBalance3)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\t// delAddr1 locks via tier module, will be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr1, valAddr, initialDelegatorBalance1))\n\n\t// delAddr2 locks via tier module, will also be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr2, valAddr, initialDelegatorBalance2))\n\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\n\t// delAddr3 delegates normally, will not be affected\n\t_, err = k.GetStakingKeeper().Delegate(ctx, delAddr3, initialDelegatorBalance3, stakingtypes.Unbonded, validator, true)\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithEventManager(sdk.NewEventManager())\n\tctx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\"slash\",\n\t\tsdk.NewAttribute(\"address\", valAddr.String()),\n\t\tsdk.NewAttribute(\"reason\", slashingtypes.AttributeValueDoubleSign),\n\t\tsdk.NewAttribute(\"burned\", slashAmount.String()),\n\t))\n\n\t// handle double sign event\n\trequire.NoError(t, k.handleDoubleSign(ctx, valAddr.String(), slashAmount.String()))\n\n\t// tier module stake = 100_000, total stake = 200_000, tier share of slash = 5_000\n\texpectedSlashed := math.NewInt(5_000)\n\trequire.Equal(t, totalTierStake.Sub(expectedSlashed), k.GetTotalLockupsAmount(ctx))\n\n\t// insured amounts for all delegators should be zero because double_sign events are not covered\n\tinsuredAmount := k.getInsuranceLockupAmount(ctx, delAddr1, valAddr)\n\trequire.Equal(t, math.ZeroInt(), insuredAmount)\n\tinsuredAmount = k.getInsuranceLockupAmount(ctx, delAddr2, valAddr)\n\trequire.Equal(t, math.ZeroInt(), insuredAmount)\n\tinsuredAmount = k.getInsuranceLockupAmount(ctx, delAddr3, valAddr)\n\trequire.Equal(t, math.ZeroInt(), insuredAmount)\n\n\t// insurance pool should not have any delegation\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\t_, err = k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.Error(t, err)\n}\n\nfunc TestHandleMissingSignature_PartialCoverage(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\t// slashed amount is greater than insurance pool balance\n\tslashAmount := math.NewInt(10_000)\n\tinsuracePoolBalance := math.NewInt(3_000)\n\tinitialDelegatorBalance := math.NewInt(100_000)\n\tinitialValidatorBalance := math.ZeroInt()\n\n\tdelAddr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr, initialDelegatorBalance)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insuracePoolBalance)\n\n\terr = k.Lock(ctx, delAddr, valAddr, initialDelegatorBalance)\n\trequire.NoError(t, err)\n\n\tvalidator, _ := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\tfmt.Println(\"Validator Tokens:\", validator.Tokens)\n\n\ttierModuleAddr := authtypes.NewModuleAddress(types.ModuleName)\n\tdelegation, _ := k.GetStakingKeeper().GetDelegation(ctx, tierModuleAddr, valAddr)\n\tfmt.Println(\"Tier Shares:\", delegation.Shares)\n\n\tfmt.Println(\"Validator DelegatorShares:\", validator.DelegatorShares)\n\n\terr = k.handleMissingSignature(ctx, valAddr.String(), slashAmount.String())\n\trequire.NoError(t, err)\n\n\t// slashed amount from tier stake = 10_000 * 100_000 / 100_000 = 10_000\n\texpectedTierSlashed := math.NewInt(10_000)\n\n\t// lockups should be reduced by 10_000\n\ttotalLockedAmount := k.GetTotalLockupsAmount(ctx)\n\trequire.Equal(t, initialDelegatorBalance.Sub(expectedTierSlashed), totalLockedAmount)\n\n\t// insured amount should be equal to insuracePoolBalance (3_000)\n\tinsuredAmount := k.getInsuranceLockupAmount(ctx, delAddr, valAddr)\n\trequire.Equal(t, insuracePoolBalance, insuredAmount)\n\n\t// insurance pool delegation should equal to covered amount\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\tdelegation, err = k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, insuracePoolBalance, delegation.Shares.RoundInt())\n}\n\nfunc TestHandleMissingSignature_MultipleDelegators_PartialCoverage(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\t// slashed amount is greater than insurance pool balance\n\tslashAmount := math.NewInt(10_000)\n\tinsurancePoolBalance := math.NewInt(1_000)\n\tinitialDelegatorBalance1 := math.NewInt(60_000)\n\tinitialDelegatorBalance2 := math.NewInt(40_000)\n\tinitialDelegatorBalance3 := math.NewInt(100_000)\n\tinitialValidatorBalance := math.ZeroInt()\n\ttotalTierStake := initialDelegatorBalance1.Add(initialDelegatorBalance2)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tdelAddr3, err := sdk.AccAddressFromBech32(\"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr1, initialDelegatorBalance1)\n\tinitializeDelegator(t, &k, ctx, delAddr2, initialDelegatorBalance2)\n\tinitializeDelegator(t, &k, ctx, delAddr3, initialDelegatorBalance3)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insurancePoolBalance)\n\n\t// delAddr1 locks via tier module, will be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr1, valAddr, initialDelegatorBalance1))\n\n\t// delAddr2 locks via tier module, will also be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr2, valAddr, initialDelegatorBalance2))\n\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\n\t// delAddr3 delegates normally, will not be affected\n\t_, err = k.GetStakingKeeper().Delegate(ctx, delAddr3, initialDelegatorBalance3, stakingtypes.Unbonded, validator, true)\n\trequire.NoError(t, err)\n\n\t// handle missing signature event\n\trequire.NoError(t, k.handleMissingSignature(ctx, valAddr.String(), slashAmount.String()))\n\n\t// tier module stake = 100_000, total stake = 200_000, tier share of slash = 5_000\n\texpectedSlashed := math.NewInt(5_000)\n\trequire.Equal(t, totalTierStake.Sub(expectedSlashed), k.GetTotalLockupsAmount(ctx))\n\n\t// insurance lockup for delAddr1 should be 1_000 * 60_000 / 100_000 = 600\n\texpectedInsuredAmount1 := math.NewInt(600)\n\tinsuredAmount1 := k.getInsuranceLockupAmount(ctx, delAddr1, valAddr)\n\trequire.Equal(t, expectedInsuredAmount1, insuredAmount1)\n\n\t// insurance lockup for delAddr2 should be 1_000 * 40_000 / 100_000 = 400\n\texpectedInsuredAmount2 := math.NewInt(400)\n\tinsuredAmount2 := k.getInsuranceLockupAmount(ctx, delAddr2, valAddr)\n\trequire.Equal(t, expectedInsuredAmount2, insuredAmount2)\n\n\t// no insurance lockup for delAddr3\n\tinsuredAmount3 := k.getInsuranceLockupAmount(ctx, delAddr3, valAddr)\n\trequire.True(t, insuredAmount3.IsZero())\n\n\t// total insurance pool delegation should be equal to insurancePoolBalance\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\tinsuranceDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, insurancePoolBalance, insuranceDelegation.Shares.RoundInt())\n}\n\nfunc TestHandleMissingSignature_MultipleDelegators_FullCoverage(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tslashAmount := math.NewInt(10_000)\n\tinsurancePoolBalance := math.NewInt(100_000)\n\tinitialDelegatorBalance1 := math.NewInt(60_000)\n\tinitialDelegatorBalance2 := math.NewInt(40_000)\n\tinitialDelegatorBalance3 := math.NewInt(100_000)\n\tinitialValidatorBalance := math.ZeroInt()\n\ttotalTierStake := initialDelegatorBalance1.Add(initialDelegatorBalance2)\n\n\tdelAddr1, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdelAddr2, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tdelAddr3, err := sdk.AccAddressFromBech32(\"source18jtkvj0995fy7lggqayg2f5syna92ndq5mkuv4\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, delAddr1, initialDelegatorBalance1)\n\tinitializeDelegator(t, &k, ctx, delAddr2, initialDelegatorBalance2)\n\tinitializeDelegator(t, &k, ctx, delAddr3, initialDelegatorBalance3)\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, initialValidatorBalance)\n\n\tmintCoinsToModule(t, &k, ctx, types.InsurancePoolName, insurancePoolBalance)\n\n\t// delAddr1 locks via tier module, will be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr1, valAddr, initialDelegatorBalance1))\n\n\t// delAddr2 locks via tier module, will also be affected\n\trequire.NoError(t, k.Lock(ctx, delAddr2, valAddr, initialDelegatorBalance2))\n\n\tvalidator, err := k.GetStakingKeeper().GetValidator(ctx, valAddr)\n\trequire.NoError(t, err)\n\n\t// delAddr3 delegates normally, will not be affected\n\t_, err = k.GetStakingKeeper().Delegate(ctx, delAddr3, initialDelegatorBalance3, stakingtypes.Unbonded, validator, true)\n\trequire.NoError(t, err)\n\n\t// handle missing signature event\n\trequire.NoError(t, k.handleMissingSignature(ctx, valAddr.String(), slashAmount.String()))\n\n\t// tier module stake = 100_000, total stake = 200_000, tier share of slash = 5_000\n\texpectedSlashed := math.NewInt(5_000)\n\trequire.Equal(t, totalTierStake.Sub(expectedSlashed), k.GetTotalLockupsAmount(ctx))\n\n\t// insurance lockup for delAddr1 should be 10_000 * 60_000 / 200_000 = 3_000\n\texpectedInsuredAmount1 := math.NewInt(3_000)\n\tinsuredAmount1 := k.getInsuranceLockupAmount(ctx, delAddr1, valAddr)\n\trequire.Equal(t, expectedInsuredAmount1, insuredAmount1)\n\n\t// insurance lockup for delAddr2 should be 10_000 * 40_000 / 200_000 = 2_000\n\texpectedInsuredAmount2 := math.NewInt(2_000)\n\tinsuredAmount2 := k.getInsuranceLockupAmount(ctx, delAddr2, valAddr)\n\trequire.Equal(t, expectedInsuredAmount2, insuredAmount2)\n\n\t// no insurance lockup for delAddr3\n\tinsuredAmount3 := k.getInsuranceLockupAmount(ctx, delAddr3, valAddr)\n\trequire.True(t, insuredAmount3.IsZero())\n\n\t// total insurance pool delegation should be equal to expectedSlashed\n\tinsurancePoolAddr := authtypes.NewModuleAddress(types.InsurancePoolName)\n\tinsuranceDelegation, err := k.GetStakingKeeper().GetDelegation(ctx, insurancePoolAddr, valAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, expectedSlashed, insuranceDelegation.Shares.RoundInt())\n}\n"
  },
  {
    "path": "x/tier/keeper/subscription.go",
    "content": "package keeper\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\terrorsmod \"cosmossdk.io/errors\"\n\t\"cosmossdk.io/math\"\n\t\"cosmossdk.io/store/prefix\"\n\tstoretypes \"cosmossdk.io/store/types\"\n\t\"github.com/cosmos/cosmos-sdk/runtime\"\n\t\"github.com/cosmos/cosmos-sdk/telemetry\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// developerStore returns a prefix store for developer configurations.\nfunc (k *Keeper) developerStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, []byte(types.DeveloperKeyPrefix))\n}\n\n// GetAllDevelopers returns all developers in the store.\nfunc (k *Keeper) GetAllDevelopers(ctx context.Context) []types.Developer {\n\tvar developers []types.Developer\n\n\tdevelopersCallback := func(developerAddr sdk.AccAddress, developer types.Developer) {\n\t\tdevelopers = append(developers, developer)\n\t}\n\n\tk.mustIterateDevelopers(ctx, developersCallback)\n\n\treturn developers\n}\n\n// GetDeveloper returns a pointer to existing developer configuration, or nil if not found.\nfunc (k *Keeper) GetDeveloper(ctx context.Context, developerAddr sdk.AccAddress) *types.Developer {\n\tkey := types.DeveloperKey(developerAddr)\n\tstore := k.developerStore(ctx)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar developer types.Developer\n\tk.cdc.MustUnmarshal(b, &developer)\n\n\treturn &developer\n}\n\n// SetDeveloper sets a developer configuration in the store.\nfunc (k *Keeper) SetDeveloper(ctx context.Context, developerAddr sdk.AccAddress, developer *types.Developer) {\n\tkey := types.DeveloperKey(developerAddr)\n\tb := k.cdc.MustMarshal(developer)\n\tstore := k.developerStore(ctx)\n\tstore.Set(key, b)\n}\n\n// removeDeveloper removes existing Developer (developerAddr/).\nfunc (k *Keeper) removeDeveloper(ctx context.Context, developerAddr sdk.AccAddress) {\n\tkey := types.DeveloperKey(developerAddr)\n\tstore := k.developerStore(ctx)\n\tstore.Delete(key)\n}\n\n// mustIterateDevelopers iterates through all developers and calls the callback function.\nfunc (k *Keeper) mustIterateDevelopers(ctx context.Context,\n\tcb func(developerAddr sdk.AccAddress, developer types.Developer)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, []byte(types.DeveloperKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar developer types.Developer\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &developer)\n\t\tdeveloperAddr := types.DeveloperKeyToAddress(iterator.Key())\n\t\tcb(developerAddr, developer)\n\t}\n}\n\n// userSubscriptionStore returns a prefix store for user subscriptions.\nfunc (k *Keeper) userSubscriptionStore(ctx context.Context) prefix.Store {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\treturn prefix.NewStore(storeAdapter, []byte(types.UserSubscriptionKeyPrefix))\n}\n\n// GetAllUserSubscriptions returns all user subscriptions in the store.\nfunc (k *Keeper) GetAllUserSubscriptions(ctx context.Context) []types.UserSubscription {\n\tvar userSubscriptions []types.UserSubscription\n\n\tuserSubscriptionsCallback := func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription) {\n\t\tuserSubscriptions = append(userSubscriptions, userSubscription)\n\t}\n\n\tk.mustIterateUserSubscriptions(ctx, userSubscriptionsCallback)\n\n\treturn userSubscriptions\n}\n\n// GetUserSubscription returns a pointer to existing user subscription, or nil if not found.\nfunc (k *Keeper) GetUserSubscription(ctx context.Context, developerAddr sdk.AccAddress, userDid string) *types.UserSubscription {\n\tkey := types.UserSubscriptionKey(developerAddr, userDid)\n\tstore := k.userSubscriptionStore(ctx)\n\tb := store.Get(key)\n\tif b == nil {\n\t\treturn nil\n\t}\n\n\tvar userSubscription types.UserSubscription\n\tk.cdc.MustUnmarshal(b, &userSubscription)\n\n\treturn &userSubscription\n}\n\n// SetUserSubscription sets a user subscription in the store based on the UserSubscriptionKey.\nfunc (k *Keeper) SetUserSubscription(ctx context.Context, developerAddr sdk.AccAddress, userDid string, userSubscription *types.UserSubscription) {\n\tkey := types.UserSubscriptionKey(developerAddr, userDid)\n\tb := k.cdc.MustMarshal(userSubscription)\n\tstore := k.userSubscriptionStore(ctx)\n\tstore.Set(key, b)\n}\n\n// removeUserSubscription removes existing UserSubscription (developerAddr/userDid/).\nfunc (k *Keeper) removeUserSubscription(ctx context.Context, developerAddr sdk.AccAddress, userDid string) {\n\tkey := types.UserSubscriptionKey(developerAddr, userDid)\n\tstore := k.userSubscriptionStore(ctx)\n\tstore.Delete(key)\n}\n\n// mustIterateUserSubscriptions iterates through all user subscriptions and calls the callback function.\nfunc (k *Keeper) mustIterateUserSubscriptions(ctx context.Context,\n\tcb func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, []byte(types.UserSubscriptionKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, []byte{})\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar userSubscription types.UserSubscription\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &userSubscription)\n\t\tdeveloperAddr, userDid := types.UserSubscriptionKeyToAddresses(iterator.Key())\n\t\tcb(developerAddr, userDid, userSubscription)\n\t}\n}\n\n// mustIterateUserSubscriptionsForDeveloper iterates through user subscriptions for a specific developer and calls the callback function.\nfunc (k *Keeper) mustIterateUserSubscriptionsForDeveloper(ctx context.Context, developerAddr sdk.AccAddress,\n\tcb func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription)) {\n\tstoreAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore := prefix.NewStore(storeAdapter, []byte(types.UserSubscriptionKeyPrefix))\n\titerator := storetypes.KVStorePrefixIterator(store, developerAddr.Bytes())\n\n\tdefer iterator.Close()\n\n\tfor ; iterator.Valid(); iterator.Next() {\n\t\tvar userSubscription types.UserSubscription\n\t\tk.cdc.MustUnmarshal(iterator.Value(), &userSubscription)\n\t\tdeveloperAddr, userDid := types.UserSubscriptionKeyToAddresses(iterator.Key())\n\t\tcb(developerAddr, userDid, userSubscription)\n\t}\n}\n\n// checkDeveloperCredits checks if all developers have enough credits compared to total dev granted.\n// If developer does not have enough credits, we check the auto-lock setting.\n// If auto-lock is on and developer has enough \"uopen\", we perform auto-lock.\n// If auto-lock is off or developer does not have enough \"uopen\", we log corresponding event.\nfunc (k *Keeper) checkDeveloperCredits(ctx context.Context, epochNumber int64) (err error) {\n\tstart := time.Now()\n\n\tdefer func() {\n\t\tmetrics.ModuleMeasureSinceWithCounter(\n\t\t\ttypes.ModuleName,\n\t\t\tmetrics.CheckDeveloperCredits,\n\t\t\tstart,\n\t\t\terr,\n\t\t\t[]metrics.Label{\n\t\t\t\tmetrics.NewLabel(metrics.Epoch, fmt.Sprintf(\"%d\", epochNumber)),\n\t\t\t},\n\t\t)\n\t}()\n\n\t// Track unique developers to avoid processing the same developer multiple times\n\tprocessedDevelopers := make(map[string]bool)\n\tk.mustIterateUserSubscriptions(ctx, func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription) {\n\t\tif processedDevelopers[developerAddr.String()] {\n\t\t\treturn\n\t\t}\n\t\tprocessedDevelopers[developerAddr.String()] = true\n\t\ttotalGranted, err := k.getTotalDevGranted(ctx, developerAddr)\n\t\tif err != nil {\n\t\t\tk.logger.Error(\"failed to get total granted amount\",\n\t\t\t\ttypes.AttributeKeyDeveloper, developerAddr.String(),\n\t\t\t\ttypes.AttributeKeyError, err.Error())\n\t\t\treturn\n\t\t}\n\n\t\t// Developer has enough credits, no action needed\n\t\tcreditBalance := k.bankKeeper.GetBalance(ctx, developerAddr, appparams.MicroCreditDenom)\n\t\tif creditBalance.Amount.GTE(totalGranted) {\n\t\t\treturn\n\t\t}\n\n\t\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\t\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\n\t\t// Auto-lock is off, log event that developer needs to lock\n\t\tif developer == nil || !developer.AutoLockEnabled {\n\t\t\tsdkCtx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\t\ttypes.EventTypeDeveloperInsufficientCredits,\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyCurrentBalance, creditBalance.Amount.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyTotalGranted, totalGranted.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyAutoLockEnabled, \"false\"),\n\t\t\t))\n\t\t\treturn\n\t\t}\n\n\t\t// Auto-lock is on, check uopen balance for the actual lock amount\n\t\tlockAmount := totalGranted.Sub(creditBalance.Amount)\n\t\tuopenBalance := k.bankKeeper.GetBalance(ctx, developerAddr, appparams.DefaultBondDenom)\n\t\tif uopenBalance.Amount.LT(lockAmount) {\n\t\t\tsdkCtx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\t\ttypes.EventTypeDeveloperInsufficientOpenForAutoLock,\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyCurrentBalance, creditBalance.Amount.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyTotalGranted, totalGranted.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyUopenBalance, uopenBalance.Amount.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyRequiredLockAmount, lockAmount.String()),\n\t\t\t))\n\t\t\treturn\n\t\t}\n\n\t\t// Enough uopen balance, perform auto-lock\n\t\terr = k.autoLockDeveloperCredits(ctx, developerAddr, developer, lockAmount)\n\t\tif err != nil {\n\t\t\tsdkCtx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\t\ttypes.EventTypeDeveloperAutoLockFailed,\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyError, err.Error()),\n\t\t\t))\n\t\t} else {\n\t\t\tsdkCtx.EventManager().EmitEvent(sdk.NewEvent(\n\t\t\t\ttypes.EventTypeDeveloperAutoLockSuccess,\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyDeveloper, developerAddr.String()),\n\t\t\t\tsdk.NewAttribute(types.AttributeKeyLockAmount, lockAmount.String()),\n\t\t\t))\n\t\t}\n\t})\n\n\treturn nil\n}\n\n// autoLockDeveloperCredits automatically adds lockups to cover missing credits for a developer.\nfunc (k *Keeper) autoLockDeveloperCredits(\n\tctx context.Context,\n\tdeveloperAddr sdk.AccAddress,\n\tdeveloper *types.Developer,\n\tlockAmount math.Int,\n) error {\n\tif lockAmount.LTE(math.ZeroInt()) {\n\t\treturn types.ErrInvalidAmount.Wrap(\"auto-lock amount must be positive\")\n\t}\n\n\t// Try to reuse an existing validator lockup for this developer; prefer the largest lockup\n\tvar (\n\t\tchosenValAddr sdk.ValAddress\n\t\tfound         bool\n\t\tmaxLockupAmt  = math.ZeroInt()\n\t)\n\n\tk.mustIterateLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tif !delAddr.Equals(developerAddr) {\n\t\t\treturn\n\t\t}\n\t\tif !found || lockup.Amount.GT(maxLockupAmt) {\n\t\t\tfound = true\n\t\t\tchosenValAddr = valAddr\n\t\t\tmaxLockupAmt = lockup.Amount\n\t\t}\n\t})\n\n\tif !found {\n\t\tvalidators, err := k.stakingKeeper.GetAllValidators(ctx)\n\t\tif err != nil {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"failed to get validators: %v\", err)\n\t\t}\n\t\tif len(validators) == 0 {\n\t\t\treturn types.ErrInvalidAmount.Wrap(\"no validators available for lockup\")\n\t\t}\n\n\t\tvalidator := validators[0]\n\t\tvalAddr, err := sdk.ValAddressFromBech32(validator.GetOperator())\n\t\tif err != nil {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"invalid validator address: %v\", err)\n\t\t}\n\t\tchosenValAddr = valAddr\n\t}\n\n\tif err := k.Lock(ctx, developerAddr, chosenValAddr, lockAmount); err != nil {\n\t\treturn types.ErrInvalidAmount.Wrapf(\"failed to add lockup: %v\", err)\n\t}\n\n\tk.logger.Info(\"auto-locked developer credits\",\n\t\ttypes.AttributeKeyDeveloper, developerAddr.String(),\n\t\ttypes.AttributeKeyLockAmount, lockAmount.String(),\n\t\ttypes.AttributeKeyDestinationValidator, chosenValAddr.String())\n\n\treturn nil\n}\n\n// grantPeriodicDIDAllowance grants a periodic allowance from the developer to the user DID.\nfunc (k *Keeper) grantPeriodicDIDAllowance(\n\tctx context.Context,\n\tgranter sdk.AccAddress,\n\tgranteeDID string,\n\tspendLimit sdk.Coins,\n\tperiod time.Duration,\n) error {\n\tnow := sdk.UnwrapSDKContext(ctx).BlockTime()\n\n\tbasicAllowance := feegrant.BasicAllowance{\n\t\tSpendLimit: spendLimit,\n\t}\n\n\tperiodicAllowance := &feegrant.PeriodicAllowance{\n\t\tBasic:            basicAllowance,\n\t\tPeriod:           period,\n\t\tPeriodSpendLimit: spendLimit,\n\t\tPeriodCanSpend:   spendLimit,\n\t\tPeriodReset:      now.Add(period),\n\t}\n\n\t// Try update first; if no existing grant, fall back to grant\n\tif err := k.feegrantKeeper.UpdateDIDAllowance(ctx, granter, granteeDID, periodicAllowance); err != nil {\n\t\tif err := k.feegrantKeeper.GrantDIDAllowance(ctx, granter, granteeDID, periodicAllowance); err != nil {\n\t\t\treturn errorsmod.Wrapf(err, \"failed to grant periodic DID allowance from %s to %s\", granter, granteeDID)\n\t\t}\n\t}\n\n\tk.logger.Info(\"granted periodic DID allowance\",\n\t\ttypes.AttributeKeyDeveloper, granter,\n\t\ttypes.AttributeKeyUserDid, granteeDID,\n\t\ttypes.AttributeKeySubscriptionAmount, spendLimit.String(),\n\t\ttypes.AttributeKeySubscriptionPeriod, period.String(),\n\t)\n\n\treturn nil\n}\n\n// validateDeveloperCredits checks if a developer has enough credits to grant the requested amount.\nfunc (k *Keeper) validateDeveloperCredits(ctx context.Context, developerAddr sdk.AccAddress, requestedAmount math.Int) error {\n\ttotalGranted, err := k.getTotalDevGranted(ctx, developerAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcreditBalance := k.bankKeeper.GetBalance(ctx, developerAddr, appparams.MicroCreditDenom)\n\tavailableCredits := creditBalance.Amount.Sub(totalGranted)\n\n\tif availableCredits.LT(requestedAmount) {\n\t\treturn types.ErrInvalidAddress.Wrapf(\n\t\t\t\"insufficient available credits: requested %s, available %s (balance: %s, already granted: %s)\",\n\t\t\trequestedAmount.String(),\n\t\t\tavailableCredits.String(),\n\t\t\tcreditBalance.Amount.String(),\n\t\t\ttotalGranted.String(),\n\t\t)\n\t}\n\n\treturn nil\n}\n\n// updateDeveloperTotalGranted adjusts stored total granted by delta; add=true adds, false subtracts.\nfunc (k *Keeper) updateDeveloperTotalGranted(ctx context.Context, developerAddr sdk.AccAddress, delta math.Int, add bool) error {\n\tcurrent, err := k.getTotalDevGranted(ctx, developerAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar newTotal math.Int\n\tif add {\n\t\tnewTotal = current.Add(delta)\n\t} else {\n\t\tnewTotal, err = current.SafeSub(delta)\n\t\tif err != nil {\n\t\t\treturn errorsmod.Wrapf(err, \"subtract %s from developer total granted %s\", delta, current)\n\t\t}\n\t\tif newTotal.IsNegative() {\n\t\t\treturn errorsmod.Wrapf(types.ErrInvalidAmount, \"subtract %s from developer total granted %s would result in negative amount\", delta, current)\n\t\t}\n\t}\n\n\tkey := types.TotalDevGrantedKey(developerAddr)\n\ttotalDevGranted := &types.TotalDevGranted{\n\t\tDeveloper:    developerAddr.String(),\n\t\tTotalGranted: newTotal.Uint64(),\n\t}\n\n\tb := k.cdc.MustMarshal(totalDevGranted)\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\tstore.Set(key, b)\n\n\t// Update total dev granted amount gauge\n\ttelemetry.ModuleSetGauge(\n\t\ttypes.ModuleName,\n\t\tfloat32(newTotal.Int64()),\n\t\tdeveloperAddr.String(),\n\t\tmetrics.TotalDevGranted,\n\t)\n\n\treturn nil\n}\n\n// getTotalDevGranted retrieves the stored total granted amount for a developer.\nfunc (k *Keeper) getTotalDevGranted(ctx context.Context, developerAddr sdk.AccAddress) (math.Int, error) {\n\tkey := types.TotalDevGrantedKey(developerAddr)\n\tstore := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))\n\n\tbz := store.Get(key)\n\tif bz == nil {\n\t\treturn math.ZeroInt(), nil\n\t}\n\n\tvar totalDevGranted types.TotalDevGranted\n\terr := k.cdc.Unmarshal(bz, &totalDevGranted)\n\tif err != nil {\n\t\treturn math.ZeroInt(), errorsmod.Wrapf(err, \"unmarshal developer total granted amount\")\n\t}\n\n\treturn math.NewIntFromUint64(totalDevGranted.TotalGranted), nil\n}\n\n// addLockupForRegistration adds more lockup to cover the required amount for user registration.\nfunc (k *Keeper) addLockupForRegistration(ctx context.Context, developerAddr sdk.AccAddress, requiredAmount math.Int) error {\n\tcurrentTotal, err := k.getTotalDevGranted(ctx, developerAddr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcreditBalance := k.bankKeeper.GetBalance(ctx, developerAddr, appparams.MicroCreditDenom)\n\tavailableCredits := creditBalance.Amount.Sub(currentTotal)\n\tadditionalNeeded := requiredAmount.Sub(availableCredits)\n\tif additionalNeeded.LTE(math.ZeroInt()) {\n\t\treturn nil\n\t}\n\n\t// Prefer adding to an existing validator where the developer already has lockups\n\tvar (\n\t\tchosenValAddr sdk.ValAddress\n\t\tfound         bool\n\t\tmaxLockupAmt  = math.ZeroInt()\n\t)\n\tk.mustIterateLockups(ctx, func(delAddr sdk.AccAddress, valAddr sdk.ValAddress, lockup types.Lockup) {\n\t\tif !delAddr.Equals(developerAddr) {\n\t\t\treturn\n\t\t}\n\t\tif !found || lockup.Amount.GT(maxLockupAmt) {\n\t\t\tfound = true\n\t\t\tchosenValAddr = valAddr\n\t\t\tmaxLockupAmt = lockup.Amount\n\t\t}\n\t})\n\n\tif !found {\n\t\tvalidators, err := k.stakingKeeper.GetAllValidators(ctx)\n\t\tif err != nil {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"failed to get validators: %v\", err)\n\t\t}\n\t\tif len(validators) == 0 {\n\t\t\treturn types.ErrInvalidAmount.Wrap(\"no validators available for lockup\")\n\t\t}\n\t\tvalAddr, err := sdk.ValAddressFromBech32(validators[0].GetOperator())\n\t\tif err != nil {\n\t\t\treturn types.ErrInvalidAmount.Wrapf(\"invalid validator address: %v\", err)\n\t\t}\n\t\tchosenValAddr = valAddr\n\t}\n\n\terr = k.Lock(ctx, developerAddr, chosenValAddr, additionalNeeded)\n\tif err != nil {\n\t\treturn types.ErrInvalidAmount.Wrapf(\"failed to add lockup: %v\", err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/keeper/subscription_test.go",
    "content": "package keeper\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tstakingkeeper \"github.com/cosmos/cosmos-sdk/x/staking/keeper\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestGetAndSetDeveloper(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\tdeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.Nil(t, developer)\n\n\texpectedDeveloper := &types.Developer{\n\t\tAddress:         developerAddr.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\tk.SetDeveloper(ctx, developerAddr, expectedDeveloper)\n\n\tretrievedDeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, retrievedDeveloper)\n\trequire.Equal(t, expectedDeveloper.Address, retrievedDeveloper.Address)\n\trequire.Equal(t, expectedDeveloper.AutoLockEnabled, retrievedDeveloper.AutoLockEnabled)\n}\n\nfunc TestRemoveDeveloper(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\tdeveloper := &types.Developer{\n\t\tAddress:         developerAddr.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\tk.SetDeveloper(ctx, developerAddr, developer)\n\n\tretrievedDeveloper := k.GetDeveloper(ctx, developerAddr)\n\trequire.NotNil(t, retrievedDeveloper)\n\n\tk.removeDeveloper(ctx, developerAddr)\n\n\tretrievedDeveloper = k.GetDeveloper(ctx, developerAddr)\n\trequire.Nil(t, retrievedDeveloper)\n}\n\nfunc TestGetAndSetUserSubscription(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tuserSub := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.Nil(t, userSub)\n\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tnow := sdkCtx.BlockTime()\n\tcreditAmount := uint64(1000)\n\texpectedUserSub := &types.UserSubscription{\n\t\tDeveloper:    developerAddr.String(),\n\t\tUserDid:      userDid,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tk.SetUserSubscription(ctx, developerAddr, userDid, expectedUserSub)\n\n\tretrievedUserSub := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, retrievedUserSub)\n\trequire.Equal(t, expectedUserSub.Developer, retrievedUserSub.Developer)\n\trequire.Equal(t, expectedUserSub.UserDid, retrievedUserSub.UserDid)\n\trequire.Equal(t, expectedUserSub.CreditAmount, retrievedUserSub.CreditAmount)\n\trequire.Equal(t, expectedUserSub.Period, retrievedUserSub.Period)\n\trequire.True(t, expectedUserSub.StartDate.Equal(retrievedUserSub.StartDate))\n\trequire.True(t, expectedUserSub.LastRenewed.Equal(retrievedUserSub.LastRenewed))\n}\n\nfunc TestRemoveUserSubscription(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tcreditAmount := uint64(500)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tnow := sdkCtx.BlockTime()\n\tuserSub := &types.UserSubscription{\n\t\tDeveloper:    developerAddr.String(),\n\t\tUserDid:      userDid,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       7200,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\tk.SetUserSubscription(ctx, developerAddr, userDid, userSub)\n\n\tretrievedUserSub := k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.NotNil(t, retrievedUserSub)\n\n\tk.removeUserSubscription(ctx, developerAddr, userDid)\n\n\tretrievedUserSub = k.GetUserSubscription(ctx, developerAddr, userDid)\n\trequire.Nil(t, retrievedUserSub)\n}\n\nfunc TestMustIterateUserSubscriptions(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdev1Addr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdev2Addr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\tcreditAmount1 := uint64(1000)\n\tcreditAmount2 := uint64(2000)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tnow := sdkCtx.BlockTime()\n\n\tuserSub1 := &types.UserSubscription{\n\t\tDeveloper:    dev1Addr.String(),\n\t\tUserDid:      user1Did,\n\t\tCreditAmount: creditAmount1,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tuserSub2 := &types.UserSubscription{\n\t\tDeveloper:    dev2Addr.String(),\n\t\tUserDid:      user2Did,\n\t\tCreditAmount: creditAmount2,\n\t\tPeriod:       7200,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tk.SetUserSubscription(ctx, dev1Addr, user1Did, userSub1)\n\tk.SetUserSubscription(ctx, dev2Addr, user2Did, userSub2)\n\n\tvar foundSubscriptions []types.UserSubscription\n\tk.mustIterateUserSubscriptions(ctx, func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription) {\n\t\tfoundSubscriptions = append(foundSubscriptions, userSubscription)\n\t})\n\n\trequire.Len(t, foundSubscriptions, 2)\n\n\tfound1, found2 := false, false\n\tfor _, sub := range foundSubscriptions {\n\t\tif sub.Developer == dev1Addr.String() && sub.UserDid == user1Did {\n\t\t\tfound1 = true\n\t\t\trequire.Equal(t, creditAmount1, sub.CreditAmount)\n\t\t}\n\t\tif sub.Developer == dev2Addr.String() && sub.UserDid == user2Did {\n\t\t\tfound2 = true\n\t\t\trequire.Equal(t, creditAmount2, sub.CreditAmount)\n\t\t}\n\t}\n\trequire.True(t, found1, \"First subscription not found\")\n\trequire.True(t, found2, \"Second subscription not found\")\n}\n\nfunc TestMustIterateUserSubscriptionsForDeveloper(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdev1Addr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tdev2Addr, err := sdk.AccAddressFromBech32(\"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\")\n\trequire.NoError(t, err)\n\tuser1Did := \"did:key:alice\"\n\tuser2Did := \"did:key:bob\"\n\n\tcreditAmount := uint64(1000)\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tnow := sdkCtx.BlockTime()\n\n\tuserSub1 := &types.UserSubscription{\n\t\tDeveloper:    dev1Addr.String(),\n\t\tUserDid:      user1Did,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tuserSub2 := &types.UserSubscription{\n\t\tDeveloper:    dev1Addr.String(),\n\t\tUserDid:      user2Did,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tuserSub3 := &types.UserSubscription{\n\t\tDeveloper:    dev2Addr.String(),\n\t\tUserDid:      user1Did,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\n\tk.SetUserSubscription(ctx, dev1Addr, user1Did, userSub1)\n\tk.SetUserSubscription(ctx, dev1Addr, user2Did, userSub2)\n\tk.SetUserSubscription(ctx, dev2Addr, user1Did, userSub3)\n\n\tvar foundSubscriptions []types.UserSubscription\n\tk.mustIterateUserSubscriptionsForDeveloper(ctx, dev1Addr, func(developerAddr sdk.AccAddress, userDid string, userSubscription types.UserSubscription) {\n\t\tfoundSubscriptions = append(foundSubscriptions, userSubscription)\n\t})\n\n\trequire.Len(t, foundSubscriptions, 2, \"Should find exactly 2 subscriptions for dev1\")\n\n\tfor _, sub := range foundSubscriptions {\n\t\trequire.Equal(t, dev1Addr.String(), sub.Developer)\n\t}\n}\n\nfunc TestGetTotalDevGranted(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\ttotal, err := k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.True(t, total.IsZero())\n\n\tamount := math.NewInt(1500)\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, amount, true)\n\trequire.NoError(t, err)\n\n\ttotal, err = k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, amount, total)\n}\n\nfunc TestUpdateDeveloperTotalGranted(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\ttotal, err := k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.True(t, total.IsZero())\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewInt(1000), true)\n\trequire.NoError(t, err)\n\n\ttotal, err = k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, math.NewInt(1000), total)\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewInt(500), true)\n\trequire.NoError(t, err)\n\n\ttotal, err = k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, math.NewInt(1500), total)\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewInt(300), false)\n\trequire.NoError(t, err)\n\n\ttotal, err = k.getTotalDevGranted(ctx, developerAddr)\n\trequire.NoError(t, err)\n\trequire.Equal(t, math.NewInt(1200), total)\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewInt(2000), false)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"subtract\")\n}\n\nfunc TestValidateDeveloperCredits(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(1400))\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequire.NoError(t, k.Lock(ctx, developerAddr, valAddr, math.NewInt(1400)))\n\n\terr = k.validateDeveloperCredits(ctx, developerAddr, math.NewInt(1000))\n\trequire.NoError(t, err, \"Should pass when developer has enough credits\")\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewInt(1500), true)\n\trequire.NoError(t, err)\n\n\terr = k.validateDeveloperCredits(ctx, developerAddr, math.NewInt(300))\n\trequire.NoError(t, err, \"Should pass when requesting within available credits\")\n\n\terr = k.validateDeveloperCredits(ctx, developerAddr, math.NewInt(600))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"insufficient available credits\")\n}\n\nfunc TestGrantPeriodicAllowance(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tgranterAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tcreateAccount(t, &k, ctx, granterAddr)\n\n\tinitializeDelegator(t, &k, ctx, granterAddr, math.NewInt(1000))\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, math.NewInt(100)))\n\tperiod := time.Hour\n\n\terr = k.grantPeriodicDIDAllowance(ctx, granterAddr, userDid, spendLimit, period)\n\trequire.NoError(t, err)\n\n\tallowance, err := k.feegrantKeeper.GetDIDAllowance(ctx, granterAddr, userDid)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, allowance)\n\n\tperiodicAllowance, ok := allowance.(*feegrant.PeriodicAllowance)\n\trequire.True(t, ok, \"Expected PeriodicAllowance\")\n\trequire.Equal(t, spendLimit, periodicAllowance.Basic.SpendLimit)\n\trequire.Equal(t, period, periodicAllowance.Period)\n}\n\nfunc TestExpireAllowance(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tgranterAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tcreateAccount(t, &k, ctx, granterAddr)\n\n\tinitializeDelegator(t, &k, ctx, granterAddr, math.NewInt(1000))\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tnow := time.Now()\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(now)\n\n\tspendLimit := sdk.NewCoins(sdk.NewCoin(appparams.MicroCreditDenom, math.NewInt(100)))\n\tperiod := time.Hour\n\n\t// Grant periodic allowance\n\terr = k.grantPeriodicDIDAllowance(ctx, granterAddr, userDid, spendLimit, period)\n\trequire.NoError(t, err)\n\n\tctx = ctx.WithBlockHeight(2).WithBlockTime(now.Add(time.Minute))\n\n\t// Verify it's a periodic allowance before expiration\n\tallowance, err := k.feegrantKeeper.GetDIDAllowance(ctx, granterAddr, userDid)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, allowance)\n\n\tperiodic, ok := allowance.(*feegrant.PeriodicAllowance)\n\trequire.True(t, ok, \"Expected PeriodicAllowance before expiration\")\n\trequire.NotNil(t, periodic.PeriodReset)\n\n\toldPeriodReset := periodic.PeriodReset\n\n\t// Call ExpireDIDAllowance\n\terr = k.feegrantKeeper.ExpireDIDAllowance(ctx, granterAddr, userDid)\n\trequire.NoError(t, err)\n\n\t// Fetch updated allowance\n\tupdatedAllowance, err := k.feegrantKeeper.GetDIDAllowance(ctx, granterAddr, userDid)\n\trequire.NoError(t, err)\n\trequire.NotNil(t, updatedAllowance)\n\n\tupdatedPeriodic, ok := updatedAllowance.(*feegrant.PeriodicAllowance)\n\trequire.True(t, ok, \"Expected PeriodicAllowance after expiration\")\n\n\trequire.NotNil(t, updatedPeriodic.Basic.Expiration, \"Expected expiration to be set in BasicAllowance\")\n\n\t// The expiration should match the old period reset\n\trequire.True(t, updatedPeriodic.Basic.Expiration.Equal(oldPeriodReset),\n\t\t\"Expected expiration to equal previous PeriodReset\")\n\n\t// Sanity check: expiration should be after current block time (not immediate)\n\trequire.True(t, updatedPeriodic.Basic.Expiration.After(ctx.BlockTime()),\n\t\t\"Expiration should be after current block time\")\n\n\t// Also, period and spend limits should remain unchanged\n\trequire.Equal(t, period, updatedPeriodic.Period)\n\trequire.Equal(t, spendLimit, updatedPeriodic.PeriodSpendLimit)\n}\n\nfunc TestCheckDeveloperCredits(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tuserDid := \"did:key:alice\"\n\n\tinitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(1000))\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\t// Set up a user subscription that requires more credits than available\n\tsdkCtx := sdk.UnwrapSDKContext(ctx)\n\tnow := sdkCtx.BlockTime()\n\tcreditAmount := uint64(2000)\n\tuserSub := &types.UserSubscription{\n\t\tDeveloper:    developerAddr.String(),\n\t\tUserDid:      userDid,\n\t\tCreditAmount: creditAmount,\n\t\tPeriod:       3600,\n\t\tStartDate:    now,\n\t\tLastRenewed:  now,\n\t}\n\tk.SetUserSubscription(ctx, developerAddr, userDid, userSub)\n\n\terr = k.updateDeveloperTotalGranted(ctx, developerAddr, math.NewIntFromUint64(creditAmount), true)\n\trequire.NoError(t, err)\n\n\tdeveloper := &types.Developer{\n\t\tAddress:         developerAddr.String(),\n\t\tAutoLockEnabled: false,\n\t}\n\tk.SetDeveloper(ctx, developerAddr, developer)\n\n\terr = k.checkDeveloperCredits(ctx, 1)\n\trequire.NoError(t, err)\n\n\t// Check that an event was emitted for insufficient credits\n\tsdkCtx = sdk.UnwrapSDKContext(ctx)\n\tevents := sdkCtx.EventManager().Events()\n\tfoundEvent := false\n\tfor _, event := range events {\n\t\tif event.Type == \"developer_insufficient_credits\" {\n\t\t\tfoundEvent = true\n\t\t\tbreak\n\t\t}\n\t}\n\trequire.True(t, foundEvent, \"Should emit developer_insufficient_credits event\")\n}\n\nfunc TestAutoLockDeveloperCredits(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(1000))\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\tdeveloper := &types.Developer{\n\t\tAddress:         developerAddr.String(),\n\t\tAutoLockEnabled: true,\n\t}\n\n\terr = k.autoLockDeveloperCredits(ctx, developerAddr, developer, math.ZeroInt())\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"auto-lock amount must be positive\")\n\n\terr = k.autoLockDeveloperCredits(ctx, developerAddr, developer, math.NewInt(-100))\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"auto-lock amount must be positive\")\n\n}\n\nfunc TestAddLockupForRegistration(t *testing.T) {\n\tk, ctx := setupKeeper(t)\n\n\tdeveloperAddr, err := sdk.AccAddressFromBech32(\"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\")\n\trequire.NoError(t, err)\n\n\tinitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(500))\n\n\tvalAddr, err := sdk.ValAddressFromBech32(\"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\")\n\trequire.NoError(t, err)\n\n\tinitializeValidator(t, k.GetStakingKeeper().(*stakingkeeper.Keeper), ctx, valAddr, math.NewInt(1_000_000))\n\n\tctx = ctx.WithBlockHeight(1).WithBlockTime(time.Now())\n\n\trequiredAmount := math.NewInt(300)\n\terr = k.addLockupForRegistration(ctx, developerAddr, requiredAmount)\n\trequire.NoError(t, err)\n\n\trequiredAmount = math.NewInt(1000)\n\n\t// We need 670 uopen to get 1000 ucredit with current rate, but developer only has 200 uopen\n\terr = k.addLockupForRegistration(ctx, developerAddr, requiredAmount)\n\trequire.Error(t, err)\n\trequire.ErrorContains(t, err, \"insufficient funds\")\n\n\tinitializeDelegator(t, &k, ctx, developerAddr, math.NewInt(470)) // 200 + 470 = 670\n\terr = k.addLockupForRegistration(ctx, developerAddr, requiredAmount)\n\trequire.NoError(t, err)\n}\n"
  },
  {
    "path": "x/tier/module/autocli.go",
    "content": "package tier\n\nimport (\n\tautocliv1 \"cosmossdk.io/api/cosmos/autocli/v1\"\n\n\tmodulev1beta1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/tier/v1beta1\"\n)\n\n// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface.\nfunc (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {\n\treturn &autocliv1.ModuleOptions{\n\t\tQuery: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService: modulev1beta1.Query_ServiceDesc.ServiceName,\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Params\",\n\t\t\t\t\tUse:       \"params\",\n\t\t\t\t\tShort:     \"Shows the parameters of the module\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Lockup\",\n\t\t\t\t\tUse:            \"lockup [delegator-address] [validator-address]\",\n\t\t\t\t\tShort:          \"Query a locked stake based on address and validator address\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"delegator_address\"}, {ProtoField: \"validator_address\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Lockups\",\n\t\t\t\t\tUse:            \"lockups [delegator-address]\",\n\t\t\t\t\tShort:          \"Query all locked stakes made by the delegator\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"delegator_address\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"UnlockingLockup\",\n\t\t\t\t\tUse:            \"unlocking-lockup [delegator-address] [validator-address] [creation-height]\",\n\t\t\t\t\tShort:          \"Query an unlocking stake based on address and validator address\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"delegator_address\"}, {ProtoField: \"validator_address\"}, {ProtoField: \"creation_height\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"UnlockingLockups\",\n\t\t\t\t\tUse:            \"unlocking-lockups [delegator-address]\",\n\t\t\t\t\tShort:          \"Query all unlocking stakes made by the delegator\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"delegator_address\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"Developers\",\n\t\t\t\t\tUse:       \"developers\",\n\t\t\t\t\tShort:     \"Query all registered developers\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"UserSubscriptions\",\n\t\t\t\t\tUse:            \"user-subscriptions [developer]\",\n\t\t\t\t\tShort:          \"Query all user subscriptions for a specific developer\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"developer\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tTx: &autocliv1.ServiceCommandDescriptor{\n\t\t\tService:              modulev1beta1.Msg_ServiceDesc.ServiceName,\n\t\t\tEnhanceCustomCommand: true, // only required if you want to use the custom command\n\t\t\tRpcCommandOptions: []*autocliv1.RpcCommandOptions{\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"UpdateParams\",\n\t\t\t\t\tSkip:      true, // skipped because authority gated\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Lock\",\n\t\t\t\t\tUse:            \"lock [validator-address] [stake]\",\n\t\t\t\t\tShort:          \"Send a lock tx\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"validator_address\"}, {ProtoField: \"stake\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"LockAuto\",\n\t\t\t\t\tUse:            \"lock-auto [stake]\",\n\t\t\t\t\tShort:          \"Send a lock tx with automatic validator selection\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"stake\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Unlock\",\n\t\t\t\t\tUse:            \"unlock [validator-address] [amount]\",\n\t\t\t\t\tShort:          \"Send a unlock tx\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"validator_address\"}, {ProtoField: \"stake\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"Redelegate\",\n\t\t\t\t\tUse:            \"redelegate [src-validator-address] [dst-validator-address] [stake]\",\n\t\t\t\t\tShort:          \"Send a redelegate tx\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"src_validator_address\"}, {ProtoField: \"dst_validator_address\"}, {ProtoField: \"stake\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"CancelUnlocking\",\n\t\t\t\t\tUse:            \"cancel-unlocking [validator-address] [stake] [creation-height]\",\n\t\t\t\t\tShort:          \"Send a cancel-unlocking tx\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"validator_address\"}, {ProtoField: \"stake\"}, {ProtoField: \"creation_height\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"CreateDeveloper\",\n\t\t\t\t\tUse:            \"create-developer [auto-lock-enabled]\",\n\t\t\t\t\tShort:          \"Create a developer\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"auto_lock_enabled\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"UpdateDeveloper\",\n\t\t\t\t\tUse:            \"update-developer [auto-lock-enabled]\",\n\t\t\t\t\tShort:          \"Update a developer\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"auto_lock_enabled\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod: \"RemoveDeveloper\",\n\t\t\t\t\tUse:       \"remove-developer\",\n\t\t\t\t\tShort:     \"Remove a developer\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"AddUserSubscription\",\n\t\t\t\t\tUse:            \"add-user-subscription [user-did] [amount] [period]\",\n\t\t\t\t\tShort:          \"Add a user subscription\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"user_did\"}, {ProtoField: \"amount\"}, {ProtoField: \"period\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"UpdateUserSubscription\",\n\t\t\t\t\tUse:            \"update-user-subscription [user-did] [amount] [period]\",\n\t\t\t\t\tShort:          \"Update a user subscription\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"user_did\"}, {ProtoField: \"amount\"}, {ProtoField: \"period\"}},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tRpcMethod:      \"RemoveUserSubscription\",\n\t\t\t\t\tUse:            \"remove-user-subscription [user-did]\",\n\t\t\t\t\tShort:          \"Remove a user subscription\",\n\t\t\t\t\tPositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: \"user_did\"}},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n"
  },
  {
    "path": "x/tier/module/genesis.go",
    "content": "package tier\n\nimport (\n\t\"context\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// InitGenesis initializes the module's state from a provided genesis state.\nfunc InitGenesis(ctx context.Context, k *keeper.Keeper, genState types.GenesisState) {\n\tif err := k.SetParams(ctx, genState.Params); err != nil {\n\t\tpanic(err)\n\t}\n\n\tfor _, lockup := range genState.Lockups {\n\t\tdelAddr := sdk.MustAccAddressFromBech32(lockup.DelegatorAddress)\n\t\tvalAddr := types.MustValAddressFromBech32(lockup.ValidatorAddress)\n\t\tk.AddLockup(ctx, delAddr, valAddr, lockup.Amount)\n\t}\n\n\tfor _, unlockingLockup := range genState.UnlockingLockups {\n\t\tdelAddr := sdk.MustAccAddressFromBech32(unlockingLockup.DelegatorAddress)\n\t\tvalAddr := types.MustValAddressFromBech32(unlockingLockup.ValidatorAddress)\n\t\tif !k.HasUnlockingLockup(ctx, delAddr, valAddr, unlockingLockup.CreationHeight) {\n\t\t\tk.SetUnlockingLockup(\n\t\t\t\tctx,\n\t\t\t\tdelAddr,\n\t\t\t\tvalAddr,\n\t\t\t\tunlockingLockup.CreationHeight,\n\t\t\t\tunlockingLockup.Amount,\n\t\t\t\tunlockingLockup.CompletionTime,\n\t\t\t\tunlockingLockup.UnlockTime,\n\t\t\t)\n\t\t}\n\t}\n\n\tfor _, insuranceLockup := range genState.InsuranceLockups {\n\t\tdelAddr := sdk.MustAccAddressFromBech32(insuranceLockup.DelegatorAddress)\n\t\tvalAddr := types.MustValAddressFromBech32(insuranceLockup.ValidatorAddress)\n\t\tk.AddInsuranceLockup(ctx, delAddr, valAddr, insuranceLockup.Amount)\n\t}\n\n\tfor _, developer := range genState.Developers {\n\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(developer.Address)\n\t\tk.SetDeveloper(ctx, developerAddr, &developer)\n\t}\n\n\tfor _, userSubscription := range genState.UserSubscriptions {\n\t\tdeveloperAddr := sdk.MustAccAddressFromBech32(userSubscription.Developer)\n\t\tk.SetUserSubscription(ctx, developerAddr, userSubscription.UserDid, &userSubscription)\n\t}\n}\n\n// ExportGenesis returns the module's exported genesis.\nfunc ExportGenesis(ctx context.Context, k *keeper.Keeper) *types.GenesisState {\n\tgenesis := types.DefaultGenesis()\n\tgenesis.Params = k.GetParams(ctx)\n\n\tgenesis.Lockups = k.GetAllLockups(ctx)\n\tgenesis.UnlockingLockups = k.GetAllUnlockingLockups(ctx)\n\tgenesis.InsuranceLockups = k.GetAllInsuranceLockups(ctx)\n\tgenesis.Developers = k.GetAllDevelopers(ctx)\n\tgenesis.UserSubscriptions = k.GetAllUserSubscriptions(ctx)\n\n\treturn genesis\n}\n"
  },
  {
    "path": "x/tier/module/genesis_test.go",
    "content": "package tier_test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"cosmossdk.io/math\"\n\t\"github.com/sourcenetwork/sourcehub/app\"\n\tkeepertest \"github.com/sourcenetwork/sourcehub/testutil/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/nullify\"\n\ttier \"github.com/sourcenetwork/sourcehub/x/tier/module\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc init() {\n\tapp.SetConfig(true)\n}\n\nfunc TestGenesis(t *testing.T) {\n\ttimestamp1 := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\ttimestamp2 := time.Date(2006, time.January, 2, 15, 4, 5, 2, time.UTC)\n\ttimestamp3 := time.Date(2006, time.January, 2, 15, 4, 5, 3, time.UTC)\n\ttimestamp4 := time.Date(2006, time.January, 2, 15, 4, 5, 4, time.UTC)\n\ttimestamp5 := time.Date(2006, time.January, 2, 15, 4, 5, 5, time.UTC)\n\ttimestamp6 := time.Date(2006, time.January, 2, 15, 4, 5, 6, time.UTC)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tLockups: []types.Lockup{\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(1000),\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(500),\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(2000),\n\t\t\t},\n\t\t},\n\t\tUnlockingLockups: []types.UnlockingLockup{\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(1000),\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tCompletionTime:   timestamp1,\n\t\t\t\tUnlockTime:       timestamp4,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(500),\n\t\t\t\tCreationHeight:   2,\n\t\t\t\tCompletionTime:   timestamp2,\n\t\t\t\tUnlockTime:       timestamp5,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(2000),\n\t\t\t\tCreationHeight:   3,\n\t\t\t\tCompletionTime:   timestamp3,\n\t\t\t\tUnlockTime:       timestamp6,\n\t\t\t},\n\t\t},\n\t\tDevelopers: []types.Developer{\n\t\t\t{\n\t\t\t\tAddress:         \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tAddress:         \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tAutoLockEnabled: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tAddress:         \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t},\n\t\tUserSubscriptions: []types.UserSubscription{\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tUserDid:      \"did:key:alice\",\n\t\t\t\tCreditAmount: uint64(1000),\n\t\t\t\tPeriod:       30,\n\t\t\t\tStartDate:    timestamp1,\n\t\t\t\tLastRenewed:  timestamp2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tUserDid:      \"did:key:bob\",\n\t\t\t\tCreditAmount: uint64(500),\n\t\t\t\tPeriod:       60,\n\t\t\t\tStartDate:    timestamp3,\n\t\t\t\tLastRenewed:  timestamp4,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tUserDid:      \"did:key:charlie\",\n\t\t\t\tCreditAmount: uint64(2000),\n\t\t\t\tPeriod:       90,\n\t\t\t\tStartDate:    timestamp5,\n\t\t\t\tLastRenewed:  timestamp6,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.TierKeeper(t)\n\ttier.InitGenesis(ctx, &k, genesisState)\n\tgot := tier.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\trequire.Equal(t, len(genesisState.Lockups), len(got.Lockups))\n\n\tfor i, lockup := range genesisState.Lockups {\n\t\trequire.Equal(t, lockup.DelegatorAddress, got.Lockups[i].DelegatorAddress)\n\t\trequire.Equal(t, lockup.ValidatorAddress, got.Lockups[i].ValidatorAddress)\n\t\trequire.Equal(t, lockup.Amount, got.Lockups[i].Amount)\n\t}\n\n\tfor i, unlockingLockup := range genesisState.UnlockingLockups {\n\t\trequire.Equal(t, unlockingLockup.DelegatorAddress, got.UnlockingLockups[i].DelegatorAddress)\n\t\trequire.Equal(t, unlockingLockup.ValidatorAddress, got.UnlockingLockups[i].ValidatorAddress)\n\t\trequire.Equal(t, unlockingLockup.Amount, got.UnlockingLockups[i].Amount)\n\t\trequire.Equal(t, unlockingLockup.CreationHeight, got.UnlockingLockups[i].CreationHeight)\n\t\trequire.Equal(t, unlockingLockup.CompletionTime.UTC(), got.UnlockingLockups[i].CompletionTime.UTC())\n\t\trequire.Equal(t, unlockingLockup.UnlockTime.UTC(), got.UnlockingLockups[i].UnlockTime.UTC())\n\t}\n\n\trequire.Equal(t, len(genesisState.Developers), len(got.Developers))\n\tfor i, developer := range genesisState.Developers {\n\t\trequire.Equal(t, developer.Address, got.Developers[i].Address)\n\t\trequire.Equal(t, developer.AutoLockEnabled, got.Developers[i].AutoLockEnabled)\n\t}\n\n\trequire.Equal(t, len(genesisState.UserSubscriptions), len(got.UserSubscriptions))\n\tfor i, userSubscription := range genesisState.UserSubscriptions {\n\t\trequire.Equal(t, userSubscription.Developer, got.UserSubscriptions[i].Developer)\n\t\trequire.Equal(t, userSubscription.UserDid, got.UserSubscriptions[i].UserDid)\n\t\trequire.Equal(t, userSubscription.CreditAmount, got.UserSubscriptions[i].CreditAmount)\n\t\trequire.Equal(t, userSubscription.Period, got.UserSubscriptions[i].Period)\n\t\trequire.Equal(t, userSubscription.StartDate.UTC(), got.UserSubscriptions[i].StartDate.UTC())\n\t\trequire.Equal(t, userSubscription.LastRenewed.UTC(), got.UserSubscriptions[i].LastRenewed.UTC())\n\t}\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithMultipleIdenticalLockups(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tLockups: []types.Lockup{\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(1000),\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(2000),\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(3000),\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.TierKeeper(t)\n\ttier.InitGenesis(ctx, &k, genesisState)\n\tgot := tier.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\t// Lockups with identical del/val are added and exported as a single record.\n\trequire.Equal(t, 1, len(got.Lockups))\n\trequire.Equal(t, int64(6000), got.Lockups[0].Amount.Int64())\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithMultipleIdenticalUnlockingLockups(t *testing.T) {\n\ttimestamp1 := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\ttimestamp2 := time.Date(2006, time.January, 2, 15, 4, 5, 2, time.UTC)\n\ttimestamp3 := time.Date(2006, time.January, 2, 15, 4, 5, 3, time.UTC)\n\ttimestamp4 := time.Date(2006, time.January, 2, 15, 4, 5, 4, time.UTC)\n\ttimestamp5 := time.Date(2006, time.January, 2, 15, 4, 5, 5, time.UTC)\n\ttimestamp6 := time.Date(2006, time.January, 2, 15, 4, 5, 6, time.UTC)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tUnlockingLockups: []types.UnlockingLockup{\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(1000),\n\t\t\t\tCreationHeight:   1,\n\t\t\t\tCompletionTime:   timestamp1,\n\t\t\t\tUnlockTime:       timestamp4,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(2000),\n\t\t\t\tCreationHeight:   2,\n\t\t\t\tCompletionTime:   timestamp2,\n\t\t\t\tUnlockTime:       timestamp5,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDelegatorAddress: \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tValidatorAddress: \"sourcevaloper1cy0p47z24ejzvq55pu3lesxwf73xnrnd0pzkqm\",\n\t\t\t\tAmount:           math.NewInt(3000),\n\t\t\t\tCreationHeight:   3,\n\t\t\t\tCompletionTime:   timestamp3,\n\t\t\t\tUnlockTime:       timestamp6,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.TierKeeper(t)\n\ttier.InitGenesis(ctx, &k, genesisState)\n\tgot := tier.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\t// Unlocking lockups with identical del/val and different creationHeight are added and exported separately.\n\trequire.Equal(t, 3, len(got.UnlockingLockups))\n\trequire.Equal(t, int64(1000), got.UnlockingLockups[0].Amount.Int64())\n\trequire.Equal(t, int64(2000), got.UnlockingLockups[1].Amount.Int64())\n\trequire.Equal(t, int64(3000), got.UnlockingLockups[2].Amount.Int64())\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithMultipleDevelopers(t *testing.T) {\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tDevelopers: []types.Developer{\n\t\t\t{\n\t\t\t\tAddress:         \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tAddress:         \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tAutoLockEnabled: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tAddress:         \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\",\n\t\t\t\tAutoLockEnabled: true,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.TierKeeper(t)\n\ttier.InitGenesis(ctx, &k, genesisState)\n\tgot := tier.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\t// All developers should be exported correctly\n\trequire.Equal(t, 3, len(got.Developers))\n\trequire.Equal(t, \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\", got.Developers[0].Address)\n\trequire.Equal(t, true, got.Developers[0].AutoLockEnabled)\n\trequire.Equal(t, \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\", got.Developers[1].Address)\n\trequire.Equal(t, false, got.Developers[1].AutoLockEnabled)\n\trequire.Equal(t, \"source1m4f5a896t7fzd9vc7pfgmc3fxkj8n24s68fcw9\", got.Developers[2].Address)\n\trequire.Equal(t, true, got.Developers[2].AutoLockEnabled)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n\nfunc TestInitWithMultipleUserSubscriptions(t *testing.T) {\n\ttimestamp1 := time.Date(2006, time.January, 2, 15, 4, 5, 1, time.UTC)\n\ttimestamp2 := time.Date(2006, time.January, 2, 15, 4, 5, 2, time.UTC)\n\ttimestamp3 := time.Date(2006, time.January, 2, 15, 4, 5, 3, time.UTC)\n\n\tgenesisState := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\tUserSubscriptions: []types.UserSubscription{\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tUserDid:      \"did:key:alice\",\n\t\t\t\tCreditAmount: uint64(1000),\n\t\t\t\tPeriod:       30,\n\t\t\t\tStartDate:    timestamp1,\n\t\t\t\tLastRenewed:  timestamp2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\",\n\t\t\t\tUserDid:      \"did:key:bob\",\n\t\t\t\tCreditAmount: uint64(500),\n\t\t\t\tPeriod:       60,\n\t\t\t\tStartDate:    timestamp2,\n\t\t\t\tLastRenewed:  timestamp3,\n\t\t\t},\n\t\t\t{\n\t\t\t\tDeveloper:    \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\",\n\t\t\t\tUserDid:      \"did:key:charlie\",\n\t\t\t\tCreditAmount: uint64(2000),\n\t\t\t\tPeriod:       90,\n\t\t\t\tStartDate:    timestamp3,\n\t\t\t\tLastRenewed:  timestamp1,\n\t\t\t},\n\t\t},\n\t}\n\n\tk, ctx := keepertest.TierKeeper(t)\n\ttier.InitGenesis(ctx, &k, genesisState)\n\tgot := tier.ExportGenesis(ctx, &k)\n\trequire.NotNil(t, got)\n\trequire.Equal(t, genesisState.Params, got.Params)\n\n\t// All user subscriptions should be exported correctly\n\trequire.Equal(t, 3, len(got.UserSubscriptions))\n\trequire.Equal(t, \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\", got.UserSubscriptions[0].Developer)\n\trequire.Equal(t, \"did:key:alice\", got.UserSubscriptions[0].UserDid)\n\trequire.Equal(t, uint64(1000), got.UserSubscriptions[0].CreditAmount)\n\trequire.Equal(t, uint64(30), got.UserSubscriptions[0].Period)\n\trequire.Equal(t, \"source1wjj5v5rlf57kayyeskncpu4hwev25ty645p2et\", got.UserSubscriptions[1].Developer)\n\trequire.Equal(t, \"did:key:bob\", got.UserSubscriptions[1].UserDid)\n\trequire.Equal(t, uint64(500), got.UserSubscriptions[1].CreditAmount)\n\trequire.Equal(t, uint64(60), got.UserSubscriptions[1].Period)\n\trequire.Equal(t, \"source1n34fvpteuanu2nx2a4hql4jvcrcnal3gsrjppy\", got.UserSubscriptions[2].Developer)\n\trequire.Equal(t, \"did:key:charlie\", got.UserSubscriptions[2].UserDid)\n\trequire.Equal(t, uint64(2000), got.UserSubscriptions[2].CreditAmount)\n\trequire.Equal(t, uint64(90), got.UserSubscriptions[2].Period)\n\n\tnullify.Fill(&genesisState)\n\tnullify.Fill(got)\n}\n"
  },
  {
    "path": "x/tier/module/module.go",
    "content": "package tier\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"cosmossdk.io/core/appmodule\"\n\t\"cosmossdk.io/core/store\"\n\t\"cosmossdk.io/depinject\"\n\t\"cosmossdk.io/log\"\n\t\"github.com/cosmos/cosmos-sdk/client\"\n\t\"github.com/cosmos/cosmos-sdk/codec\"\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tauthtypes \"github.com/cosmos/cosmos-sdk/x/auth/types\"\n\tgovtypes \"github.com/cosmos/cosmos-sdk/x/gov/types\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\n\t// this line is used by starport scaffolding # 1\n\n\tmodulev1beta1 \"github.com/sourcenetwork/sourcehub/api/sourcehub/tier/module/v1beta1\"\n\t\"github.com/sourcenetwork/sourcehub/app/metrics\"\n\n\tacpkeeper \"github.com/sourcenetwork/sourcehub/x/acp/keeper\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nvar (\n\t_ module.AppModuleBasic      = (*AppModule)(nil)\n\t_ module.AppModuleSimulation = (*AppModule)(nil)\n\t_ module.HasGenesis          = (*AppModule)(nil)\n\t_ module.HasInvariants       = (*AppModule)(nil)\n\t_ module.HasConsensusVersion = (*AppModule)(nil)\n\n\t_ appmodule.AppModule       = (*AppModule)(nil)\n\t_ appmodule.HasBeginBlocker = (*AppModule)(nil)\n\t_ appmodule.HasEndBlocker   = (*AppModule)(nil)\n)\n\n// ----------------------------------------------------------------------------\n// AppModuleBasic\n// ----------------------------------------------------------------------------\n\n// AppModuleBasic implements the AppModuleBasic interface that defines the\n// independent methods a Cosmos SDK module needs to implement.\ntype AppModuleBasic struct {\n\tcdc codec.BinaryCodec\n}\n\nfunc NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic {\n\treturn AppModuleBasic{cdc: cdc}\n}\n\n// Name returns the name of the module as a string.\nfunc (AppModuleBasic) Name() string {\n\treturn types.ModuleName\n}\n\n// RegisterLegacyAminoCodec registers the amino codec for the module, which is used\n// to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore.\nfunc (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {}\n\n// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message.\nfunc (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {\n\ttypes.RegisterInterfaces(reg)\n}\n\n// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage.\n// The default GenesisState need to be defined by the module developer and is primarily used for testing.\nfunc (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage {\n\treturn cdc.MustMarshalJSON(types.DefaultGenesis())\n}\n\n// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form.\nfunc (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error {\n\tvar genState types.GenesisState\n\tif err := cdc.UnmarshalJSON(bz, &genState); err != nil {\n\t\treturn fmt.Errorf(\"failed to unmarshal %s genesis state: %w\", types.ModuleName, err)\n\t}\n\treturn genState.Validate()\n}\n\n// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.\nfunc (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {\n\tif err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// ----------------------------------------------------------------------------\n// AppModule\n// ----------------------------------------------------------------------------\n\n// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement\ntype AppModule struct {\n\tAppModuleBasic\n\n\tkeeper     *keeper.Keeper\n\tbankKeeper types.BankKeeper\n}\n\nfunc NewAppModule(\n\tcdc codec.Codec,\n\tkeeper *keeper.Keeper,\n\tbankKeeper types.BankKeeper,\n) AppModule {\n\treturn AppModule{\n\t\tAppModuleBasic: NewAppModuleBasic(cdc),\n\t\tkeeper:         keeper,\n\t\tbankKeeper:     bankKeeper,\n\t}\n}\n\n// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries\nfunc (am AppModule) RegisterServices(cfg module.Configurator) {\n\t// Inject instrumentation into msg service handler\n\tdescriptor := metrics.WrapMsgServerServiceDescriptor(types.ModuleName, types.Msg_serviceDesc)\n\tcfg.MsgServer().RegisterService(&descriptor, keeper.NewMsgServerImpl(am.keeper))\n\n\t// Inject instrumentation into query service handler\n\tdescriptor = metrics.WrapQueryServiceDescriptor(types.ModuleName, types.Query_serviceDesc)\n\tcfg.QueryServer().RegisterService(&descriptor, am.keeper)\n}\n\n// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted)\nfunc (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}\n\n// InitGenesis performs the module's genesis initialization. It returns no validator updates.\nfunc (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) {\n\tvar genState types.GenesisState\n\t// Initialize global index to index in genesis state\n\tcdc.MustUnmarshalJSON(gs, &genState)\n\n\tInitGenesis(ctx, am.keeper, genState)\n}\n\n// ExportGenesis returns the module's exported genesis state as raw JSON bytes.\nfunc (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage {\n\tgenState := ExportGenesis(ctx, am.keeper)\n\treturn cdc.MustMarshalJSON(genState)\n}\n\n// ConsensusVersion is a sequence number for state-breaking change of the module.\n// It should be incremented on each consensus-breaking change introduced by the module.\n// To avoid wrong/empty versions, the initial version should be set to 1.\nfunc (AppModule) ConsensusVersion() uint64 { return 1 }\n\n// BeginBlock contains the logic that is automatically triggered at the beginning of each block.\n// The begin block implementation is optional.\nfunc (am AppModule) BeginBlock(ctx context.Context) error {\n\treturn am.keeper.BeginBlocker(ctx)\n}\n\n// EndBlock contains the logic that is automatically triggered at the end of each block.\n// The end block implementation is optional.\nfunc (am AppModule) EndBlock(_ context.Context) error {\n\treturn nil\n}\n\n// IsOnePerModuleType implements the depinject.OnePerModuleType interface.\nfunc (am AppModule) IsOnePerModuleType() {}\n\n// IsAppModule implements the appmodule.AppModule interface.\nfunc (am AppModule) IsAppModule() {}\n\n// ----------------------------------------------------------------------------\n// App Wiring Setup\n// ----------------------------------------------------------------------------\n\nfunc init() {\n\tappmodule.Register(\n\t\t&modulev1beta1.Module{},\n\t\tappmodule.Provide(ProvideModule),\n\t)\n}\n\ntype ModuleInputs struct {\n\tdepinject.In\n\n\tStoreService store.KVStoreService\n\tCdc          codec.Codec\n\tConfig       *modulev1beta1.Module\n\tLogger       log.Logger\n\n\tBankKeeper         types.BankKeeper\n\tStakingKeeper      types.StakingKeeper\n\tEpochsKeeper       types.EpochsKeeper\n\tDistributionKeeper types.DistributionKeeper\n\tFeegrantKeeper     types.FeegrantKeeper\n\tAcpKeeper          *acpkeeper.Keeper\n}\n\ntype ModuleOutputs struct {\n\tdepinject.Out\n\n\tTierKeeper *keeper.Keeper\n\tModule     appmodule.AppModule\n\tHooks      epochstypes.EpochsHooksWrapper\n}\n\nfunc ProvideModule(in ModuleInputs) ModuleOutputs {\n\t// default to governance authority if not provided\n\tauthority := authtypes.NewModuleAddress(govtypes.ModuleName)\n\tif in.Config.Authority != \"\" {\n\t\tauthority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)\n\t}\n\tk := keeper.NewKeeper(\n\t\tin.Cdc,\n\t\tin.StoreService,\n\t\tin.Logger,\n\t\tauthority.String(),\n\t\tin.BankKeeper,\n\t\tin.StakingKeeper,\n\t\tin.EpochsKeeper,\n\t\tin.DistributionKeeper,\n\t\tin.FeegrantKeeper,\n\t\tin.AcpKeeper,\n\t)\n\n\tm := NewAppModule(\n\t\tin.Cdc,\n\t\t&k,\n\t\tin.BankKeeper,\n\t)\n\n\treturn ModuleOutputs{\n\t\tTierKeeper: &k,\n\t\tModule:     m,\n\t\tHooks:      epochstypes.EpochsHooksWrapper{EpochHooks: k.EpochHooks()},\n\t}\n}\n"
  },
  {
    "path": "x/tier/module/simulation.go",
    "content": "package tier\n\nimport (\n\t\"math/rand\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/module\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\t\"github.com/cosmos/cosmos-sdk/x/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n\ttiersimulation \"github.com/sourcenetwork/sourcehub/x/tier/simulation\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\n// avoid unused import issue\nvar (\n\t_ = tiersimulation.FindAccount\n\t_ = rand.Rand{}\n\t_ = sample.RandomAccAddress().String()\n\t_ = sdk.AccAddress{}\n\t_ = simulation.MsgEntryKind\n)\n\nconst (\n\topWeightMsgLockStake = \"op_weight_msg_lock_stake\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgLockStake int = 100\n\n\topWeightMsgUnlockStake = \"op_weight_msg_unlock_stake\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgUnlockStake int = 100\n\n\topWeightMsgRedelegateStake = \"op_weight_msg_redelegate_stake\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgRedelegateStake int = 100\n\n\topWeightMsgCancelUnlockingStake = \"op_weight_msg_cancel_unlocking_stake\"\n\t// TODO: Determine the simulation weight value\n\tdefaultWeightMsgCancelUnlockingStake int = 100\n\n\t// this line is used by starport scaffolding # simapp/module/const\n)\n\n// GenerateGenesisState creates a randomized GenState of the module.\nfunc (AppModule) GenerateGenesisState(simState *module.SimulationState) {\n\taccs := make([]string, len(simState.Accounts))\n\tfor i, acc := range simState.Accounts {\n\t\taccs[i] = acc.Address.String()\n\t}\n\ttierGenesis := types.GenesisState{\n\t\tParams: types.DefaultParams(),\n\t\t// this line is used by starport scaffolding # simapp/module/genesisState\n\t}\n\tsimState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&tierGenesis)\n}\n\n// RegisterStoreDecoder registers a decoder.\nfunc (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {}\n\n// WeightedOperations returns the all the gov module operations with their respective weights.\nfunc (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation {\n\toperations := make([]simtypes.WeightedOperation, 0)\n\n\tvar weightMsgLockStake int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgLockStake, &weightMsgLockStake, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgLockStake = defaultWeightMsgLockStake\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgLockStake,\n\t\ttiersimulation.SimulateMsgLockStake(am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgUnlockStake int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgUnlockStake, &weightMsgUnlockStake, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgUnlockStake = defaultWeightMsgUnlockStake\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgUnlockStake,\n\t\ttiersimulation.SimulateMsgUnlockStake(am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgRedelegateStake int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgRedelegateStake, &weightMsgRedelegateStake, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgRedelegateStake = defaultWeightMsgRedelegateStake\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgRedelegateStake,\n\t\ttiersimulation.SimulateMsgRedelegateStake(am.bankKeeper, am.keeper),\n\t))\n\n\tvar weightMsgCancelUnlockingStake int\n\tsimState.AppParams.GetOrGenerate(opWeightMsgCancelUnlockingStake, &weightMsgCancelUnlockingStake, nil,\n\t\tfunc(_ *rand.Rand) {\n\t\t\tweightMsgCancelUnlockingStake = defaultWeightMsgCancelUnlockingStake\n\t\t},\n\t)\n\toperations = append(operations, simulation.NewWeightedOperation(\n\t\tweightMsgCancelUnlockingStake,\n\t\ttiersimulation.SimulateMsgCancelUnlockingStake(am.bankKeeper, am.keeper),\n\t))\n\n\t// this line is used by starport scaffolding # simapp/module/operation\n\n\treturn operations\n}\n\n// ProposalMsgs returns msgs used for governance proposals for simulations.\nfunc (am AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg {\n\treturn []simtypes.WeightedProposalMsg{\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgLockStake,\n\t\t\tdefaultWeightMsgLockStake,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\ttiersimulation.SimulateMsgLockStake(am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgUnlockStake,\n\t\t\tdefaultWeightMsgUnlockStake,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\ttiersimulation.SimulateMsgUnlockStake(am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgRedelegateStake,\n\t\t\tdefaultWeightMsgRedelegateStake,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\ttiersimulation.SimulateMsgRedelegateStake(am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\tsimulation.NewWeightedProposalMsg(\n\t\t\topWeightMsgCancelUnlockingStake,\n\t\t\tdefaultWeightMsgCancelUnlockingStake,\n\t\t\tfunc(r *rand.Rand, ctx sdk.Context, accs []simtypes.Account) sdk.Msg {\n\t\t\t\ttiersimulation.SimulateMsgCancelUnlockingStake(am.bankKeeper, am.keeper)\n\t\t\t\treturn nil\n\t\t\t},\n\t\t),\n\t\t// this line is used by starport scaffolding # simapp/module/OpMsg\n\t}\n}\n"
  },
  {
    "path": "x/tier/simulation/cancel_unlocking.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc SimulateMsgCancelUnlockingStake(\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgCancelUnlocking{\n\t\t\tDelegatorAddress: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the CancelUnlockingStake simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"CancelUnlockingStake simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/tier/simulation/helpers.go",
    "content": "package simulation\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n)\n\n// FindAccount find a specific address from an account list\nfunc FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) {\n\tcreator, err := sdk.AccAddressFromBech32(address)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn simtypes.FindAccount(accs, creator)\n}\n"
  },
  {
    "path": "x/tier/simulation/lock.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc SimulateMsgLockStake(\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgLock{\n\t\t\tDelegatorAddress: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the LockStake simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"LockStake simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/tier/simulation/redelegate.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc SimulateMsgRedelegateStake(\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgRedelegate{\n\t\t\tDelegatorAddress: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the RedelegateStake simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"RedelegateStake simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/tier/simulation/unlock.go",
    "content": "package simulation\n\nimport (\n\t\"math/rand\"\n\n\t\"github.com/cosmos/cosmos-sdk/baseapp\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tsimtypes \"github.com/cosmos/cosmos-sdk/types/simulation\"\n\n\t\"github.com/sourcenetwork/sourcehub/x/tier/keeper\"\n\t\"github.com/sourcenetwork/sourcehub/x/tier/types\"\n)\n\nfunc SimulateMsgUnlockStake(\n\tbk types.BankKeeper,\n\tk *keeper.Keeper,\n) simtypes.Operation {\n\treturn func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,\n\t) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {\n\t\tsimAccount, _ := simtypes.RandomAcc(r, accs)\n\t\tmsg := &types.MsgUnlock{\n\t\t\tDelegatorAddress: simAccount.Address.String(),\n\t\t}\n\n\t\t// TODO: Handling the UnlockStake simulation\n\n\t\treturn simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), \"UnlockStake simulation not implemented\"), nil, nil\n\t}\n}\n"
  },
  {
    "path": "x/tier/types/codec.go",
    "content": "package types\n\nimport (\n\tcdctypes \"github.com/cosmos/cosmos-sdk/codec/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/cosmos/cosmos-sdk/types/msgservice\"\n)\n\nfunc RegisterInterfaces(registry cdctypes.InterfaceRegistry) {\n\tregistry.RegisterImplementations((*sdk.Msg)(nil),\n\t\t&MsgLock{},\n\t\t&MsgLockAuto{},\n\t\t&MsgUnlock{},\n\t\t&MsgRedelegate{},\n\t\t&MsgCancelUnlocking{},\n\t\t&MsgCreateDeveloper{},\n\t\t&MsgUpdateDeveloper{},\n\t\t&MsgRemoveDeveloper{},\n\t\t&MsgAddUserSubscription{},\n\t\t&MsgUpdateUserSubscription{},\n\t\t&MsgRemoveUserSubscription{},\n\t\t&MsgUpdateParams{},\n\t)\n\tmsgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)\n}\n"
  },
  {
    "path": "x/tier/types/constants.go",
    "content": "package types\n\nimport time \"time\"\n\n// Tier module constants\nconst (\n\tEpochIdentifier               = ModuleName      // tier\n\tDefaultEpochDuration          = time.Minute * 5 // 5 minutes\n\tDefaultUnlockingEpochs        = 2               // 2 epochs\n\tDefaultDeveloperPoolFee       = 2               // 2%\n\tDefaultInsurancePoolFee       = 1               // 1%\n\tDefaultInsurancePoolThreshold = 100_000_000_000 // 100,000 open\n\tDefaultProcessRewardsInterval = 1000            // process rewards every 1000 blocks\n)\n"
  },
  {
    "path": "x/tier/types/errors.go",
    "content": "package types\n\n// DONTCOVER\n\nimport (\n\tsdkerrors \"cosmossdk.io/errors\"\n)\n\n// x/tier module sentinel errors\nvar (\n\tErrUnauthorized              = sdkerrors.Register(ModuleName, 1101, \"unauthorized\")\n\tErrNotFound                  = sdkerrors.Register(ModuleName, 1102, \"not found\")\n\tErrInvalidRequest            = sdkerrors.Register(ModuleName, 1103, \"invalid request\")\n\tErrInvalidAddress            = sdkerrors.Register(ModuleName, 1104, \"invalid address\")\n\tErrInvalidDenom              = sdkerrors.Register(ModuleName, 1105, \"invalid denom\")\n\tErrInvalidAmount             = sdkerrors.Register(ModuleName, 1106, \"invalid amount\")\n\tErrInvalidDID                = sdkerrors.Register(ModuleName, 1107, \"invalid DID\")\n\tErrInvalidSubscriptionPeriod = sdkerrors.Register(ModuleName, 1108, \"invalid subscription period\")\n)\n"
  },
  {
    "path": "x/tier/types/events.go",
    "content": "package types\n\nconst (\n\tEventTypeCancelUnlocking                      = \"cancel_unlocking\"\n\tEventTypeCompleteUnlocking                    = \"complete_unlocking\"\n\tEventTypeLock                                 = \"lock\"\n\tEventTypeRedelegate                           = \"redelegate\"\n\tEventTypeUnlock                               = \"unlock\"\n\tEventTypeDeveloperCreated                     = \"developer_created\"\n\tEventTypeDeveloperUpdated                     = \"developer_updated\"\n\tEventTypeDeveloperRemoved                     = \"developer_removed\"\n\tEventTypeUserSubscriptionCreated              = \"user_subscription_created\"\n\tEventTypeUserSubscriptionUpdated              = \"user_subscription_updated\"\n\tEventTypeUserSubscriptionRemoved              = \"user_subscription_removed\"\n\tEventTypeDeveloperInsufficientCredits         = \"developer_insufficient_credits\"\n\tEventTypeDeveloperInsufficientOpenForAutoLock = \"developer_insufficient_open_for_auto_lock\"\n\tEventTypeDeveloperAutoLockFailed              = \"developer_auto_lock_failed\"\n\tEventTypeDeveloperAutoLockSuccess             = \"developer_auto_lock_success\"\n\n\tAttributeKeyCompletionTime         = \"completion_time\"\n\tAttributeKeyCreationHeight         = \"creation_height\"\n\tAttributeCreditAmount              = \"credit_amount\"\n\tAttributeKeyDestinationValidator   = \"destination_validator\"\n\tAttributeKeySourceValidator        = \"source_validator\"\n\tAttributeKeyUnlockTime             = \"unlock_time\"\n\tAttributeKeyDeveloper              = \"developer\"\n\tAttributeKeyUserDid                = \"user_did\"\n\tAttributeKeySubscriptionPeriod     = \"subscription_period\"\n\tAttributeKeySubscriptionAmount     = \"subscription_amount\"\n\tAttributeKeySubscriptionExpiration = \"subscription_expiration\"\n\tAttributeKeyCurrentBalance         = \"current_balance\"\n\tAttributeKeyTotalGranted           = \"total_granted\"\n\tAttributeKeyUopenBalance           = \"uopen_balance\"\n\tAttributeKeyRequiredLockAmount     = \"required_lock_amount\"\n\tAttributeKeyAutoLockEnabled        = \"auto_lock_enabled\"\n\tAttributeKeyError                  = \"error\"\n\tAttributeKeyLockAmount             = \"lock_amount\"\n)\n"
  },
  {
    "path": "x/tier/types/expected_keepers.go",
    "content": "package types\n\nimport (\n\t\"context\"\n\ttime \"time\"\n\n\t\"cosmossdk.io/math\"\n\tabcitypes \"github.com/cometbft/cometbft/abci/types\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tdistrtypes \"github.com/cosmos/cosmos-sdk/x/distribution/types\"\n\tstakingtypes \"github.com/cosmos/cosmos-sdk/x/staking/types\"\n\tepochstypes \"github.com/sourcenetwork/sourcehub/x/epochs/types\"\n\t\"github.com/sourcenetwork/sourcehub/x/feegrant\"\n)\n\n// EpochsKeeper defines the expected interface for the Epochs module.\ntype EpochsKeeper interface {\n\tGetEpochInfo(ctx context.Context, identifier string) epochstypes.EpochInfo\n\tSetEpochInfo(ctx context.Context, info epochstypes.EpochInfo)\n}\n\n// StakingKeeper defines the expected interface for the Staking module.\ntype StakingKeeper interface {\n\tDelegate(ctx context.Context, delAddr sdk.AccAddress, bondAmt math.Int, tokenSrc stakingtypes.BondStatus,\n\t\tvalidator stakingtypes.Validator, subtractAccount bool) (newShares math.LegacyDec, err error)\n\tUndelegate(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, sharesAmount math.LegacyDec) (\n\t\ttime.Time, math.Int, error)\n\tBeginRedelegation(ctx context.Context, delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress,\n\t\tsharesAmount math.LegacyDec) (completionTime time.Time, err error)\n\tBondDenom(ctx context.Context) (string, error)\n\tGetValidator(ctx context.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, err error)\n\tIterateValidators(ctx context.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error\n\tIterateDelegations(ctx context.Context, delAddr sdk.AccAddress, cb func(index int64, delegation stakingtypes.DelegationI) (\n\t\tstop bool)) error\n\tTotalBondedTokens(ctx context.Context) (math.Int, error)\n\tValidateUnbondAmount(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt math.Int) (\n\t\tshares math.LegacyDec, err error)\n\tGetUnbondingDelegation(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (\n\t\tubd stakingtypes.UnbondingDelegation, err error)\n\tSetUnbondingDelegation(ctx context.Context, ubd stakingtypes.UnbondingDelegation) error\n\tRemoveUnbondingDelegation(ctx context.Context, ubd stakingtypes.UnbondingDelegation) error\n\tSetValidatorByConsAddr(ctx context.Context, addr stakingtypes.Validator) error\n\tSetValidator(ctx context.Context, addr stakingtypes.Validator) error\n\tCompleteUnbonding(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Coins, error)\n\tBondedRatio(ctx context.Context) (math.LegacyDec, error)\n\tStakingTokenSupply(ctx context.Context) (math.Int, error)\n\tGetValidatorDelegations(ctx context.Context, valAddr sdk.ValAddress) ([]stakingtypes.Delegation, error)\n\tGetAllValidators(ctx context.Context) ([]stakingtypes.Validator, error)\n\tGetDelegation(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (stakingtypes.Delegation, error)\n}\n\n// BankKeeper defines the expected interface for the Bank module.\ntype BankKeeper interface {\n\tSendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error\n\tSendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error\n\tSendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error\n\tDelegateCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error\n\tUndelegateCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error\n\tMintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error\n\tBurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error\n\tIterateAllBalances(ctx context.Context, cb func(addr sdk.AccAddress, coin sdk.Coin) bool)\n\tGetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin\n}\n\n// DistributionKeeper defines the expected interface for the distribution module.\ntype DistributionKeeper interface {\n\tAllocateTokensToValidator(ctx context.Context, val stakingtypes.ValidatorI, tokens sdk.DecCoins) error\n\tAllocateTokens(ctx context.Context, totalReward int64, bondedValidators []abcitypes.VoteInfo) error\n\tGetValidatorOutstandingRewards(ctx context.Context, valAddr sdk.ValAddress) (distrtypes.ValidatorOutstandingRewards, error)\n\tWithdrawDelegationRewards(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (sdk.Coins, error)\n}\n\n// FeegrantKeeper defines the expected interface for the Feegrant module.\ntype FeegrantKeeper interface {\n\tGetAllowance(ctx context.Context, granter, grantee sdk.AccAddress) (feegrant.FeeAllowanceI, error)\n\tGrantAllowance(ctx context.Context, granter, grantee sdk.AccAddress, allowance feegrant.FeeAllowanceI) error\n\tUpdateAllowance(ctx context.Context, granter, grantee sdk.AccAddress, feeAllowance feegrant.FeeAllowanceI) error\n\t// DID-based feegrant methods\n\tGrantDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string, allowance feegrant.FeeAllowanceI) error\n\tUpdateDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string, feeAllowance feegrant.FeeAllowanceI) error\n\tExpireDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) error\n\tGetDIDAllowance(ctx context.Context, granter sdk.AccAddress, granteeDID string) (feegrant.FeeAllowanceI, error)\n}\n\n// ParamSubspace defines the expected Subspace interface for parameters.\ntype ParamSubspace interface {\n\tGet(context.Context, []byte, interface{})\n\tSet(context.Context, []byte, interface{})\n}\n\n// AcpKeeper defines the expected interface for the ACP module.\ntype AcpKeeper interface {\n\t// GetActorDID returns the actor DID, checking context first, then falling back to issuing from account address\n\tGetActorDID(ctx sdk.Context, accountAddr string) (string, error)\n\t// IssueDIDFromAccountAddr creates a DID from an account address\n\tIssueDIDFromAccountAddr(ctx context.Context, accountAddr string) (string, error)\n\t// GetAddressFromDID extracts and returns the bech32 address from a DID\n\tGetAddressFromDID(ctx context.Context, did string) (sdk.AccAddress, error)\n}\n"
  },
  {
    "path": "x/tier/types/genesis.go",
    "content": "package types\n\n// DefaultIndex is the default global index\nconst DefaultIndex uint64 = 1\n\n// DefaultGenesis returns the default genesis state\nfunc DefaultGenesis() *GenesisState {\n\treturn &GenesisState{\n\t\t// this line is used by starport scaffolding # genesis/types/default\n\t\tParams:            DefaultParams(),\n\t\tLockups:           []Lockup{},\n\t\tUnlockingLockups:  []UnlockingLockup{},\n\t\tInsuranceLockups:  []Lockup{},\n\t\tDevelopers:        []Developer{},\n\t\tUserSubscriptions: []UserSubscription{},\n\t}\n}\n\n// Validate performs basic genesis state validation returning an error upon any\n// failure.\nfunc (gs GenesisState) Validate() error {\n\n\t// this line is used by starport scaffolding # genesis/types/validate\n\n\treturn gs.Params.Validate()\n}\n"
  },
  {
    "path": "x/tier/types/genesis.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/genesis.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// GenesisState defines the tier module's genesis state.\ntype GenesisState struct {\n\t// params defines all the parameters of the module.\n\tParams            Params             `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n\tLockups           []Lockup           `protobuf:\"bytes,2,rep,name=lockups,proto3\" json:\"lockups\"`\n\tUnlockingLockups  []UnlockingLockup  `protobuf:\"bytes,3,rep,name=unlockingLockups,proto3\" json:\"unlockingLockups\"`\n\tInsuranceLockups  []Lockup           `protobuf:\"bytes,4,rep,name=insuranceLockups,proto3\" json:\"insuranceLockups\"`\n\tDevelopers        []Developer        `protobuf:\"bytes,5,rep,name=developers,proto3\" json:\"developers\"`\n\tUserSubscriptions []UserSubscription `protobuf:\"bytes,6,rep,name=userSubscriptions,proto3\" json:\"userSubscriptions\"`\n}\n\nfunc (m *GenesisState) Reset()         { *m = GenesisState{} }\nfunc (m *GenesisState) String() string { return proto.CompactTextString(m) }\nfunc (*GenesisState) ProtoMessage()    {}\nfunc (*GenesisState) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_6b6509b08f7a16c3, []int{0}\n}\nfunc (m *GenesisState) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_GenesisState.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *GenesisState) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_GenesisState.Merge(m, src)\n}\nfunc (m *GenesisState) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *GenesisState) XXX_DiscardUnknown() {\n\txxx_messageInfo_GenesisState.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_GenesisState proto.InternalMessageInfo\n\nfunc (m *GenesisState) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\nfunc (m *GenesisState) GetLockups() []Lockup {\n\tif m != nil {\n\t\treturn m.Lockups\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetUnlockingLockups() []UnlockingLockup {\n\tif m != nil {\n\t\treturn m.UnlockingLockups\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetInsuranceLockups() []Lockup {\n\tif m != nil {\n\t\treturn m.InsuranceLockups\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetDevelopers() []Developer {\n\tif m != nil {\n\t\treturn m.Developers\n\t}\n\treturn nil\n}\n\nfunc (m *GenesisState) GetUserSubscriptions() []UserSubscription {\n\tif m != nil {\n\t\treturn m.UserSubscriptions\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*GenesisState)(nil), \"sourcehub.tier.v1beta1.GenesisState\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/tier/v1beta1/genesis.proto\", fileDescriptor_6b6509b08f7a16c3)\n}\n\nvar fileDescriptor_6b6509b08f7a16c3 = []byte{\n\t// 371 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcd, 0x4a, 0xeb, 0x40,\n\t0x14, 0xc7, 0x93, 0xdb, 0x7b, 0x7b, 0x71, 0x74, 0xd1, 0x06, 0x91, 0xd0, 0xc5, 0x58, 0x3f, 0xc0,\n\t0xea, 0x22, 0x43, 0xf5, 0x09, 0xac, 0x82, 0x08, 0x5d, 0x88, 0xa5, 0x1b, 0x17, 0xc2, 0x24, 0x0e,\n\t0x71, 0x68, 0x3b, 0x13, 0xe6, 0xa3, 0xea, 0x5b, 0xf8, 0x18, 0x2e, 0x7d, 0x8c, 0x2e, 0xbb, 0x74,\n\t0x25, 0xd2, 0x2e, 0x7c, 0x0b, 0x91, 0xcc, 0xa4, 0x1a, 0xad, 0x51, 0xdc, 0x84, 0x49, 0xf8, 0xfd,\n\t0x7f, 0xe7, 0x9c, 0xcc, 0x01, 0x9b, 0x92, 0x6b, 0x11, 0x91, 0x4b, 0x1d, 0x22, 0x45, 0x89, 0x40,\n\t0xc3, 0x66, 0x48, 0x14, 0x6e, 0xa2, 0x98, 0x30, 0x22, 0xa9, 0x0c, 0x12, 0xc1, 0x15, 0xf7, 0x56,\n\t0xde, 0xa8, 0x20, 0xa5, 0x82, 0x8c, 0xaa, 0x55, 0xf1, 0x80, 0x32, 0x8e, 0xcc, 0xd3, 0xa2, 0xb5,\n\t0xe5, 0x98, 0xc7, 0xdc, 0x1c, 0x51, 0x7a, 0xca, 0xbe, 0x6e, 0x14, 0x94, 0xe9, 0xf3, 0xa8, 0xa7,\n\t0x93, 0x1f, 0xa0, 0x04, 0x0b, 0x3c, 0xc8, 0x5a, 0xa9, 0x6d, 0x17, 0x40, 0x52, 0x87, 0x32, 0x12,\n\t0x34, 0x51, 0x94, 0x33, 0x8b, 0xae, 0xbf, 0x94, 0xc0, 0xd2, 0x91, 0x9d, 0xa3, 0xa3, 0xb0, 0x22,\n\t0xde, 0x3e, 0x28, 0x5b, 0x97, 0xef, 0xd6, 0xdd, 0xc6, 0xe2, 0x2e, 0x0c, 0xbe, 0x9e, 0x2b, 0x38,\n\t0x31, 0x54, 0x6b, 0x61, 0xf4, 0xb8, 0xea, 0xdc, 0x3d, 0xdf, 0xef, 0xb8, 0xa7, 0x59, 0xd0, 0x3b,\n\t0x00, 0xff, 0x6d, 0xcf, 0xd2, 0xff, 0x53, 0x2f, 0x7d, 0xe7, 0x68, 0x1b, 0x2c, 0xef, 0x98, 0x25,\n\t0xbd, 0x73, 0x50, 0xd1, 0x2c, 0x7d, 0xa1, 0x2c, 0x6e, 0x67, 0xb6, 0x92, 0xb1, 0x6d, 0x15, 0xd9,\n\t0xba, 0x1f, 0xf9, 0xbc, 0x76, 0xce, 0xe5, 0x75, 0x41, 0x85, 0x32, 0xa9, 0x05, 0x66, 0x11, 0x99,\n\t0xf9, 0xff, 0xfe, 0xb6, 0xdb, 0x39, 0x85, 0xd7, 0x06, 0xe0, 0x82, 0x0c, 0x49, 0x9f, 0x27, 0x44,\n\t0x48, 0xff, 0x9f, 0x11, 0xae, 0x15, 0x09, 0x0f, 0x67, 0x64, 0xde, 0x99, 0xcb, 0x7b, 0x18, 0x54,\n\t0xb5, 0x24, 0xa2, 0x93, 0xbb, 0x37, 0xe9, 0x97, 0x8d, 0xb4, 0x51, 0xf8, 0x17, 0x3e, 0x05, 0xf2,\n\t0xee, 0x79, 0x5b, 0xeb, 0x78, 0x34, 0x81, 0xee, 0x78, 0x02, 0xdd, 0xa7, 0x09, 0x74, 0x6f, 0xa7,\n\t0xd0, 0x19, 0x4f, 0xa1, 0xf3, 0x30, 0x85, 0xce, 0x19, 0x8a, 0xa9, 0x4a, 0xed, 0x11, 0x1f, 0x20,\n\t0x5b, 0x8b, 0x11, 0x75, 0xc5, 0x45, 0x0f, 0xbd, 0xaf, 0xd7, 0xb5, 0x5d, 0x30, 0x75, 0x93, 0x10,\n\t0x19, 0x96, 0xcd, 0x4a, 0xed, 0xbd, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x5b, 0x27, 0xe3, 0x30,\n\t0x03, 0x00, 0x00,\n}\n\nfunc (m *GenesisState) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *GenesisState) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.UserSubscriptions) > 0 {\n\t\tfor iNdEx := len(m.UserSubscriptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.UserSubscriptions[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x32\n\t\t}\n\t}\n\tif len(m.Developers) > 0 {\n\t\tfor iNdEx := len(m.Developers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Developers[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x2a\n\t\t}\n\t}\n\tif len(m.InsuranceLockups) > 0 {\n\t\tfor iNdEx := len(m.InsuranceLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.InsuranceLockups[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x22\n\t\t}\n\t}\n\tif len(m.UnlockingLockups) > 0 {\n\t\tfor iNdEx := len(m.UnlockingLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.UnlockingLockups[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x1a\n\t\t}\n\t}\n\tif len(m.Lockups) > 0 {\n\t\tfor iNdEx := len(m.Lockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Lockups[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x12\n\t\t}\n\t}\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintGenesis(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintGenesis(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovGenesis(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *GenesisState) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovGenesis(uint64(l))\n\tif len(m.Lockups) > 0 {\n\t\tfor _, e := range m.Lockups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.UnlockingLockups) > 0 {\n\t\tfor _, e := range m.UnlockingLockups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.InsuranceLockups) > 0 {\n\t\tfor _, e := range m.InsuranceLockups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.Developers) > 0 {\n\t\tfor _, e := range m.Developers {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\tif len(m.UserSubscriptions) > 0 {\n\t\tfor _, e := range m.UserSubscriptions {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovGenesis(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc sovGenesis(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozGenesis(x uint64) (n int) {\n\treturn sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *GenesisState) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: GenesisState: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lockups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Lockups = append(m.Lockups, Lockup{})\n\t\t\tif err := m.Lockups[len(m.Lockups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UnlockingLockups = append(m.UnlockingLockups, UnlockingLockup{})\n\t\t\tif err := m.UnlockingLockups[len(m.UnlockingLockups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InsuranceLockups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.InsuranceLockups = append(m.InsuranceLockups, Lockup{})\n\t\t\tif err := m.InsuranceLockups[len(m.InsuranceLockups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developers\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developers = append(m.Developers, Developer{})\n\t\t\tif err := m.Developers[len(m.Developers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserSubscriptions\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserSubscriptions = append(m.UserSubscriptions, UserSubscription{})\n\t\t\tif err := m.UserSubscriptions[len(m.UserSubscriptions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipGenesis(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipGenesis(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowGenesis\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupGenesis\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthGenesis\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthGenesis        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowGenesis          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupGenesis = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/tier/types/keys.go",
    "content": "package types\n\nimport (\n\t\"bytes\"\n\t\"strconv\"\n\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n)\n\nconst (\n\t// ModuleName defines the module name\n\tModuleName = \"tier\"\n\n\t// DeveloperPoolName defines the developer pool module account\n\tDeveloperPoolName = \"developer_pool\"\n\n\t// InsurancePoolName defines the developer insurance pool module account\n\tInsurancePoolName = \"insurance_pool\"\n\n\t// StoreKey defines the primary module store key\n\tStoreKey = ModuleName\n\n\t// RouterKey is the message route for the module\n\tRouterKey = ModuleName\n\n\t// QuerierRoute is the querier route for the module\n\tQuerierRoute = ModuleName\n\n\t// MemStoreKey defines the in-memory store key\n\tMemStoreKey = \"mem_tier\"\n\n\t// LockupKeyPrefix is the prefix to retrieve all Lockups\n\tLockupKeyPrefix = \"lockup/\"\n\n\t// UnlockingLockupKeyPrefix is the prefix to retrieve all UnlockingLockups\n\tUnlockingLockupKeyPrefix = \"unlockingLockup/\"\n\n\t// InsuranceLockupKeyPrefix is the prefix to retrieve all insurance Lockups\n\tInsuranceLockupKeyPrefix = \"insuranceLockup/\"\n\n\t// UserSubscriptionKeyPrefix is the prefix to store user subscriptions\n\tUserSubscriptionKeyPrefix = \"userSub/\"\n\n\t// TotalDevGrantedKeyPrefix is the prefix to store developer total granted amounts\n\tTotalDevGrantedKeyPrefix = \"totalDevGranted/\"\n\n\t// DeveloperKeyPrefix is the prefix to store developer configurations\n\tDeveloperKeyPrefix = \"developer/\"\n)\n\nvar (\n\tParamsKey       = []byte(\"p_tier\")\n\tTotalLockupsKey = []byte(\"total_lockups\")\n\tTotalCreditsKey = []byte(\"total_credits\")\n)\n\nfunc KeyPrefix(unlocking bool) []byte {\n\tif unlocking {\n\t\treturn []byte(UnlockingLockupKeyPrefix)\n\t}\n\treturn []byte(LockupKeyPrefix)\n}\n\n// LockupKey builds and returns a key to store/retrieve the Lockup.\nfunc LockupKey(delAddr sdk.AccAddress, valAddr sdk.ValAddress) []byte {\n\t// Calculate the size of the buffer in advance\n\tsize := len(delAddr.Bytes()) + 1 + len(valAddr.Bytes()) + 1\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, delAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\tbuf = append(buf, valAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\n\treturn buf\n}\n\n// UnlockingLockupKey builds and returns the key to store/retrieve the UnlockingLockup.\nfunc UnlockingLockupKey(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64) []byte {\n\t// Calculate the size of the buffer in advance, allocating 20 more bytes for creationHeight.\n\tcreationHeightLength := 20\n\tsize := len(delAddr.Bytes()) + 1 + len(valAddr.Bytes()) + 1 + creationHeightLength + 1\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, delAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\tbuf = append(buf, valAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\tbuf = strconv.AppendInt(buf, creationHeight, 10)\n\tbuf = append(buf, '/')\n\n\treturn buf\n}\n\n// LockupKeyToAddresses retrieves delAddr and valAddr from provided Lockup key.\nfunc LockupKeyToAddresses(key []byte) (sdk.AccAddress, sdk.ValAddress) {\n\t// Find the positions of the delimiters\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 3 {\n\t\tpanic(\"invalid key format: expected format delAddr/valAddr/\")\n\t}\n\n\t// Reconstruct the addresses\n\tdelAddr := sdk.AccAddress(parts[0])\n\tvalAddr := sdk.ValAddress(parts[1])\n\n\treturn delAddr, valAddr\n}\n\n// UnlockingLockupKeyToAddressesAtHeight retrieves delAddr, valAddr, and creationHeight from provided unlocking Lockup key.\nfunc UnlockingLockupKeyToAddressesAtHeight(key []byte) (sdk.AccAddress, sdk.ValAddress, int64) {\n\t// Find the positions of the delimiters\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 4 {\n\t\tpanic(\"invalid key format: expected format delAddr/valAddr/creationHeight/\")\n\t}\n\n\t// Reconstruct the addresses and creation height\n\tdelAddr := sdk.AccAddress(parts[0])\n\tvalAddr := sdk.ValAddress(parts[1])\n\tcreationHeight, err := strconv.ParseInt(string(parts[2]), 10, 64)\n\tif err != nil {\n\t\tpanic(\"unexpected creation height\")\n\t}\n\n\treturn delAddr, valAddr, creationHeight\n}\n\n// UserSubscriptionKey builds and returns a key to store user subscription data.\nfunc UserSubscriptionKey(developerAddr sdk.AccAddress, userDid string) []byte {\n\t// Calculate the size of the buffer in advance\n\tsize := len(developerAddr.Bytes()) + 1 + len([]byte(userDid)) + 1\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, developerAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\tbuf = append(buf, []byte(userDid)...)\n\tbuf = append(buf, '/')\n\n\treturn buf\n}\n\n// UserSubscriptionKeyToAddresses retrieves developerAddr and userDid from provided UserSubscriptionKey.\nfunc UserSubscriptionKeyToAddresses(key []byte) (sdk.AccAddress, string) {\n\t// Find the positions of the delimiters\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 3 {\n\t\tpanic(\"invalid key format: expected format developerAddr/userDid/\")\n\t}\n\n\t// Reconstruct the developer address and user DID\n\tdeveloperAddr := sdk.AccAddress(parts[0])\n\tuserDid := string(parts[1])\n\n\treturn developerAddr, userDid\n}\n\n// DeveloperKey builds and returns a key to store developer configuration.\nfunc DeveloperKey(developerAddr sdk.AccAddress) []byte {\n\t// Calculate the size of the buffer in advance\n\tsize := len(developerAddr.Bytes()) + 1\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, developerAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\n\treturn buf\n}\n\n// DeveloperKeyToAddress retrieves developerAddr from provided DeveloperKey.\nfunc DeveloperKeyToAddress(key []byte) sdk.AccAddress {\n\t// Find the positions of the delimiters\n\tparts := bytes.Split(key, []byte{'/'})\n\tif len(parts) != 2 {\n\t\tpanic(\"invalid key format: expected format developerAddr/\")\n\t}\n\n\t// Reconstruct the address\n\tdeveloperAddr := sdk.AccAddress(parts[0])\n\n\treturn developerAddr\n}\n\n// TotalDevGrantedKey builds and returns a key to store developer total granted amount.\nfunc TotalDevGrantedKey(developerAddr sdk.AccAddress) []byte {\n\t// Calculate the size of the buffer in advance\n\tsize := len(developerAddr.Bytes()) + 1\n\tbuf := make([]byte, 0, size)\n\n\t// Append bytes to the buffer\n\tbuf = append(buf, developerAddr.Bytes()...)\n\tbuf = append(buf, '/')\n\n\treturn buf\n}\n"
  },
  {
    "path": "x/tier/types/lockup.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/lockup.proto\n\npackage types\n\nimport (\n\tcosmossdk_io_math \"cosmossdk.io/math\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Lockup tracks the locked stake of a delegator.\ntype Lockup struct {\n\tDelegatorAddress string                `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string                `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tAmount           cosmossdk_io_math.Int `protobuf:\"bytes,3,opt,name=amount,proto3,customtype=cosmossdk.io/math.Int\" json:\"amount\"`\n}\n\nfunc (m *Lockup) Reset()         { *m = Lockup{} }\nfunc (m *Lockup) String() string { return proto.CompactTextString(m) }\nfunc (*Lockup) ProtoMessage()    {}\nfunc (*Lockup) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_2e0e6f58f533fc52, []int{0}\n}\nfunc (m *Lockup) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Lockup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Lockup.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Lockup) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Lockup.Merge(m, src)\n}\nfunc (m *Lockup) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Lockup) XXX_DiscardUnknown() {\n\txxx_messageInfo_Lockup.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Lockup proto.InternalMessageInfo\n\nfunc (m *Lockup) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *Lockup) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\n// UnlockingLockup tracks the unlocking stake of a delegator.\ntype UnlockingLockup struct {\n\tDelegatorAddress string                `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string                `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tCreationHeight   int64                 `protobuf:\"varint,3,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n\tAmount           cosmossdk_io_math.Int `protobuf:\"bytes,4,opt,name=amount,proto3,customtype=cosmossdk.io/math.Int\" json:\"amount\"`\n\t// The time at which the stake undelegation will be completed.\n\tCompletionTime time.Time `protobuf:\"bytes,5,opt,name=completion_time,json=completionTime,proto3,stdtime\" json:\"completion_time\"`\n\t// The time after which the unlocking lockup can be completed.\n\tUnlockTime time.Time `protobuf:\"bytes,6,opt,name=unlock_time,json=unlockTime,proto3,stdtime\" json:\"unlock_time\"`\n}\n\nfunc (m *UnlockingLockup) Reset()         { *m = UnlockingLockup{} }\nfunc (m *UnlockingLockup) String() string { return proto.CompactTextString(m) }\nfunc (*UnlockingLockup) ProtoMessage()    {}\nfunc (*UnlockingLockup) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_2e0e6f58f533fc52, []int{1}\n}\nfunc (m *UnlockingLockup) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnlockingLockup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnlockingLockup.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnlockingLockup) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnlockingLockup.Merge(m, src)\n}\nfunc (m *UnlockingLockup) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnlockingLockup) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnlockingLockup.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnlockingLockup proto.InternalMessageInfo\n\nfunc (m *UnlockingLockup) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *UnlockingLockup) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *UnlockingLockup) GetCreationHeight() int64 {\n\tif m != nil {\n\t\treturn m.CreationHeight\n\t}\n\treturn 0\n}\n\nfunc (m *UnlockingLockup) GetCompletionTime() time.Time {\n\tif m != nil {\n\t\treturn m.CompletionTime\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *UnlockingLockup) GetUnlockTime() time.Time {\n\tif m != nil {\n\t\treturn m.UnlockTime\n\t}\n\treturn time.Time{}\n}\n\nfunc init() {\n\tproto.RegisterType((*Lockup)(nil), \"sourcehub.tier.v1beta1.Lockup\")\n\tproto.RegisterType((*UnlockingLockup)(nil), \"sourcehub.tier.v1beta1.UnlockingLockup\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/tier/v1beta1/lockup.proto\", fileDescriptor_2e0e6f58f533fc52)\n}\n\nvar fileDescriptor_2e0e6f58f533fc52 = []byte{\n\t// 451 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x53, 0xcd, 0x8a, 0x13, 0x41,\n\t0x10, 0x4e, 0x1b, 0x0d, 0xd8, 0x8b, 0x1b, 0x33, 0xac, 0x12, 0x03, 0x4e, 0xd6, 0xf5, 0xe0, 0xa2,\n\t0x64, 0x9a, 0xd5, 0x27, 0x30, 0x22, 0x18, 0x11, 0x0f, 0xe3, 0xcf, 0xc1, 0x4b, 0xe8, 0xcc, 0xb4,\n\t0x9d, 0x26, 0x33, 0x5d, 0xa1, 0xbb, 0x27, 0xea, 0x5b, 0xec, 0x63, 0x78, 0xf4, 0x10, 0x7c, 0x86,\n\t0x3d, 0x2e, 0x39, 0x89, 0x87, 0x55, 0x12, 0xc1, 0xd7, 0x90, 0xfe, 0x99, 0x5d, 0xdd, 0x9b, 0x9e,\n\t0xbc, 0x0c, 0x53, 0x5f, 0x7d, 0xf5, 0x7d, 0x5d, 0x45, 0x15, 0xbe, 0xad, 0xa1, 0x52, 0x19, 0x9b,\n\t0x56, 0x13, 0x62, 0x04, 0x53, 0x64, 0x71, 0x30, 0x61, 0x86, 0x1e, 0x90, 0x02, 0xb2, 0x59, 0x35,\n\t0x4f, 0xe6, 0x0a, 0x0c, 0x44, 0xd7, 0x4f, 0x49, 0x89, 0x25, 0x25, 0x81, 0xd4, 0xeb, 0xd0, 0x52,\n\t0x48, 0x20, 0xee, 0xeb, 0xa9, 0xbd, 0x1b, 0x19, 0xe8, 0x12, 0xf4, 0xd8, 0x45, 0xc4, 0x07, 0x21,\n\t0xb5, 0xc3, 0x81, 0x83, 0xc7, 0xed, 0x5f, 0x40, 0xfb, 0x1c, 0x80, 0x17, 0x8c, 0xb8, 0x68, 0x52,\n\t0xbd, 0x25, 0x46, 0x94, 0x4c, 0x1b, 0x5a, 0x06, 0xf3, 0xbd, 0x1f, 0x08, 0xb7, 0x9e, 0xb9, 0xd7,\n\t0x44, 0x8f, 0x71, 0x27, 0x67, 0x05, 0xe3, 0xd4, 0x80, 0x1a, 0xd3, 0x3c, 0x57, 0x4c, 0xeb, 0x2e,\n\t0xda, 0x45, 0xfb, 0x97, 0x87, 0xdd, 0xd5, 0x72, 0xb0, 0x13, 0xec, 0x1e, 0xfa, 0xcc, 0x0b, 0xa3,\n\t0x84, 0xe4, 0xe9, 0xd5, 0xd3, 0x92, 0x80, 0x47, 0xcf, 0x71, 0x67, 0x41, 0x0b, 0x91, 0xff, 0x21,\n\t0x73, 0xc1, 0xc9, 0xdc, 0x5a, 0x2d, 0x07, 0x37, 0x83, 0xcc, 0xeb, 0x9a, 0x73, 0x4e, 0x6f, 0x71,\n\t0x0e, 0x8f, 0x1e, 0xe1, 0x16, 0x2d, 0xa1, 0x92, 0xa6, 0xdb, 0x74, 0x22, 0xf7, 0x8e, 0x4e, 0xfa,\n\t0x8d, 0xaf, 0x27, 0xfd, 0x6b, 0x5e, 0x48, 0xe7, 0xb3, 0x44, 0x00, 0x29, 0xa9, 0x99, 0x26, 0x23,\n\t0x69, 0x56, 0xcb, 0x01, 0x0e, 0x0e, 0x23, 0x69, 0xd2, 0x50, 0xba, 0xf7, 0xb9, 0x89, 0xdb, 0xaf,\n\t0xa4, 0x1d, 0xbb, 0x90, 0xfc, 0xff, 0xee, 0xf7, 0x0e, 0x6e, 0x67, 0x8a, 0x51, 0x23, 0x40, 0x8e,\n\t0xa7, 0x4c, 0xf0, 0xa9, 0x6f, 0xbc, 0x99, 0x6e, 0xd7, 0xf0, 0x13, 0x87, 0xfe, 0x36, 0x98, 0x8b,\n\t0xff, 0x3c, 0x98, 0x28, 0xc5, 0xed, 0x0c, 0xca, 0x79, 0xc1, 0x9c, 0x9f, 0xdd, 0x8e, 0xee, 0xa5,\n\t0x5d, 0xb4, 0xbf, 0x75, 0xbf, 0x97, 0xf8, 0xd5, 0x49, 0xea, 0xd5, 0x49, 0x5e, 0xd6, 0xab, 0x33,\n\t0xbc, 0x62, 0x9d, 0x0e, 0xbf, 0xf5, 0xd1, 0xc7, 0x9f, 0x9f, 0xee, 0xa2, 0x74, 0xfb, 0x4c, 0xc1,\n\t0x72, 0xa2, 0xa7, 0x78, 0xab, 0x72, 0xb3, 0xf6, 0x7a, 0xad, 0xbf, 0xd5, 0xc3, 0xbe, 0xda, 0xe6,\n\t0x87, 0xa3, 0xa3, 0x75, 0x8c, 0x8e, 0xd7, 0x31, 0xfa, 0xbe, 0x8e, 0xd1, 0xe1, 0x26, 0x6e, 0x1c,\n\t0x6f, 0xe2, 0xc6, 0x97, 0x4d, 0xdc, 0x78, 0x43, 0xb8, 0x30, 0xf6, 0x66, 0x32, 0x28, 0x89, 0xbf,\n\t0x20, 0xc9, 0xcc, 0x3b, 0x50, 0x33, 0x72, 0x76, 0x74, 0xef, 0xfd, 0xd9, 0x99, 0x0f, 0x73, 0xa6,\n\t0x27, 0x2d, 0xe7, 0xfc, 0xe0, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0xb5, 0xd7, 0x34, 0x95,\n\t0x03, 0x00, 0x00,\n}\n\nfunc (m *Lockup) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Lockup) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Lockup) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize := m.Amount.Size()\n\t\ti -= size\n\t\tif _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti = encodeVarintLockup(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x1a\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintLockup(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintLockup(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnlockingLockup) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnlockingLockup) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnlockingLockup) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.UnlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.UnlockTime):])\n\tif err1 != nil {\n\t\treturn 0, err1\n\t}\n\ti -= n1\n\ti = encodeVarintLockup(dAtA, i, uint64(n1))\n\ti--\n\tdAtA[i] = 0x32\n\tn2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):])\n\tif err2 != nil {\n\t\treturn 0, err2\n\t}\n\ti -= n2\n\ti = encodeVarintLockup(dAtA, i, uint64(n2))\n\ti--\n\tdAtA[i] = 0x2a\n\t{\n\t\tsize := m.Amount.Size()\n\t\ti -= size\n\t\tif _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti = encodeVarintLockup(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x22\n\tif m.CreationHeight != 0 {\n\t\ti = encodeVarintLockup(dAtA, i, uint64(m.CreationHeight))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintLockup(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintLockup(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintLockup(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovLockup(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Lockup) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovLockup(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovLockup(uint64(l))\n\t}\n\tl = m.Amount.Size()\n\tn += 1 + l + sovLockup(uint64(l))\n\treturn n\n}\n\nfunc (m *UnlockingLockup) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovLockup(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovLockup(uint64(l))\n\t}\n\tif m.CreationHeight != 0 {\n\t\tn += 1 + sovLockup(uint64(m.CreationHeight))\n\t}\n\tl = m.Amount.Size()\n\tn += 1 + l + sovLockup(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime)\n\tn += 1 + l + sovLockup(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.UnlockTime)\n\tn += 1 + l + sovLockup(uint64(l))\n\treturn n\n}\n\nfunc sovLockup(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozLockup(x uint64) (n int) {\n\treturn sovLockup(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Lockup) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Lockup: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Lockup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLockup(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnlockingLockup) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockup: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockup: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t}\n\t\t\tm.CreationHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.UnlockTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipLockup(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipLockup(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowLockup\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowLockup\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthLockup\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupLockup\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthLockup\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthLockup        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowLockup          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupLockup = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/tier/types/messages.go",
    "content": "package types\n\nimport (\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n)\n\nvar (\n\t_ sdk.Msg = &MsgLock{}\n\t_ sdk.Msg = &MsgLockAuto{}\n\t_ sdk.Msg = &MsgUnlock{}\n\t_ sdk.Msg = &MsgCancelUnlocking{}\n\t_ sdk.Msg = &MsgRedelegate{}\n\t_ sdk.Msg = &MsgCreateDeveloper{}\n\t_ sdk.Msg = &MsgUpdateDeveloper{}\n\t_ sdk.Msg = &MsgRemoveDeveloper{}\n\t_ sdk.Msg = &MsgAddUserSubscription{}\n\t_ sdk.Msg = &MsgUpdateUserSubscription{}\n\t_ sdk.Msg = &MsgRemoveUserSubscription{}\n)\n\n// MsgLock\nfunc NewMsgLock(delAddr, valAddr string, stake sdk.Coin) *MsgLock {\n\treturn &MsgLock{\n\t\tDelegatorAddress: delAddr,\n\t\tValidatorAddress: valAddr,\n\t\tStake:            stake,\n\t}\n}\n\nfunc (msg *MsgLock) ValidateBasic() error {\n\tif err := validateAccAddr(msg.DelegatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateValAddr(msg.ValidatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDenom(msg.Stake); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgLockAuto\nfunc NewMsgLockAuto(delAddr string, stake sdk.Coin) *MsgLockAuto {\n\treturn &MsgLockAuto{\n\t\tDelegatorAddress: delAddr,\n\t\tStake:            stake,\n\t}\n}\n\nfunc (msg *MsgLockAuto) ValidateBasic() error {\n\tif err := validateAccAddr(msg.DelegatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDenom(msg.Stake); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgUnlock\nfunc NewMsgUnlock(delAddr, valAddr string, stake sdk.Coin) *MsgUnlock {\n\treturn &MsgUnlock{\n\t\tDelegatorAddress: delAddr,\n\t\tValidatorAddress: valAddr,\n\t\tStake:            stake,\n\t}\n}\n\nfunc (msg *MsgUnlock) ValidateBasic() error {\n\tif err := validateAccAddr(msg.DelegatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateValAddr(msg.ValidatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDenom(msg.Stake); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgCancelUnlocking\nfunc NewMsgCancelUnlocking(delAddr, valAddr string, stake sdk.Coin, creationHeight int64) *MsgCancelUnlocking {\n\treturn &MsgCancelUnlocking{\n\t\tDelegatorAddress: delAddr,\n\t\tValidatorAddress: valAddr,\n\t\tStake:            stake,\n\t\tCreationHeight:   creationHeight,\n\t}\n}\n\nfunc (msg *MsgCancelUnlocking) ValidateBasic() error {\n\tif err := validateAccAddr(msg.DelegatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateValAddr(msg.ValidatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDenom(msg.Stake); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgRedelegate\nfunc NewMsgRedelegate(delAddress, srcValAddr, dstValAddr string, stake sdk.Coin) *MsgRedelegate {\n\treturn &MsgRedelegate{\n\t\tDelegatorAddress:    delAddress,\n\t\tSrcValidatorAddress: srcValAddr,\n\t\tDstValidatorAddress: dstValAddr,\n\t\tStake:               stake,\n\t}\n}\n\nfunc (msg *MsgRedelegate) ValidateBasic() error {\n\tif msg.SrcValidatorAddress == msg.DstValidatorAddress {\n\t\treturn ErrInvalidAddress.Wrapf(\"src and dst validator addresses are the same\")\n\t}\n\tif err := validateAccAddr(msg.DelegatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateValAddr(msg.SrcValidatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateValAddr(msg.DstValidatorAddress); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDenom(msg.Stake); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgCreateDeveloper\nfunc NewMsgCreateDeveloper(developerAddr string, autoLockEnabled bool) *MsgCreateDeveloper {\n\treturn &MsgCreateDeveloper{\n\t\tDeveloper:       developerAddr,\n\t\tAutoLockEnabled: autoLockEnabled,\n\t}\n}\n\nfunc (msg *MsgCreateDeveloper) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgUpdateDeveloper\nfunc NewMsgUpdateDeveloper(developerAddr string, autoLockEnabled bool) *MsgUpdateDeveloper {\n\treturn &MsgUpdateDeveloper{\n\t\tDeveloper:       developerAddr,\n\t\tAutoLockEnabled: autoLockEnabled,\n\t}\n}\n\nfunc (msg *MsgUpdateDeveloper) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgRemoveDeveloper\nfunc NewMsgRemoveDeveloper(developerAddr string) *MsgRemoveDeveloper {\n\treturn &MsgRemoveDeveloper{\n\t\tDeveloper: developerAddr,\n\t}\n}\n\nfunc (msg *MsgRemoveDeveloper) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MsgAddUserSubscription\nfunc NewMsgAddUserSubscription(developerAddr, userAddr, userDid string, amount uint64, period uint64) *MsgAddUserSubscription {\n\treturn &MsgAddUserSubscription{\n\t\tDeveloper: developerAddr,\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    period,\n\t}\n}\n\nfunc (msg *MsgAddUserSubscription) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\tif len(msg.UserDid) <= 4 || msg.UserDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\tif msg.Amount <= 0 {\n\t\treturn ErrInvalidAmount\n\t}\n\tif msg.Period <= 0 {\n\t\treturn ErrInvalidSubscriptionPeriod\n\t}\n\treturn nil\n}\n\n// MsgUpdateUserSubscription\nfunc NewMsgUpdateUserSubscription(developerAddr, userAddr, userDid string, amount uint64, period uint64) *MsgUpdateUserSubscription {\n\treturn &MsgUpdateUserSubscription{\n\t\tDeveloper: developerAddr,\n\t\tUserDid:   userDid,\n\t\tAmount:    amount,\n\t\tPeriod:    period,\n\t}\n}\n\nfunc (msg *MsgUpdateUserSubscription) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\tif len(msg.UserDid) <= 4 || msg.UserDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\tif msg.Amount <= 0 {\n\t\treturn ErrInvalidAmount\n\t}\n\tif msg.Period <= 0 {\n\t\treturn ErrInvalidSubscriptionPeriod\n\t}\n\treturn nil\n}\n\n// MsgRemoveUserSubscription\nfunc NewMsgRemoveUserSubscription(developerAddr, userAddr, userDid string) *MsgRemoveUserSubscription {\n\treturn &MsgRemoveUserSubscription{\n\t\tDeveloper: developerAddr,\n\t\tUserDid:   userDid,\n\t}\n}\n\nfunc (msg *MsgRemoveUserSubscription) ValidateBasic() error {\n\tif err := validateAccAddr(msg.Developer); err != nil {\n\t\treturn err\n\t}\n\tif len(msg.UserDid) <= 4 || msg.UserDid[:4] != \"did:\" {\n\t\treturn ErrInvalidDID\n\t}\n\treturn nil\n}\n\nfunc validateAccAddr(address string) error {\n\t_, err := sdk.AccAddressFromBech32(address)\n\tif err != nil {\n\t\treturn ErrInvalidAddress.Wrapf(\"delegator address %s:%s\", address, err)\n\t}\n\treturn nil\n}\n\nfunc validateValAddr(address string) error {\n\t_, err := sdk.ValAddressFromBech32(address)\n\tif err != nil {\n\t\treturn ErrInvalidAddress.Wrapf(\"validator address %s:%s\", address, err)\n\t}\n\treturn nil\n}\n\nfunc validateDenom(stake sdk.Coin) error {\n\tif !stake.IsValid() || !stake.Amount.IsPositive() || !stake.Amount.IsInt64() {\n\t\treturn ErrInvalidDenom.Wrapf(\"invalid amount %s\", stake)\n\t}\n\tif stake.Denom != appparams.DefaultBondDenom {\n\t\treturn ErrInvalidDenom.Wrapf(\"got %s, expected %s\", stake.Denom, appparams.DefaultBondDenom)\n\t}\n\treturn nil\n}\n\n// Must variant which panics on error\nfunc MustValAddressFromBech32(address string) sdk.ValAddress {\n\tvalAddr, err := sdk.ValAddressFromBech32(address)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn valAddr\n}\n"
  },
  {
    "path": "x/tier/types/messages_test.go",
    "content": "package types\n\nimport (\n\t\"testing\"\n\n\t\"cosmossdk.io/math\"\n\tsdk \"github.com/cosmos/cosmos-sdk/types\"\n\t\"github.com/stretchr/testify/require\"\n\n\tappparams \"github.com/sourcenetwork/sourcehub/app/params\"\n\t\"github.com/sourcenetwork/sourcehub/testutil/sample\"\n)\n\nvar (\n\tbondDenom = appparams.DefaultBondDenom\n\t// bondDenom = appparams.DefaultBondDenom\n\tdelAddr  = sample.RandomAccAddress().String()\n\tvalAddr  = sample.RandomValAddress().String()\n\tvalAddr2 = sample.RandomValAddress().String()\n\tstake    = sdk.NewCoin(bondDenom, math.NewInt(100))\n\n\tinvalidAddr       = \"invalid_address\"\n\tinvalidDenomStake = sdk.NewCoin(\"denom1\", math.NewInt(100))\n\tnonPositiveStake  = sdk.NewCoin(bondDenom, math.NewInt(0))\n\toverflowStake     = sdk.NewCoin(bondDenom, math.NewIntFromUint64(1<<63))\n)\n\nfunc TestMsgLock_ValidateBasic(t *testing.T) {\n\n\ttests := []struct {\n\t\tname string\n\t\tmsg  MsgLock\n\t\terr  error\n\t}{\n\t\t{\n\t\t\tname: \"valid request\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: invalidAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid validator address\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: invalidAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid denom\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            invalidDenomStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (non-positive amount)\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            nonPositiveStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (overflowed int64 amount)\",\n\t\t\tmsg: MsgLock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            overflowStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\terr := tt.msg.ValidateBasic()\n\t\t\tif tt.err != nil {\n\t\t\t\trequire.ErrorIs(t, err, tt.err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n\nfunc TestMsgUnlockStake_ValidateBasic(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tmsg  MsgUnlock\n\t\terr  error\n\t}{\n\t\t{\n\t\t\tname: \"valid request\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: invalidAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid validator address\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: invalidAddr,\n\t\t\t\tStake:            stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid denom\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            invalidDenomStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (non-positive amount)\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            nonPositiveStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (overflowed int64 amount)\",\n\t\t\tmsg: MsgUnlock{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            overflowStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\terr := tt.msg.ValidateBasic()\n\t\t\tif tt.err != nil {\n\t\t\t\trequire.ErrorIs(t, err, tt.err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n\nfunc TestMsgCancelUnlockingStake_ValidateBasic(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tmsg  MsgCancelUnlocking\n\t\terr  error\n\t}{\n\t\t{\n\t\t\tname: \"valid request\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: invalidAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            stake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid validator address\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: invalidAddr,\n\t\t\t\tStake:            stake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid denom\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            invalidDenomStake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid denom (non-positive amount)\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            nonPositiveStake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t\t{\n\t\t\tname: \"invalid denom (overflowed int64 amount)\",\n\t\t\tmsg: MsgCancelUnlocking{\n\t\t\t\tDelegatorAddress: delAddr,\n\t\t\t\tValidatorAddress: valAddr,\n\t\t\t\tStake:            overflowStake,\n\t\t\t\tCreationHeight:   1,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\terr := tt.msg.ValidateBasic()\n\t\t\tif tt.err != nil {\n\t\t\t\trequire.ErrorIs(t, err, tt.err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n\nfunc TestMsgRedelegate_ValidateBasic(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tmsg  MsgRedelegate\n\t\terr  error\n\t}{\n\t\t{\n\t\t\tname: \"valid request\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               stake,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"invalid delegator address\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    invalidAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid src validator address\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: invalidAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"src and dst validator address are the same\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr,\n\t\t\t\tStake:               stake,\n\t\t\t},\n\t\t\terr: ErrInvalidAddress,\n\t\t}, {\n\t\t\tname: \"invalid denom\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               invalidDenomStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (non-positive amount)\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               nonPositiveStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t}, {\n\t\t\tname: \"invalid denom (overflowed int64 amount)\",\n\t\t\tmsg: MsgRedelegate{\n\t\t\t\tDelegatorAddress:    delAddr,\n\t\t\t\tSrcValidatorAddress: valAddr,\n\t\t\t\tDstValidatorAddress: valAddr2,\n\t\t\t\tStake:               overflowStake,\n\t\t\t},\n\t\t\terr: ErrInvalidDenom,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\terr := tt.msg.ValidateBasic()\n\t\t\tif tt.err != nil {\n\t\t\t\trequire.ErrorIs(t, err, tt.err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\trequire.NoError(t, err)\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "x/tier/types/params.go",
    "content": "package types\n\nimport (\n\t\"fmt\"\n\ttime \"time\"\n\n\t\"cosmossdk.io/math\"\n\tparamtypes \"github.com/cosmos/cosmos-sdk/x/params/types\"\n)\n\n// Parameter store keys\nvar (\n\tKeyEpochDuration          = []byte(\"EpochDuration\")\n\tKeyUnlockingEpochs        = []byte(\"UnlockingEpochs\")\n\tKeyDeveloperPoolFee       = []byte(\"DeveloperPoolFee\")\n\tKeyInsurancePoolFee       = []byte(\"InsurancePoolFee\")\n\tKeyInsurancePoolThreshold = []byte(\"InsurancePoolThreshold\")\n\tKeyProcessRewardsInterval = []byte(\"ProcessRewardsInterval\")\n\tKeyRewardRates            = []byte(\"RewardRates\")\n)\n\n// ParamKeyTable for module parameters\nfunc ParamKeyTable() paramtypes.KeyTable {\n\treturn paramtypes.NewKeyTable().RegisterParamSet(&Params{})\n}\n\n// NewParams creates a new Params object\nfunc NewParams(\n\tepochDuration *time.Duration,\n\tunlockingEpochs, developerPoolFee, insurancePoolFee, insurancePoolThreshold, processRewardsInterval int64,\n\trewardRates []Rate,\n) Params {\n\treturn Params{\n\t\tEpochDuration:          epochDuration,\n\t\tUnlockingEpochs:        unlockingEpochs,\n\t\tDeveloperPoolFee:       developerPoolFee,\n\t\tInsurancePoolFee:       insurancePoolFee,\n\t\tInsurancePoolThreshold: insurancePoolThreshold,\n\t\tProcessRewardsInterval: processRewardsInterval,\n\t\tRewardRates:            rewardRates,\n\t}\n}\n\n// DefaultParams returns default parameters.\n// Rate in RewardRates, DeveloperPoolFee, and InsurancePoolFee are integers representing percentages\n// with 2 decimal precision (e.g. a rate of 150 represents 150%, a fee of 2 represents 2%).\n// InsurancePoolThreshold represents a threshold in \"uopen\", after which insurance pool is considered \"full\".\n// When the insurance pool is full, the insurance fee is allocated to the developer pool instead.\nfunc DefaultParams() Params {\n\tepochDuration := DefaultEpochDuration\n\treturn NewParams(\n\t\t&epochDuration,                // 5 minutes\n\t\tDefaultUnlockingEpochs,        // 2 epochs\n\t\tDefaultDeveloperPoolFee,       // 2%\n\t\tDefaultInsurancePoolFee,       // 1%\n\t\tDefaultInsurancePoolThreshold, // 100,000 open\n\t\tDefaultProcessRewardsInterval, // 1000 blocks\n\t\t[]Rate{\n\t\t\t{Amount: math.NewInt(300), Rate: 150}, // x1.5 from 300\n\t\t\t{Amount: math.NewInt(200), Rate: 120}, // x1.2 from 200 to 300\n\t\t\t{Amount: math.NewInt(100), Rate: 110}, // x1.1 from 100 to 200\n\t\t\t{Amount: math.NewInt(0), Rate: 100},   // x1.0 from 0 to 100\n\t\t},\n\t)\n}\n\n// Validate validates the params\nfunc (p Params) Validate() error {\n\tif err := validateEpochDuration(p.EpochDuration); err != nil {\n\t\treturn err\n\t}\n\tif err := validateUnlockingEpochs(p.UnlockingEpochs); err != nil {\n\t\treturn err\n\t}\n\tif err := validateDeveloperPoolFee(p.DeveloperPoolFee); err != nil {\n\t\treturn err\n\t}\n\tif err := validateInsurancePoolFee(p.InsurancePoolFee); err != nil {\n\t\treturn err\n\t}\n\tif err := validateInsurancePoolThreshold(p.InsurancePoolThreshold); err != nil {\n\t\treturn err\n\t}\n\tif err := validateProcessRewardsInterval(p.ProcessRewardsInterval); err != nil {\n\t\treturn err\n\t}\n\tif err := validateRewardRates(p.RewardRates); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ParamSetPairs implements the ParamSet interface and returns all the key/value pairs\nfunc (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {\n\treturn paramtypes.ParamSetPairs{\n\t\t{Key: KeyEpochDuration, Value: &p.EpochDuration, ValidatorFn: validateEpochDuration},\n\t\t{Key: KeyUnlockingEpochs, Value: &p.UnlockingEpochs, ValidatorFn: validateUnlockingEpochs},\n\t\t{Key: KeyDeveloperPoolFee, Value: &p.DeveloperPoolFee, ValidatorFn: validateDeveloperPoolFee},\n\t\t{Key: KeyInsurancePoolFee, Value: &p.InsurancePoolFee, ValidatorFn: validateInsurancePoolFee},\n\t\t{Key: KeyInsurancePoolThreshold, Value: &p.InsurancePoolThreshold, ValidatorFn: validateInsurancePoolThreshold},\n\t\t{Key: KeyProcessRewardsInterval, Value: &p.ProcessRewardsInterval, ValidatorFn: validateProcessRewardsInterval},\n\t\t{Key: KeyRewardRates, Value: &p.RewardRates, ValidatorFn: validateRewardRates},\n\t}\n}\n\nfunc validateEpochDuration(i interface{}) error {\n\tduration, ok := i.(*time.Duration)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif duration == nil || *duration <= 0 {\n\t\treturn fmt.Errorf(\"invalid epoch duration: %d\", duration)\n\t}\n\treturn nil\n}\n\nfunc validateUnlockingEpochs(i interface{}) error {\n\tepochs, ok := i.(int64)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif epochs <= 0 {\n\t\treturn fmt.Errorf(\"invalid unlocking epochs: %d\", epochs)\n\t}\n\treturn nil\n}\n\nfunc validateDeveloperPoolFee(i interface{}) error {\n\tfee, ok := i.(int64)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif fee < 0 {\n\t\treturn fmt.Errorf(\"invalid developer pool fee: %d\", fee)\n\t}\n\treturn nil\n}\n\nfunc validateInsurancePoolFee(i interface{}) error {\n\tfee, ok := i.(int64)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif fee < 0 {\n\t\treturn fmt.Errorf(\"invalid insurance pool fee: %d\", fee)\n\t}\n\treturn nil\n}\n\nfunc validateInsurancePoolThreshold(i interface{}) error {\n\tthreshold, ok := i.(int64)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif threshold < 0 {\n\t\treturn fmt.Errorf(\"invalid insurance pool threshold: %d\", threshold)\n\t}\n\treturn nil\n}\n\nfunc validateProcessRewardsInterval(i interface{}) error {\n\tinterval, ok := i.(int64)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tif interval <= 0 {\n\t\treturn fmt.Errorf(\"invalid process rewards interval: %d\", interval)\n\t}\n\treturn nil\n}\n\nfunc validateRewardRates(i interface{}) error {\n\trates, ok := i.([]Rate)\n\tif !ok {\n\t\treturn fmt.Errorf(\"invalid parameter type: %T\", i)\n\t}\n\tfor _, rate := range rates {\n\t\tif rate.Amount.IsNegative() {\n\t\t\treturn fmt.Errorf(\"invalid locked stake: %s\", rate.Amount)\n\t\t}\n\t\tif rate.Rate <= 0 {\n\t\t\treturn fmt.Errorf(\"invalid rate: %d\", rate.Rate)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "x/tier/types/params.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/params.proto\n\npackage types\n\nimport (\n\tcosmossdk_io_math \"cosmossdk.io/math\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Params defines the parameters for the module.\ntype Params struct {\n\tEpochDuration          *time.Duration `protobuf:\"bytes,1,opt,name=epoch_duration,json=epochDuration,proto3,stdduration\" json:\"epoch_duration,omitempty\"`\n\tUnlockingEpochs        int64          `protobuf:\"varint,2,opt,name=unlocking_epochs,json=unlockingEpochs,proto3\" json:\"unlocking_epochs,omitempty\"`\n\tDeveloperPoolFee       int64          `protobuf:\"varint,3,opt,name=developer_pool_fee,json=developerPoolFee,proto3\" json:\"developer_pool_fee,omitempty\"`\n\tInsurancePoolFee       int64          `protobuf:\"varint,4,opt,name=insurance_pool_fee,json=insurancePoolFee,proto3\" json:\"insurance_pool_fee,omitempty\"`\n\tInsurancePoolThreshold int64          `protobuf:\"varint,5,opt,name=insurance_pool_threshold,json=insurancePoolThreshold,proto3\" json:\"insurance_pool_threshold,omitempty\"`\n\tProcessRewardsInterval int64          `protobuf:\"varint,6,opt,name=process_rewards_interval,json=processRewardsInterval,proto3\" json:\"process_rewards_interval,omitempty\"`\n\tRewardRates            []Rate         `protobuf:\"bytes,7,rep,name=reward_rates,json=rewardRates,proto3\" json:\"reward_rates\"`\n}\n\nfunc (m *Params) Reset()         { *m = Params{} }\nfunc (m *Params) String() string { return proto.CompactTextString(m) }\nfunc (*Params) ProtoMessage()    {}\nfunc (*Params) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a6ec74918331e1a2, []int{0}\n}\nfunc (m *Params) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Params.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Params) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Params.Merge(m, src)\n}\nfunc (m *Params) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Params) XXX_DiscardUnknown() {\n\txxx_messageInfo_Params.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Params proto.InternalMessageInfo\n\nfunc (m *Params) GetEpochDuration() *time.Duration {\n\tif m != nil {\n\t\treturn m.EpochDuration\n\t}\n\treturn nil\n}\n\nfunc (m *Params) GetUnlockingEpochs() int64 {\n\tif m != nil {\n\t\treturn m.UnlockingEpochs\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetDeveloperPoolFee() int64 {\n\tif m != nil {\n\t\treturn m.DeveloperPoolFee\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetInsurancePoolFee() int64 {\n\tif m != nil {\n\t\treturn m.InsurancePoolFee\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetInsurancePoolThreshold() int64 {\n\tif m != nil {\n\t\treturn m.InsurancePoolThreshold\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetProcessRewardsInterval() int64 {\n\tif m != nil {\n\t\treturn m.ProcessRewardsInterval\n\t}\n\treturn 0\n}\n\nfunc (m *Params) GetRewardRates() []Rate {\n\tif m != nil {\n\t\treturn m.RewardRates\n\t}\n\treturn nil\n}\n\n// Rate defines the rate for a specific locked stake.\ntype Rate struct {\n\t// amount of locked stake required for earning rewards at this rate.\n\tAmount cosmossdk_io_math.Int `protobuf:\"bytes,1,opt,name=amount,proto3,customtype=cosmossdk.io/math.Int\" json:\"amount\"`\n\tRate   int64                 `protobuf:\"varint,2,opt,name=rate,proto3\" json:\"rate,omitempty\"`\n}\n\nfunc (m *Rate) Reset()         { *m = Rate{} }\nfunc (m *Rate) String() string { return proto.CompactTextString(m) }\nfunc (*Rate) ProtoMessage()    {}\nfunc (*Rate) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a6ec74918331e1a2, []int{1}\n}\nfunc (m *Rate) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Rate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Rate.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Rate) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Rate.Merge(m, src)\n}\nfunc (m *Rate) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Rate) XXX_DiscardUnknown() {\n\txxx_messageInfo_Rate.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Rate proto.InternalMessageInfo\n\nfunc (m *Rate) GetRate() int64 {\n\tif m != nil {\n\t\treturn m.Rate\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterType((*Params)(nil), \"sourcehub.tier.v1beta1.Params\")\n\tproto.RegisterType((*Rate)(nil), \"sourcehub.tier.v1beta1.Rate\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/tier/v1beta1/params.proto\", fileDescriptor_a6ec74918331e1a2)\n}\n\nvar fileDescriptor_a6ec74918331e1a2 = []byte{\n\t// 492 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xcf, 0x6e, 0xd3, 0x40,\n\t0x10, 0xc6, 0x63, 0x12, 0x82, 0xba, 0xe1, 0x4f, 0xb1, 0xa0, 0xb8, 0x55, 0xe5, 0x44, 0xe5, 0x12,\n\t0x0a, 0xec, 0xaa, 0xe5, 0x82, 0x38, 0x06, 0xa8, 0x14, 0x4e, 0x95, 0xc5, 0x89, 0x8b, 0xb5, 0x71,\n\t0xa6, 0xb6, 0x15, 0x7b, 0xc7, 0xda, 0x5d, 0xa7, 0xf0, 0x0a, 0x9c, 0x38, 0xf2, 0x08, 0x1c, 0x7b,\n\t0x80, 0x77, 0xe8, 0xb1, 0xe2, 0x84, 0x38, 0x14, 0x94, 0x1c, 0xfa, 0x1a, 0xc8, 0xbb, 0x76, 0x2a,\n\t0xa0, 0x17, 0x6b, 0xe7, 0xfb, 0x7e, 0xdf, 0x68, 0xac, 0x19, 0xf2, 0x50, 0x61, 0x29, 0x23, 0x48,\n\t0xca, 0x09, 0xd3, 0x29, 0x48, 0x36, 0xdf, 0x9b, 0x80, 0xe6, 0x7b, 0xac, 0xe0, 0x92, 0xe7, 0x8a,\n\t0x16, 0x12, 0x35, 0xba, 0x1b, 0x2b, 0x88, 0x56, 0x10, 0xad, 0xa1, 0xad, 0xbb, 0x3c, 0x4f, 0x05,\n\t0x32, 0xf3, 0xb5, 0xe8, 0xd6, 0x66, 0x84, 0x2a, 0x47, 0x15, 0x9a, 0x8a, 0xd9, 0xa2, 0xb6, 0xee,\n\t0xc5, 0x18, 0xa3, 0xd5, 0xab, 0x57, 0xad, 0xfa, 0x31, 0x62, 0x9c, 0x01, 0x33, 0xd5, 0xa4, 0x3c,\n\t0x62, 0xd3, 0x52, 0x72, 0x9d, 0xa2, 0xb0, 0xfe, 0xce, 0xb7, 0x36, 0xe9, 0x1e, 0x9a, 0x61, 0xdc,\n\t0x03, 0x72, 0x1b, 0x0a, 0x8c, 0x92, 0xb0, 0x41, 0x3c, 0x67, 0xe0, 0x0c, 0x7b, 0xfb, 0x9b, 0xd4,\n\t0xf6, 0xa0, 0x4d, 0x0f, 0xfa, 0xaa, 0x06, 0x46, 0x9d, 0xcf, 0xbf, 0xfa, 0x4e, 0x70, 0xcb, 0xc4,\n\t0x1a, 0xd1, 0x7d, 0x44, 0xd6, 0x4b, 0x91, 0x61, 0x34, 0x4b, 0x45, 0x1c, 0x1a, 0x4b, 0x79, 0xd7,\n\t0x06, 0xce, 0xb0, 0x1d, 0xdc, 0x59, 0xe9, 0xaf, 0x8d, 0xec, 0x3e, 0x21, 0xee, 0x14, 0xe6, 0x90,\n\t0x61, 0x01, 0x32, 0x2c, 0x10, 0xb3, 0xf0, 0x08, 0xc0, 0x6b, 0x1b, 0x78, 0x7d, 0xe5, 0x1c, 0x22,\n\t0x66, 0x07, 0x00, 0x15, 0x9d, 0x0a, 0x55, 0x4a, 0x2e, 0x22, 0xb8, 0xa4, 0x3b, 0x96, 0x5e, 0x39,\n\t0x0d, 0xfd, 0x9c, 0x78, 0xff, 0xd0, 0x3a, 0x91, 0xa0, 0x12, 0xcc, 0xa6, 0xde, 0x75, 0x93, 0xd9,\n\t0xf8, 0x2b, 0xf3, 0xb6, 0x71, 0xab, 0x64, 0x21, 0x31, 0x02, 0xa5, 0x42, 0x09, 0xc7, 0x5c, 0x4e,\n\t0x55, 0x98, 0x0a, 0x0d, 0x72, 0xce, 0x33, 0xaf, 0x6b, 0x93, 0xb5, 0x1f, 0x58, 0x7b, 0x5c, 0xbb,\n\t0xee, 0x1b, 0x72, 0xd3, 0x26, 0x42, 0xc9, 0x35, 0x28, 0xef, 0xc6, 0xa0, 0x3d, 0xec, 0xed, 0x6f,\n\t0xd3, 0xab, 0x17, 0x4c, 0x03, 0xae, 0x61, 0xb4, 0x76, 0x7a, 0xde, 0x6f, 0x7d, 0xb9, 0x38, 0xd9,\n\t0x75, 0x82, 0x9e, 0x0d, 0x57, 0xb2, 0x7a, 0xb1, 0xfd, 0xf1, 0xe2, 0x64, 0xf7, 0xc1, 0xe5, 0xfd,\n\t0xbc, 0xb7, 0x17, 0x64, 0x97, 0xb5, 0x13, 0x92, 0x4e, 0x85, 0xb9, 0x2f, 0x49, 0x97, 0xe7, 0x58,\n\t0x0a, 0x6d, 0x96, 0xb5, 0x36, 0x7a, 0x5c, 0x75, 0xfb, 0x79, 0xde, 0xbf, 0x6f, 0x6f, 0x43, 0x4d,\n\t0x67, 0x34, 0x45, 0x96, 0x73, 0x9d, 0xd0, 0xb1, 0xd0, 0xdf, 0xbf, 0x3e, 0x25, 0xf5, 0xd1, 0x8c,\n\t0x85, 0x0e, 0xea, 0xa8, 0xeb, 0x92, 0x4e, 0x35, 0x6f, 0xbd, 0x25, 0xf3, 0x1e, 0x8d, 0x4f, 0x17,\n\t0xbe, 0x73, 0xb6, 0xf0, 0x9d, 0xdf, 0x0b, 0xdf, 0xf9, 0xb4, 0xf4, 0x5b, 0x67, 0x4b, 0xbf, 0xf5,\n\t0x63, 0xe9, 0xb7, 0xde, 0xb1, 0x38, 0xd5, 0xd5, 0xaf, 0x44, 0x98, 0x33, 0x3b, 0x9e, 0x00, 0x7d,\n\t0x8c, 0x72, 0xc6, 0xfe, 0x1b, 0x56, 0x7f, 0x28, 0x40, 0x4d, 0xba, 0xe6, 0x70, 0x9e, 0xfd, 0x09,\n\t0x00, 0x00, 0xff, 0xff, 0x03, 0xc9, 0xd4, 0x13, 0x0d, 0x03, 0x00, 0x00,\n}\n\nfunc (m *Params) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Params) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.RewardRates) > 0 {\n\t\tfor iNdEx := len(m.RewardRates) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.RewardRates[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintParams(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0x3a\n\t\t}\n\t}\n\tif m.ProcessRewardsInterval != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.ProcessRewardsInterval))\n\t\ti--\n\t\tdAtA[i] = 0x30\n\t}\n\tif m.InsurancePoolThreshold != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.InsurancePoolThreshold))\n\t\ti--\n\t\tdAtA[i] = 0x28\n\t}\n\tif m.InsurancePoolFee != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.InsurancePoolFee))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.DeveloperPoolFee != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.DeveloperPoolFee))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif m.UnlockingEpochs != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.UnlockingEpochs))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif m.EpochDuration != nil {\n\t\tn1, err1 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.EpochDuration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.EpochDuration):])\n\t\tif err1 != nil {\n\t\t\treturn 0, err1\n\t\t}\n\t\ti -= n1\n\t\ti = encodeVarintParams(dAtA, i, uint64(n1))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *Rate) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Rate) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Rate) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Rate != 0 {\n\t\ti = encodeVarintParams(dAtA, i, uint64(m.Rate))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\t{\n\t\tsize := m.Amount.Size()\n\t\ti -= size\n\t\tif _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti = encodeVarintParams(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintParams(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovParams(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Params) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.EpochDuration != nil {\n\t\tl = github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.EpochDuration)\n\t\tn += 1 + l + sovParams(uint64(l))\n\t}\n\tif m.UnlockingEpochs != 0 {\n\t\tn += 1 + sovParams(uint64(m.UnlockingEpochs))\n\t}\n\tif m.DeveloperPoolFee != 0 {\n\t\tn += 1 + sovParams(uint64(m.DeveloperPoolFee))\n\t}\n\tif m.InsurancePoolFee != 0 {\n\t\tn += 1 + sovParams(uint64(m.InsurancePoolFee))\n\t}\n\tif m.InsurancePoolThreshold != 0 {\n\t\tn += 1 + sovParams(uint64(m.InsurancePoolThreshold))\n\t}\n\tif m.ProcessRewardsInterval != 0 {\n\t\tn += 1 + sovParams(uint64(m.ProcessRewardsInterval))\n\t}\n\tif len(m.RewardRates) > 0 {\n\t\tfor _, e := range m.RewardRates {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovParams(uint64(l))\n\t\t}\n\t}\n\treturn n\n}\n\nfunc (m *Rate) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Amount.Size()\n\tn += 1 + l + sovParams(uint64(l))\n\tif m.Rate != 0 {\n\t\tn += 1 + sovParams(uint64(m.Rate))\n\t}\n\treturn n\n}\n\nfunc sovParams(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozParams(x uint64) (n int) {\n\treturn sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Params) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Params: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Params: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field EpochDuration\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.EpochDuration == nil {\n\t\t\t\tm.EpochDuration = new(time.Duration)\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(m.EpochDuration, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingEpochs\", wireType)\n\t\t\t}\n\t\t\tm.UnlockingEpochs = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.UnlockingEpochs |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DeveloperPoolFee\", wireType)\n\t\t\t}\n\t\t\tm.DeveloperPoolFee = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.DeveloperPoolFee |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InsurancePoolFee\", wireType)\n\t\t\t}\n\t\t\tm.InsurancePoolFee = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.InsurancePoolFee |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field InsurancePoolThreshold\", wireType)\n\t\t\t}\n\t\t\tm.InsurancePoolThreshold = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.InsurancePoolThreshold |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 6:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ProcessRewardsInterval\", wireType)\n\t\t\t}\n\t\t\tm.ProcessRewardsInterval = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.ProcessRewardsInterval |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 7:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field RewardRates\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.RewardRates = append(m.RewardRates, Rate{})\n\t\t\tif err := m.RewardRates[len(m.RewardRates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipParams(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *Rate) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Rate: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Rate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Rate\", wireType)\n\t\t\t}\n\t\t\tm.Rate = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Rate |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipParams(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthParams\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipParams(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowParams\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthParams\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupParams\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthParams\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthParams        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowParams          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupParams = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/tier/types/query.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/query.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\tquery \"github.com/cosmos/cosmos-sdk/types/query\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"google.golang.org/genproto/googleapis/api/annotations\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// QueryParamsRequest is request type for the Query/Params RPC method.\ntype QueryParamsRequest struct {\n}\n\nfunc (m *QueryParamsRequest) Reset()         { *m = QueryParamsRequest{} }\nfunc (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsRequest) ProtoMessage()    {}\nfunc (*QueryParamsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{0}\n}\nfunc (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsRequest.Merge(m, src)\n}\nfunc (m *QueryParamsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo\n\n// QueryParamsResponse is response type for the Query/Params RPC method.\ntype QueryParamsResponse struct {\n\t// params holds all the parameters of this module.\n\tParams Params `protobuf:\"bytes,1,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *QueryParamsResponse) Reset()         { *m = QueryParamsResponse{} }\nfunc (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*QueryParamsResponse) ProtoMessage()    {}\nfunc (*QueryParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{1}\n}\nfunc (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *QueryParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_QueryParamsResponse.Merge(m, src)\n}\nfunc (m *QueryParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *QueryParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_QueryParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo\n\nfunc (m *QueryParamsResponse) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\n// LockupRequest is the request type for the Query/Lockup RPC method.\ntype LockupRequest struct {\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n}\n\nfunc (m *LockupRequest) Reset()         { *m = LockupRequest{} }\nfunc (m *LockupRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LockupRequest) ProtoMessage()    {}\nfunc (*LockupRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{2}\n}\nfunc (m *LockupRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LockupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LockupRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LockupRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LockupRequest.Merge(m, src)\n}\nfunc (m *LockupRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LockupRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LockupRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LockupRequest proto.InternalMessageInfo\n\nfunc (m *LockupRequest) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *LockupRequest) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\n// LockupResponse is the response type for the Query/Lockup RPC method.\ntype LockupResponse struct {\n\tLockup Lockup `protobuf:\"bytes,1,opt,name=lockup,proto3\" json:\"lockup\"`\n}\n\nfunc (m *LockupResponse) Reset()         { *m = LockupResponse{} }\nfunc (m *LockupResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LockupResponse) ProtoMessage()    {}\nfunc (*LockupResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{3}\n}\nfunc (m *LockupResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LockupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LockupResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LockupResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LockupResponse.Merge(m, src)\n}\nfunc (m *LockupResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LockupResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LockupResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LockupResponse proto.InternalMessageInfo\n\nfunc (m *LockupResponse) GetLockup() Lockup {\n\tif m != nil {\n\t\treturn m.Lockup\n\t}\n\treturn Lockup{}\n}\n\n// LockupsRequest is the request type for the Query/Lockups RPC method.\ntype LockupsRequest struct {\n\tDelegatorAddress string             `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tPagination       *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *LockupsRequest) Reset()         { *m = LockupsRequest{} }\nfunc (m *LockupsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*LockupsRequest) ProtoMessage()    {}\nfunc (*LockupsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{4}\n}\nfunc (m *LockupsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LockupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LockupsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LockupsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LockupsRequest.Merge(m, src)\n}\nfunc (m *LockupsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LockupsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_LockupsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LockupsRequest proto.InternalMessageInfo\n\nfunc (m *LockupsRequest) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *LockupsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// LockupsResponse is the response type for the Query/Lockups RPC method.\ntype LockupsResponse struct {\n\tLockups    []Lockup            `protobuf:\"bytes,1,rep,name=lockups,proto3\" json:\"lockups\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *LockupsResponse) Reset()         { *m = LockupsResponse{} }\nfunc (m *LockupsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*LockupsResponse) ProtoMessage()    {}\nfunc (*LockupsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{5}\n}\nfunc (m *LockupsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *LockupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_LockupsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *LockupsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_LockupsResponse.Merge(m, src)\n}\nfunc (m *LockupsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *LockupsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_LockupsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_LockupsResponse proto.InternalMessageInfo\n\nfunc (m *LockupsResponse) GetLockups() []Lockup {\n\tif m != nil {\n\t\treturn m.Lockups\n\t}\n\treturn nil\n}\n\nfunc (m *LockupsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// UnlockingLockupRequest is the request type for the Query/UnlockingLockup RPC method.\ntype UnlockingLockupRequest struct {\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tCreationHeight   int64  `protobuf:\"varint,3,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n}\n\nfunc (m *UnlockingLockupRequest) Reset()         { *m = UnlockingLockupRequest{} }\nfunc (m *UnlockingLockupRequest) String() string { return proto.CompactTextString(m) }\nfunc (*UnlockingLockupRequest) ProtoMessage()    {}\nfunc (*UnlockingLockupRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{6}\n}\nfunc (m *UnlockingLockupRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnlockingLockupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnlockingLockupRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnlockingLockupRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnlockingLockupRequest.Merge(m, src)\n}\nfunc (m *UnlockingLockupRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnlockingLockupRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnlockingLockupRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnlockingLockupRequest proto.InternalMessageInfo\n\nfunc (m *UnlockingLockupRequest) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *UnlockingLockupRequest) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *UnlockingLockupRequest) GetCreationHeight() int64 {\n\tif m != nil {\n\t\treturn m.CreationHeight\n\t}\n\treturn 0\n}\n\n// UnlockingLockupResponse is the response type for the Query/UnlockingLockup RPC method.\ntype UnlockingLockupResponse struct {\n\tUnlockingLockup UnlockingLockup `protobuf:\"bytes,1,opt,name=unlockingLockup,proto3\" json:\"unlockingLockup\"`\n}\n\nfunc (m *UnlockingLockupResponse) Reset()         { *m = UnlockingLockupResponse{} }\nfunc (m *UnlockingLockupResponse) String() string { return proto.CompactTextString(m) }\nfunc (*UnlockingLockupResponse) ProtoMessage()    {}\nfunc (*UnlockingLockupResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{7}\n}\nfunc (m *UnlockingLockupResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnlockingLockupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnlockingLockupResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnlockingLockupResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnlockingLockupResponse.Merge(m, src)\n}\nfunc (m *UnlockingLockupResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnlockingLockupResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnlockingLockupResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnlockingLockupResponse proto.InternalMessageInfo\n\nfunc (m *UnlockingLockupResponse) GetUnlockingLockup() UnlockingLockup {\n\tif m != nil {\n\t\treturn m.UnlockingLockup\n\t}\n\treturn UnlockingLockup{}\n}\n\n// UnlockingLockupsRequest is the request type for the Query/UnlockingLockups RPC method.\ntype UnlockingLockupsRequest struct {\n\tDelegatorAddress string             `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tPagination       *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *UnlockingLockupsRequest) Reset()         { *m = UnlockingLockupsRequest{} }\nfunc (m *UnlockingLockupsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*UnlockingLockupsRequest) ProtoMessage()    {}\nfunc (*UnlockingLockupsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{8}\n}\nfunc (m *UnlockingLockupsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnlockingLockupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnlockingLockupsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnlockingLockupsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnlockingLockupsRequest.Merge(m, src)\n}\nfunc (m *UnlockingLockupsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnlockingLockupsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnlockingLockupsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnlockingLockupsRequest proto.InternalMessageInfo\n\nfunc (m *UnlockingLockupsRequest) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *UnlockingLockupsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// UnlockingLockupsResponse is the response type for the Query/UnlockingLockups RPC method.\ntype UnlockingLockupsResponse struct {\n\tUnlockingLockups []UnlockingLockup   `protobuf:\"bytes,1,rep,name=unlockingLockups,proto3\" json:\"unlockingLockups\"`\n\tPagination       *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *UnlockingLockupsResponse) Reset()         { *m = UnlockingLockupsResponse{} }\nfunc (m *UnlockingLockupsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*UnlockingLockupsResponse) ProtoMessage()    {}\nfunc (*UnlockingLockupsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{9}\n}\nfunc (m *UnlockingLockupsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UnlockingLockupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UnlockingLockupsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UnlockingLockupsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UnlockingLockupsResponse.Merge(m, src)\n}\nfunc (m *UnlockingLockupsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UnlockingLockupsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_UnlockingLockupsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UnlockingLockupsResponse proto.InternalMessageInfo\n\nfunc (m *UnlockingLockupsResponse) GetUnlockingLockups() []UnlockingLockup {\n\tif m != nil {\n\t\treturn m.UnlockingLockups\n\t}\n\treturn nil\n}\n\nfunc (m *UnlockingLockupsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// DevelopersRequest is the request type for the Query/Developers RPC method.\ntype DevelopersRequest struct {\n\tPagination *query.PageRequest `protobuf:\"bytes,1,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *DevelopersRequest) Reset()         { *m = DevelopersRequest{} }\nfunc (m *DevelopersRequest) String() string { return proto.CompactTextString(m) }\nfunc (*DevelopersRequest) ProtoMessage()    {}\nfunc (*DevelopersRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{10}\n}\nfunc (m *DevelopersRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DevelopersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DevelopersRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DevelopersRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DevelopersRequest.Merge(m, src)\n}\nfunc (m *DevelopersRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DevelopersRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_DevelopersRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DevelopersRequest proto.InternalMessageInfo\n\nfunc (m *DevelopersRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// DevelopersResponse is the response type for the Query/Developers RPC method.\ntype DevelopersResponse struct {\n\tDevelopers []Developer         `protobuf:\"bytes,1,rep,name=developers,proto3\" json:\"developers\"`\n\tPagination *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *DevelopersResponse) Reset()         { *m = DevelopersResponse{} }\nfunc (m *DevelopersResponse) String() string { return proto.CompactTextString(m) }\nfunc (*DevelopersResponse) ProtoMessage()    {}\nfunc (*DevelopersResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{11}\n}\nfunc (m *DevelopersResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *DevelopersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_DevelopersResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *DevelopersResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_DevelopersResponse.Merge(m, src)\n}\nfunc (m *DevelopersResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *DevelopersResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_DevelopersResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_DevelopersResponse proto.InternalMessageInfo\n\nfunc (m *DevelopersResponse) GetDevelopers() []Developer {\n\tif m != nil {\n\t\treturn m.Developers\n\t}\n\treturn nil\n}\n\nfunc (m *DevelopersResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// UserSubscriptionsRequest is the request type for the Query/UserSubscriptions RPC method.\ntype UserSubscriptionsRequest struct {\n\tDeveloper  string             `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\tPagination *query.PageRequest `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *UserSubscriptionsRequest) Reset()         { *m = UserSubscriptionsRequest{} }\nfunc (m *UserSubscriptionsRequest) String() string { return proto.CompactTextString(m) }\nfunc (*UserSubscriptionsRequest) ProtoMessage()    {}\nfunc (*UserSubscriptionsRequest) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{12}\n}\nfunc (m *UserSubscriptionsRequest) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UserSubscriptionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UserSubscriptionsRequest.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UserSubscriptionsRequest) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UserSubscriptionsRequest.Merge(m, src)\n}\nfunc (m *UserSubscriptionsRequest) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UserSubscriptionsRequest) XXX_DiscardUnknown() {\n\txxx_messageInfo_UserSubscriptionsRequest.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UserSubscriptionsRequest proto.InternalMessageInfo\n\nfunc (m *UserSubscriptionsRequest) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *UserSubscriptionsRequest) GetPagination() *query.PageRequest {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\n// UserSubscriptionsResponse is the response type for the Query/UserSubscriptions RPC method.\ntype UserSubscriptionsResponse struct {\n\tUserSubscriptions []UserSubscription  `protobuf:\"bytes,1,rep,name=user_subscriptions,json=userSubscriptions,proto3\" json:\"user_subscriptions\"`\n\tPagination        *query.PageResponse `protobuf:\"bytes,2,opt,name=pagination,proto3\" json:\"pagination,omitempty\"`\n}\n\nfunc (m *UserSubscriptionsResponse) Reset()         { *m = UserSubscriptionsResponse{} }\nfunc (m *UserSubscriptionsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*UserSubscriptionsResponse) ProtoMessage()    {}\nfunc (*UserSubscriptionsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_f694a74eba313686, []int{13}\n}\nfunc (m *UserSubscriptionsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UserSubscriptionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UserSubscriptionsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UserSubscriptionsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UserSubscriptionsResponse.Merge(m, src)\n}\nfunc (m *UserSubscriptionsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UserSubscriptionsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_UserSubscriptionsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UserSubscriptionsResponse proto.InternalMessageInfo\n\nfunc (m *UserSubscriptionsResponse) GetUserSubscriptions() []UserSubscription {\n\tif m != nil {\n\t\treturn m.UserSubscriptions\n\t}\n\treturn nil\n}\n\nfunc (m *UserSubscriptionsResponse) GetPagination() *query.PageResponse {\n\tif m != nil {\n\t\treturn m.Pagination\n\t}\n\treturn nil\n}\n\nfunc init() {\n\tproto.RegisterType((*QueryParamsRequest)(nil), \"sourcehub.tier.v1beta1.QueryParamsRequest\")\n\tproto.RegisterType((*QueryParamsResponse)(nil), \"sourcehub.tier.v1beta1.QueryParamsResponse\")\n\tproto.RegisterType((*LockupRequest)(nil), \"sourcehub.tier.v1beta1.LockupRequest\")\n\tproto.RegisterType((*LockupResponse)(nil), \"sourcehub.tier.v1beta1.LockupResponse\")\n\tproto.RegisterType((*LockupsRequest)(nil), \"sourcehub.tier.v1beta1.LockupsRequest\")\n\tproto.RegisterType((*LockupsResponse)(nil), \"sourcehub.tier.v1beta1.LockupsResponse\")\n\tproto.RegisterType((*UnlockingLockupRequest)(nil), \"sourcehub.tier.v1beta1.UnlockingLockupRequest\")\n\tproto.RegisterType((*UnlockingLockupResponse)(nil), \"sourcehub.tier.v1beta1.UnlockingLockupResponse\")\n\tproto.RegisterType((*UnlockingLockupsRequest)(nil), \"sourcehub.tier.v1beta1.UnlockingLockupsRequest\")\n\tproto.RegisterType((*UnlockingLockupsResponse)(nil), \"sourcehub.tier.v1beta1.UnlockingLockupsResponse\")\n\tproto.RegisterType((*DevelopersRequest)(nil), \"sourcehub.tier.v1beta1.DevelopersRequest\")\n\tproto.RegisterType((*DevelopersResponse)(nil), \"sourcehub.tier.v1beta1.DevelopersResponse\")\n\tproto.RegisterType((*UserSubscriptionsRequest)(nil), \"sourcehub.tier.v1beta1.UserSubscriptionsRequest\")\n\tproto.RegisterType((*UserSubscriptionsResponse)(nil), \"sourcehub.tier.v1beta1.UserSubscriptionsResponse\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/tier/v1beta1/query.proto\", fileDescriptor_f694a74eba313686)\n}\n\nvar fileDescriptor_f694a74eba313686 = []byte{\n\t// 887 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x97, 0xcf, 0x6b, 0x2b, 0x55,\n\t0x14, 0xc7, 0x73, 0x5f, 0x35, 0x8f, 0x9c, 0x87, 0x2f, 0xcd, 0xf5, 0x51, 0x6b, 0x29, 0x63, 0x1d,\n\t0xb5, 0x69, 0x53, 0x98, 0xdb, 0xa4, 0x8a, 0x28, 0x2a, 0xb4, 0x48, 0x5b, 0x41, 0x8a, 0x46, 0xc4,\n\t0x1f, 0xa5, 0x94, 0x49, 0x72, 0x99, 0x0e, 0x4d, 0xe6, 0x4e, 0xe7, 0xce, 0x54, 0x4b, 0x09, 0x88,\n\t0xe0, 0xc2, 0x8d, 0x0a, 0x82, 0x0b, 0xdd, 0xab, 0x3b, 0x05, 0x5d, 0xbb, 0x71, 0xd3, 0x65, 0xc1,\n\t0x85, 0xae, 0x44, 0x5a, 0xc1, 0x7f, 0x43, 0xe6, 0xde, 0x3b, 0x93, 0x64, 0xa6, 0xd3, 0x4c, 0x4b,\n\t0xd0, 0x4d, 0x09, 0x77, 0xbe, 0xe7, 0x9c, 0xcf, 0xf9, 0xce, 0xc9, 0xb9, 0x29, 0xe8, 0x9c, 0x05,\n\t0x5e, 0x9b, 0x1e, 0x04, 0x2d, 0xe2, 0xdb, 0xd4, 0x23, 0xc7, 0xf5, 0x16, 0xf5, 0xcd, 0x3a, 0x39,\n\t0x0a, 0xa8, 0x77, 0x62, 0xb8, 0x1e, 0xf3, 0x19, 0x9e, 0x89, 0x35, 0x46, 0xa8, 0x31, 0x94, 0x66,\n\t0xae, 0x62, 0xf6, 0x6c, 0x87, 0x11, 0xf1, 0x57, 0x4a, 0xe7, 0x6a, 0x6d, 0xc6, 0x7b, 0x8c, 0x93,\n\t0x96, 0xc9, 0xa9, 0xcc, 0x11, 0x67, 0x74, 0x4d, 0xcb, 0x76, 0x4c, 0xdf, 0x66, 0x8e, 0xd2, 0x3e,\n\t0xb0, 0x98, 0xc5, 0xc4, 0x47, 0x12, 0x7e, 0x52, 0xa7, 0xf3, 0x16, 0x63, 0x56, 0x97, 0x12, 0xd3,\n\t0xb5, 0x89, 0xe9, 0x38, 0xcc, 0x17, 0x21, 0x5c, 0x3d, 0x7d, 0x2a, 0x03, 0xb7, 0xcb, 0xda, 0x87,\n\t0x81, 0x3b, 0x46, 0xe4, 0x9a, 0x9e, 0xd9, 0x8b, 0x32, 0x2d, 0x67, 0x88, 0x78, 0xd0, 0xe2, 0x6d,\n\t0xcf, 0x76, 0x07, 0xa0, 0xfa, 0x03, 0xc0, 0x6f, 0x86, 0xad, 0xbc, 0x21, 0xe2, 0x9b, 0xf4, 0x28,\n\t0xa0, 0xdc, 0xd7, 0xdf, 0x85, 0x47, 0x47, 0x4e, 0xb9, 0xcb, 0x1c, 0x4e, 0xf1, 0x3a, 0x14, 0x65,\n\t0x9d, 0x59, 0xb4, 0x80, 0x96, 0xee, 0x35, 0x34, 0xe3, 0x6a, 0xf7, 0x0c, 0x19, 0xb7, 0x51, 0x3a,\n\t0xfb, 0xf3, 0x89, 0xc2, 0xf7, 0xff, 0xfc, 0x58, 0x43, 0x4d, 0x15, 0xa8, 0xdb, 0xf0, 0xc8, 0xeb,\n\t0xa2, 0x1f, 0x55, 0x0a, 0xaf, 0x40, 0xa5, 0x43, 0xbb, 0xd4, 0x32, 0x7d, 0xe6, 0xed, 0x9b, 0x9d,\n\t0x8e, 0x47, 0xb9, 0x4c, 0x5f, 0x6a, 0x4e, 0xc7, 0x0f, 0xd6, 0xe5, 0x79, 0x28, 0x3e, 0x36, 0xbb,\n\t0x76, 0x67, 0x44, 0x7c, 0x47, 0x8a, 0xe3, 0x07, 0x4a, 0xac, 0xef, 0xc0, 0xfd, 0xa8, 0x94, 0xe2,\n\t0x7f, 0x09, 0x8a, 0xd2, 0xcc, 0x71, 0xfc, 0x32, 0x6e, 0xe3, 0xa1, 0x90, 0xbf, 0xa9, 0x62, 0xf4,\n\t0x4f, 0x50, 0x94, 0x90, 0xdf, 0x0a, 0x7e, 0x13, 0x60, 0x30, 0x27, 0x82, 0xfa, 0x5e, 0x63, 0xd1,\n\t0x90, 0x43, 0x65, 0x84, 0x43, 0x65, 0xc8, 0xc1, 0x1c, 0x98, 0x68, 0x51, 0x55, 0xa8, 0x39, 0x14,\n\t0xa9, 0x7f, 0x8d, 0xa0, 0x1c, 0x73, 0xa8, 0xce, 0x5e, 0x81, 0xbb, 0x92, 0x32, 0x2c, 0x3f, 0x95,\n\t0xbb, 0xb5, 0x28, 0x08, 0x6f, 0x5d, 0xc1, 0x56, 0x1d, 0xcb, 0x26, 0x8b, 0x8f, 0xc0, 0x7d, 0x83,\n\t0x60, 0xe6, 0x6d, 0x27, 0x4c, 0x6b, 0x3b, 0xd6, 0x7f, 0xf4, 0xa6, 0x71, 0x15, 0xca, 0x6d, 0x8f,\n\t0x0a, 0x80, 0xfd, 0x03, 0x6a, 0x5b, 0x07, 0xfe, 0xec, 0xd4, 0x02, 0x5a, 0x9a, 0x6a, 0xde, 0x8f,\n\t0x8e, 0xb7, 0xc5, 0xa9, 0xee, 0xc1, 0x63, 0x29, 0x38, 0xe5, 0xe0, 0x3b, 0x50, 0x0e, 0x46, 0x1f,\n\t0xa9, 0x21, 0xa9, 0x66, 0x39, 0x99, 0xc8, 0xa4, 0x2c, 0x4d, 0x66, 0xd1, 0x3f, 0x43, 0xa9, 0xa2,\n\t0xff, 0xef, 0xfc, 0xfc, 0x82, 0x60, 0x36, 0x0d, 0xa4, 0x6c, 0x78, 0x0f, 0xa6, 0x13, 0x0d, 0x44,\n\t0x13, 0x75, 0x43, 0x1f, 0x52, 0x69, 0x26, 0x37, 0x63, 0xbb, 0x50, 0x79, 0x95, 0x1e, 0xd3, 0x2e,\n\t0x73, 0xa9, 0x17, 0x5b, 0x39, 0xea, 0x0e, 0xba, 0xb5, 0x3b, 0xdf, 0x22, 0xc0, 0xc3, 0xd9, 0x95,\n\t0x2f, 0x5b, 0x00, 0x9d, 0xf8, 0x54, 0x39, 0xf2, 0x64, 0x96, 0x23, 0x71, 0xbc, 0xf2, 0x62, 0x28,\n\t0x74, 0x72, 0x2e, 0x7c, 0x14, 0xbe, 0x46, 0x4e, 0xbd, 0xb7, 0x86, 0x96, 0x7a, 0xec, 0xc6, 0x3c,\n\t0x94, 0xe2, 0x9a, 0x6a, 0xa0, 0x06, 0x07, 0x13, 0x9b, 0xa4, 0x5f, 0x11, 0x3c, 0x7e, 0x05, 0x82,\n\t0xb2, 0x6c, 0x0f, 0x70, 0xc0, 0xa9, 0xb7, 0x3f, 0x7c, 0xeb, 0x44, 0xd6, 0x2d, 0x65, 0x0e, 0x53,\n\t0x22, 0x9d, 0x72, 0xb0, 0x12, 0x24, 0xcb, 0x4c, 0xcc, 0xc8, 0xc6, 0x0f, 0x25, 0x78, 0x58, 0xdc,\n\t0x76, 0xf8, 0x53, 0x04, 0x45, 0x79, 0x75, 0xe1, 0x5a, 0x16, 0x60, 0xfa, 0xb6, 0x9c, 0x5b, 0xc9,\n\t0xa5, 0x95, 0x95, 0xf5, 0xc5, 0x8f, 0x7f, 0xfb, 0xfb, 0xcb, 0x3b, 0x0b, 0x58, 0x23, 0xd7, 0xde,\n\t0xe4, 0xf8, 0x3b, 0x04, 0x45, 0xf9, 0xcd, 0xc1, 0xcf, 0x5c, 0xbf, 0xcb, 0x23, 0x8c, 0xc5, 0x71,\n\t0x32, 0x45, 0xb0, 0x23, 0x08, 0xb6, 0xf1, 0x26, 0xb9, 0xe6, 0x07, 0x07, 0xed, 0x90, 0xd3, 0xd4,\n\t0x6a, 0xea, 0x93, 0xd3, 0xd4, 0x52, 0xee, 0xe3, 0xaf, 0x10, 0xdc, 0x8d, 0xbe, 0xe3, 0x63, 0x18,\n\t0x62, 0xcb, 0xaa, 0x63, 0x75, 0x0a, 0xf6, 0x45, 0x01, 0xfb, 0x2c, 0x6e, 0xdc, 0x1c, 0x16, 0xff,\n\t0x8e, 0xa0, 0x9c, 0x58, 0x4e, 0xd8, 0xc8, 0xb9, 0xc5, 0x22, 0x50, 0x92, 0x5b, 0xaf, 0x80, 0xdb,\n\t0x02, 0x78, 0x0f, 0xef, 0x66, 0x01, 0xc7, 0x7b, 0x31, 0xaf, 0xc1, 0xe4, 0x34, 0x71, 0xb9, 0xf5,\n\t0xf1, 0xcf, 0x08, 0xa6, 0x93, 0x2b, 0x1c, 0xe7, 0x45, 0x8d, 0x5f, 0xc2, 0x6a, 0xfe, 0x00, 0xd5,\n\t0xdc, 0xcb, 0xa2, 0xb9, 0xe7, 0xf1, 0x73, 0xb7, 0x6a, 0x0e, 0x7f, 0x8e, 0x00, 0x06, 0xbb, 0x15,\n\t0x2f, 0x8f, 0xdd, 0x9f, 0x31, 0x6a, 0x2d, 0x8f, 0x54, 0x41, 0xd6, 0x04, 0xe4, 0xd3, 0x58, 0xcf,\n\t0x82, 0x1c, 0xda, 0xc6, 0x3f, 0x21, 0xa8, 0xa4, 0x36, 0x18, 0x5e, 0xcd, 0xbb, 0x9d, 0x62, 0xbe,\n\t0xfa, 0x0d, 0x22, 0x14, 0xe6, 0x0b, 0x02, 0x73, 0x0d, 0xd7, 0x49, 0x8e, 0x5f, 0xeb, 0x3c, 0xf4,\n\t0x53, 0x51, 0xf7, 0x37, 0x5e, 0x3b, 0xbb, 0xd0, 0xd0, 0xf9, 0x85, 0x86, 0xfe, 0xba, 0xd0, 0xd0,\n\t0x17, 0x97, 0x5a, 0xe1, 0xfc, 0x52, 0x2b, 0xfc, 0x71, 0xa9, 0x15, 0xde, 0x27, 0x96, 0xed, 0x87,\n\t0x0c, 0x6d, 0xd6, 0x53, 0x69, 0x1d, 0xea, 0x7f, 0xc0, 0xbc, 0xc3, 0xa1, 0x22, 0x1f, 0xca, 0x32,\n\t0xfe, 0x89, 0x4b, 0x79, 0xab, 0x28, 0xfe, 0x0d, 0x58, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x29,\n\t0x9d, 0xc5, 0x75, 0x2c, 0x0d, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// QueryClient is the client API for Query service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype QueryClient interface {\n\t// Parameters queries the parameters of the module.\n\tParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)\n\t// Lockup queries a lockup by delegator and validator address.\n\tLockup(ctx context.Context, in *LockupRequest, opts ...grpc.CallOption) (*LockupResponse, error)\n\t// Lockups queries all the lockups of a delegator.\n\tLockups(ctx context.Context, in *LockupsRequest, opts ...grpc.CallOption) (*LockupsResponse, error)\n\t// UnlockingLockup queries an unlocking lockup by delegator and validator address.\n\tUnlockingLockup(ctx context.Context, in *UnlockingLockupRequest, opts ...grpc.CallOption) (*UnlockingLockupResponse, error)\n\t// UnlockingLockups queries all the unlocking lockups of a delegator.\n\tUnlockingLockups(ctx context.Context, in *UnlockingLockupsRequest, opts ...grpc.CallOption) (*UnlockingLockupsResponse, error)\n\t// Developers queries all registered developers.\n\tDevelopers(ctx context.Context, in *DevelopersRequest, opts ...grpc.CallOption) (*DevelopersResponse, error)\n\t// UserSubscriptions queries all user subscriptions for a specific developer.\n\tUserSubscriptions(ctx context.Context, in *UserSubscriptionsRequest, opts ...grpc.CallOption) (*UserSubscriptionsResponse, error)\n}\n\ntype queryClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewQueryClient(cc grpc1.ClientConn) QueryClient {\n\treturn &queryClient{cc}\n}\n\nfunc (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) {\n\tout := new(QueryParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/Params\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Lockup(ctx context.Context, in *LockupRequest, opts ...grpc.CallOption) (*LockupResponse, error) {\n\tout := new(LockupResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/Lockup\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Lockups(ctx context.Context, in *LockupsRequest, opts ...grpc.CallOption) (*LockupsResponse, error) {\n\tout := new(LockupsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/Lockups\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UnlockingLockup(ctx context.Context, in *UnlockingLockupRequest, opts ...grpc.CallOption) (*UnlockingLockupResponse, error) {\n\tout := new(UnlockingLockupResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/UnlockingLockup\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UnlockingLockups(ctx context.Context, in *UnlockingLockupsRequest, opts ...grpc.CallOption) (*UnlockingLockupsResponse, error) {\n\tout := new(UnlockingLockupsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/UnlockingLockups\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) Developers(ctx context.Context, in *DevelopersRequest, opts ...grpc.CallOption) (*DevelopersResponse, error) {\n\tout := new(DevelopersResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/Developers\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *queryClient) UserSubscriptions(ctx context.Context, in *UserSubscriptionsRequest, opts ...grpc.CallOption) (*UserSubscriptionsResponse, error) {\n\tout := new(UserSubscriptionsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Query/UserSubscriptions\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// QueryServer is the server API for Query service.\ntype QueryServer interface {\n\t// Parameters queries the parameters of the module.\n\tParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)\n\t// Lockup queries a lockup by delegator and validator address.\n\tLockup(context.Context, *LockupRequest) (*LockupResponse, error)\n\t// Lockups queries all the lockups of a delegator.\n\tLockups(context.Context, *LockupsRequest) (*LockupsResponse, error)\n\t// UnlockingLockup queries an unlocking lockup by delegator and validator address.\n\tUnlockingLockup(context.Context, *UnlockingLockupRequest) (*UnlockingLockupResponse, error)\n\t// UnlockingLockups queries all the unlocking lockups of a delegator.\n\tUnlockingLockups(context.Context, *UnlockingLockupsRequest) (*UnlockingLockupsResponse, error)\n\t// Developers queries all registered developers.\n\tDevelopers(context.Context, *DevelopersRequest) (*DevelopersResponse, error)\n\t// UserSubscriptions queries all user subscriptions for a specific developer.\n\tUserSubscriptions(context.Context, *UserSubscriptionsRequest) (*UserSubscriptionsResponse, error)\n}\n\n// UnimplementedQueryServer can be embedded to have forward compatible implementations.\ntype UnimplementedQueryServer struct {\n}\n\nfunc (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Params not implemented\")\n}\nfunc (*UnimplementedQueryServer) Lockup(ctx context.Context, req *LockupRequest) (*LockupResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lockup not implemented\")\n}\nfunc (*UnimplementedQueryServer) Lockups(ctx context.Context, req *LockupsRequest) (*LockupsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lockups not implemented\")\n}\nfunc (*UnimplementedQueryServer) UnlockingLockup(ctx context.Context, req *UnlockingLockupRequest) (*UnlockingLockupResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UnlockingLockup not implemented\")\n}\nfunc (*UnimplementedQueryServer) UnlockingLockups(ctx context.Context, req *UnlockingLockupsRequest) (*UnlockingLockupsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UnlockingLockups not implemented\")\n}\nfunc (*UnimplementedQueryServer) Developers(ctx context.Context, req *DevelopersRequest) (*DevelopersResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Developers not implemented\")\n}\nfunc (*UnimplementedQueryServer) UserSubscriptions(ctx context.Context, req *UserSubscriptionsRequest) (*UserSubscriptionsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UserSubscriptions not implemented\")\n}\n\nfunc RegisterQueryServer(s grpc1.Server, srv QueryServer) {\n\ts.RegisterService(&_Query_serviceDesc, srv)\n}\n\nfunc _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(QueryParamsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Params(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/Params\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Lockup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LockupRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Lockup(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/Lockup\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Lockup(ctx, req.(*LockupRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Lockups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(LockupsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Lockups(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/Lockups\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Lockups(ctx, req.(*LockupsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UnlockingLockup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UnlockingLockupRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UnlockingLockup(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/UnlockingLockup\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UnlockingLockup(ctx, req.(*UnlockingLockupRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UnlockingLockups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UnlockingLockupsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UnlockingLockups(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/UnlockingLockups\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UnlockingLockups(ctx, req.(*UnlockingLockupsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_Developers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(DevelopersRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).Developers(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/Developers\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).Developers(ctx, req.(*DevelopersRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Query_UserSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(UserSubscriptionsRequest)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(QueryServer).UserSubscriptions(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Query/UserSubscriptions\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(QueryServer).UserSubscriptions(ctx, req.(*UserSubscriptionsRequest))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Query_serviceDesc = _Query_serviceDesc\nvar _Query_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.tier.v1beta1.Query\",\n\tHandlerType: (*QueryServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"Params\",\n\t\t\tHandler:    _Query_Params_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lockup\",\n\t\t\tHandler:    _Query_Lockup_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lockups\",\n\t\t\tHandler:    _Query_Lockups_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UnlockingLockup\",\n\t\t\tHandler:    _Query_UnlockingLockup_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UnlockingLockups\",\n\t\t\tHandler:    _Query_UnlockingLockups_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Developers\",\n\t\t\tHandler:    _Query_Developers_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UserSubscriptions\",\n\t\t\tHandler:    _Query_UserSubscriptions_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/tier/v1beta1/query.proto\",\n}\n\nfunc (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LockupRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LockupRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LockupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LockupResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LockupResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LockupResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Lockup.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LockupsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LockupsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LockupsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *LockupsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *LockupsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *LockupsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Lockups) > 0 {\n\t\tfor iNdEx := len(m.Lockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Lockups[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnlockingLockupRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnlockingLockupRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnlockingLockupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.CreationHeight != 0 {\n\t\ti = encodeVarintQuery(dAtA, i, uint64(m.CreationHeight))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnlockingLockupResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnlockingLockupResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnlockingLockupResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.UnlockingLockup.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnlockingLockupsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnlockingLockupsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnlockingLockupsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UnlockingLockupsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UnlockingLockupsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UnlockingLockupsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.UnlockingLockups) > 0 {\n\t\tfor iNdEx := len(m.UnlockingLockups) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.UnlockingLockups[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DevelopersRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DevelopersRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DevelopersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *DevelopersResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *DevelopersResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *DevelopersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developers) > 0 {\n\t\tfor iNdEx := len(m.Developers) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.Developers[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UserSubscriptionsRequest) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UserSubscriptionsRequest) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UserSubscriptionsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintQuery(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UserSubscriptionsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UserSubscriptionsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UserSubscriptionsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\t{\n\t\t\tsize, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i])\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\ti -= size\n\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.UserSubscriptions) > 0 {\n\t\tfor iNdEx := len(m.UserSubscriptions) - 1; iNdEx >= 0; iNdEx-- {\n\t\t\t{\n\t\t\t\tsize, err := m.UserSubscriptions[iNdEx].MarshalToSizedBuffer(dAtA[:i])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn 0, err\n\t\t\t\t}\n\t\t\t\ti -= size\n\t\t\t\ti = encodeVarintQuery(dAtA, i, uint64(size))\n\t\t\t}\n\t\t\ti--\n\t\t\tdAtA[i] = 0xa\n\t\t}\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintQuery(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovQuery(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *QueryParamsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *QueryParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Params.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc (m *LockupRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *LockupResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.Lockup.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc (m *LockupsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *LockupsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Lockups) > 0 {\n\t\tfor _, e := range m.Lockups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UnlockingLockupRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.CreationHeight != 0 {\n\t\tn += 1 + sovQuery(uint64(m.CreationHeight))\n\t}\n\treturn n\n}\n\nfunc (m *UnlockingLockupResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = m.UnlockingLockup.Size()\n\tn += 1 + l + sovQuery(uint64(l))\n\treturn n\n}\n\nfunc (m *UnlockingLockupsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UnlockingLockupsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.UnlockingLockups) > 0 {\n\t\tfor _, e := range m.UnlockingLockups {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DevelopersRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *DevelopersResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.Developers) > 0 {\n\t\tfor _, e := range m.Developers {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UserSubscriptionsRequest) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *UserSubscriptionsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif len(m.UserSubscriptions) > 0 {\n\t\tfor _, e := range m.UserSubscriptions {\n\t\t\tl = e.Size()\n\t\t\tn += 1 + l + sovQuery(uint64(l))\n\t\t}\n\t}\n\tif m.Pagination != nil {\n\t\tl = m.Pagination.Size()\n\t\tn += 1 + l + sovQuery(uint64(l))\n\t}\n\treturn n\n}\n\nfunc sovQuery(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozQuery(x uint64) (n int) {\n\treturn sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *QueryParamsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *QueryParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: QueryParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LockupRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LockupRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LockupRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LockupResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LockupResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LockupResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lockup\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Lockup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LockupsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LockupsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LockupsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *LockupsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: LockupsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: LockupsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Lockups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Lockups = append(m.Lockups, Lockup{})\n\t\t\tif err := m.Lockups[len(m.Lockups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnlockingLockupRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t}\n\t\t\tm.CreationHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnlockingLockupResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockup\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.UnlockingLockup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnlockingLockupsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UnlockingLockupsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UnlockingLockupsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockingLockups\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UnlockingLockups = append(m.UnlockingLockups, UnlockingLockup{})\n\t\t\tif err := m.UnlockingLockups[len(m.UnlockingLockups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DevelopersRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DevelopersRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DevelopersRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *DevelopersResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: DevelopersResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: DevelopersResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developers\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developers = append(m.Developers, Developer{})\n\t\t\tif err := m.Developers[len(m.Developers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UserSubscriptionsRequest) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscriptionsRequest: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscriptionsRequest: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageRequest{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UserSubscriptionsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscriptionsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscriptionsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserSubscriptions\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserSubscriptions = append(m.UserSubscriptions, UserSubscription{})\n\t\t\tif err := m.UserSubscriptions[len(m.UserSubscriptions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Pagination\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif m.Pagination == nil {\n\t\t\t\tm.Pagination = &query.PageResponse{}\n\t\t\t}\n\t\t\tif err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipQuery(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipQuery(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowQuery\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupQuery\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthQuery\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthQuery        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowQuery          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupQuery = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/tier/types/query.pb.gw.go",
    "content": "// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/query.proto\n\n/*\nPackage types is a reverse proxy.\n\nIt translates gRPC into RESTful JSON APIs.\n*/\npackage types\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/golang/protobuf/descriptor\"\n\t\"github.com/golang/protobuf/proto\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/runtime\"\n\t\"github.com/grpc-ecosystem/grpc-gateway/utilities\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/grpclog\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Suppress \"imported and not used\" errors\nvar _ codes.Code\nvar _ io.Reader\nvar _ status.Status\nvar _ = runtime.String\nvar _ = utilities.NewDoubleArray\nvar _ = descriptor.ForMessage\nvar _ = metadata.Join\n\nfunc request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq QueryParamsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tmsg, err := server.Params(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_Lockup_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq LockupRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"validator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"validator_address\")\n\t}\n\n\tprotoReq.ValidatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"validator_address\", err)\n\t}\n\n\tmsg, err := client.Lockup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Lockup_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq LockupRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"validator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"validator_address\")\n\t}\n\n\tprotoReq.ValidatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"validator_address\", err)\n\t}\n\n\tmsg, err := server.Lockup(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_Lockups_0 = &utilities.DoubleArray{Encoding: map[string]int{\"delegator_address\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_Lockups_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq LockupsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Lockups_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.Lockups(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Lockups_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq LockupsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Lockups_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.Lockups(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nfunc request_Query_UnlockingLockup_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UnlockingLockupRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"validator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"validator_address\")\n\t}\n\n\tprotoReq.ValidatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"validator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"creation_height\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"creation_height\")\n\t}\n\n\tprotoReq.CreationHeight, err = runtime.Int64(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"creation_height\", err)\n\t}\n\n\tmsg, err := client.UnlockingLockup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_UnlockingLockup_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UnlockingLockupRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"validator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"validator_address\")\n\t}\n\n\tprotoReq.ValidatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"validator_address\", err)\n\t}\n\n\tval, ok = pathParams[\"creation_height\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"creation_height\")\n\t}\n\n\tprotoReq.CreationHeight, err = runtime.Int64(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"creation_height\", err)\n\t}\n\n\tmsg, err := server.UnlockingLockup(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_UnlockingLockups_0 = &utilities.DoubleArray{Encoding: map[string]int{\"delegator_address\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_UnlockingLockups_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UnlockingLockupsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_UnlockingLockups_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.UnlockingLockups(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_UnlockingLockups_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UnlockingLockupsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"delegator_address\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"delegator_address\")\n\t}\n\n\tprotoReq.DelegatorAddress, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"delegator_address\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_UnlockingLockups_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.UnlockingLockups(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_Developers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}\n)\n\nfunc request_Query_Developers_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq DevelopersRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Developers_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.Developers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_Developers_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq DevelopersRequest\n\tvar metadata runtime.ServerMetadata\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Developers_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.Developers(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\nvar (\n\tfilter_Query_UserSubscriptions_0 = &utilities.DoubleArray{Encoding: map[string]int{\"developer\": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}\n)\n\nfunc request_Query_UserSubscriptions_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UserSubscriptionsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"developer\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"developer\")\n\t}\n\n\tprotoReq.Developer, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"developer\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_UserSubscriptions_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := client.UserSubscriptions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))\n\treturn msg, metadata, err\n\n}\n\nfunc local_request_Query_UserSubscriptions_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {\n\tvar protoReq UserSubscriptionsRequest\n\tvar metadata runtime.ServerMetadata\n\n\tvar (\n\t\tval string\n\t\tok  bool\n\t\terr error\n\t\t_   = err\n\t)\n\n\tval, ok = pathParams[\"developer\"]\n\tif !ok {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"missing parameter %s\", \"developer\")\n\t}\n\n\tprotoReq.Developer, err = runtime.String(val)\n\n\tif err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"type mismatch, parameter: %s, error: %v\", \"developer\", err)\n\t}\n\n\tif err := req.ParseForm(); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\tif err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_UserSubscriptions_0); err != nil {\n\t\treturn nil, metadata, status.Errorf(codes.InvalidArgument, \"%v\", err)\n\t}\n\n\tmsg, err := server.UserSubscriptions(ctx, &protoReq)\n\treturn msg, metadata, err\n\n}\n\n// RegisterQueryHandlerServer registers the http handlers for service Query to \"mux\".\n// UnaryRPC     :call QueryServer directly.\n// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.\n// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.\nfunc RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Lockup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Lockup_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Lockup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Lockups_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Lockups_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Lockups_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UnlockingLockup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_UnlockingLockup_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UnlockingLockup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UnlockingLockups_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_UnlockingLockups_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UnlockingLockups_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Developers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_Developers_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Developers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UserSubscriptions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tvar stream runtime.ServerTransportStream\n\t\tctx = grpc.NewContextWithServerTransportStream(ctx, &stream)\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := local_request_Query_UserSubscriptions_0(rctx, inboundMarshaler, server, req, pathParams)\n\t\tmd.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UserSubscriptions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\n// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but\n// automatically dials to \"endpoint\" and closes the connection when \"ctx\" gets done.\nfunc RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {\n\tconn, err := grpc.Dial(endpoint, opts...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tgo func() {\n\t\t\t<-ctx.Done()\n\t\t\tif cerr := conn.Close(); cerr != nil {\n\t\t\t\tgrpclog.Infof(\"Failed to close conn to %s: %v\", endpoint, cerr)\n\t\t\t}\n\t\t}()\n\t}()\n\n\treturn RegisterQueryHandler(ctx, mux, conn)\n}\n\n// RegisterQueryHandler registers the http handlers for service Query to \"mux\".\n// The handlers forward requests to the grpc endpoint over \"conn\".\nfunc RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {\n\treturn RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn))\n}\n\n// RegisterQueryHandlerClient registers the http handlers for service Query\n// to \"mux\". The handlers forward requests to the grpc endpoint over the given implementation of \"QueryClient\".\n// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in \"QueryClient\"\n// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in\n// \"QueryClient\" to call the correct interceptors.\nfunc RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error {\n\n\tmux.Handle(\"GET\", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Lockup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Lockup_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Lockup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Lockups_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Lockups_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Lockups_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UnlockingLockup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_UnlockingLockup_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UnlockingLockup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UnlockingLockups_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_UnlockingLockups_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UnlockingLockups_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_Developers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_Developers_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_Developers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\tmux.Handle(\"GET\", pattern_Query_UserSubscriptions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {\n\t\tctx, cancel := context.WithCancel(req.Context())\n\t\tdefer cancel()\n\t\tinboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)\n\t\trctx, err := runtime.AnnotateContext(ctx, mux, req)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\t\tresp, md, err := request_Query_UserSubscriptions_0(rctx, inboundMarshaler, client, req, pathParams)\n\t\tctx = runtime.NewServerMetadataContext(ctx, md)\n\t\tif err != nil {\n\t\t\truntime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)\n\t\t\treturn\n\t\t}\n\n\t\tforward_Query_UserSubscriptions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)\n\n\t})\n\n\treturn nil\n}\n\nvar (\n\tpattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"params\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Lockup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"locked\", \"delegator_address\", \"validator_address\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Lockups_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"locked\", \"delegator_address\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_UnlockingLockup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"unlocking\", \"delegator_address\", \"validator_address\", \"creation_height\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_UnlockingLockups_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"unlocking\", \"delegator_address\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_Developers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"developers\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n\n\tpattern_Query_UserSubscriptions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{\"sourcehub\", \"tier\", \"v1beta1\", \"subscriptions\", \"developer\"}, \"\", runtime.AssumeColonVerbOpt(true)))\n)\n\nvar (\n\tforward_Query_Params_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Lockup_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Lockups_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_UnlockingLockup_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_UnlockingLockups_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_Developers_0 = runtime.ForwardResponseMessage\n\n\tforward_Query_UserSubscriptions_0 = runtime.ForwardResponseMessage\n)\n"
  },
  {
    "path": "x/tier/types/subscription.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/subscription.proto\n\npackage types\n\nimport (\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// Developer represents a developer configuration.\ntype Developer struct {\n\t// address is the address of the developer.\n\tAddress string `protobuf:\"bytes,1,opt,name=address,proto3\" json:\"address,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (m *Developer) Reset()         { *m = Developer{} }\nfunc (m *Developer) String() string { return proto.CompactTextString(m) }\nfunc (*Developer) ProtoMessage()    {}\nfunc (*Developer) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_67e933babece0b2c, []int{0}\n}\nfunc (m *Developer) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *Developer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_Developer.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *Developer) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_Developer.Merge(m, src)\n}\nfunc (m *Developer) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *Developer) XXX_DiscardUnknown() {\n\txxx_messageInfo_Developer.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_Developer proto.InternalMessageInfo\n\nfunc (m *Developer) GetAddress() string {\n\tif m != nil {\n\t\treturn m.Address\n\t}\n\treturn \"\"\n}\n\nfunc (m *Developer) GetAutoLockEnabled() bool {\n\tif m != nil {\n\t\treturn m.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// UserSubscription represents a user subscribed to a developer.\ntype UserSubscription struct {\n\t// developer is the address of the developer who registered this user.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the registered user.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// credit_amount is the credit amount allocated to this user.\n\tCreditAmount uint64 `protobuf:\"varint,3,opt,name=credit_amount,json=creditAmount,proto3\" json:\"credit_amount,omitempty\"`\n\t// period is the subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n\t// start_date is when the subscription started.\n\tStartDate time.Time `protobuf:\"bytes,5,opt,name=start_date,json=startDate,proto3,stdtime\" json:\"start_date\"`\n\t// last_renewed is when the subscription was last renewed.\n\tLastRenewed time.Time `protobuf:\"bytes,6,opt,name=last_renewed,json=lastRenewed,proto3,stdtime\" json:\"last_renewed\"`\n}\n\nfunc (m *UserSubscription) Reset()         { *m = UserSubscription{} }\nfunc (m *UserSubscription) String() string { return proto.CompactTextString(m) }\nfunc (*UserSubscription) ProtoMessage()    {}\nfunc (*UserSubscription) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_67e933babece0b2c, []int{1}\n}\nfunc (m *UserSubscription) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *UserSubscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_UserSubscription.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *UserSubscription) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_UserSubscription.Merge(m, src)\n}\nfunc (m *UserSubscription) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *UserSubscription) XXX_DiscardUnknown() {\n\txxx_messageInfo_UserSubscription.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_UserSubscription proto.InternalMessageInfo\n\nfunc (m *UserSubscription) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *UserSubscription) GetUserDid() string {\n\tif m != nil {\n\t\treturn m.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *UserSubscription) GetCreditAmount() uint64 {\n\tif m != nil {\n\t\treturn m.CreditAmount\n\t}\n\treturn 0\n}\n\nfunc (m *UserSubscription) GetPeriod() uint64 {\n\tif m != nil {\n\t\treturn m.Period\n\t}\n\treturn 0\n}\n\nfunc (m *UserSubscription) GetStartDate() time.Time {\n\tif m != nil {\n\t\treturn m.StartDate\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *UserSubscription) GetLastRenewed() time.Time {\n\tif m != nil {\n\t\treturn m.LastRenewed\n\t}\n\treturn time.Time{}\n}\n\n// TotalDevGranted represents the total credit amount granted by a developer to all users.\ntype TotalDevGranted struct {\n\t// developer is the address of the developer.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// total_granted is the total credit amount granted to all users.\n\tTotalGranted uint64 `protobuf:\"varint,2,opt,name=total_granted,json=totalGranted,proto3\" json:\"total_granted,omitempty\"`\n}\n\nfunc (m *TotalDevGranted) Reset()         { *m = TotalDevGranted{} }\nfunc (m *TotalDevGranted) String() string { return proto.CompactTextString(m) }\nfunc (*TotalDevGranted) ProtoMessage()    {}\nfunc (*TotalDevGranted) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_67e933babece0b2c, []int{2}\n}\nfunc (m *TotalDevGranted) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *TotalDevGranted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_TotalDevGranted.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *TotalDevGranted) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_TotalDevGranted.Merge(m, src)\n}\nfunc (m *TotalDevGranted) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *TotalDevGranted) XXX_DiscardUnknown() {\n\txxx_messageInfo_TotalDevGranted.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_TotalDevGranted proto.InternalMessageInfo\n\nfunc (m *TotalDevGranted) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *TotalDevGranted) GetTotalGranted() uint64 {\n\tif m != nil {\n\t\treturn m.TotalGranted\n\t}\n\treturn 0\n}\n\nfunc init() {\n\tproto.RegisterType((*Developer)(nil), \"sourcehub.tier.v1beta1.Developer\")\n\tproto.RegisterType((*UserSubscription)(nil), \"sourcehub.tier.v1beta1.UserSubscription\")\n\tproto.RegisterType((*TotalDevGranted)(nil), \"sourcehub.tier.v1beta1.TotalDevGranted\")\n}\n\nfunc init() {\n\tproto.RegisterFile(\"sourcehub/tier/v1beta1/subscription.proto\", fileDescriptor_67e933babece0b2c)\n}\n\nvar fileDescriptor_67e933babece0b2c = []byte{\n\t// 476 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x31, 0x6f, 0xd3, 0x5c,\n\t0x14, 0x8d, 0xfb, 0xe5, 0x4b, 0xeb, 0xd7, 0x44, 0xa5, 0x56, 0x55, 0xb9, 0x19, 0x9c, 0x28, 0x5d,\n\t0x42, 0x25, 0x6c, 0xb5, 0x48, 0xec, 0x8d, 0x82, 0x00, 0xa9, 0x93, 0x5b, 0x16, 0x16, 0xeb, 0xd9,\n\t0xef, 0x62, 0x9e, 0x62, 0xfb, 0x5a, 0xef, 0x5d, 0xa7, 0xf0, 0x2f, 0xfa, 0x33, 0x18, 0x19, 0x98,\n\t0xf8, 0x05, 0x1d, 0x2b, 0x26, 0x26, 0x40, 0xc9, 0xc0, 0xdf, 0x40, 0xf6, 0x73, 0x28, 0x1b, 0x82,\n\t0xc5, 0xf2, 0x39, 0xf7, 0xdc, 0x73, 0xed, 0xa3, 0xc3, 0x1e, 0x6a, 0xac, 0x54, 0x02, 0x6f, 0xaa,\n\t0x38, 0x20, 0x09, 0x2a, 0x58, 0x9e, 0xc6, 0x40, 0xfc, 0x34, 0xd0, 0x55, 0xac, 0x13, 0x25, 0x4b,\n\t0x92, 0x58, 0xf8, 0xa5, 0x42, 0x42, 0xe7, 0xf0, 0x97, 0xd4, 0xaf, 0xa5, 0x7e, 0x2b, 0x1d, 0xee,\n\t0xf3, 0x5c, 0x16, 0x18, 0x34, 0x4f, 0x23, 0x1d, 0x1e, 0x25, 0xa8, 0x73, 0xd4, 0x51, 0x83, 0x02,\n\t0x03, 0xda, 0xd1, 0x41, 0x8a, 0x29, 0x1a, 0xbe, 0x7e, 0x6b, 0xd9, 0x51, 0x8a, 0x98, 0x66, 0x10,\n\t0x34, 0x28, 0xae, 0x5e, 0x07, 0x24, 0x73, 0xd0, 0xc4, 0xf3, 0xd2, 0x08, 0x26, 0x0b, 0x66, 0xcf,\n\t0x61, 0x09, 0x19, 0x96, 0xa0, 0x9c, 0x33, 0xb6, 0xcd, 0x85, 0x50, 0xa0, 0xb5, 0x6b, 0x8d, 0xad,\n\t0xa9, 0x3d, 0x73, 0x3f, 0x7f, 0x7c, 0x74, 0xd0, 0x9e, 0x39, 0x37, 0x93, 0x4b, 0x52, 0xb2, 0x48,\n\t0xc3, 0x8d, 0xd0, 0x39, 0x61, 0xfb, 0xbc, 0x22, 0x8c, 0x32, 0x4c, 0x16, 0x11, 0x14, 0x3c, 0xce,\n\t0x40, 0xb8, 0x5b, 0x63, 0x6b, 0xba, 0x13, 0xee, 0xd5, 0x83, 0x0b, 0x4c, 0x16, 0x4f, 0x0d, 0x3d,\n\t0xf9, 0xb4, 0xc5, 0x1e, 0xbc, 0xd4, 0xa0, 0x2e, 0x7f, 0x0b, 0xc1, 0x79, 0xc2, 0x6c, 0xb1, 0xf9,\n\t0x82, 0x3f, 0x9e, 0xbd, 0x97, 0x3a, 0x47, 0x6c, 0xa7, 0xd2, 0xa0, 0x22, 0x21, 0xcd, 0x3d, 0x3b,\n\t0xdc, 0xae, 0xf1, 0x5c, 0x0a, 0xe7, 0x98, 0x0d, 0x12, 0x05, 0x42, 0x52, 0xc4, 0x73, 0xac, 0x0a,\n\t0x72, 0xff, 0x1b, 0x5b, 0xd3, 0x6e, 0xd8, 0x37, 0xe4, 0x79, 0xc3, 0x39, 0x87, 0xac, 0x57, 0x82,\n\t0x92, 0x28, 0xdc, 0x6e, 0x33, 0x6d, 0x91, 0xf3, 0x9c, 0x31, 0x4d, 0x5c, 0x51, 0x24, 0x38, 0x81,\n\t0xfb, 0xff, 0xd8, 0x9a, 0xee, 0x9e, 0x0d, 0x7d, 0x93, 0xa3, 0xbf, 0xc9, 0xd1, 0xbf, 0xda, 0xe4,\n\t0x38, 0x1b, 0xdc, 0x7e, 0x1d, 0x75, 0x6e, 0xbe, 0x8d, 0xac, 0xf7, 0x3f, 0x3e, 0x9c, 0x58, 0xa1,\n\t0xdd, 0x2c, 0xcf, 0x39, 0x81, 0x73, 0xc1, 0xfa, 0x19, 0xd7, 0x14, 0x29, 0x28, 0xe0, 0x1a, 0x84,\n\t0xdb, 0xfb, 0x5b, 0xaf, 0xdd, 0x7a, 0x3d, 0x34, 0xdb, 0x93, 0x82, 0xed, 0x5d, 0x21, 0xf1, 0x6c,\n\t0x0e, 0xcb, 0x67, 0x8a, 0x17, 0x04, 0xe2, 0x9f, 0xa3, 0x3b, 0x66, 0x03, 0xaa, 0xad, 0xa2, 0xd4,\n\t0x18, 0x35, 0xf9, 0x75, 0xc3, 0x7e, 0x43, 0xb6, 0xe6, 0xb3, 0x17, 0xb7, 0x2b, 0xcf, 0xba, 0x5b,\n\t0x79, 0xd6, 0xf7, 0x95, 0x67, 0xdd, 0xac, 0xbd, 0xce, 0xdd, 0xda, 0xeb, 0x7c, 0x59, 0x7b, 0x9d,\n\t0x57, 0x41, 0x2a, 0xa9, 0x6e, 0x6b, 0x82, 0x79, 0x60, 0xba, 0x5b, 0x00, 0x5d, 0xa3, 0x5a, 0x04,\n\t0xf7, 0xa5, 0x7f, 0x6b, 0x6a, 0x4f, 0xef, 0x4a, 0xd0, 0x71, 0xaf, 0xf9, 0xd5, 0xc7, 0x3f, 0x03,\n\t0x00, 0x00, 0xff, 0xff, 0x2c, 0xa9, 0x31, 0xce, 0x15, 0x03, 0x00, 0x00,\n}\n\nfunc (m *Developer) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *Developer) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *Developer) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.AutoLockEnabled {\n\t\ti--\n\t\tif m.AutoLockEnabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Address) > 0 {\n\t\ti -= len(m.Address)\n\t\tcopy(dAtA[i:], m.Address)\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(len(m.Address)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *UserSubscription) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *UserSubscription) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *UserSubscription) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.LastRenewed, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.LastRenewed):])\n\tif err1 != nil {\n\t\treturn 0, err1\n\t}\n\ti -= n1\n\ti = encodeVarintSubscription(dAtA, i, uint64(n1))\n\ti--\n\tdAtA[i] = 0x32\n\tn2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartDate):])\n\tif err2 != nil {\n\t\treturn 0, err2\n\t}\n\ti -= n2\n\ti = encodeVarintSubscription(dAtA, i, uint64(n2))\n\ti--\n\tdAtA[i] = 0x2a\n\tif m.Period != 0 {\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(m.Period))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.CreditAmount != 0 {\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(m.CreditAmount))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.UserDid) > 0 {\n\t\ti -= len(m.UserDid)\n\t\tcopy(dAtA[i:], m.UserDid)\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(len(m.UserDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *TotalDevGranted) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *TotalDevGranted) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *TotalDevGranted) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.TotalGranted != 0 {\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(m.TotalGranted))\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintSubscription(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintSubscription(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovSubscription(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *Developer) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Address)\n\tif l > 0 {\n\t\tn += 1 + l + sovSubscription(uint64(l))\n\t}\n\tif m.AutoLockEnabled {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *UserSubscription) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovSubscription(uint64(l))\n\t}\n\tl = len(m.UserDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovSubscription(uint64(l))\n\t}\n\tif m.CreditAmount != 0 {\n\t\tn += 1 + sovSubscription(uint64(m.CreditAmount))\n\t}\n\tif m.Period != 0 {\n\t\tn += 1 + sovSubscription(uint64(m.Period))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartDate)\n\tn += 1 + l + sovSubscription(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.LastRenewed)\n\tn += 1 + l + sovSubscription(uint64(l))\n\treturn n\n}\n\nfunc (m *TotalDevGranted) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovSubscription(uint64(l))\n\t}\n\tif m.TotalGranted != 0 {\n\t\tn += 1 + sovSubscription(uint64(m.TotalGranted))\n\t}\n\treturn n\n}\n\nfunc sovSubscription(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozSubscription(x uint64) (n int) {\n\treturn sovSubscription(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *Developer) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: Developer: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: Developer: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Address\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Address = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.AutoLockEnabled = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipSubscription(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *UserSubscription) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscription: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: UserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreditAmount\", wireType)\n\t\t\t}\n\t\t\tm.CreditAmount = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreditAmount |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tm.Period = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Period |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 5:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field StartDate\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartDate, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 6:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field LastRenewed\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.LastRenewed, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipSubscription(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *TotalDevGranted) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: TotalDevGranted: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: TotalDevGranted: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field TotalGranted\", wireType)\n\t\t\t}\n\t\t\tm.TotalGranted = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.TotalGranted |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipSubscription(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipSubscription(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowSubscription\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowSubscription\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthSubscription\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupSubscription\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthSubscription\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthSubscription        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowSubscription          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupSubscription = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  },
  {
    "path": "x/tier/types/tx.pb.go",
    "content": "// Code generated by protoc-gen-gogo. DO NOT EDIT.\n// source: sourcehub/tier/v1beta1/tx.proto\n\npackage types\n\nimport (\n\tcontext \"context\"\n\tfmt \"fmt\"\n\t_ \"github.com/cosmos/cosmos-proto\"\n\ttypes \"github.com/cosmos/cosmos-sdk/types\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/msgservice\"\n\t_ \"github.com/cosmos/cosmos-sdk/types/tx/amino\"\n\t_ \"github.com/cosmos/gogoproto/gogoproto\"\n\tgrpc1 \"github.com/cosmos/gogoproto/grpc\"\n\tproto \"github.com/cosmos/gogoproto/proto\"\n\t_ \"github.com/cosmos/gogoproto/types\"\n\tgithub_com_cosmos_gogoproto_types \"github.com/cosmos/gogoproto/types\"\n\tgrpc \"google.golang.org/grpc\"\n\tcodes \"google.golang.org/grpc/codes\"\n\tstatus \"google.golang.org/grpc/status\"\n\tio \"io\"\n\tmath \"math\"\n\tmath_bits \"math/bits\"\n\ttime \"time\"\n)\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ = proto.Marshal\nvar _ = fmt.Errorf\nvar _ = math.Inf\nvar _ = time.Kitchen\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the proto package it is being compiled against.\n// A compilation error at this line likely means your copy of the\n// proto package needs to be updated.\nconst _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package\n\n// MsgUpdateParams is the Msg/UpdateParams request type.\ntype MsgUpdateParams struct {\n\t// authority is the address that controls the module (defaults to x/gov unless overwritten).\n\tAuthority string `protobuf:\"bytes,1,opt,name=authority,proto3\" json:\"authority,omitempty\"`\n\t// NOTE: All parameters must be supplied.\n\tParams Params `protobuf:\"bytes,2,opt,name=params,proto3\" json:\"params\"`\n}\n\nfunc (m *MsgUpdateParams) Reset()         { *m = MsgUpdateParams{} }\nfunc (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParams) ProtoMessage()    {}\nfunc (*MsgUpdateParams) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{0}\n}\nfunc (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParams) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParams.Merge(m, src)\n}\nfunc (m *MsgUpdateParams) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParams) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParams.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo\n\nfunc (m *MsgUpdateParams) GetAuthority() string {\n\tif m != nil {\n\t\treturn m.Authority\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateParams) GetParams() Params {\n\tif m != nil {\n\t\treturn m.Params\n\t}\n\treturn Params{}\n}\n\n// MsgUpdateParamsResponse defines the response structure for executing a\n// MsgUpdateParams message.\ntype MsgUpdateParamsResponse struct {\n}\n\nfunc (m *MsgUpdateParamsResponse) Reset()         { *m = MsgUpdateParamsResponse{} }\nfunc (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateParamsResponse) ProtoMessage()    {}\nfunc (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{1}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateParamsResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo\n\n// MsgLock is the Msg/Lock request type.\ntype MsgLock struct {\n\tDelegatorAddress string     `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string     `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tStake            types.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake\"`\n}\n\nfunc (m *MsgLock) Reset()         { *m = MsgLock{} }\nfunc (m *MsgLock) String() string { return proto.CompactTextString(m) }\nfunc (*MsgLock) ProtoMessage()    {}\nfunc (*MsgLock) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{2}\n}\nfunc (m *MsgLock) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgLock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgLock.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgLock) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgLock.Merge(m, src)\n}\nfunc (m *MsgLock) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgLock) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgLock.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgLock proto.InternalMessageInfo\n\nfunc (m *MsgLock) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgLock) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgLock) GetStake() types.Coin {\n\tif m != nil {\n\t\treturn m.Stake\n\t}\n\treturn types.Coin{}\n}\n\n// MsgLockResponse defines the response structure for executing a MsgLock message.\ntype MsgLockResponse struct {\n}\n\nfunc (m *MsgLockResponse) Reset()         { *m = MsgLockResponse{} }\nfunc (m *MsgLockResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgLockResponse) ProtoMessage()    {}\nfunc (*MsgLockResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{3}\n}\nfunc (m *MsgLockResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgLockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgLockResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgLockResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgLockResponse.Merge(m, src)\n}\nfunc (m *MsgLockResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgLockResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgLockResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgLockResponse proto.InternalMessageInfo\n\n// MsgLockAuto is the Msg/LockAuto request type.\ntype MsgLockAuto struct {\n\tDelegatorAddress string     `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tStake            types.Coin `protobuf:\"bytes,2,opt,name=stake,proto3\" json:\"stake\"`\n}\n\nfunc (m *MsgLockAuto) Reset()         { *m = MsgLockAuto{} }\nfunc (m *MsgLockAuto) String() string { return proto.CompactTextString(m) }\nfunc (*MsgLockAuto) ProtoMessage()    {}\nfunc (*MsgLockAuto) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{4}\n}\nfunc (m *MsgLockAuto) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgLockAuto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgLockAuto.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgLockAuto) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgLockAuto.Merge(m, src)\n}\nfunc (m *MsgLockAuto) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgLockAuto) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgLockAuto.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgLockAuto proto.InternalMessageInfo\n\nfunc (m *MsgLockAuto) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgLockAuto) GetStake() types.Coin {\n\tif m != nil {\n\t\treturn m.Stake\n\t}\n\treturn types.Coin{}\n}\n\n// MsgLockAutoResponse defines the response structure for executing a MsgLockAuto message.\ntype MsgLockAutoResponse struct {\n\tValidatorAddress string `protobuf:\"bytes,1,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n}\n\nfunc (m *MsgLockAutoResponse) Reset()         { *m = MsgLockAutoResponse{} }\nfunc (m *MsgLockAutoResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgLockAutoResponse) ProtoMessage()    {}\nfunc (*MsgLockAutoResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{5}\n}\nfunc (m *MsgLockAutoResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgLockAutoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgLockAutoResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgLockAutoResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgLockAutoResponse.Merge(m, src)\n}\nfunc (m *MsgLockAutoResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgLockAutoResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgLockAutoResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgLockAutoResponse proto.InternalMessageInfo\n\nfunc (m *MsgLockAutoResponse) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\n// MsgUnlock is the Msg/Unlock request type.\ntype MsgUnlock struct {\n\tDelegatorAddress string     `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string     `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\tStake            types.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake\"`\n}\n\nfunc (m *MsgUnlock) Reset()         { *m = MsgUnlock{} }\nfunc (m *MsgUnlock) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUnlock) ProtoMessage()    {}\nfunc (*MsgUnlock) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{6}\n}\nfunc (m *MsgUnlock) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUnlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUnlock.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUnlock) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUnlock.Merge(m, src)\n}\nfunc (m *MsgUnlock) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUnlock) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUnlock.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUnlock proto.InternalMessageInfo\n\nfunc (m *MsgUnlock) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUnlock) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUnlock) GetStake() types.Coin {\n\tif m != nil {\n\t\treturn m.Stake\n\t}\n\treturn types.Coin{}\n}\n\n// MsgUnlockResponse defines the response structure for executing a MsgUnlock message.\ntype MsgUnlockResponse struct {\n\tCreationHeight int64     `protobuf:\"varint,1,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n\tCompletionTime time.Time `protobuf:\"bytes,2,opt,name=completion_time,json=completionTime,proto3,stdtime\" json:\"completion_time\"`\n\tUnlockTime     time.Time `protobuf:\"bytes,3,opt,name=unlock_time,json=unlockTime,proto3,stdtime\" json:\"unlock_time\"`\n}\n\nfunc (m *MsgUnlockResponse) Reset()         { *m = MsgUnlockResponse{} }\nfunc (m *MsgUnlockResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUnlockResponse) ProtoMessage()    {}\nfunc (*MsgUnlockResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{7}\n}\nfunc (m *MsgUnlockResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUnlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUnlockResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUnlockResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUnlockResponse.Merge(m, src)\n}\nfunc (m *MsgUnlockResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUnlockResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUnlockResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUnlockResponse proto.InternalMessageInfo\n\nfunc (m *MsgUnlockResponse) GetCreationHeight() int64 {\n\tif m != nil {\n\t\treturn m.CreationHeight\n\t}\n\treturn 0\n}\n\nfunc (m *MsgUnlockResponse) GetCompletionTime() time.Time {\n\tif m != nil {\n\t\treturn m.CompletionTime\n\t}\n\treturn time.Time{}\n}\n\nfunc (m *MsgUnlockResponse) GetUnlockTime() time.Time {\n\tif m != nil {\n\t\treturn m.UnlockTime\n\t}\n\treturn time.Time{}\n}\n\n// MsgRedelegate is the Msg/Redelegate request type.\ntype MsgRedelegate struct {\n\tDelegatorAddress    string     `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tSrcValidatorAddress string     `protobuf:\"bytes,2,opt,name=src_validator_address,json=srcValidatorAddress,proto3\" json:\"src_validator_address,omitempty\"`\n\tDstValidatorAddress string     `protobuf:\"bytes,3,opt,name=dst_validator_address,json=dstValidatorAddress,proto3\" json:\"dst_validator_address,omitempty\"`\n\tStake               types.Coin `protobuf:\"bytes,4,opt,name=stake,proto3\" json:\"stake\"`\n}\n\nfunc (m *MsgRedelegate) Reset()         { *m = MsgRedelegate{} }\nfunc (m *MsgRedelegate) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRedelegate) ProtoMessage()    {}\nfunc (*MsgRedelegate) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{8}\n}\nfunc (m *MsgRedelegate) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRedelegate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRedelegate.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRedelegate) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRedelegate.Merge(m, src)\n}\nfunc (m *MsgRedelegate) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRedelegate) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRedelegate.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRedelegate proto.InternalMessageInfo\n\nfunc (m *MsgRedelegate) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRedelegate) GetSrcValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.SrcValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRedelegate) GetDstValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.DstValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRedelegate) GetStake() types.Coin {\n\tif m != nil {\n\t\treturn m.Stake\n\t}\n\treturn types.Coin{}\n}\n\n// MsgRedelegateResponse defines the response structure for executing a MsgRedelegate message.\ntype MsgRedelegateResponse struct {\n\tCompletionTime time.Time `protobuf:\"bytes,1,opt,name=completion_time,json=completionTime,proto3,stdtime\" json:\"completion_time\"`\n}\n\nfunc (m *MsgRedelegateResponse) Reset()         { *m = MsgRedelegateResponse{} }\nfunc (m *MsgRedelegateResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRedelegateResponse) ProtoMessage()    {}\nfunc (*MsgRedelegateResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{9}\n}\nfunc (m *MsgRedelegateResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRedelegateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRedelegateResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRedelegateResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRedelegateResponse.Merge(m, src)\n}\nfunc (m *MsgRedelegateResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRedelegateResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRedelegateResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRedelegateResponse proto.InternalMessageInfo\n\nfunc (m *MsgRedelegateResponse) GetCompletionTime() time.Time {\n\tif m != nil {\n\t\treturn m.CompletionTime\n\t}\n\treturn time.Time{}\n}\n\n// MsgCancelUnlocking is the Msg/CancelUnlocking request type.\ntype MsgCancelUnlocking struct {\n\tDelegatorAddress string `protobuf:\"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3\" json:\"delegator_address,omitempty\"`\n\tValidatorAddress string `protobuf:\"bytes,2,opt,name=validator_address,json=validatorAddress,proto3\" json:\"validator_address,omitempty\"`\n\t// amount is always less than or equal to unlocking delegation entry balance.\n\tStake types.Coin `protobuf:\"bytes,3,opt,name=stake,proto3\" json:\"stake\"`\n\t// creation_height is the height which the unlocking took place.\n\tCreationHeight int64 `protobuf:\"varint,4,opt,name=creation_height,json=creationHeight,proto3\" json:\"creation_height,omitempty\"`\n}\n\nfunc (m *MsgCancelUnlocking) Reset()         { *m = MsgCancelUnlocking{} }\nfunc (m *MsgCancelUnlocking) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCancelUnlocking) ProtoMessage()    {}\nfunc (*MsgCancelUnlocking) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{10}\n}\nfunc (m *MsgCancelUnlocking) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCancelUnlocking) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCancelUnlocking.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCancelUnlocking) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCancelUnlocking.Merge(m, src)\n}\nfunc (m *MsgCancelUnlocking) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCancelUnlocking) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCancelUnlocking.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCancelUnlocking proto.InternalMessageInfo\n\nfunc (m *MsgCancelUnlocking) GetDelegatorAddress() string {\n\tif m != nil {\n\t\treturn m.DelegatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCancelUnlocking) GetValidatorAddress() string {\n\tif m != nil {\n\t\treturn m.ValidatorAddress\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCancelUnlocking) GetStake() types.Coin {\n\tif m != nil {\n\t\treturn m.Stake\n\t}\n\treturn types.Coin{}\n}\n\nfunc (m *MsgCancelUnlocking) GetCreationHeight() int64 {\n\tif m != nil {\n\t\treturn m.CreationHeight\n\t}\n\treturn 0\n}\n\n// MsgCancelUnlockingResponse defines the response structure for executing a MsgCancelUnlocking message.\ntype MsgCancelUnlockingResponse struct {\n}\n\nfunc (m *MsgCancelUnlockingResponse) Reset()         { *m = MsgCancelUnlockingResponse{} }\nfunc (m *MsgCancelUnlockingResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCancelUnlockingResponse) ProtoMessage()    {}\nfunc (*MsgCancelUnlockingResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{11}\n}\nfunc (m *MsgCancelUnlockingResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCancelUnlockingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCancelUnlockingResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCancelUnlockingResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCancelUnlockingResponse.Merge(m, src)\n}\nfunc (m *MsgCancelUnlockingResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCancelUnlockingResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCancelUnlockingResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCancelUnlockingResponse proto.InternalMessageInfo\n\n// MsgCreateDeveloper is the Msg/CreateDeveloper request type.\ntype MsgCreateDeveloper struct {\n\t// developer is the address of the developer being created.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (m *MsgCreateDeveloper) Reset()         { *m = MsgCreateDeveloper{} }\nfunc (m *MsgCreateDeveloper) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreateDeveloper) ProtoMessage()    {}\nfunc (*MsgCreateDeveloper) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{12}\n}\nfunc (m *MsgCreateDeveloper) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreateDeveloper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreateDeveloper.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreateDeveloper) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreateDeveloper.Merge(m, src)\n}\nfunc (m *MsgCreateDeveloper) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreateDeveloper) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreateDeveloper.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreateDeveloper proto.InternalMessageInfo\n\nfunc (m *MsgCreateDeveloper) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgCreateDeveloper) GetAutoLockEnabled() bool {\n\tif m != nil {\n\t\treturn m.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// MsgCreateDeveloperResponse defines the response structure for executing a MsgCreateDeveloper message.\ntype MsgCreateDeveloperResponse struct {\n}\n\nfunc (m *MsgCreateDeveloperResponse) Reset()         { *m = MsgCreateDeveloperResponse{} }\nfunc (m *MsgCreateDeveloperResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgCreateDeveloperResponse) ProtoMessage()    {}\nfunc (*MsgCreateDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{13}\n}\nfunc (m *MsgCreateDeveloperResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgCreateDeveloperResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgCreateDeveloperResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgCreateDeveloperResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgCreateDeveloperResponse.Merge(m, src)\n}\nfunc (m *MsgCreateDeveloperResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgCreateDeveloperResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgCreateDeveloperResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgCreateDeveloperResponse proto.InternalMessageInfo\n\n// MsgUpdateDeveloper is the Msg/UpdateDeveloper request type.\ntype MsgUpdateDeveloper struct {\n\t// developer is the address of the developer being updated.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// auto_lock_enabled indicates whether the module should automatically lock more #OPEN tokens,\n\t// so that the developer always has enough credits to cover all active user subscriptions.\n\tAutoLockEnabled bool `protobuf:\"varint,2,opt,name=auto_lock_enabled,json=autoLockEnabled,proto3\" json:\"auto_lock_enabled,omitempty\"`\n}\n\nfunc (m *MsgUpdateDeveloper) Reset()         { *m = MsgUpdateDeveloper{} }\nfunc (m *MsgUpdateDeveloper) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateDeveloper) ProtoMessage()    {}\nfunc (*MsgUpdateDeveloper) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{14}\n}\nfunc (m *MsgUpdateDeveloper) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateDeveloper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateDeveloper.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateDeveloper) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateDeveloper.Merge(m, src)\n}\nfunc (m *MsgUpdateDeveloper) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateDeveloper) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateDeveloper.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateDeveloper proto.InternalMessageInfo\n\nfunc (m *MsgUpdateDeveloper) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateDeveloper) GetAutoLockEnabled() bool {\n\tif m != nil {\n\t\treturn m.AutoLockEnabled\n\t}\n\treturn false\n}\n\n// MsgUpdateDeveloperResponse defines the response structure for executing a MsgUpdateDeveloper message.\ntype MsgUpdateDeveloperResponse struct {\n}\n\nfunc (m *MsgUpdateDeveloperResponse) Reset()         { *m = MsgUpdateDeveloperResponse{} }\nfunc (m *MsgUpdateDeveloperResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateDeveloperResponse) ProtoMessage()    {}\nfunc (*MsgUpdateDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{15}\n}\nfunc (m *MsgUpdateDeveloperResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateDeveloperResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateDeveloperResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateDeveloperResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateDeveloperResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateDeveloperResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateDeveloperResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateDeveloperResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateDeveloperResponse proto.InternalMessageInfo\n\n// MsgRemoveDeveloper is the Msg/RemoveDeveloper request type.\ntype MsgRemoveDeveloper struct {\n\t// developer is the address of the developer being removed.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n}\n\nfunc (m *MsgRemoveDeveloper) Reset()         { *m = MsgRemoveDeveloper{} }\nfunc (m *MsgRemoveDeveloper) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveDeveloper) ProtoMessage()    {}\nfunc (*MsgRemoveDeveloper) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{16}\n}\nfunc (m *MsgRemoveDeveloper) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveDeveloper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveDeveloper.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveDeveloper) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveDeveloper.Merge(m, src)\n}\nfunc (m *MsgRemoveDeveloper) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveDeveloper) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveDeveloper.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveDeveloper proto.InternalMessageInfo\n\nfunc (m *MsgRemoveDeveloper) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\n// MsgRemoveDeveloperResponse defines the response structure for executing a MsgRemoveDeveloper message.\ntype MsgRemoveDeveloperResponse struct {\n}\n\nfunc (m *MsgRemoveDeveloperResponse) Reset()         { *m = MsgRemoveDeveloperResponse{} }\nfunc (m *MsgRemoveDeveloperResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveDeveloperResponse) ProtoMessage()    {}\nfunc (*MsgRemoveDeveloperResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{17}\n}\nfunc (m *MsgRemoveDeveloperResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveDeveloperResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveDeveloperResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveDeveloperResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveDeveloperResponse.Merge(m, src)\n}\nfunc (m *MsgRemoveDeveloperResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveDeveloperResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveDeveloperResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveDeveloperResponse proto.InternalMessageInfo\n\n// MsgAddUserSubscription is the Msg/AddUserSubscription request type.\ntype MsgAddUserSubscription struct {\n\t// developer is the address of the developer adding the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user being added to the subscription.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// amount is the credit amount to be allocated to the user per period.\n\tAmount uint64 `protobuf:\"varint,3,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\t// period is the subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n}\n\nfunc (m *MsgAddUserSubscription) Reset()         { *m = MsgAddUserSubscription{} }\nfunc (m *MsgAddUserSubscription) String() string { return proto.CompactTextString(m) }\nfunc (*MsgAddUserSubscription) ProtoMessage()    {}\nfunc (*MsgAddUserSubscription) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{18}\n}\nfunc (m *MsgAddUserSubscription) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgAddUserSubscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgAddUserSubscription.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgAddUserSubscription) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgAddUserSubscription.Merge(m, src)\n}\nfunc (m *MsgAddUserSubscription) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgAddUserSubscription) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgAddUserSubscription.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgAddUserSubscription proto.InternalMessageInfo\n\nfunc (m *MsgAddUserSubscription) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgAddUserSubscription) GetUserDid() string {\n\tif m != nil {\n\t\treturn m.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgAddUserSubscription) GetAmount() uint64 {\n\tif m != nil {\n\t\treturn m.Amount\n\t}\n\treturn 0\n}\n\nfunc (m *MsgAddUserSubscription) GetPeriod() uint64 {\n\tif m != nil {\n\t\treturn m.Period\n\t}\n\treturn 0\n}\n\n// MsgAddUserSubscriptionResponse defines the response structure for executing a MsgAddUserSubscription message.\ntype MsgAddUserSubscriptionResponse struct {\n}\n\nfunc (m *MsgAddUserSubscriptionResponse) Reset()         { *m = MsgAddUserSubscriptionResponse{} }\nfunc (m *MsgAddUserSubscriptionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgAddUserSubscriptionResponse) ProtoMessage()    {}\nfunc (*MsgAddUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{19}\n}\nfunc (m *MsgAddUserSubscriptionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgAddUserSubscriptionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgAddUserSubscriptionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgAddUserSubscriptionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgAddUserSubscriptionResponse.Merge(m, src)\n}\nfunc (m *MsgAddUserSubscriptionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgAddUserSubscriptionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgAddUserSubscriptionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgAddUserSubscriptionResponse proto.InternalMessageInfo\n\n// MsgUpdateUserSubscription is the Msg/UpdateUserSubscription request type.\ntype MsgUpdateUserSubscription struct {\n\t// developer is the address of the developer updating the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user whose subscription is being updated.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n\t// amount is the new credit amount to be allocated to the user per period.\n\tAmount uint64 `protobuf:\"varint,3,opt,name=amount,proto3\" json:\"amount,omitempty\"`\n\t// period is the new subscription period duration in seconds.\n\tPeriod uint64 `protobuf:\"varint,4,opt,name=period,proto3\" json:\"period,omitempty\"`\n}\n\nfunc (m *MsgUpdateUserSubscription) Reset()         { *m = MsgUpdateUserSubscription{} }\nfunc (m *MsgUpdateUserSubscription) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateUserSubscription) ProtoMessage()    {}\nfunc (*MsgUpdateUserSubscription) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{20}\n}\nfunc (m *MsgUpdateUserSubscription) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateUserSubscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateUserSubscription.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateUserSubscription) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateUserSubscription.Merge(m, src)\n}\nfunc (m *MsgUpdateUserSubscription) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateUserSubscription) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateUserSubscription.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateUserSubscription proto.InternalMessageInfo\n\nfunc (m *MsgUpdateUserSubscription) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateUserSubscription) GetUserDid() string {\n\tif m != nil {\n\t\treturn m.UserDid\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgUpdateUserSubscription) GetAmount() uint64 {\n\tif m != nil {\n\t\treturn m.Amount\n\t}\n\treturn 0\n}\n\nfunc (m *MsgUpdateUserSubscription) GetPeriod() uint64 {\n\tif m != nil {\n\t\treturn m.Period\n\t}\n\treturn 0\n}\n\n// MsgUpdateUserSubscriptionResponse defines the response structure for executing a MsgUpdateUserSubscription message.\ntype MsgUpdateUserSubscriptionResponse struct {\n}\n\nfunc (m *MsgUpdateUserSubscriptionResponse) Reset()         { *m = MsgUpdateUserSubscriptionResponse{} }\nfunc (m *MsgUpdateUserSubscriptionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgUpdateUserSubscriptionResponse) ProtoMessage()    {}\nfunc (*MsgUpdateUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{21}\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgUpdateUserSubscriptionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgUpdateUserSubscriptionResponse.Merge(m, src)\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgUpdateUserSubscriptionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgUpdateUserSubscriptionResponse proto.InternalMessageInfo\n\n// MsgRemoveUserSubscription is the Msg/RemoveUserSubscription request type.\n// This message removes the user subscription and expires the associated allowance at the end of the current period.\ntype MsgRemoveUserSubscription struct {\n\t// developer is the address of the developer removing the subscription.\n\tDeveloper string `protobuf:\"bytes,1,opt,name=developer,proto3\" json:\"developer,omitempty\"`\n\t// user_did is the DID of the user whose subscription is being removed.\n\tUserDid string `protobuf:\"bytes,2,opt,name=user_did,json=userDid,proto3\" json:\"user_did,omitempty\"`\n}\n\nfunc (m *MsgRemoveUserSubscription) Reset()         { *m = MsgRemoveUserSubscription{} }\nfunc (m *MsgRemoveUserSubscription) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveUserSubscription) ProtoMessage()    {}\nfunc (*MsgRemoveUserSubscription) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{22}\n}\nfunc (m *MsgRemoveUserSubscription) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveUserSubscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveUserSubscription.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveUserSubscription) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveUserSubscription.Merge(m, src)\n}\nfunc (m *MsgRemoveUserSubscription) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveUserSubscription) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveUserSubscription.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveUserSubscription proto.InternalMessageInfo\n\nfunc (m *MsgRemoveUserSubscription) GetDeveloper() string {\n\tif m != nil {\n\t\treturn m.Developer\n\t}\n\treturn \"\"\n}\n\nfunc (m *MsgRemoveUserSubscription) GetUserDid() string {\n\tif m != nil {\n\t\treturn m.UserDid\n\t}\n\treturn \"\"\n}\n\n// MsgRemoveUserSubscriptionResponse defines the response structure for executing a MsgRemoveUserSubscription message.\ntype MsgRemoveUserSubscriptionResponse struct {\n}\n\nfunc (m *MsgRemoveUserSubscriptionResponse) Reset()         { *m = MsgRemoveUserSubscriptionResponse{} }\nfunc (m *MsgRemoveUserSubscriptionResponse) String() string { return proto.CompactTextString(m) }\nfunc (*MsgRemoveUserSubscriptionResponse) ProtoMessage()    {}\nfunc (*MsgRemoveUserSubscriptionResponse) Descriptor() ([]byte, []int) {\n\treturn fileDescriptor_a120ff6388a0dc08, []int{23}\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) XXX_Unmarshal(b []byte) error {\n\treturn m.Unmarshal(b)\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {\n\tif deterministic {\n\t\treturn xxx_messageInfo_MsgRemoveUserSubscriptionResponse.Marshal(b, m, deterministic)\n\t} else {\n\t\tb = b[:cap(b)]\n\t\tn, err := m.MarshalToSizedBuffer(b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn b[:n], nil\n\t}\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) XXX_Merge(src proto.Message) {\n\txxx_messageInfo_MsgRemoveUserSubscriptionResponse.Merge(m, src)\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) XXX_Size() int {\n\treturn m.Size()\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) XXX_DiscardUnknown() {\n\txxx_messageInfo_MsgRemoveUserSubscriptionResponse.DiscardUnknown(m)\n}\n\nvar xxx_messageInfo_MsgRemoveUserSubscriptionResponse proto.InternalMessageInfo\n\nfunc init() {\n\tproto.RegisterType((*MsgUpdateParams)(nil), \"sourcehub.tier.v1beta1.MsgUpdateParams\")\n\tproto.RegisterType((*MsgUpdateParamsResponse)(nil), \"sourcehub.tier.v1beta1.MsgUpdateParamsResponse\")\n\tproto.RegisterType((*MsgLock)(nil), \"sourcehub.tier.v1beta1.MsgLock\")\n\tproto.RegisterType((*MsgLockResponse)(nil), \"sourcehub.tier.v1beta1.MsgLockResponse\")\n\tproto.RegisterType((*MsgLockAuto)(nil), \"sourcehub.tier.v1beta1.MsgLockAuto\")\n\tproto.RegisterType((*MsgLockAutoResponse)(nil), \"sourcehub.tier.v1beta1.MsgLockAutoResponse\")\n\tproto.RegisterType((*MsgUnlock)(nil), \"sourcehub.tier.v1beta1.MsgUnlock\")\n\tproto.RegisterType((*MsgUnlockResponse)(nil), \"sourcehub.tier.v1beta1.MsgUnlockResponse\")\n\tproto.RegisterType((*MsgRedelegate)(nil), \"sourcehub.tier.v1beta1.MsgRedelegate\")\n\tproto.RegisterType((*MsgRedelegateResponse)(nil), \"sourcehub.tier.v1beta1.MsgRedelegateResponse\")\n\tproto.RegisterType((*MsgCancelUnlocking)(nil), \"sourcehub.tier.v1beta1.MsgCancelUnlocking\")\n\tproto.RegisterType((*MsgCancelUnlockingResponse)(nil), \"sourcehub.tier.v1beta1.MsgCancelUnlockingResponse\")\n\tproto.RegisterType((*MsgCreateDeveloper)(nil), \"sourcehub.tier.v1beta1.MsgCreateDeveloper\")\n\tproto.RegisterType((*MsgCreateDeveloperResponse)(nil), \"sourcehub.tier.v1beta1.MsgCreateDeveloperResponse\")\n\tproto.RegisterType((*MsgUpdateDeveloper)(nil), \"sourcehub.tier.v1beta1.MsgUpdateDeveloper\")\n\tproto.RegisterType((*MsgUpdateDeveloperResponse)(nil), \"sourcehub.tier.v1beta1.MsgUpdateDeveloperResponse\")\n\tproto.RegisterType((*MsgRemoveDeveloper)(nil), \"sourcehub.tier.v1beta1.MsgRemoveDeveloper\")\n\tproto.RegisterType((*MsgRemoveDeveloperResponse)(nil), \"sourcehub.tier.v1beta1.MsgRemoveDeveloperResponse\")\n\tproto.RegisterType((*MsgAddUserSubscription)(nil), \"sourcehub.tier.v1beta1.MsgAddUserSubscription\")\n\tproto.RegisterType((*MsgAddUserSubscriptionResponse)(nil), \"sourcehub.tier.v1beta1.MsgAddUserSubscriptionResponse\")\n\tproto.RegisterType((*MsgUpdateUserSubscription)(nil), \"sourcehub.tier.v1beta1.MsgUpdateUserSubscription\")\n\tproto.RegisterType((*MsgUpdateUserSubscriptionResponse)(nil), \"sourcehub.tier.v1beta1.MsgUpdateUserSubscriptionResponse\")\n\tproto.RegisterType((*MsgRemoveUserSubscription)(nil), \"sourcehub.tier.v1beta1.MsgRemoveUserSubscription\")\n\tproto.RegisterType((*MsgRemoveUserSubscriptionResponse)(nil), \"sourcehub.tier.v1beta1.MsgRemoveUserSubscriptionResponse\")\n}\n\nfunc init() { proto.RegisterFile(\"sourcehub/tier/v1beta1/tx.proto\", fileDescriptor_a120ff6388a0dc08) }\n\nvar fileDescriptor_a120ff6388a0dc08 = []byte{\n\t// 1103 bytes of a gzipped FileDescriptorProto\n\t0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4f, 0x4f, 0xdc, 0xc6,\n\t0x1b, 0xc6, 0x40, 0x08, 0xbc, 0xfc, 0x02, 0xbf, 0x35, 0x09, 0x01, 0xab, 0x5d, 0x60, 0x51, 0x45,\n\t0xba, 0x15, 0xb6, 0x96, 0x48, 0x91, 0xca, 0x0d, 0x92, 0x48, 0x6d, 0xd5, 0xad, 0x22, 0xa7, 0x70,\n\t0xa8, 0x22, 0xad, 0xbc, 0xf6, 0xd4, 0x6b, 0xb1, 0xf6, 0xb8, 0x9e, 0xf1, 0x36, 0x39, 0xb4, 0xaa,\n\t0x7a, 0xa8, 0xaa, 0x9e, 0xf2, 0x31, 0x90, 0x2a, 0x55, 0x1c, 0x72, 0xaf, 0x7a, 0xcb, 0x31, 0xca,\n\t0x29, 0x87, 0xaa, 0xad, 0xe0, 0xc0, 0x17, 0xa8, 0x7a, 0xae, 0x66, 0xc6, 0x3b, 0xcb, 0x7a, 0x6d,\n\t0xef, 0x12, 0x50, 0xd5, 0x3f, 0x97, 0x84, 0x99, 0x79, 0xe6, 0x79, 0x9f, 0xf7, 0x99, 0xd7, 0xef,\n\t0x0c, 0xc0, 0x0a, 0xc1, 0x71, 0x64, 0xa3, 0x56, 0xdc, 0x34, 0xa8, 0x87, 0x22, 0xa3, 0x53, 0x6b,\n\t0x22, 0x6a, 0xd5, 0x0c, 0xfa, 0x58, 0x0f, 0x23, 0x4c, 0xb1, 0xba, 0x28, 0x01, 0x3a, 0x03, 0xe8,\n\t0x09, 0x40, 0x2b, 0x59, 0xbe, 0x17, 0x60, 0x83, 0xff, 0x2b, 0xa0, 0x5a, 0xd9, 0xc6, 0xc4, 0xc7,\n\t0xc4, 0x68, 0x5a, 0x04, 0x49, 0x22, 0x1b, 0x7b, 0x41, 0xb2, 0x7e, 0x33, 0x59, 0xf7, 0x89, 0x6b,\n\t0x74, 0x6a, 0xec, 0xbf, 0x64, 0x61, 0x59, 0x2c, 0x34, 0xf8, 0xc8, 0x10, 0x83, 0x64, 0xe9, 0xba,\n\t0x8b, 0x5d, 0x2c, 0xe6, 0xd9, 0x4f, 0xc9, 0xec, 0x8a, 0x8b, 0xb1, 0xdb, 0x46, 0x06, 0x1f, 0x35,\n\t0xe3, 0x4f, 0x0d, 0xea, 0xf9, 0x88, 0x50, 0xcb, 0x0f, 0x13, 0xc0, 0x7a, 0x4e, 0x5a, 0xa1, 0x15,\n\t0x59, 0x7e, 0xc2, 0x5d, 0xf9, 0x49, 0x81, 0xf9, 0x3a, 0x71, 0xf7, 0x42, 0xc7, 0xa2, 0xe8, 0x01,\n\t0x5f, 0x51, 0xef, 0xc0, 0x8c, 0x15, 0xd3, 0x16, 0x8e, 0x3c, 0xfa, 0x64, 0x49, 0x59, 0x55, 0x6e,\n\t0xcd, 0xec, 0x2e, 0xbd, 0x7c, 0xb6, 0x79, 0x3d, 0x11, 0xb5, 0xe3, 0x38, 0x11, 0x22, 0xe4, 0x21,\n\t0x8d, 0xbc, 0xc0, 0x35, 0x7b, 0x50, 0x75, 0x07, 0xa6, 0x04, 0xf7, 0xd2, 0xf8, 0xaa, 0x72, 0x6b,\n\t0x76, 0xab, 0xac, 0x67, 0xfb, 0xa6, 0x8b, 0x38, 0xbb, 0x33, 0xcf, 0x7f, 0x59, 0x19, 0x3b, 0x3c,\n\t0x3d, 0xaa, 0x2a, 0x66, 0xb2, 0x71, 0xfb, 0xf6, 0xd7, 0xa7, 0x47, 0xd5, 0x1e, 0xe5, 0x77, 0xa7,\n\t0x47, 0xd5, 0xd5, 0x5e, 0x1a, 0x8f, 0x45, 0x22, 0x29, 0xbd, 0x95, 0x65, 0xb8, 0x99, 0x9a, 0x32,\n\t0x11, 0x09, 0x71, 0x40, 0x50, 0xe5, 0x77, 0x05, 0xae, 0xd6, 0x89, 0xfb, 0x21, 0xb6, 0x0f, 0xd4,\n\t0xfb, 0x50, 0x72, 0x50, 0x1b, 0xb9, 0x16, 0xc5, 0x51, 0xc3, 0x12, 0x49, 0x0c, 0x4d, 0xef, 0xff,\n\t0x72, 0x4b, 0x32, 0xaf, 0x7e, 0x04, 0xa5, 0x8e, 0xd5, 0xf6, 0x9c, 0x3e, 0x9a, 0x71, 0x4e, 0xb3,\n\t0xf6, 0xf2, 0xd9, 0xe6, 0x9b, 0x09, 0xcd, 0x7e, 0x17, 0x93, 0xe2, 0xeb, 0xa4, 0xe6, 0xd5, 0x6d,\n\t0xb8, 0x42, 0xa8, 0x75, 0x80, 0x96, 0x26, 0xb8, 0x69, 0xcb, 0x7a, 0x42, 0xc0, 0x2a, 0x48, 0x3a,\n\t0x76, 0x17, 0x7b, 0xc1, 0x59, 0xbf, 0xc4, 0x96, 0xed, 0x45, 0x66, 0xd7, 0x60, 0x56, 0x95, 0x12,\n\t0x3f, 0x54, 0x96, 0xb5, 0x74, 0xe2, 0x50, 0x81, 0xd9, 0x64, 0x6e, 0x27, 0xa6, 0xf8, 0xb2, 0xdc,\n\t0x90, 0xea, 0xc7, 0x2f, 0x4f, 0x3d, 0x82, 0x85, 0x33, 0x4a, 0xbb, 0x19, 0x64, 0x1b, 0xaf, 0xbc,\n\t0xb6, 0xf1, 0x95, 0x3f, 0x14, 0x98, 0x61, 0x75, 0x13, 0xb4, 0xff, 0x63, 0xd5, 0xf1, 0xb3, 0x02,\n\t0x25, 0x99, 0xb8, 0xb4, 0x77, 0x03, 0xe6, 0xed, 0x08, 0x59, 0xd4, 0xc3, 0x41, 0xa3, 0x85, 0x3c,\n\t0xb7, 0x45, 0x79, 0xfa, 0x13, 0xe6, 0x5c, 0x77, 0xfa, 0x3d, 0x3e, 0xab, 0x9a, 0x30, 0x6f, 0x63,\n\t0x3f, 0x6c, 0x23, 0x0e, 0x65, 0x5d, 0x27, 0x39, 0x7c, 0x4d, 0x17, 0x2d, 0x49, 0xef, 0xb6, 0x24,\n\t0xfd, 0xe3, 0x6e, 0x4b, 0xda, 0xbd, 0xc6, 0xd4, 0x3d, 0xfd, 0x75, 0x45, 0x11, 0x0a, 0xe7, 0x7a,\n\t0x0c, 0x0c, 0xa3, 0x7e, 0x00, 0xb3, 0x31, 0x97, 0x23, 0xf8, 0x26, 0xce, 0xcb, 0x07, 0x62, 0x37,\n\t0x5b, 0xaf, 0xbc, 0x1a, 0x87, 0x6b, 0x75, 0xe2, 0x9a, 0x28, 0xc9, 0x1c, 0x5d, 0xd6, 0xd9, 0xee,\n\t0xc1, 0x0d, 0x12, 0xd9, 0x8d, 0x0b, 0x9c, 0xef, 0x02, 0x89, 0xec, 0xf4, 0x12, 0xa3, 0x75, 0x08,\n\t0xcd, 0xa0, 0x9d, 0x18, 0x99, 0xd6, 0x21, 0x74, 0x3f, 0xb7, 0x72, 0x26, 0x2f, 0xaf, 0x72, 0x0e,\n\t0xe0, 0x46, 0x9f, 0xb3, 0xb2, 0x78, 0x32, 0x6a, 0x42, 0xb9, 0x60, 0x4d, 0x54, 0x0e, 0xc7, 0x41,\n\t0xad, 0x13, 0xf7, 0xae, 0x15, 0xd8, 0xa8, 0x2d, 0x8a, 0xd5, 0x0b, 0xdc, 0x7f, 0xe1, 0x87, 0x9a,\n\t0xf5, 0xe9, 0x4d, 0x66, 0x7d, 0x7a, 0xb9, 0xe7, 0xf2, 0x06, 0x68, 0x83, 0x4e, 0xc9, 0xd6, 0xff,\n\t0xad, 0x22, 0x8c, 0x64, 0x5c, 0xe8, 0x1e, 0xea, 0xa0, 0x36, 0x0e, 0x51, 0xc4, 0xae, 0x79, 0xa7,\n\t0x3b, 0x18, 0x7e, 0xcd, 0x4b, 0xa8, 0x5a, 0x85, 0x92, 0x15, 0x53, 0xdc, 0xe0, 0x9f, 0x2b, 0x0a,\n\t0xac, 0x66, 0x1b, 0x39, 0xdc, 0xb9, 0x69, 0x73, 0x9e, 0x2d, 0xb0, 0xc6, 0x7d, 0x5f, 0x4c, 0x6f,\n\t0xcf, 0xf1, 0xfb, 0x5c, 0xee, 0xed, 0x0a, 0xed, 0x57, 0x92, 0x16, 0x2a, 0x6e, 0xf2, 0xbf, 0x83,\n\t0xd0, 0x94, 0x12, 0x29, 0xf4, 0x11, 0xd7, 0x69, 0x22, 0x1f, 0x77, 0x2e, 0xae, 0x33, 0x27, 0x76,\n\t0x8a, 0x5d, 0xc6, 0xfe, 0x5e, 0x81, 0xc5, 0x3a, 0x71, 0x77, 0x1c, 0x67, 0x8f, 0xa0, 0xe8, 0x61,\n\t0xdc, 0x24, 0x76, 0xe4, 0x85, 0xac, 0x48, 0x5e, 0xdb, 0xa8, 0x65, 0x98, 0x8e, 0x09, 0x8a, 0x1a,\n\t0x8e, 0x27, 0xfc, 0x99, 0x31, 0xaf, 0xb2, 0xf1, 0x3d, 0xcf, 0x51, 0x17, 0x61, 0xca, 0xf2, 0x71,\n\t0x1c, 0x50, 0x5e, 0xd7, 0x93, 0x66, 0x32, 0x62, 0xf3, 0x21, 0x8a, 0x3c, 0xec, 0xf0, 0x4a, 0x9d,\n\t0x34, 0x93, 0xd1, 0x40, 0x2e, 0xab, 0x50, 0xce, 0x16, 0x2b, 0xf3, 0xf9, 0x41, 0x81, 0x65, 0x69,\n\t0xf5, 0x3f, 0x21, 0xa5, 0x75, 0x58, 0xcb, 0xd5, 0x2b, 0xb3, 0xfa, 0x92, 0x27, 0x25, 0xce, 0xf0,\n\t0x2f, 0x48, 0x2a, 0x47, 0x64, 0x76, 0xfc, 0xae, 0xc8, 0xad, 0x1f, 0x01, 0x26, 0xea, 0xc4, 0x55,\n\t0x5b, 0xf0, 0xbf, 0xbe, 0x5f, 0x00, 0x36, 0xf2, 0x1e, 0xee, 0xa9, 0x67, 0xb6, 0x66, 0x8c, 0x08,\n\t0x94, 0xf7, 0xc4, 0x03, 0x98, 0xe4, 0x6f, 0xf1, 0x95, 0x82, 0x8d, 0x0c, 0xa0, 0x6d, 0x0c, 0x01,\n\t0x48, 0xc6, 0x47, 0x30, 0x2d, 0xdf, 0xb4, 0xeb, 0x43, 0x36, 0x31, 0x90, 0xf6, 0xce, 0x08, 0x20,\n\t0xc9, 0xbe, 0x0f, 0x53, 0xc9, 0xfb, 0x70, 0xad, 0x28, 0x55, 0x0e, 0xd1, 0xde, 0x1e, 0x0a, 0x91,\n\t0xbc, 0x4d, 0x80, 0x33, 0xef, 0x93, 0xb7, 0x0a, 0x36, 0xf6, 0x60, 0xda, 0xe6, 0x48, 0x30, 0x19,\n\t0xe3, 0x33, 0x98, 0x4f, 0xdf, 0x9d, 0xd5, 0x02, 0x86, 0x14, 0x56, 0xdb, 0x1a, 0x1d, 0xdb, 0x17,\n\t0x32, 0x75, 0xcb, 0x14, 0x86, 0xec, 0xc7, 0x16, 0x87, 0xcc, 0xbe, 0x33, 0x58, 0xc8, 0xf4, 0x7d,\n\t0x51, 0x1d, 0x5a, 0x95, 0xa3, 0x85, 0xcc, 0xe9, 0xfe, 0x2c, 0x64, 0xba, 0xf5, 0x57, 0x0b, 0x8f,\n\t0xa6, 0x0f, 0x5b, 0x18, 0x32, 0xa7, 0xe9, 0xab, 0x5f, 0xc0, 0x42, 0x56, 0xc3, 0xd7, 0x0b, 0xa8,\n\t0x32, 0xf0, 0xda, 0x9d, 0xf3, 0xe1, 0x65, 0xf8, 0x6f, 0x14, 0x58, 0xcc, 0x69, 0xd0, 0xb5, 0xa1,\n\t0x06, 0x0e, 0xa8, 0x78, 0xf7, 0xdc, 0x5b, 0xfa, 0x84, 0xe4, 0x34, 0xd5, 0xda, 0x50, 0x5b, 0xcf,\n\t0x25, 0xa4, 0xb8, 0x75, 0x6a, 0x57, 0xbe, 0x62, 0x0f, 0xb8, 0xdd, 0xf7, 0x9f, 0x1f, 0x97, 0x95,\n\t0x17, 0xc7, 0x65, 0xe5, 0xb7, 0xe3, 0xb2, 0xf2, 0xf4, 0xa4, 0x3c, 0xf6, 0xe2, 0xa4, 0x3c, 0xf6,\n\t0xea, 0xa4, 0x3c, 0xf6, 0x89, 0xe1, 0x7a, 0x94, 0xf1, 0xda, 0xd8, 0x37, 0x44, 0x94, 0x00, 0xd1,\n\t0xcf, 0x71, 0x74, 0x60, 0x0c, 0xfc, 0x3d, 0x83, 0x3e, 0x09, 0x11, 0x69, 0x4e, 0xf1, 0x17, 0xf2,\n\t0xed, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xed, 0x23, 0x80, 0xa5, 0x8e, 0x12, 0x00, 0x00,\n}\n\n// Reference imports to suppress errors if they are not otherwise used.\nvar _ context.Context\nvar _ grpc.ClientConn\n\n// This is a compile-time assertion to ensure that this generated file\n// is compatible with the grpc package it is being compiled against.\nconst _ = grpc.SupportPackageIsVersion4\n\n// MsgClient is the client API for Msg service.\n//\n// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\ntype MsgClient interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)\n\t// Lock defines a (developer) operation for locking a stake.\n\tLock(ctx context.Context, in *MsgLock, opts ...grpc.CallOption) (*MsgLockResponse, error)\n\t// LockAuto defines a (developer) operation for locking a stake with automatic validator selection.\n\tLockAuto(ctx context.Context, in *MsgLockAuto, opts ...grpc.CallOption) (*MsgLockAutoResponse, error)\n\t// Unlock defines a (developer) operation for unlocking a stake.\n\tUnlock(ctx context.Context, in *MsgUnlock, opts ...grpc.CallOption) (*MsgUnlockResponse, error)\n\t// Redelegate defines a (developer) operation for re-delegating a stake.\n\tRedelegate(ctx context.Context, in *MsgRedelegate, opts ...grpc.CallOption) (*MsgRedelegateResponse, error)\n\t// CancelUnlocking defines a (developer) operation for canceling an unlocking stake.\n\tCancelUnlocking(ctx context.Context, in *MsgCancelUnlocking, opts ...grpc.CallOption) (*MsgCancelUnlockingResponse, error)\n\t// CreateDeveloper defines a (developer) operation for creating a new developer record.\n\tCreateDeveloper(ctx context.Context, in *MsgCreateDeveloper, opts ...grpc.CallOption) (*MsgCreateDeveloperResponse, error)\n\t// UpdateDeveloper defines a (developer) operation for updating an existing developer record.\n\tUpdateDeveloper(ctx context.Context, in *MsgUpdateDeveloper, opts ...grpc.CallOption) (*MsgUpdateDeveloperResponse, error)\n\t// RemoveDeveloper defines a (developer) operation for removing a developer record.\n\tRemoveDeveloper(ctx context.Context, in *MsgRemoveDeveloper, opts ...grpc.CallOption) (*MsgRemoveDeveloperResponse, error)\n\t// AddUserSubscription defines a (developer) operation for adding a user subscription.\n\tAddUserSubscription(ctx context.Context, in *MsgAddUserSubscription, opts ...grpc.CallOption) (*MsgAddUserSubscriptionResponse, error)\n\t// UpdateUserSubscription defines a (developer) operation for updating a user subscription.\n\tUpdateUserSubscription(ctx context.Context, in *MsgUpdateUserSubscription, opts ...grpc.CallOption) (*MsgUpdateUserSubscriptionResponse, error)\n\t// RemoveUserSubscription defines a (developer) operation for removing a user subscription.\n\t// This expires the allowance at the end of the current period rather than immediately revoking it.\n\tRemoveUserSubscription(ctx context.Context, in *MsgRemoveUserSubscription, opts ...grpc.CallOption) (*MsgRemoveUserSubscriptionResponse, error)\n}\n\ntype msgClient struct {\n\tcc grpc1.ClientConn\n}\n\nfunc NewMsgClient(cc grpc1.ClientConn) MsgClient {\n\treturn &msgClient{cc}\n}\n\nfunc (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) {\n\tout := new(MsgUpdateParamsResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/UpdateParams\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Lock(ctx context.Context, in *MsgLock, opts ...grpc.CallOption) (*MsgLockResponse, error) {\n\tout := new(MsgLockResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/Lock\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) LockAuto(ctx context.Context, in *MsgLockAuto, opts ...grpc.CallOption) (*MsgLockAutoResponse, error) {\n\tout := new(MsgLockAutoResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/LockAuto\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Unlock(ctx context.Context, in *MsgUnlock, opts ...grpc.CallOption) (*MsgUnlockResponse, error) {\n\tout := new(MsgUnlockResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/Unlock\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) Redelegate(ctx context.Context, in *MsgRedelegate, opts ...grpc.CallOption) (*MsgRedelegateResponse, error) {\n\tout := new(MsgRedelegateResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/Redelegate\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CancelUnlocking(ctx context.Context, in *MsgCancelUnlocking, opts ...grpc.CallOption) (*MsgCancelUnlockingResponse, error) {\n\tout := new(MsgCancelUnlockingResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/CancelUnlocking\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) CreateDeveloper(ctx context.Context, in *MsgCreateDeveloper, opts ...grpc.CallOption) (*MsgCreateDeveloperResponse, error) {\n\tout := new(MsgCreateDeveloperResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/CreateDeveloper\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) UpdateDeveloper(ctx context.Context, in *MsgUpdateDeveloper, opts ...grpc.CallOption) (*MsgUpdateDeveloperResponse, error) {\n\tout := new(MsgUpdateDeveloperResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/UpdateDeveloper\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveDeveloper(ctx context.Context, in *MsgRemoveDeveloper, opts ...grpc.CallOption) (*MsgRemoveDeveloperResponse, error) {\n\tout := new(MsgRemoveDeveloperResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/RemoveDeveloper\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) AddUserSubscription(ctx context.Context, in *MsgAddUserSubscription, opts ...grpc.CallOption) (*MsgAddUserSubscriptionResponse, error) {\n\tout := new(MsgAddUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/AddUserSubscription\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) UpdateUserSubscription(ctx context.Context, in *MsgUpdateUserSubscription, opts ...grpc.CallOption) (*MsgUpdateUserSubscriptionResponse, error) {\n\tout := new(MsgUpdateUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/UpdateUserSubscription\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\nfunc (c *msgClient) RemoveUserSubscription(ctx context.Context, in *MsgRemoveUserSubscription, opts ...grpc.CallOption) (*MsgRemoveUserSubscriptionResponse, error) {\n\tout := new(MsgRemoveUserSubscriptionResponse)\n\terr := c.cc.Invoke(ctx, \"/sourcehub.tier.v1beta1.Msg/RemoveUserSubscription\", in, out, opts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn out, nil\n}\n\n// MsgServer is the server API for Msg service.\ntype MsgServer interface {\n\t// UpdateParams defines a (governance) operation for updating the module\n\t// parameters. The authority defaults to the x/gov module account.\n\tUpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)\n\t// Lock defines a (developer) operation for locking a stake.\n\tLock(context.Context, *MsgLock) (*MsgLockResponse, error)\n\t// LockAuto defines a (developer) operation for locking a stake with automatic validator selection.\n\tLockAuto(context.Context, *MsgLockAuto) (*MsgLockAutoResponse, error)\n\t// Unlock defines a (developer) operation for unlocking a stake.\n\tUnlock(context.Context, *MsgUnlock) (*MsgUnlockResponse, error)\n\t// Redelegate defines a (developer) operation for re-delegating a stake.\n\tRedelegate(context.Context, *MsgRedelegate) (*MsgRedelegateResponse, error)\n\t// CancelUnlocking defines a (developer) operation for canceling an unlocking stake.\n\tCancelUnlocking(context.Context, *MsgCancelUnlocking) (*MsgCancelUnlockingResponse, error)\n\t// CreateDeveloper defines a (developer) operation for creating a new developer record.\n\tCreateDeveloper(context.Context, *MsgCreateDeveloper) (*MsgCreateDeveloperResponse, error)\n\t// UpdateDeveloper defines a (developer) operation for updating an existing developer record.\n\tUpdateDeveloper(context.Context, *MsgUpdateDeveloper) (*MsgUpdateDeveloperResponse, error)\n\t// RemoveDeveloper defines a (developer) operation for removing a developer record.\n\tRemoveDeveloper(context.Context, *MsgRemoveDeveloper) (*MsgRemoveDeveloperResponse, error)\n\t// AddUserSubscription defines a (developer) operation for adding a user subscription.\n\tAddUserSubscription(context.Context, *MsgAddUserSubscription) (*MsgAddUserSubscriptionResponse, error)\n\t// UpdateUserSubscription defines a (developer) operation for updating a user subscription.\n\tUpdateUserSubscription(context.Context, *MsgUpdateUserSubscription) (*MsgUpdateUserSubscriptionResponse, error)\n\t// RemoveUserSubscription defines a (developer) operation for removing a user subscription.\n\t// This expires the allowance at the end of the current period rather than immediately revoking it.\n\tRemoveUserSubscription(context.Context, *MsgRemoveUserSubscription) (*MsgRemoveUserSubscriptionResponse, error)\n}\n\n// UnimplementedMsgServer can be embedded to have forward compatible implementations.\ntype UnimplementedMsgServer struct {\n}\n\nfunc (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateParams not implemented\")\n}\nfunc (*UnimplementedMsgServer) Lock(ctx context.Context, req *MsgLock) (*MsgLockResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Lock not implemented\")\n}\nfunc (*UnimplementedMsgServer) LockAuto(ctx context.Context, req *MsgLockAuto) (*MsgLockAutoResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method LockAuto not implemented\")\n}\nfunc (*UnimplementedMsgServer) Unlock(ctx context.Context, req *MsgUnlock) (*MsgUnlockResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Unlock not implemented\")\n}\nfunc (*UnimplementedMsgServer) Redelegate(ctx context.Context, req *MsgRedelegate) (*MsgRedelegateResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method Redelegate not implemented\")\n}\nfunc (*UnimplementedMsgServer) CancelUnlocking(ctx context.Context, req *MsgCancelUnlocking) (*MsgCancelUnlockingResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CancelUnlocking not implemented\")\n}\nfunc (*UnimplementedMsgServer) CreateDeveloper(ctx context.Context, req *MsgCreateDeveloper) (*MsgCreateDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method CreateDeveloper not implemented\")\n}\nfunc (*UnimplementedMsgServer) UpdateDeveloper(ctx context.Context, req *MsgUpdateDeveloper) (*MsgUpdateDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateDeveloper not implemented\")\n}\nfunc (*UnimplementedMsgServer) RemoveDeveloper(ctx context.Context, req *MsgRemoveDeveloper) (*MsgRemoveDeveloperResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveDeveloper not implemented\")\n}\nfunc (*UnimplementedMsgServer) AddUserSubscription(ctx context.Context, req *MsgAddUserSubscription) (*MsgAddUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method AddUserSubscription not implemented\")\n}\nfunc (*UnimplementedMsgServer) UpdateUserSubscription(ctx context.Context, req *MsgUpdateUserSubscription) (*MsgUpdateUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method UpdateUserSubscription not implemented\")\n}\nfunc (*UnimplementedMsgServer) RemoveUserSubscription(ctx context.Context, req *MsgRemoveUserSubscription) (*MsgRemoveUserSubscriptionResponse, error) {\n\treturn nil, status.Errorf(codes.Unimplemented, \"method RemoveUserSubscription not implemented\")\n}\n\nfunc RegisterMsgServer(s grpc1.Server, srv MsgServer) {\n\ts.RegisterService(&_Msg_serviceDesc, srv)\n}\n\nfunc _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateParams)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/UpdateParams\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgLock)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Lock(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/Lock\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Lock(ctx, req.(*MsgLock))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_LockAuto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgLockAuto)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).LockAuto(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/LockAuto\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).LockAuto(ctx, req.(*MsgLockAuto))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUnlock)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Unlock(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/Unlock\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Unlock(ctx, req.(*MsgUnlock))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_Redelegate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRedelegate)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).Redelegate(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/Redelegate\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).Redelegate(ctx, req.(*MsgRedelegate))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CancelUnlocking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCancelUnlocking)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CancelUnlocking(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/CancelUnlocking\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CancelUnlocking(ctx, req.(*MsgCancelUnlocking))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_CreateDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgCreateDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).CreateDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/CreateDeveloper\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).CreateDeveloper(ctx, req.(*MsgCreateDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_UpdateDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/UpdateDeveloper\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateDeveloper(ctx, req.(*MsgUpdateDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveDeveloper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveDeveloper)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveDeveloper(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/RemoveDeveloper\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveDeveloper(ctx, req.(*MsgRemoveDeveloper))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_AddUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgAddUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).AddUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/AddUserSubscription\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).AddUserSubscription(ctx, req.(*MsgAddUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_UpdateUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgUpdateUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).UpdateUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/UpdateUserSubscription\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).UpdateUserSubscription(ctx, req.(*MsgUpdateUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nfunc _Msg_RemoveUserSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {\n\tin := new(MsgRemoveUserSubscription)\n\tif err := dec(in); err != nil {\n\t\treturn nil, err\n\t}\n\tif interceptor == nil {\n\t\treturn srv.(MsgServer).RemoveUserSubscription(ctx, in)\n\t}\n\tinfo := &grpc.UnaryServerInfo{\n\t\tServer:     srv,\n\t\tFullMethod: \"/sourcehub.tier.v1beta1.Msg/RemoveUserSubscription\",\n\t}\n\thandler := func(ctx context.Context, req interface{}) (interface{}, error) {\n\t\treturn srv.(MsgServer).RemoveUserSubscription(ctx, req.(*MsgRemoveUserSubscription))\n\t}\n\treturn interceptor(ctx, in, info, handler)\n}\n\nvar Msg_serviceDesc = _Msg_serviceDesc\nvar _Msg_serviceDesc = grpc.ServiceDesc{\n\tServiceName: \"sourcehub.tier.v1beta1.Msg\",\n\tHandlerType: (*MsgServer)(nil),\n\tMethods: []grpc.MethodDesc{\n\t\t{\n\t\t\tMethodName: \"UpdateParams\",\n\t\t\tHandler:    _Msg_UpdateParams_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Lock\",\n\t\t\tHandler:    _Msg_Lock_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"LockAuto\",\n\t\t\tHandler:    _Msg_LockAuto_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Unlock\",\n\t\t\tHandler:    _Msg_Unlock_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"Redelegate\",\n\t\t\tHandler:    _Msg_Redelegate_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CancelUnlocking\",\n\t\t\tHandler:    _Msg_CancelUnlocking_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"CreateDeveloper\",\n\t\t\tHandler:    _Msg_CreateDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UpdateDeveloper\",\n\t\t\tHandler:    _Msg_UpdateDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveDeveloper\",\n\t\t\tHandler:    _Msg_RemoveDeveloper_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"AddUserSubscription\",\n\t\t\tHandler:    _Msg_AddUserSubscription_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"UpdateUserSubscription\",\n\t\t\tHandler:    _Msg_UpdateUserSubscription_Handler,\n\t\t},\n\t\t{\n\t\t\tMethodName: \"RemoveUserSubscription\",\n\t\t\tHandler:    _Msg_RemoveUserSubscription_Handler,\n\t\t},\n\t},\n\tStreams:  []grpc.StreamDesc{},\n\tMetadata: \"sourcehub/tier/v1beta1/tx.proto\",\n}\n\nfunc (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Params.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.Authority) > 0 {\n\t\ti -= len(m.Authority)\n\t\tcopy(dAtA[i:], m.Authority)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Authority)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgLock) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgLock) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgLock) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Stake.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x1a\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgLockResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgLockResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgLockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgLockAuto) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgLockAuto) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgLockAuto) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Stake.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x12\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgLockAutoResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgLockAutoResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgLockAutoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUnlock) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUnlock) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUnlock) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Stake.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x1a\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUnlockResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUnlockResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUnlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn5, err5 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.UnlockTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.UnlockTime):])\n\tif err5 != nil {\n\t\treturn 0, err5\n\t}\n\ti -= n5\n\ti = encodeVarintTx(dAtA, i, uint64(n5))\n\ti--\n\tdAtA[i] = 0x1a\n\tn6, err6 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):])\n\tif err6 != nil {\n\t\treturn 0, err6\n\t}\n\ti -= n6\n\ti = encodeVarintTx(dAtA, i, uint64(n6))\n\ti--\n\tdAtA[i] = 0x12\n\tif m.CreationHeight != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.CreationHeight))\n\t\ti--\n\t\tdAtA[i] = 0x8\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRedelegate) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRedelegate) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRedelegate) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\t{\n\t\tsize, err := m.Stake.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x22\n\tif len(m.DstValidatorAddress) > 0 {\n\t\ti -= len(m.DstValidatorAddress)\n\t\tcopy(dAtA[i:], m.DstValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DstValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x1a\n\t}\n\tif len(m.SrcValidatorAddress) > 0 {\n\t\ti -= len(m.SrcValidatorAddress)\n\t\tcopy(dAtA[i:], m.SrcValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.SrcValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRedelegateResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRedelegateResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRedelegateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tn8, err8 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CompletionTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime):])\n\tif err8 != nil {\n\t\treturn 0, err8\n\t}\n\ti -= n8\n\ti = encodeVarintTx(dAtA, i, uint64(n8))\n\ti--\n\tdAtA[i] = 0xa\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCancelUnlocking) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCancelUnlocking) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCancelUnlocking) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.CreationHeight != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.CreationHeight))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\t{\n\t\tsize, err := m.Stake.MarshalToSizedBuffer(dAtA[:i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\ti -= size\n\t\ti = encodeVarintTx(dAtA, i, uint64(size))\n\t}\n\ti--\n\tdAtA[i] = 0x1a\n\tif len(m.ValidatorAddress) > 0 {\n\t\ti -= len(m.ValidatorAddress)\n\t\tcopy(dAtA[i:], m.ValidatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.ValidatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.DelegatorAddress) > 0 {\n\t\ti -= len(m.DelegatorAddress)\n\t\tcopy(dAtA[i:], m.DelegatorAddress)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.DelegatorAddress)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCancelUnlockingResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCancelUnlockingResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCancelUnlockingResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreateDeveloper) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreateDeveloper) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreateDeveloper) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.AutoLockEnabled {\n\t\ti--\n\t\tif m.AutoLockEnabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgCreateDeveloperResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgCreateDeveloperResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgCreateDeveloperResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateDeveloper) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateDeveloper) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateDeveloper) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.AutoLockEnabled {\n\t\ti--\n\t\tif m.AutoLockEnabled {\n\t\t\tdAtA[i] = 1\n\t\t} else {\n\t\t\tdAtA[i] = 0\n\t\t}\n\t\ti--\n\t\tdAtA[i] = 0x10\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateDeveloperResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateDeveloperResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateDeveloperResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveDeveloper) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveDeveloper) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveDeveloper) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveDeveloperResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveDeveloperResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveDeveloperResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgAddUserSubscription) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgAddUserSubscription) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgAddUserSubscription) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Period != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.Period))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Amount != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.Amount))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.UserDid) > 0 {\n\t\ti -= len(m.UserDid)\n\t\tcopy(dAtA[i:], m.UserDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.UserDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgAddUserSubscriptionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgAddUserSubscriptionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgAddUserSubscriptionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateUserSubscription) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateUserSubscription) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateUserSubscription) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif m.Period != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.Period))\n\t\ti--\n\t\tdAtA[i] = 0x20\n\t}\n\tif m.Amount != 0 {\n\t\ti = encodeVarintTx(dAtA, i, uint64(m.Amount))\n\t\ti--\n\t\tdAtA[i] = 0x18\n\t}\n\tif len(m.UserDid) > 0 {\n\t\ti -= len(m.UserDid)\n\t\tcopy(dAtA[i:], m.UserDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.UserDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgUpdateUserSubscriptionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgUpdateUserSubscriptionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgUpdateUserSubscriptionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveUserSubscription) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveUserSubscription) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveUserSubscription) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\tif len(m.UserDid) > 0 {\n\t\ti -= len(m.UserDid)\n\t\tcopy(dAtA[i:], m.UserDid)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.UserDid)))\n\t\ti--\n\t\tdAtA[i] = 0x12\n\t}\n\tif len(m.Developer) > 0 {\n\t\ti -= len(m.Developer)\n\t\tcopy(dAtA[i:], m.Developer)\n\t\ti = encodeVarintTx(dAtA, i, uint64(len(m.Developer)))\n\t\ti--\n\t\tdAtA[i] = 0xa\n\t}\n\treturn len(dAtA) - i, nil\n}\n\nfunc (m *MsgRemoveUserSubscriptionResponse) Marshal() (dAtA []byte, err error) {\n\tsize := m.Size()\n\tdAtA = make([]byte, size)\n\tn, err := m.MarshalToSizedBuffer(dAtA[:size])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn dAtA[:n], nil\n}\n\nfunc (m *MsgRemoveUserSubscriptionResponse) MarshalTo(dAtA []byte) (int, error) {\n\tsize := m.Size()\n\treturn m.MarshalToSizedBuffer(dAtA[:size])\n}\n\nfunc (m *MsgRemoveUserSubscriptionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {\n\ti := len(dAtA)\n\t_ = i\n\tvar l int\n\t_ = l\n\treturn len(dAtA) - i, nil\n}\n\nfunc encodeVarintTx(dAtA []byte, offset int, v uint64) int {\n\toffset -= sovTx(v)\n\tbase := offset\n\tfor v >= 1<<7 {\n\t\tdAtA[offset] = uint8(v&0x7f | 0x80)\n\t\tv >>= 7\n\t\toffset++\n\t}\n\tdAtA[offset] = uint8(v)\n\treturn base\n}\nfunc (m *MsgUpdateParams) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Authority)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Params.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgUpdateParamsResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgLock) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Stake.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgLockResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgLockAuto) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Stake.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgLockAutoResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgUnlock) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Stake.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgUnlockResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tif m.CreationHeight != 0 {\n\t\tn += 1 + sovTx(uint64(m.CreationHeight))\n\t}\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime)\n\tn += 1 + l + sovTx(uint64(l))\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.UnlockTime)\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgRedelegate) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.SrcValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.DstValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Stake.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgRedelegateResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CompletionTime)\n\tn += 1 + l + sovTx(uint64(l))\n\treturn n\n}\n\nfunc (m *MsgCancelUnlocking) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.DelegatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.ValidatorAddress)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = m.Stake.Size()\n\tn += 1 + l + sovTx(uint64(l))\n\tif m.CreationHeight != 0 {\n\t\tn += 1 + sovTx(uint64(m.CreationHeight))\n\t}\n\treturn n\n}\n\nfunc (m *MsgCancelUnlockingResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgCreateDeveloper) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.AutoLockEnabled {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *MsgCreateDeveloperResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgUpdateDeveloper) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.AutoLockEnabled {\n\t\tn += 2\n\t}\n\treturn n\n}\n\nfunc (m *MsgUpdateDeveloperResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgRemoveDeveloper) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRemoveDeveloperResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgAddUserSubscription) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.UserDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Amount != 0 {\n\t\tn += 1 + sovTx(uint64(m.Amount))\n\t}\n\tif m.Period != 0 {\n\t\tn += 1 + sovTx(uint64(m.Period))\n\t}\n\treturn n\n}\n\nfunc (m *MsgAddUserSubscriptionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgUpdateUserSubscription) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.UserDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tif m.Amount != 0 {\n\t\tn += 1 + sovTx(uint64(m.Amount))\n\t}\n\tif m.Period != 0 {\n\t\tn += 1 + sovTx(uint64(m.Period))\n\t}\n\treturn n\n}\n\nfunc (m *MsgUpdateUserSubscriptionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc (m *MsgRemoveUserSubscription) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\tl = len(m.Developer)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\tl = len(m.UserDid)\n\tif l > 0 {\n\t\tn += 1 + l + sovTx(uint64(l))\n\t}\n\treturn n\n}\n\nfunc (m *MsgRemoveUserSubscriptionResponse) Size() (n int) {\n\tif m == nil {\n\t\treturn 0\n\t}\n\tvar l int\n\t_ = l\n\treturn n\n}\n\nfunc sovTx(x uint64) (n int) {\n\treturn (math_bits.Len64(x|1) + 6) / 7\n}\nfunc sozTx(x uint64) (n int) {\n\treturn sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63))))\n}\nfunc (m *MsgUpdateParams) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParams: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Authority\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Authority = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Params\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgLock) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLock: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLock: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Stake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgLockResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgLockAuto) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockAuto: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockAuto: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Stake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgLockAutoResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockAutoResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgLockAutoResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUnlock) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUnlock: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUnlock: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Stake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUnlockResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUnlockResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUnlockResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t}\n\t\t\tm.CreationHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UnlockTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.UnlockTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRedelegate) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRedelegate: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRedelegate: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field SrcValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.SrcValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DstValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DstValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Stake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRedelegateResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRedelegateResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRedelegateResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CompletionTime\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CompletionTime, dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCancelUnlocking) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCancelUnlocking: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCancelUnlocking: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field DelegatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.DelegatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field ValidatorAddress\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.ValidatorAddress = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Stake\", wireType)\n\t\t\t}\n\t\t\tvar msglen int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tmsglen |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif msglen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + msglen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tif err := m.Stake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tiNdEx = postIndex\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field CreationHeight\", wireType)\n\t\t\t}\n\t\t\tm.CreationHeight = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.CreationHeight |= int64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCancelUnlockingResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCancelUnlockingResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCancelUnlockingResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreateDeveloper) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreateDeveloper: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreateDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.AutoLockEnabled = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgCreateDeveloperResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreateDeveloperResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgCreateDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateDeveloper) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateDeveloper: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field AutoLockEnabled\", wireType)\n\t\t\t}\n\t\t\tvar v int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tv |= int(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tm.AutoLockEnabled = bool(v != 0)\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateDeveloperResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateDeveloperResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveDeveloper) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveDeveloper: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveDeveloper: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveDeveloperResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveDeveloperResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveDeveloperResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgAddUserSubscription) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddUserSubscription: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tm.Amount = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Amount |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tm.Period = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Period |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgAddUserSubscriptionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgAddUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateUserSubscription) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateUserSubscription: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 3:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Amount\", wireType)\n\t\t\t}\n\t\t\tm.Amount = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Amount |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 4:\n\t\t\tif wireType != 0 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Period\", wireType)\n\t\t\t}\n\t\t\tm.Period = 0\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tm.Period |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgUpdateUserSubscriptionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgUpdateUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveUserSubscription) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveUserSubscription: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveUserSubscription: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tcase 1:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field Developer\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.Developer = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tcase 2:\n\t\t\tif wireType != 2 {\n\t\t\t\treturn fmt.Errorf(\"proto: wrong wireType = %d for field UserDid\", wireType)\n\t\t\t}\n\t\t\tvar stringLen uint64\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tstringLen |= uint64(b&0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tintStringLen := int(stringLen)\n\t\t\tif intStringLen < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tpostIndex := iNdEx + intStringLen\n\t\t\tif postIndex < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif postIndex > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tm.UserDid = string(dAtA[iNdEx:postIndex])\n\t\t\tiNdEx = postIndex\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc (m *MsgRemoveUserSubscriptionResponse) Unmarshal(dAtA []byte) error {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tfor iNdEx < l {\n\t\tpreIndex := iNdEx\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= uint64(b&0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tfieldNum := int32(wire >> 3)\n\t\twireType := int(wire & 0x7)\n\t\tif wireType == 4 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveUserSubscriptionResponse: wiretype end group for non-group\")\n\t\t}\n\t\tif fieldNum <= 0 {\n\t\t\treturn fmt.Errorf(\"proto: MsgRemoveUserSubscriptionResponse: illegal tag %d (wire type %d)\", fieldNum, wire)\n\t\t}\n\t\tswitch fieldNum {\n\t\tdefault:\n\t\t\tiNdEx = preIndex\n\t\t\tskippy, err := skipTx(dAtA[iNdEx:])\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif (skippy < 0) || (iNdEx+skippy) < 0 {\n\t\t\t\treturn ErrInvalidLengthTx\n\t\t\t}\n\t\t\tif (iNdEx + skippy) > l {\n\t\t\t\treturn io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tiNdEx += skippy\n\t\t}\n\t}\n\n\tif iNdEx > l {\n\t\treturn io.ErrUnexpectedEOF\n\t}\n\treturn nil\n}\nfunc skipTx(dAtA []byte) (n int, err error) {\n\tl := len(dAtA)\n\tiNdEx := 0\n\tdepth := 0\n\tfor iNdEx < l {\n\t\tvar wire uint64\n\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\tif shift >= 64 {\n\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t}\n\t\t\tif iNdEx >= l {\n\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t}\n\t\t\tb := dAtA[iNdEx]\n\t\t\tiNdEx++\n\t\t\twire |= (uint64(b) & 0x7F) << shift\n\t\t\tif b < 0x80 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twireType := int(wire & 0x7)\n\t\tswitch wireType {\n\t\tcase 0:\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tiNdEx++\n\t\t\t\tif dAtA[iNdEx-1] < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase 1:\n\t\t\tiNdEx += 8\n\t\tcase 2:\n\t\t\tvar length int\n\t\t\tfor shift := uint(0); ; shift += 7 {\n\t\t\t\tif shift >= 64 {\n\t\t\t\t\treturn 0, ErrIntOverflowTx\n\t\t\t\t}\n\t\t\t\tif iNdEx >= l {\n\t\t\t\t\treturn 0, io.ErrUnexpectedEOF\n\t\t\t\t}\n\t\t\t\tb := dAtA[iNdEx]\n\t\t\t\tiNdEx++\n\t\t\t\tlength |= (int(b) & 0x7F) << shift\n\t\t\t\tif b < 0x80 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif length < 0 {\n\t\t\t\treturn 0, ErrInvalidLengthTx\n\t\t\t}\n\t\t\tiNdEx += length\n\t\tcase 3:\n\t\t\tdepth++\n\t\tcase 4:\n\t\t\tif depth == 0 {\n\t\t\t\treturn 0, ErrUnexpectedEndOfGroupTx\n\t\t\t}\n\t\t\tdepth--\n\t\tcase 5:\n\t\t\tiNdEx += 4\n\t\tdefault:\n\t\t\treturn 0, fmt.Errorf(\"proto: illegal wireType %d\", wireType)\n\t\t}\n\t\tif iNdEx < 0 {\n\t\t\treturn 0, ErrInvalidLengthTx\n\t\t}\n\t\tif depth == 0 {\n\t\t\treturn iNdEx, nil\n\t\t}\n\t}\n\treturn 0, io.ErrUnexpectedEOF\n}\n\nvar (\n\tErrInvalidLengthTx        = fmt.Errorf(\"proto: negative length found during unmarshaling\")\n\tErrIntOverflowTx          = fmt.Errorf(\"proto: integer overflow\")\n\tErrUnexpectedEndOfGroupTx = fmt.Errorf(\"proto: unexpected end of group\")\n)\n"
  }
]